From patchwork Sat Jul 2 22:21:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36603 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp1883938pzh; Sat, 2 Jul 2022 15:23:12 -0700 (PDT) X-Google-Smtp-Source: AGRyM1udIHNhyxoBYoZai6dnEXO9Hs+D1g31KfEPkUT7bjsEJWQmDvSOQQSOLAD68VL61JXvga92 X-Received: by 2002:a17:906:9508:b0:726:9589:6da7 with SMTP id u8-20020a170906950800b0072695896da7mr7841420ejx.505.1656800592217; Sat, 02 Jul 2022 15:23:12 -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 c20-20020a05640227d400b00435c05a5304si4652504ede.11.2022.07.02.15.23.11; Sat, 02 Jul 2022 15:23:12 -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=j2gOkXIG; 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 DD00468B980; Sun, 3 Jul 2022 01:22:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073040.outbound.protection.outlook.com [40.92.73.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 92BA068B969 for ; Sun, 3 Jul 2022 01:22:37 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bQAankqRkDzUgjp7kl8kOuiXB1N11/2X5FiK/GRhRAHnnrkZo15kzJSp+gIoE1TuYBozIxGwIQKboCdgdp8Qx5AqCwiixFBWHluWVrzZMPa8/nUFxye5KZAbDuzXeUjPsYN4NnfgqRoR+JlVOstMMYLVDFXrBCwh8M23UQaUDCfu5S5xaENZ7YRAXq5xcVkk4qitDVY9GW+8Xh+oGN8nir78lyoXWn/XuksNLrZDsKy0Dyebs5HQ9TnxuRrSMF6Yctqv9GMW9L768aZ4IKgm109Cv+urf86u9GpsOXCCnFTXea53s6gUVtH9ylx00ky0tTIrCoCtabkMA672lZuKhA== 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=p+GcTMuH/CJAJlGha8CRq1bte/b8BEG1iUKS/csnNmw=; b=U74GoN/sc2Xj1ZGxvrQFGKoENCTUwEYr9Gd+sK7xYYhuGiTQvVV4UiI5Gv7LKOiwvvH5eSrlTCUJZQWfx3uBiZKliVjdfYqphrieHvhj7LFmO01u0Q3a3SLVYrC2uWfkVR+AdJ0oHHhQPkplwU+f31w+HOT1VjDmv/rJnxKc5NbE1i7iuSp5zniuzrFxlAFupAB905OTiiFwaxFHGWohERvP//4baA0xItEOpEO9t0Wg00Mnhvk4E9tVwKH86iYlDvYLoCKnDMvagQyRVxQKa7Lgl1YKLn1NaJ4Cay3asKGI9KhtEP9zrNvuHzF5j8oabtaPsEA/rSKjBy1kLT/YUA== 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=p+GcTMuH/CJAJlGha8CRq1bte/b8BEG1iUKS/csnNmw=; b=j2gOkXIG0ronvOI7jUQ7Pm367m7aQzNdmju8fuKk5D0J5AAgOYmHJXMZi2VOcL1AzzG8tMSqIKhTjRy68ulYBt2Phf+5/6CSHK0AEr+QbHtj5tcBnveFKu590Zt1oTFJ6vCCo20XuIbp3+fT+w1G9U+lk6O+sCUeKuuolXuBtwzIJSKcdqHEy9yxshArBZ12kCttco8Wk6ltAG0agbJImZhOXIZ7GfIixO0LdU7wrn1ZBNbxADH2xm51WiShAklq96JJrLwJl31MlEQ3W/k8kgY5YNpGrn5xQoxNIZLOI4H9rYdfhbK0GA7YW/hSZLFcnc/gPgvRVSTQRbQrycRZ/A== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4240.eurprd01.prod.exchangelabs.com (2603:10a6:803:6e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.14; Sat, 2 Jul 2022 22:22:27 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5395.018; Sat, 2 Jul 2022 22:22:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 3 Jul 2022 00:21:48 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [uSvfWLzNMQSjlaRcw3l4OR3wlVZAd1TH] X-ClientProxiedBy: FR3P281CA0089.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::18) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220702222200.169681-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 69a880b7-2c0c-43b9-ccf1-08da5c79588c X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXwBRntoGkOsgo00FNZK4OlFznSAQ7Bg0NY+SprOscU7c5b29d+WTA82nwZ5cztzydVaYVH9xiC/79Qw6pZIJoZdyd/Cpr3LpiEfsh6A7uFWrb1UrMcGA6v5rGS1qlV/batkMCZOp0xkOUWq/MpPfVEDPI3rJmRXG7zdsVuPYrvoFH0HPuyHg9LEw+yszGJEypLq/cws4hU6+Zs+85f0E2/L9Q7SbKncmc8WdBcHi5wWqzUNDZzhqf2KGFFh1G+FZguvcAWjh0wP2sYxx+FF/Lt6gCUBK2tvOBSwMNw6sQfTgZbEVA0umXH4N2VZ3nWivodoJfFWpgiykRC8QTfdnEMJjxUA/0rsAzCqQd2afgB7HlAJizEXI5Jwx8cpH9ntvAFh0dA1cGtGWfu0tTv8AkSC7scIcjpd1GXCgAji+cQqqFhYjEJm4Yf2Ng3DQDGwOnsN8rj6ebrWhCTmtVStrQAMgR54nezmyqhrjgPK/RMl6nzHPI3JusV4UItpDrBf+bCeJDW9X1FOmAFsP7YnX1u+2d1D+xB2GdY5R5OG/mcwtCqIicaVNJu0NrCV6wxJooo26MmHxAs3yfsBodObnabZjtJCDZyKR9gtEMvNZHRjPrM7AUinuFYKeCnmrHXQjP9OJo6uYibkdYsQhCqLFeMvO/AbahgrV1uJxIq1bv+vW9mrij4JPYh0+f6JN6inDTg++WL9FSO5YfigbtPX6daR66xgFRrq7E= X-MS-TrafficTypeDiagnostic: VI1PR01MB4240:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GdSAmUqOQb7uFgyiUktkYc2V4Ris4IK9Suzsrsy1f9Ha3Id+TL8N+5XIGy90dJhJE1aFYV125GWk4UpKGsQv0s9sXqEfKR+UG3ZfZQ9AyUSiz01rkT6V+bKj6vNFtaGidI3apNn9tOnt0/bLUJpuxqiKahFeD7G8tv/g95xqVwwgeIweonB3U6P791efWUJyIy7JipjAbBUAvg3AeiF4gYeUXkDGybKYFbyCGkMpZ25dVMng7PBEdx5fC8+X4V9d3Pp8Yu+nfMoFuU4QzyvLpDmR3bkV2BARQ7+XW5sA+mP2k3ptNBcR1pYzrbp7Z/hcARp81LvHnsek0T2PGW2s+wiLbTZnenvDTf2qFEwlDBxE/Egw8ap+JbybwlYCHsI9T5EqxloJmibUehn0L8EY/AKpx+L/nGfrbQPDJVFoGsCo3R02NhxLu6UWxT1rAZyXS4Lqly3vx+xz4og3nCTA1ilcRVp+izi+yh//POzDmK9pLoQ24fV4Uz1u9DHW4wZ1tt8yjQ5v84C/p0wshKSXmYbQy0mANnjqixmJjKtTs9azdzG+TEHBfsZqMNgFzj/lUbPXQYI7P51vVF3zXisOdFzx2B9Zo2c3Mx6XzifzD9srVxaumIw2EB24VdlWdmrdoXxzfc+x1QBF1BX0v6c0HQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: juYMoO+kLoa4VnFaSe+ipJAgOZF74e0/rJwYo5q9N4MBdoCnkxpq9oed5bGER0+XXaRL9FDuZzb6L7dWwbj0SVDPZMIv3CXPf8uq5n3dgzRvETwF+ul0mKXB6qx+N6v4LM0vDCbXli0VE/G1ytbT6mIgl1yuC0tRRTMgKsC2URGiCvWFXqIM70ufN3s4/mrA8DcnY+azw3N1qYlYjXjClSKdie6RYRc5rtZke6iUz4seTt1iomSq9UfRvKAJ3UeNT/LDv060CM3Oeb0S1plzh/BMgvAzANkERWK4XuiYQ89DianXFOksjFP+9tpRLe7ZX9vPyjpmA+wLbv6nakMbdOR+Q5oDnfKHd7h2QFlXn7rr6EoTKubGbOPb+OwIBwZBgMlbFYGLfMnTNLJ65S2R8eHsDd583DO8CNDBNkxcOq/qK0tb18N0/n6zcXOM8bDfoS8oRvNVUh8W591fZomK5rddKtH0J6OfVxnY4BXbN9DagE06R8mv36D2vU61K818tfS9YzwrpLJxaCK+kkeDGPzv39UjRhf/cwBvA1I1NC3Z+9K9Q78R+8l5wLRaoxT2GUldOXchceIFtVIscRPhJU9vbmpK7s9BIWcHfQBeBmjjwF3ooLy7ItwCtBg1cyrKIzNudtompm6y0I0kYrCkmTeuvwVF3LUK1Uwax/CxYH1TMGjUlQ2WMpyo2PlBiz/6uR1UiQZpsOFPYEYkCx1/3mk7+ZLfOv5bupQq0C/cFdhPt9fveeOxKo3ib2y/E43oJ0LzkkY8pDY1T/I0XY8S0f5yvwleZLCAo6PAz26DTu4DroKmLgCLtNqjAD1W5+A+tbbMFtecVOeOwlAwIYKN0xhOfKHLKPkc7PWEgLJetvDAHXdo6vHD/E5KFXREHZ09n1eW7Ksh1cCdV6qHy55wQdOU87iy3XTmrCiWYVtNV3CkZv/jXhbg+dP54D5v8RHSZLCPqgzb0cHngcCq4kq3jlwgmhy7RWZ0ipqKLypxmocmCMsrCn0jqJlGrNBg/dtFKVelTrQ0aqv25KhyD2GQaUT+Cz/YrX+xApPtQ5Ap/hmVcaomqs6yYwReBGEYB0Q+jT2e1AADoS2QOUgHqJ8BZ+cLVXfuraQCxvZqnhCEucn4YC0zAL9LA+s+oUdSTCWSZMM6ih4fWqNpRXO7vU+go8UkrQ+/V2JzuXXt4/tg4XJY6YFe96vcV2fxDyTevPCBshn3X2ywDX9jXmH1gcr+5UPPFDjCdpp9bB5nJF6/u/KFjgpPj19lmCUbUOhn+Wr+IAkkRnIhu1+BB7gcgazSUlP5tG6q/LapTvHCTsJNP6o= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69a880b7-2c0c-43b9-ccf1-08da5c79588c X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jul 2022 22:22:27.4986 (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: VI1PR01MB4240 Subject: [FFmpeg-devel] [PATCH 08/20] avcodec/h2645_sei: Factor updating H.2645 SEIs out 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IieJLZamkqww Signed-off-by: Andreas Rheinhardt --- libavcodec/h2645_sei.c | 29 +++++++++++++++++++++++++++++ libavcodec/h2645_sei.h | 2 ++ libavcodec/h264_sei.h | 6 ++++++ libavcodec/h264_slice.c | 21 +-------------------- libavcodec/hevc_sei.h | 5 +++++ libavcodec/hevcdec.c | 22 +--------------------- 6 files changed, 44 insertions(+), 41 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 5ff62bfac1..21208fa920 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -389,3 +389,32 @@ int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, return FF_H2645_SEI_MESSAGE_UNHANDLED; } } + +int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src) +{ + int ret = av_buffer_replace(&dst->a53_caption.buf_ref, + src->a53_caption.buf_ref); + if (ret < 0) + return ret; + + for (unsigned i = 0; i < dst->unregistered.nb_buf_ref; i++) + av_buffer_unref(&dst->unregistered.buf_ref[i]); + dst->unregistered.nb_buf_ref = 0; + + if (src->unregistered.nb_buf_ref) { + ret = av_reallocp_array(&dst->unregistered.buf_ref, + src->unregistered.nb_buf_ref, + sizeof(*dst->unregistered.buf_ref)); + if (ret < 0) + return ret; + + for (unsigned i = 0; i < src->unregistered.nb_buf_ref; i++) { + dst->unregistered.buf_ref[i] = av_buffer_ref(src->unregistered.buf_ref[i]); + if (!dst->unregistered.buf_ref[i]) + return AVERROR(ENOMEM); + dst->unregistered.nb_buf_ref++; + } + } + + return 0; +} diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index 4128ff7940..e87a669b3e 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -130,4 +130,6 @@ int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, enum AVCodecID codec_id, GetBitContext *gb, GetByteContext *gbyte, void *logctx); +int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src); + #endif /* AVCODEC_H2645_SEI_H */ diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h index 7a53d01ac5..003f427ac3 100644 --- a/libavcodec/h264_sei.h +++ b/libavcodec/h264_sei.h @@ -142,6 +142,12 @@ struct H264ParamSets; int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, const struct H264ParamSets *ps, void *logctx); +static inline int ff_h264_sei_ctx_replace(H264SEIContext *dst, + const H264SEIContext *src) +{ + return ff_h2645_sei_ctx_replace(&dst->common, &src->common); +} + /** * Reset SEI values at the beginning of the frame. */ diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index a6d8d2bdac..fb7aed998b 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -433,29 +433,10 @@ int ff_h264_update_thread_context(AVCodecContext *dst, h->frame_recovered = h1->frame_recovered; - ret = av_buffer_replace(&h->sei.common.a53_caption.buf_ref, - h1->sei.common.a53_caption.buf_ref); + ret = ff_h264_sei_ctx_replace(&h->sei, &h1->sei); if (ret < 0) return ret; - for (i = 0; i < h->sei.common.unregistered.nb_buf_ref; i++) - av_buffer_unref(&h->sei.common.unregistered.buf_ref[i]); - h->sei.common.unregistered.nb_buf_ref = 0; - - if (h1->sei.common.unregistered.nb_buf_ref) { - ret = av_reallocp_array(&h->sei.common.unregistered.buf_ref, - h1->sei.common.unregistered.nb_buf_ref, - sizeof(*h->sei.common.unregistered.buf_ref)); - if (ret < 0) - return ret; - - for (i = 0; i < h1->sei.common.unregistered.nb_buf_ref; i++) { - h->sei.common.unregistered.buf_ref[i] = av_buffer_ref(h1->sei.common.unregistered.buf_ref[i]); - if (!h->sei.common.unregistered.buf_ref[i]) - return AVERROR(ENOMEM); - h->sei.common.unregistered.nb_buf_ref++; - } - } h->sei.common.unregistered.x264_build = h1->sei.common.unregistered.x264_build; if (!h->cur_pic_ptr) diff --git a/libavcodec/hevc_sei.h b/libavcodec/hevc_sei.h index 8ea0245802..2bb6b7e48b 100644 --- a/libavcodec/hevc_sei.h +++ b/libavcodec/hevc_sei.h @@ -107,6 +107,11 @@ struct HEVCParamSets; int ff_hevc_decode_nal_sei(GetBitContext *gb, void *logctx, HEVCSEI *s, const struct HEVCParamSets *ps, enum HEVCNALUnitType type); +static inline int ff_hevc_sei_ctx_replace(HEVCSEI *dst, const HEVCSEI *src) +{ + return ff_h2645_sei_ctx_replace(&dst->common, &src->common); +} + /** * Reset SEI values that are stored on the Context. * e.g. Caption data that was extracted during NAL diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 69e65482dd..698fb50a6c 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -3745,30 +3745,10 @@ static int hevc_update_thread_context(AVCodecContext *dst, s->max_ra = INT_MAX; } - ret = av_buffer_replace(&s->sei.common.a53_caption.buf_ref, - s0->sei.common.a53_caption.buf_ref); + ret = ff_h2645_sei_ctx_replace(&s->sei.common, &s0->sei.common); if (ret < 0) return ret; - for (i = 0; i < s->sei.common.unregistered.nb_buf_ref; i++) - av_buffer_unref(&s->sei.common.unregistered.buf_ref[i]); - s->sei.common.unregistered.nb_buf_ref = 0; - - if (s0->sei.common.unregistered.nb_buf_ref) { - ret = av_reallocp_array(&s->sei.common.unregistered.buf_ref, - s0->sei.common.unregistered.nb_buf_ref, - sizeof(*s->sei.common.unregistered.buf_ref)); - if (ret < 0) - return ret; - - for (i = 0; i < s0->sei.common.unregistered.nb_buf_ref; i++) { - s->sei.common.unregistered.buf_ref[i] = av_buffer_ref(s0->sei.common.unregistered.buf_ref[i]); - if (!s->sei.common.unregistered.buf_ref[i]) - return AVERROR(ENOMEM); - s->sei.common.unregistered.nb_buf_ref++; - } - } - ret = av_buffer_replace(&s->sei.common.dynamic_hdr_plus.info, s0->sei.common.dynamic_hdr_plus.info); if (ret < 0)