From patchwork Fri Feb 23 13:58:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 46471 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:26a3:b0:19e:cdac:8cce with SMTP id h35csp993426pze; Fri, 23 Feb 2024 06:33:51 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXGzAV+yvxhIv2Lwq52/vQ4pd71eX0grigMcRX2lOrAZ54LofiJKJPWpDQ8GoRFdan+I5PSm3APZMhiLhA3Xm9WZ+8YBTo8gT3DSA== X-Google-Smtp-Source: AGHT+IHaFlD+PnKwk6DJcbyEu/ammWdanxPhYQ8mlLNZ2UQjfCiIl1b4mtp6sdXNsUBKQHeJkZXz X-Received: by 2002:a05:6402:1607:b0:565:7d4a:1d4c with SMTP id f7-20020a056402160700b005657d4a1d4cmr10545edv.9.1708698831228; Fri, 23 Feb 2024 06:33:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1708698831; cv=none; d=google.com; s=arc-20160816; b=OYOURwE+068lE0IQJIaw5DT9TqDRmARCiBQF8Bz0bggyNyzD5kLgWMIW42O3NdQ5Ik N3PWLFnp49fdfxzZUl8veqXjBXo6+iMSCvMevubdymnk8vVfMw9xWFeTHPWy6nZDvOkG F3kIggJo0G1mAASiDshjBTWHGmVkd9ucD1tABcEi6k46OzGGQvAf+57EBPNH/coAV9vB O4q7Yg1r5dhKM1Wq/tdVYEbWmPZY1QvPVFs7Dp9l9lsQZ7Ok0dSGBzwaGqXvy3laIWDX 88AaO0Z/1++T9uUjARpicxGg0TOM1YK8vtOHoLA5Mm/yrDBh0JJDeajfG0plhVQ7t3Yx gC8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=rnOf3HHW7ehlkv8QeYwBMm7zHh8PpF8xREZ11MFdtMI=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=CC9M7cZy63hUYnwhHd4OEq6gl0LVc/8nUtM1k62cxgGxR73werZv/E0pf//BtB+z27 e2lDepcqKtAR8JrmaFIhl++BkveoemLVU/nxH6BSjJTHxodOYj54jfRPDDz3vLf7+zDu 6G/pijyesu+zWARQyG8Ntfc11Nx78ttLVvGuj/78qQ5O6y1Z8eSCCubGyt4E/LtYMu/R 1nge+qeBSmAP1uTBOXpDx+jfA2VMZERVi/ZT83BltNJcfFPb6OCti/zzbT4iWlyt2Sb4 YkR7Tx4PT0h9W2z0Y5bSvTBR0Prw3Y6UFQKYfUoEN+gZTnmitoQPzHT59M11PQniIZfP MJYA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=PMHE9Svy; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c10-20020a05640227ca00b0056541227202si1286134ede.91.2024.02.23.06.33.50; Fri, 23 Feb 2024 06:33:51 -0800 (PST) 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=@khirnov.net header.s=mail header.b=PMHE9Svy; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0441568C9D2; Fri, 23 Feb 2024 16:31:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BA14368C5EE for ; Fri, 23 Feb 2024 16:31:35 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=PMHE9Svy; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id C0FAF4D5D for ; Fri, 23 Feb 2024 15:31:33 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id VTWlcIAYWisQ for ; Fri, 23 Feb 2024 15:31:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1708698688; bh=9VO4dvvSsqPAm5tuZpDXBf3r2jov6FfEInzAF55shc8=; h=From:To:Subject:Date:In-Reply-To:References:From; b=PMHE9Svyc07zmTGZaL1MAECCjeQqVSbCAOStA15lmzTcf1zjjagriql5Uxx6yk4VR R7hjI20+TzDeI7DUZ5jxuN+b7fkW3LP7JRjg2uBpRh5zZ+52IxiK8Lwu26M8KXfbJz YsuluFjFcdJ2kgZdutDxMRGWYl8IYmYth2cjB37+pJm8P8mpUMD4SDxsfz81RuD0gk xlKcuT+znKGk5Zp2u1J5tseCBQwSUCgvx3iW2NpEVMVdzJc+UNKYmDgv01OJCnBz4L gpkGeSoMTTW8x6P9TT5c/1kDwrHb44PkHN2ZBUtO4HleHijFa13nx99Y50VoztC4Na mC9QT1lDTVr8w== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 3654E4D3D for ; Fri, 23 Feb 2024 15:31:27 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 0E2623A2257 for ; Fri, 23 Feb 2024 15:31:23 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 23 Feb 2024 14:58:48 +0100 Message-ID: <20240223143115.16521-27-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240223143115.16521-1-anton@khirnov.net> References: <20240223143115.16521-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 26/38] avcodec/mpeg12dec: respect side data preference 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2quuxk2kVNeg From: Niklas Haas We only need to consider side data types that may possibly come from the packet. --- libavcodec/mpeg12dec.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index d07eed8744..96987f5a8e 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -1306,16 +1306,17 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) } } - pan_scan = av_frame_new_side_data(s->current_picture_ptr->f, - AV_FRAME_DATA_PANSCAN, - sizeof(s1->pan_scan)); - if (!pan_scan) - return AVERROR(ENOMEM); - memcpy(pan_scan->data, &s1->pan_scan, sizeof(s1->pan_scan)); + ret = ff_frame_new_side_data(s->avctx, s->current_picture_ptr->f, + AV_FRAME_DATA_PANSCAN, sizeof(s1->pan_scan), + &pan_scan); + if (ret < 0) + return ret; + if (pan_scan) + memcpy(pan_scan->data, &s1->pan_scan, sizeof(s1->pan_scan)); if (s1->a53_buf_ref) { - AVFrameSideData *sd = av_frame_new_side_data_from_buf( - s->current_picture_ptr->f, AV_FRAME_DATA_A53_CC, + AVFrameSideData *sd = ff_frame_new_side_data_from_buf( + s->avctx, s->current_picture_ptr->f, AV_FRAME_DATA_A53_CC, s1->a53_buf_ref); if (!sd) av_buffer_unref(&s1->a53_buf_ref); @@ -1332,13 +1333,13 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) } if (s1->has_afd) { - AVFrameSideData *sd = - av_frame_new_side_data(s->current_picture_ptr->f, - AV_FRAME_DATA_AFD, 1); - if (!sd) - return AVERROR(ENOMEM); - - *sd->data = s1->afd; + AVFrameSideData *sd; + ret = ff_frame_new_side_data(s->avctx, s->current_picture_ptr->f, + AV_FRAME_DATA_AFD, 1, &sd); + if (ret < 0) + return ret; + if (sd) + *sd->data = s1->afd; s1->has_afd = 0; }