From patchwork Thu May 13 23:37:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josh Allmann X-Patchwork-Id: 27738 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:b214:0:0:0:0:0 with SMTP id b20csp826867iof; Thu, 13 May 2021 17:05:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy/+mgRB5ICBihMueU+Tt8ITuWWe18FCf5e/6R6bfV5fYTTg57itB8Mhnrmap62QRzqWJNZ X-Received: by 2002:a17:906:144d:: with SMTP id q13mr47949007ejc.458.1620950711860; Thu, 13 May 2021 17:05:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620950711; cv=none; d=google.com; s=arc-20160816; b=kLbiMeI9acT+zgq8zCs6Exjm/4gL0dWEJ8gT722kcQteysRNDwkEIewOOipJ6OnuR4 +elT4RYP6BDXJlqV+mA3RSOakFVA/0RvOGHyf4i+0h+Q4jaz0hQOQnerysjmyHWZauBb rnYEoqcc/+5zCfDcrOfmqsvhhKbXn6X0KaqxbR2Na8VOuoj/9WC4CF4pjqJ6hckexZQG pLMfbtb6BEV7POnwFSIShR1RiqnekLBeDOT5pbu5u83XOMkV7fenWAOavsX12cne0M1e s5kAVnywkU/OpehgCbZa+6FAvC+mcHqnZimq/lA9QIkzg9K3546CdFBqa5wxAwUyu2lf CzgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to; bh=arViHFfa3+J5OQNwd4sJ1T0gg1uzQh4fyuzUTy4SPA0=; b=V8BfCaqZUG1tuwOc1v9AptoN799mED58S722m03bkYODJb9fYtlg7z032E3i/zR7Ys qhUHZWRgKaUGG5rizFtuONXc/YyYxSWGho9hxm7dU2up0PlLGRDszW8U7w6Xqb3F6iml auFLVf8B4WNVsDzzSJKDXUSSqsHbLLwBv/2lqn5YqxJ52Gp3MUmnE9CAJ2QmNM3BJG8l sEyELbNxztn9+aBok05SNKOLTdFRab5j//fBJpWvhPayNw/AewpspyhKiRp3hKMemJif eIXs26aUy9Ps7e+WkuVoUY2anINbkLvxN2K7wmJM0HXwGkVd4v5TgK0l7G4y/vkEF8L0 cnjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Df9p+SzI; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o6si5150573edi.480.2021.05.13.17.04.48; Thu, 13 May 2021 17:05:11 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Df9p+SzI; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EFF386802A5; Fri, 14 May 2021 03:04:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f169.google.com (mail-oi1-f169.google.com [209.85.167.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 007BF6802A5 for ; Fri, 14 May 2021 03:04:38 +0300 (EEST) Received: by mail-oi1-f169.google.com with SMTP id c3so26893582oic.8 for ; Thu, 13 May 2021 17:04:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=9ThijsbVSfUqRD5fYDzJXdFcqZ/PreoT+1bydNxI3gk=; b=Df9p+SzI1omKWkaeF50dmHRTn0pMMaBKN0F2swYnMvRiAt96DcVUCJD6mM/ZMBHij/ w+/9wcuzzS5hJ80RJRgO8ZZibTh8sLb6Qgsk2Yk+VzTJGHdX+yq+Ghm/iAepzfWKXPSu 0KxzlqfqO1UPCXkQONeFnX9zxtRy1xAy2/jUs58yLvnRPueW20UY70Qtd5mNHZlj6ID5 zS4qX4qIF4sQhDqZpbtqIa0M6T4ePLZxZJ62syzxOC0xVHpxpLDUrZ8ytlJQnU82wWkw X8yQ0ZovC/cWokc4RH/mvSipH0F4/vfaGBbyt0Nt9Xn5urZgXoGZBtFZziW/icigOg3/ U1Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=9ThijsbVSfUqRD5fYDzJXdFcqZ/PreoT+1bydNxI3gk=; b=teKZbcoNhc2vV9C891P1wjsJvXRiAED1+R97mFlfKjx4wmD89VOuhVCsQcquKizzAb Ms6Y4wq228Q+2H1qZfGmjuY1LhkKe18sMSFm9+fxKsAXedHK3xTLhVr04h49kWTjO4DC hXwMMXAR3heDD1zwRYahizO2z+7CHIHwpJcEq0l3Wcfa/fwDnqlnw8draykexdDUbWeF oFcfKY7htTd3SzayswBKKKqMPvI1NW7khFqkA1I3swHxZ24ikZqTnfEMxN9GdaRiWDap WCOnm3xlkxv4ovI3IWn+ZGiZoQVrChDmKHvBLinoN/M4GfJ6oyHRFmplKz87IHT0DW5z DJ3g== X-Gm-Message-State: AOAM531ASNOIqMEl8xxyFiJDcP39+l0urn5RzlwZKmgBr6HL8EiyxIgb VGGmFMk6kGkGWaswtALFzGrEoe9CEa5cxQ== X-Received: by 2002:a17:90a:df08:: with SMTP id gp8mr49779994pjb.199.1620949094019; Thu, 13 May 2021 16:38:14 -0700 (PDT) Received: from vesper.lan (cpe-76-176-4-46.san.res.rr.com. [76.176.4.46]) by smtp.gmail.com with ESMTPSA id y14sm7977924pjr.51.2021.05.13.16.38.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 May 2021 16:38:13 -0700 (PDT) From: Josh Allmann To: ffmpeg-devel@ffmpeg.org Date: Thu, 13 May 2021 16:37:57 -0700 Message-Id: <1620949077-2936-1-git-send-email-joshua.allmann@gmail.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH] avformat/flvdec: Ignore the first two data/subtitle streams. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gqGZeCj7ZqOn Previously, one or the other would have been ignored, but not both. Since the probe terminates at three streams, it could exit prematurely if both data and subtitles are present along with slightly trailing media, usually video trailing audio. Trailing media is common in RTMP, and encoders write strange metadata. --- libavformat/flvdec.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index 4b9f46902b..1be8d98618 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -134,18 +134,32 @@ static void add_keyframes_index(AVFormatContext *s) } } +static int is_ignorable(enum AVMediaType codec_type) +{ + switch(codec_type) { + case AVMEDIA_TYPE_SUBTITLE: + case AVMEDIA_TYPE_DATA: + return 1; + } + return 0; +} + static AVStream *create_stream(AVFormatContext *s, int codec_type) { + int streams_to_ignore = 0, nb_streams = 0; FLVContext *flv = s->priv_data; AVStream *st = avformat_new_stream(s, NULL); if (!st) return NULL; st->codecpar->codec_type = codec_type; - if (s->nb_streams>=3 ||( s->nb_streams==2 - && s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE - && s->streams[1]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE - && s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_DATA - && s->streams[1]->codecpar->codec_type != AVMEDIA_TYPE_DATA)) + + if (s->nb_streams >= 1) + streams_to_ignore += is_ignorable(s->streams[0]->codecpar->codec_type); + if (s->nb_streams >= 2) + streams_to_ignore += is_ignorable(s->streams[1]->codecpar->codec_type); + + nb_streams = s->nb_streams - streams_to_ignore; + if (nb_streams >= 2) s->ctx_flags &= ~AVFMTCTX_NOHEADER; if (codec_type == AVMEDIA_TYPE_AUDIO) { st->codecpar->bit_rate = flv->audio_bit_rate;