From patchwork Wed Oct 25 01:42:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Foucu X-Patchwork-Id: 5683 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp1282964jah; Tue, 24 Oct 2017 18:49:15 -0700 (PDT) X-Google-Smtp-Source: ABhQp+QKQqBijPByh1kx5TQxJ03hHoEGkGeoWP8CyWV+9qCLieNOMBZ+oIAQaoSjGmZ8pdJRp4o8 X-Received: by 10.223.190.14 with SMTP id n14mr464526wrh.46.1508896155464; Tue, 24 Oct 2017 18:49:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508896155; cv=none; d=google.com; s=arc-20160816; b=ePovlamVbdOf0buKznn9TJgiPTY3YjZxAszS5FvqkDKlY+MMRn++CnVlqkp1YkToQw dvDncECiFOsIfmUovQB+rggcFFOGaxo/fdi5BvXNq3WgmKrKW5Ql97VpziZyasOK/KqL 4IrtlszoC6zM2xiVsLstwPmbRsXeKvI3E8BSyAhkjHND/g6gKkFi/UjsV65sFvoGU+pq lru5/l+cguMX/5z9I03bb106I/6K1jAJlsvCTPomi07HxcNSmPYW1VUvmhhlUxOfTzRO UYOBmlLY5i84rq6c4EQNDF5dsroanXOLZaMBYEbKNwwiGzrvRtFpko0Zd/uBltXLl3Ef Yehw== 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:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=P9ojBzJVB5bzax2HAbBisvJ65P3jOH7NboIgxyD0uRA=; b=s+Hv1N8H5bhi6K1Qhc0LAg/hDSgGtcN5RE7D9wx7cvmmvg50s4iddtb7TMnty8yDJo cpJ1m2FJBQkFJx8n3bgkGeiKGoGXUOVipwt60AzzL+KbNkmqu7YNbwi3GFrRl41FqQ8m LaKvRpMkSRABCucHgxJbSxYZN0rroC6PfdNQBvF6ljlU5kLIGFG7knA2CxTZcixIBzeL mBINPsTw6cicftqpadqihFh8yi14S/Pmp9Zm/SZaghtfPhZGKgVzTuKl+lMhMPnrDyHK yDCS0Zwoc0lxAO0jJ1haipy9v9wj4quAz8G+kndPkTiZ6kYPcNI9CVWFvb0HK5dIzDoG t85g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ge3/55me; 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=NONE 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 s7si1220493wrb.241.2017.10.24.18.49.15; Tue, 24 Oct 2017 18:49:15 -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=ge3/55me; 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=NONE 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 8EF9868A3BF; Wed, 25 Oct 2017 04:49:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-it0-f67.google.com (mail-it0-f67.google.com [209.85.214.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7B3766897FF for ; Wed, 25 Oct 2017 04:49:00 +0300 (EEST) Received: by mail-it0-f67.google.com with SMTP id f187so12303648itb.1 for ; Tue, 24 Oct 2017 18:49:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=uvC6nepxHoUM8Ha3c9hp4NwVnb3E5nZC72vllVEamFw=; b=ge3/55mey+9SRJEGyr+YMa97uJD5MCkhvKh/hx/HL916l5M//H9Fa4UIt+e1zhhtKW UKFANs0rS0yLofBZY5UHY8yfITSoYfDY6pjVGCQXCVkxXF9Ea4K/8Zsrf6gtl3MlY4F6 5L59kv2HELqhF0+qv77pLdLV6bQJaUfv/7kM4yRuhwN4huIM6w2KTpGOdypEzyafxsm5 KicXziMWyYvXp13MjMDTr3q9cUR9QSh/8hfA4hzwjPeORKc1C/bUwM/fSzn70puM8LHV FciJJZtQp2GRcKmissMfzBbY1HK4XUv663dnUBH7MMqi1/w3DYNzX14PlKkWSJELMOSR roEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=uvC6nepxHoUM8Ha3c9hp4NwVnb3E5nZC72vllVEamFw=; b=dv4MjTUM4VCZUDs68AziFLiZt8ztQrBk1/uOBFjvugUKMz1qJayvrvfyulFOGTk0Hg J22Pza7yFpRRBNdpTz9qV18AiO6zDTsmg4Hh5ooZQN03WThNIXMsV+0+GuSl6MjtVp5b j7duP4Nhu9/ftZBaccg8ZM3Hbie0jncbK1IZHMoBCTuEZuYZ+NyyFupJUf0YVdO1+sIX 8CxZJI+c41VyfSvs79KvSn3gTPTuBFmYb3/8TN8PVPKyzF0R/qRzqwfFePS9tbvSG18f QSgOir71WtqEUOxgNsacXTYssGCg+y9jx5lLEoh930k0mWOEsgN7rqSfopmHGRhH8bLl soOw== X-Gm-Message-State: AMCzsaUnmRWwWI0QZls5Z45oQWZP1FZzPUrSeOQyyCbzQIoPIEm4j0xb UwLgVKY9K+IKtLyMOzsmduJ1AUJQ X-Received: by 10.36.122.1 with SMTP id a1mr165208itc.30.1508895806241; Tue, 24 Oct 2017 18:43:26 -0700 (PDT) Received: from tfoucu.mtv.corp.google.com ([172.27.82.43]) by smtp.gmail.com with ESMTPSA id a139sm775636ita.24.2017.10.24.18.43.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 24 Oct 2017 18:43:25 -0700 (PDT) From: Thierry Foucu To: ffmpeg-devel@ffmpeg.org Date: Tue, 24 Oct 2017 18:42:54 -0700 Message-Id: <20171025014254.31336-2-tfoucu@gmail.com> X-Mailer: git-send-email 2.15.0.rc0.271.g36b669edcc-goog In-Reply-To: <20171025014254.31336-1-tfoucu@gmail.com> References: <20171021000540.GO6009@nb4> <20171025014254.31336-1-tfoucu@gmail.com> Subject: [FFmpeg-devel] [PATCH] libavcodec/h263dec.c: Duplicate the last decoded frame when xvid marks the packet as skipped. 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: Thierry Foucu MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Changed the return value when no VOD were encoded in Mpeg4 bistream. And if we do have already a decoded frames and we are not in xvid_packed mode, output the existing decoded frame instead of nothing. --- libavcodec/h263dec.c | 9 ++++++++- libavcodec/mpeg4videodec.c | 2 +- libavcodec/mpegutils.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index c7cf4bc0c2..394a366f9c 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -506,8 +506,15 @@ retry: s->height= avctx->coded_height; } } - if (ret == FRAME_SKIPPED) + if (ret == FRAME_SKIPPED || ret == FRAME_NOT_CODED) { + if (s->next_picture_ptr && ret == FRAME_NOT_CODED && !s->divx_packed) { + if ((ret = av_frame_ref(pict, s->next_picture_ptr->f)) < 0) { + return ret; + } + *got_frame = 1; + } return get_consumed_bytes(s, buf_size); + } /* skip if the header was thrashed */ if (ret < 0) { diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index 82c4f8fc8c..3a9ed12971 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -2394,7 +2394,7 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) if (get_bits1(gb) != 1) { if (s->avctx->debug & FF_DEBUG_PICT_INFO) av_log(s->avctx, AV_LOG_ERROR, "vop not coded\n"); - return FRAME_SKIPPED; + return FRAME_NOT_CODED; } if (ctx->new_pred) decode_new_pred(ctx, gb); diff --git a/libavcodec/mpegutils.h b/libavcodec/mpegutils.h index 1bf73fea02..97786135c6 100644 --- a/libavcodec/mpegutils.h +++ b/libavcodec/mpegutils.h @@ -32,6 +32,7 @@ * Return value for header parsers if frame is not coded. * */ #define FRAME_SKIPPED 100 +#define FRAME_NOT_CODED 101 /* picture type */ #define PICT_TOP_FIELD 1