From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id B9364442B4 for ; Tue, 6 Dec 2022 09:17:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1644668BD43; Tue, 6 Dec 2022 11:17:07 +0200 (EET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2039.outbound.protection.outlook.com [40.92.89.39]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B4B8868BC44 for ; Tue, 6 Dec 2022 11:17:00 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K16IHr9l8I+wEKrRte6OqmypmY+jExHbmyi7QtuoMQ5uO+iE+6i31AiSIB8fhDDgmVMKNGvDR4ztONzJo7VO1EC7VV+swkCwWBn5nPHKiHIEQFwq36e1KjxGBkSQBN9jC4SwgiubxKcGAqvYd8xq+Gvg7vBt42zWAtV8KHzzhfqtX5niz3Hg9BK9ky669Y3FhXD8nh01H2zO/jubRlkIpCnuYF0qEPCcE9IPiByIp0h2bwtXupyQAzq8GOBLCQsm9LQAupKsM/j+4fKZoLl0fCTEYUFtd6eP10pfGvsHgXrkLnNFXUcRkSu1ghPa0miBG2QKrwz3yQUFyt82KfTsVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=cFx5cXMeOkjcyRuI2uFsv8E83JnSi6kn/mrXK8+5Dik=; b=Q8E+wb7l2jtxk09fCLUHVE9169CNti52xtNGI7EuGn2akuXLzko7V4CbnvND0Sx0GYLaY0Jp2mULFS7utT/5rBNr71UsSEgcB/qUS/vPV0YBnKhu5u9dN2bDGFyVQVpU5QIRsOL+FZxepV2wuwBX4oeSQPPYvvJca7wwCKHQHxjPW4emJfJe6NoXlv0quX2opj91CFy5DyqnEbHrJbNfqHHT53QDmHtW2aOWE7aboTj4mKLG5U+DoNgH+7jPSr/hoLRuI1NVWoSQJlymL6Nxjr/7wTxdI1NfwP91Mn2NGZEJkvqY2Bp///juOCy43gl5BoMRDpM8n2e8s9QTYpgtLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cFx5cXMeOkjcyRuI2uFsv8E83JnSi6kn/mrXK8+5Dik=; b=nzxHwOT19Go6KvNDp6YeMzBJ2qTIRIQm84HXaSa24RnFHsbIvbbaCxskE/zKcMy1u05jBjrfcB8hk35bdxb/G/naB5VTZ6Kmc2fYfD6D5lOuwI8dTSoJDGGuVmksyzOgD1rqH0wFGs8Ze/JiSzeMQo20lRThwe3CqUoSX7bmCqAHmbcPjatdXf2Zx6W79lpGMRVaoYPrf+gd4R4EA0Fej2dNVIf+fySDNdlOOXp5JMawNmGJQk1PTExy/CyIw9hztTrwsb1brFKMdwHZq79lnVejpVnaCTChOYit7+Gi6i0kgy4hY+1ZfL6kXXEnrJT0C55CZA9H9fY0zvoeawJFZw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0939.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:5a2::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.8; Tue, 6 Dec 2022 09:16:58 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::da14:61e3:630a:70b5]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::da14:61e3:630a:70b5%6]) with mapi id 15.20.5880.010; Tue, 6 Dec 2022 09:16:58 +0000 Message-ID: Date: Tue, 6 Dec 2022 10:17:18 +0100 To: ffmpeg-devel@ffmpeg.org References: <20221204215227.4186-1-jamrial@gmail.com> <20221204215227.4186-5-jamrial@gmail.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20221204215227.4186-5-jamrial@gmail.com> X-TMN: [gSlfe5afkONVg84Spf0OAkl+gsfeFSIR] X-ClientProxiedBy: ZR2P278CA0039.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:47::16) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0939:EE_ X-MS-Office365-Filtering-Correlation-Id: 665feac7-847a-46e2-438b-08dad76aa075 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0J/u4rRHOkukN+QQxx7AdIdywvZNJHigXU9Yfz0br9puT2BIAeJxxeEnuweK/ApCysDkm0UfhqO2TK2ZzGMG4zoso09kIEzLZ9PERhqfwwd8IQ/vt9XTbM6BylZ2xTUfaWRRNVRyLabAWDpRLNFcc3vfZurRCJtastNhcUoOltgnc/uF1DMcIJ+6R+4IYiSKdupgjDVzxOkgrlhzbaB90qswBPdaYl90MPlJsOqs5XVM+Qeo7XF6PyFHtTbo2x73j2OGVXrKtE73b7LNluykI69JDQw7TlEZX/t+MB+wsZFRb7jW8BAc+ul786l0IOvAygs4bKpyjWeMUdvxcwMlywO7LwOHRI8Ya/7B9LY20rR8XeMAbjum4DjXAKWspFV40cLv21F+1uk2HdKp3QXIaiyPXXv+e855YoVlom/mV0i42cO/45SJ0ICHAtMv3xVYlVVwDxPEQ7Bloamn6ZlUW1MUJ7ifPRa923K/Vnm+xTpnTYlOk66uUIvs2gS4FVmRShe2VBJUcwH/mQTy43FFfE4MWcrgsgvuGTayiEK+iZQIVpQBJ0FAbt1z8J0LwVzKSR2++OMdjl+C2BEBOYG49bWxm5vKdOpgNiYo+eJeIgPlKpaqPnhe84VpAyn7DGByfV6IRFDEvAJgCTyDIZASDKTuiKxP1DNeUAS3jlixlGU= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MEZFZFdVYzM4eDB3ZmhIOGVoekpMeUpTZkF2MzZUcTQ0ckZNUGt5cGJzYzBH?= =?utf-8?B?K2o1akE2NnhmaGg2cVRqMjJuc3BNcFpPVEQrTlNVRTVSZnNzR1hNYytuUi9t?= =?utf-8?B?RThUam9DNTl5aFZSdWVSWEQrQ1QvN2ptWldXa2NBbG1sK2ZTbDBmUHBKUVZX?= =?utf-8?B?alRNYThNakg5STJmR2pHWS9LSlV2Uk10b0NLbExob1l1OG14eWhLNVlPZFZ0?= =?utf-8?B?cTJ3V05CWFVFL2hYVjU0S3dlaVJNQlVzRFhiY0pTR1ZkdXk3WWRZSmNEdGU3?= =?utf-8?B?Q2EvKzhxM0JzdVlJT1gzcndKVXNHc09tcExKSCtlNjlvRWcxRGVoYzl5eFgz?= =?utf-8?B?aHc1SHkrYWNVZ01SbzFVc2ZsdWs5T2h4NGNsdTVobzJIM2dETDRpMjdpT0Ji?= =?utf-8?B?YVo2TzVrL3o0TXBaREJISEJPcE1SR3dCTkV4RHI2djg3eXNSSCsvQWtjYzNM?= =?utf-8?B?QjR4ZHByUXo3bDBzajliVlJBTzZ5WDdiaXFSc1cyTHkyQnhGcnZpQlRONlB3?= =?utf-8?B?ZkpsOENVZ3V4YVpzMXVoQjREaVpzdGFpRVFBZW8rallrenplRDI3OGk1VlZW?= =?utf-8?B?dm9WalpaUnZJeU1uaDB1OEE5N1JVWVNSTkM2RWVVNW5waTNTZkRQT09zaHgv?= =?utf-8?B?bGQ4NXh6ODF5cHpjVEdVQkZGMFV1ZnlyRUU0Y0ZwdyswcXp6L211akVSVlZJ?= =?utf-8?B?UHF1S1AzZTlpR3JMV3U5cnhNYklqUWpETWVoVk5vS1pQZE5tamxwbzFSRFh4?= =?utf-8?B?RHJNcVRXYnFuUVdBa1dEVkw5Z3EvN1pSL0RtbmdBUTlCWjgvY0VOdTFKV25p?= =?utf-8?B?YTRsT2YwZlZEYmltdmtWdVQ2SDlxSGV3Q1R2b2FjR3BJMldhYTBWYitjL2dp?= =?utf-8?B?TEt3bXpNU0Nsek5ldHYxS0RxZG10KzNObVM3Tno4V0k3aG9lWXVkZjVxSGxO?= =?utf-8?B?TzhBdkhSeDdnanl2Tjd1cFY2b0hXald6a25LQ0wxRVQ3NHlMelRmQUx4Kysz?= =?utf-8?B?V3QrblhFVlhOZkZDT3NQM0JHdS9yLzA5MEZhTm1mZ1hZTEtoVHQrUlFiOEY3?= =?utf-8?B?YU1wNnBVZzE4dmR3V2txTVR1eEJEQ0tyeVYzZ0EyazhTSjFEZFZkbmJYY3NZ?= =?utf-8?B?NEtwdnE3d3k4N0czaGJtY0cxemVEN0tzazMvNHBuS1l3UDE0eWVIalNqVFZv?= =?utf-8?B?Z2Z0ZTRzTk0vbFR3N2hTc0ZlTVFDbXFGNWtIOWdRbHhaNFZWS2V2SjNCN0x5?= =?utf-8?B?dmlRejB2OWZweDNNVld4YlBLZXZDMHdnMmhyRW9YOFBzZkdvQm0zNWd6MDVZ?= =?utf-8?B?SjI2Wmd5NnlWM3lwL3FDTXFucHYwNTBVZnFwVThxd1Z3b0hOS2dyT3BBMHg5?= =?utf-8?B?YmN3VlZLMFVNcnNUWDhJWGRPS2ZEdE44ME1xRUNoZXVDN0MwV0Y4d2V4dDBy?= =?utf-8?B?UWFLbDdqNHZpaG44NDd0Yjl6NUQ1UmVYbEtOeGhiQzB2aGpYOWp6TUR5czRQ?= =?utf-8?B?bGw4NU5EamV1NlhFQXhaK3p0bUdqdlo2cCtLK0dDdTMzTXBJWDJROUlBelJS?= =?utf-8?B?QXIzT0F3SmZENnBzYmFBTFJLSHNuMDNiTkgyamxFaHhvNnJqM051TC9RcnN4?= =?utf-8?B?azJYWjVNaE5id1VIekNWd2lOMkdiZHV3bkI4cCtOTmxLNngvVElVL2Eva1h4?= =?utf-8?B?RWtlYXRWOGpnTW1NcFRZYW9zY3hzVFRjOUJ0ZjlxZkd1blpmSzd6STZHME9U?= =?utf-8?Q?Nchpon5UQQmoMpe35c=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 665feac7-847a-46e2-438b-08dad76aa075 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2022 09:16:58.7870 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8P250MB0939 Subject: Re: [FFmpeg-devel] [PATCH 5/5] avcodec/mpeg4videodec: duplicate the last decoded frame when the last coded frame was skipped 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: James Almer: > This ensures the video stream duration is not lost after decoding. > > Signed-off-by: James Almer > --- > libavcodec/h263dec.c | 13 +++++++++++++ > libavcodec/mpegvideo.h | 1 + > 2 files changed, 14 insertions(+) > > diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c > index ac7a8521e5..0a2d7487a8 100644 > --- a/libavcodec/h263dec.c > +++ b/libavcodec/h263dec.c > @@ -430,6 +430,18 @@ int ff_h263_decode_frame(AVCodecContext *avctx, AVFrame *pict, > return ret; > s->next_picture_ptr = NULL; > > + *got_frame = 1; > + } else if (s->skipped_last_frame && s->current_picture_ptr) { > + /* Output the last picture we decoded again if the stream ended with > + * an NVOP */ > + if ((ret = av_frame_ref(pict, s->current_picture_ptr->f)) < 0) > + return ret; > + /* Copy props from the last input packet. Otherwise, props from the last > + * returned picture would be reused */ > + if ((ret = ff_decode_frame_props(avctx, pict)) < 0) > + return ret; > + s->current_picture_ptr = NULL; > + > *got_frame = 1; > } > > @@ -500,6 +512,7 @@ retry: > s->extradata_parsed = 1; > } > ret = ff_mpeg4_decode_picture_header(avctx->priv_data, &s->gb, 0, 0); > + s->skipped_last_frame = (ret == FRAME_SKIPPED); > } else if (CONFIG_H263I_DECODER && s->codec_id == AV_CODEC_ID_H263I) { > ret = ff_intel_h263_decode_picture_header(s); > } else if (CONFIG_FLV_DECODER && s->h263_flv) { > diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h > index 6440b906b1..42275953b9 100644 > --- a/libavcodec/mpegvideo.h > +++ b/libavcodec/mpegvideo.h > @@ -175,6 +175,7 @@ typedef struct MpegEncContext { > Picture *last_picture_ptr; ///< pointer to the previous picture. > Picture *next_picture_ptr; ///< pointer to the next picture (for bidir pred) > Picture *current_picture_ptr; ///< pointer to the current picture > + int skipped_last_frame; > int last_dc[3]; ///< last DC values for MPEG-1 > int16_t *dc_val_base; > int16_t *dc_val[3]; ///< used for MPEG-4 DC prediction, all 3 arrays must be continuous Can you give an example where this matters? And what does the spec say about this? Is "output the last frame again" really the appropriate response upon encountering a NVOP? - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".