Message ID | GV1P250MB0737E0B19C14D6095C84A4828FE02@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM |
---|---|
State | New |
Headers | show
Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1706:b0:1af:cdee:28c5 with SMTP id nv6csp298235pzb; Sat, 11 May 2024 13:53:32 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWCrJvnBykMVG4MT5kAwdyzf3MiALVEchpOIiaI8IhMuaaLjmzpHGms5pahtgGxN9cpMqRE8WyrvJJMlP9OkgRBkHGxYZEesH9Z4g== X-Google-Smtp-Source: AGHT+IEj/dRe2VGbjkTr7/zMjRfViXTmlTc9W3vPJkKy/+hqx22F2LHJIFaw2qXCFVm8NRvr8gmp X-Received: by 2002:a17:906:69d7:b0:a59:c681:6314 with SMTP id a640c23a62f3a-a5a2d5cd7admr371220966b.42.1715460812451; Sat, 11 May 2024 13:53:32 -0700 (PDT) Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a5a17b21d4bsi333758866b.301.2024.05.11.13.53.31; Sat, 11 May 2024 13:53:32 -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=@outlook.com header.s=selector1 header.b="pKukng/g"; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2F92968D614; Sat, 11 May 2024 23:52:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2103.outbound.protection.outlook.com [40.92.74.103]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D361068D2F6 for <ffmpeg-devel@ffmpeg.org>; Sat, 11 May 2024 23:52:32 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R7hHfWkIwpSmlHpIQ/Ve6E2rx1X1ZFifZWofxTCQq1EwbAYOgb23D6nVsl5ezxHxfxKlUeennosKerjteaxmvEq/DoCexKbAyJfQhvJvV3ze4lhVQ3OX4aINL1gYpLbcIsi92+3OYuhPtP3C/kXv3/cunlljRUDKsMU9FY7YMB4urm0DhYStBuKzG6xOmmw/BB1X7tXs2oI2ZF1gyPes3scsQ0HGX2V0Zvk/46DKdG4uvHfi5CIrIvtLSJ20G4MEEs7oD0qa+FlPkIECQh0mV/hv7MWn+XQIbCmp3FTfPvFcwM8ynFIwXOnN8tauI4Jno7glt6w7lF0H1XuQrr9EIw== 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=cLzQRfHQpVWldzxBlhMm3F3TJwYGQff6nHC2iic9rnc=; b=iWXiBXZPwEkJladUPoeyYQqL3zFUsZrNPTLLTU8efDfVk+UHpWg8XoaaR4ARrh9JfZARRtWMEDTy/IiivL9uw/83xxdI4WJoI24KDvkQTs8NGE1c3Dbu+8VyC6FH9F7FTvpVZU7onJA2JskFg2ct9BapwLbj3qYJ5yxPurD+JrBDBk58JRoyvDDPFd453Ea+qRTTCse5+pcNhGMwiVhVNsPzEjwIJ0DALfpX1f4C8pI79OnEPtXVNMmRtCDGq709svsXtRNlfYlko81btA/Vr1WuITsmP+cErJezKjUuH1C0acMqA5DmWy6QDSYI3HGYnVWGtzyQBRGKOLyysVlr0g== 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=cLzQRfHQpVWldzxBlhMm3F3TJwYGQff6nHC2iic9rnc=; b=pKukng/gBlqP/80ksc8a2zs1dbUFitvHNH+Nd94TjYVSni/NB+NsWfS6kUdMg6Omt+WKZSEsOpfVoB9Hfrz68xZJ5JxjMbVsPTzjinmjXGTyKkdBsxTgz7l2sdQFUsBbYrZmmYK3tCLm3XDXeRtz8+uimY2h30lyKohv1ot9vZxR6UDZ/c08V3qHzkcDwHWJTO9DwwftS6c35rgl9moKaJJ93H2yCE8Jq6Fjh9KfUrdO3mX2SmGqzZqgNHvrnqigDZh2CKW/Qqlje1rKegmnzmP2yf/52bY3XHcdd9YGkuHOYd/H05ORHsF7ULkw0krh3UMxkmgoBV1nqYzZo8GRiw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DB9P250MB0449.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:325::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.51; Sat, 11 May 2024 20:52:30 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%7]) with mapi id 15.20.7544.052; Sat, 11 May 2024 20:52:30 +0000 From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Date: Sat, 11 May 2024 22:50:35 +0200 Message-ID: <GV1P250MB0737E0B19C14D6095C84A4828FE02@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM> X-Mailer: git-send-email 2.40.1 In-Reply-To: <AS8P250MB074471DDEA29072B2586F0EF8FE02@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> References: <AS8P250MB074471DDEA29072B2586F0EF8FE02@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> X-TMN: [1oKso98RYE3VozoPnPpPmOdJpkroWgIuFA6hnR8be8c=] X-ClientProxiedBy: ZR0P278CA0172.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:45::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240511205135.2411886-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DB9P250MB0449:EE_ X-MS-Office365-Filtering-Correlation-Id: 0f087906-88df-45e1-bd4d-08dc71fc4618 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|3412199016|440099019|1710799017; X-Microsoft-Antispam-Message-Info: CpkzMQD+GlPeyQCrn3aFKDSDG3nIhKf5h4bJZw/KfjcsUe7APjkKNsZPaDuXq8Cuve0RKfpYXK3oLwRVNHiOfUmudUrB6yeOU1mxHGUBhtmBjFpKuUHaVllOkzMpiwe0BjDskOjw7ISShsvzVjaDCN4Wn9gNf0Dh3j0xvl1tFL2lTlgcbUGMt0NQgLGp4zRCabJpdq0LbdK1Cv9G5mnVEiwxO45TvOdRV9o5EPt8YRbCvWXeCegJvoTNORz6u24Qybs/luBQ7NTuX1uGEpYlyUYJpI+w6URXFtkBR9zGCz70Z2QXIOTr2SFYFY5U+6kWNgIOxDn/FKcS4Sbg8x0Y1xBR2c9uS9KFOZSDaHx5xYoevA+LwNgLhGj2nvpWhsrrzJ4YQuT9PcbihqsTmI5e+SMG4AUzWc6FpqKiPjaR4184s73qE3Wm75Cp572b7FoS5odtH7TKdr0gcgA07T/Qbjdzs5mmT7AY80di26INldo5Kde8Gt25thnSaweS67XsTrxyGByC82iv9JllyO86aBDOI6qW/u44RaOKla3ma5SZyreeEFu0JB5VjWKUcKELB6hhGnbnEDeFsQHHA0r+uZb/7COWsLABgaW4uKzztcvWEfRBqNciriGd1Xp/kPNP X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vD81o5ZJGcytOO7U78WbdDmMHWNFgcV3QaxXtuXD2f7nsyJDrjt2vjgky/BWM+QpjQD/6eunAQD+z2Y7OhUuYFEAzB4UiGjg1Agg4ra1V3t42GNE7I1+OEUVZWVoHiVC/6YTxUQ790oO0H5kiFgeeJ8HQ+FE1hyqHtWqFcbyyJlEFGIC68V6Onl7KdhjVPyelZE7zmy9T/ZUWdh9LIEE8QmeOycbnJogPDHIRZoKfHyn9j6i3OuwPNNZvTytMYELJ+h09xQjW1P7g/jsYoL0/5zc7wXGMoqz8cV4Dv0ZtkPp9jCMXbRWfXvGah+X9wAzwGY8T+bVcZd2pFd8NMiiRemzh1HMaIpSgdL8Yh8IG4ZZPjI484lVsMmrqdQiqda0R7D43y66BAxHVxM3bKSuQLhL5BBf7poWeWUxbioay8K3JUcU2jwIhLy9wCZpCO78LFJ1WjSwUjPod8gubRMW+T2eOm7SFORuHAwyIBGw0ev72JjKbSYR0iIE756dbUolpq/S9g9qHlngUfSN5S02U+O7kru36TJ9i7n1uXfAEa4nsGnfNVCn5OGZEMbhb2wnpG5f0aq7rxro+IYkPVnHAz9lcqIcdERvOtS7PEIxMO4s5hegvdR4qC3jmfT/Or0H1u7Mmou9QDdSwatxcSwuyEIBtZqLbynzyTXVt+xSjW8s/7tYMIzUnsSnCOIchOnw3ZrB6jP6zdgz5ppojyfQxmALC61RrEzOh2Q2PmLJoDFLrHswolBB8SjPdBLlcjGiVZWBhEeF/+unGMmWIiu2y+iZsveyODQsbPX8Aq3BXR00bPj/e3MnMnn2a3c1FsO7Z2TeOShiljFVVebtsQT1NJ5cLbtaswNQV8sVeBfmXxfaNp2xZ/Dkj3NXOg5Qsm33lveynWu1MsVMCY+nRyv+o81Xf8LeEilC2MRdb04kXm1i63hVDRk8bC6eR9+56GYmWBejuVaKaHI0CPzopYtGIsMu5ueVWe18lhF8dooQBtrUplTSzika78NHSuewt8WKs4ZFnGvE/1FHubplBA+Red7jhQ9BQtDRxD4WwoPfKQ50AzmXFSuN3i6XqvFJVQ8UET/y/x6uPiUELl7f6RnB67SaHEBqWbFZS/d/vLCp4u86H2bfzGFGzuMLnw5PFFJEkyCIvG+WaRkNAJ7vxz8a68AWa6dxrwWGLdwHFbV+8K6fCcCrk+waTsfCkef3YOtH7p/n3zpjSX81rgmD0pko7jO6hLp+8cMuxrTRDmBUyw5XhOrrUw6BPjMWWtQrH6uM3f8mAHpg45xNoACaICELig== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f087906-88df-45e1-bd4d-08dc71fc4618 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2024 20:52:30.3825 (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: DB9P250MB0449 Subject: [FFmpeg-devel] [PATCH v2 11/71] avcodec/mpeg12dec: Allocate dummy frames for non-I fields X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> X-TUID: fGf15DJtWK8s |
Series |
[FFmpeg-devel,v2,01/71] avcodec/ratecontrol: Fix double free on error
|
expand
|
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 21a214ef5b..9940ff898c 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -1372,6 +1372,9 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) return ret; } } + ret = ff_mpv_alloc_dummy_frames(s); + if (ret < 0) + return ret; for (int i = 0; i < 3; i++) { s->current_picture.f->data[i] = s->current_picture_ptr->f->data[i]; @@ -1727,7 +1730,7 @@ static int slice_decode_thread(AVCodecContext *c, void *arg) * Handle slice ends. * @return 1 if it seems to be the last slice */ -static int slice_end(AVCodecContext *avctx, AVFrame *pict) +static int slice_end(AVCodecContext *avctx, AVFrame *pict, int *got_output) { Mpeg1Context *s1 = avctx->priv_data; MpegEncContext *s = &s1->mpeg_enc_ctx; @@ -1758,14 +1761,16 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict) return ret; ff_print_debug_info(s, s->current_picture_ptr, pict); ff_mpv_export_qp_table(s, pict, s->current_picture_ptr, FF_MPV_QSCALE_TYPE_MPEG2); + *got_output = 1; } else { /* latency of 1 frame for I- and P-frames */ - if (s->last_picture_ptr) { + if (s->last_picture_ptr && !s->last_picture_ptr->dummy) { int ret = av_frame_ref(pict, s->last_picture_ptr->f); if (ret < 0) return ret; ff_print_debug_info(s, s->last_picture_ptr, pict); ff_mpv_export_qp_table(s, pict, s->last_picture_ptr, FF_MPV_QSCALE_TYPE_MPEG2); + *got_output = 1; } } @@ -2204,14 +2209,9 @@ static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, s2->er.error_count += s2->thread_context[i]->er.error_count; } - ret = slice_end(avctx, picture); + ret = slice_end(avctx, picture, got_output); if (ret < 0) return ret; - else if (ret) { - // FIXME: merge with the stuff in mpeg_decode_slice - if (s2->last_picture_ptr || s2->low_delay || s2->pict_type == AV_PICTURE_TYPE_B) - *got_output = 1; - } } s2->pict_type = 0;
MPEG-2 allows to pair an intra field (as first field) together with a P-field. In this case a conformant bitstream has to satisfy certain restrictions in order to ensure that only the I field is used for prediction. See section 7.6.3.5 of the MPEG-2 specifications. We do not check these restrictions; normally we simply allocate dummy frames for reference in order to avoid checks lateron. This happens in ff_mpv_frame_start() and therefore does not happen for a second field. This is inconsistent. Fix this by allocating these dummy frames for the second field, too. This already fixes two bugs: 1. Undefined pointer arithmetic in prefetch_motion() in mpegvideo_motion.c where it is simply presumed that the reference frame exists. 2. Several MPEG-2 hardware accelerations rely on last_picture being allocated for P pictures and next picture for B pictures; e.g. VDPAU returns VDP_STATUS_INVALID_HANDLE when decoding an I-P fields pair because the forward_reference was set incorrectly. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/mpeg12dec.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)