From patchwork Thu Sep 29 18:25:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: wm4 X-Patchwork-Id: 780 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.66 with SMTP id o63csp494605vsd; Thu, 29 Sep 2016 11:25:46 -0700 (PDT) X-Received: by 10.194.82.228 with SMTP id l4mr2727151wjy.126.1475173546663; Thu, 29 Sep 2016 11:25:46 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id bm1si15983613wjd.187.2016.09.29.11.25.45; Thu, 29 Sep 2016 11:25:46 -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=@googlemail.com; 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=QUARANTINE dis=NONE) header.from=googlemail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2925B689CC2; Thu, 29 Sep 2016 21:25:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0BB39689921 for ; Thu, 29 Sep 2016 21:25:23 +0300 (EEST) Received: by mail-wm0-f67.google.com with SMTP id p138so58461wmb.0 for ; Thu, 29 Sep 2016 11:25:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=I8wzGbuoCBCiBBbBcF9/7RYI0uUanRS5MQ5QlutNp0g=; b=bGt2VdgPDSkg7gqaNPo9b6wOy7k2sCIpSNrAnBa4xlLsUUl/jOyfSE+egDpgzwdITs XiTFnh9J6v/8nJACpvTE5MWL1qGsYQFJEaRuTfwuXjos+ki9MiK/YMtXdf2ThNR0edX+ LxCtvRklQYVERGCMA9tzuvL7yOyi2NRHWIraD4DAOIDzds34jVz2NotG30uDyUeLBZ6A RaCt+u8BllUI19kc+B9yuR878jI1Ao7LXHRmRIV0LjxNciWPDFLo+wn2HjOJFwbjxDqN 74JHB3AY3Qke7mYgfouibGuS6acUF7r1EOXinEJc3+EDf1wV8W60GDP83xxHLvzY1Bs1 orrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=I8wzGbuoCBCiBBbBcF9/7RYI0uUanRS5MQ5QlutNp0g=; b=kx8PnWtZtoeIA4hseYsTVtKGYNPl3rhTn4RYvfcoSe7dmps3Dvta+0zHGUm9YuI42m mKduBka08v4ZOsstI3xwbjplQzBpiX/MZGDF1UoJympd/mhTaz3AjH8Kel74PSQDUbQx Pa6Il2hB5rvX23uqouNCX7J2kDvoRZ/y5we1QuKL0Umewx9NrASxBXj1716nrYyYUld0 3hoHD0DSi0KaYt/hdiF6h28WF8J3VHCpxdmRG0JwUCf/0GOggz1j20iH3NJrXYb41NxL KiY0LRn8BVBubDHV1+QaoBpeJ97RqyVbcM+nE6FUFwma9w8GS0L1wyY+DhpXqA6kscMk y/zQ== X-Gm-Message-State: AA6/9RkXZgy1eLfw9Q1kcZ6KN1dbXddkcKdn4r/ktWQvaYj6b+cP4fLyNWdp3qxFTxaVuQ== X-Received: by 10.194.95.69 with SMTP id di5mr3094629wjb.54.1475173536156; Thu, 29 Sep 2016 11:25:36 -0700 (PDT) Received: from localhost.localdomain ([79.240.3.206]) by smtp.googlemail.com with ESMTPSA id ya1sm15547953wjb.23.2016.09.29.11.25.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Sep 2016 11:25:35 -0700 (PDT) From: wm4 To: ffmpeg-devel@ffmpeg.org Date: Thu, 29 Sep 2016 20:25:17 +0200 Message-Id: <20160929182519.3648-1-nfxjfg@googlemail.com> X-Mailer: git-send-email 2.9.3 Subject: [FFmpeg-devel] [PATCH 1/3] ffmpeg: move subframe warning to libavcodec X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Cc: wm4 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" With the new decode API, doing this in ffmpeg.c is impractical. There was resistance against removing the warning, so put it into libavcodec. Not bothering with reducing the warning to verbose log level for subsequent wanrings. The warning should be rare, and only happen when developing new codecs for the old API. Includes a change suggested by Michael Niedermayer. --- ffmpeg.c | 7 ------- ffmpeg.h | 1 - libavcodec/internal.h | 1 + libavcodec/utils.c | 6 ++++++ 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index d0f247e..f03a594 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -2357,13 +2357,6 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo ist->pts = ist->next_pts; ist->dts = ist->next_dts; - if (avpkt.size && avpkt.size != pkt->size && - !(ist->dec->capabilities & AV_CODEC_CAP_SUBFRAMES)) { - av_log(NULL, ist->showed_multi_packet_warning ? AV_LOG_VERBOSE : AV_LOG_WARNING, - "Multiple frames in a packet from stream %d\n", pkt->stream_index); - ist->showed_multi_packet_warning = 1; - } - switch (ist->dec_ctx->codec_type) { case AVMEDIA_TYPE_AUDIO: ret = decode_audio (ist, &avpkt, &got_output); diff --git a/ffmpeg.h b/ffmpeg.h index 0d01d2b..3ba62a1 100644 --- a/ffmpeg.h +++ b/ffmpeg.h @@ -287,7 +287,6 @@ typedef struct InputStream { double ts_scale; int saw_first_ts; - int showed_multi_packet_warning; AVDictionary *decoder_opts; AVRational framerate; /* framerate forced with -r */ int top_field_first; diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 000fe26..35b9630 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -173,6 +173,7 @@ typedef struct AVCodecInternal { int buffer_pkt_valid; // encoding: packet without data can be valid AVFrame *buffer_frame; int draining_done; + int showed_multi_packet_warning; } AVCodecInternal; struct AVCodecDefault { diff --git a/libavcodec/utils.c b/libavcodec/utils.c index b0345b6..22ac9a0 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -2448,6 +2448,12 @@ fail: av_assert0(ret <= avpkt->size); + if (!avci->showed_multi_packet_warning && + ret >= 0 && ret != avpkt->size && !(avctx->codec->capabilities & AV_CODEC_CAP_SUBFRAMES)) { + av_log(avctx, AV_LOG_WARNING, "Multiple frames in a packet.\n"); + avci->showed_multi_packet_warning = 1; + } + return ret; }