From patchwork Thu Jul 20 20:34:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42862 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp76772pzh; Thu, 20 Jul 2023 13:34:39 -0700 (PDT) X-Google-Smtp-Source: APBJJlHt3PfZzDCK1HWgwdGNJ8TYjgcScF0AnlKCzLpJ+w6BFsq5qiBQStctMRhJsU4OEdsIcY4/ X-Received: by 2002:aa7:d4c9:0:b0:51d:f3b2:87b8 with SMTP id t9-20020aa7d4c9000000b0051df3b287b8mr14252edr.0.1689885279047; Thu, 20 Jul 2023 13:34:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885279; cv=none; d=google.com; s=arc-20160816; b=Kz4uctVsJAFAeJPBQ+XEke1Y3d0FL4kM6x94/RhSr1Q1i5lWZkTbF8pJrG8fXbQTBP Rwr4QfXxiIoyaLiXnhMOVvVHHIv4550rKRm47PkkMKrPR/Fj9XwItYTxRo3FzTEOQW4A bZ6zjyxfOM6zVUGqPDuSYvsK6hzXvfvgq5kIwZT6oLt0e1hP3f1d43LwoE3SH0uNaAoL zTwBr0k3B3hOIK/8i/gYmaHK/xloh3KwRBjyRzY77uyy/YBgm4wNIs9dHZb0BFdpbm21 TgOfOHAu1563aXBe6CY/vvAfJLwXh48F0+f9A5ESUb/RTitDNHKwCz5QmV81jZqg9twj QMpQ== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=EsWw3j7J4hjPEgyqI3OvgSmBbLS8vRNUFOaW272Fm+w=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=l/49wMYYnvSXQMkbontfqCDJxUMbnXtsum+jsedp1qqfhUlLt7d/RkOKhflm0QjVSD 5A/ien9iTXqEWLIbZQrl1U0eKvaFmD8pwO7knbt3k0QqKjXbldLt5RDsNOiMocjoOhNL uhtuHnCpRhLCMXh47Oqu/D0YSznufUim/mJgmX4I1xGGmCnXJMFTafFHxlif4nKOnoxy MZ0O27ca/lnhygiw6UKRwbxINISdWdCjsLVvqPbxXYgyTDxnrvwdYm1mDCYmrJP7Y3bf 793180i2i51AEMIiijSPJwfO4Uk8M6y3rAGFT4z6CpON1J7JXQd4NEofZG8XAjfmBVZ4 fquQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=gGzxMRro; 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=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 n10-20020aa7d04a000000b005217412e3b1si1241147edo.463.2023.07.20.13.34.37; Thu, 20 Jul 2023 13:34:39 -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=20221208 header.b=gGzxMRro; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C195C68C068; Thu, 20 Jul 2023 23:34:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f50.google.com (mail-ot1-f50.google.com [209.85.210.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9B4E168C068 for ; Thu, 20 Jul 2023 23:34:26 +0300 (EEST) Received: by mail-ot1-f50.google.com with SMTP id 46e09a7af769-6b9cf7e6ab2so998326a34.1 for ; Thu, 20 Jul 2023 13:34:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885265; x=1690490065; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=9xCeNcnEhyzbJEVDdWpuGi37lJLL48w6bn/yMPudYes=; b=gGzxMRroaFKK2fY0EqATf3Zp51AE0ZQDosO91SM4djMb7zBTeGxddzJYPqO3JBCLwq d8lfLp9slyJv4I/z0/XIw4ycrnMS5caxf2GOS+AZOAqJfRFYGkXxYCNA53oeiT3j11+2 MT30oAmtKasx1zbPT7n2/b4phpywk1NEhyXEQIokoiBtT3k7mnaWvg/rAVg4puuDBXrI dBLTPfVjxAXb1NuBliQTVzxLX1BwOEdGYuCMjroVJpvTXSSGclbRMjVQpS0HgSpaikLc /pWnTtxy4W5dtZR6FJ50aLxm0v2XWSGAmsgDPXXm631dIy7SHPD2IP9RWur26X0zpsC7 rysA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885265; x=1690490065; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9xCeNcnEhyzbJEVDdWpuGi37lJLL48w6bn/yMPudYes=; b=ggkNCldDuKRx0xyALYEJ6UGsLqO0FWMjiIJoXELLNjmMCWuHwhy+qI2eXNtEwkUZpV Aq/uGmw9A5i0C+dE5oGFLK7Xe9kS4RZCOtf9k+bbo2H4Z4BN4hVHL577gQivjiSxXByt 1/91OD1VsCfURT38FikONzZu2EH8+ZIu7LZV+RZVbslXR2lyZ16kgZxTyYXMS6g3bsbH n5pSTG433LBrS1PwJkoZdGsbZDt+MSuraCQN60SLY/7HLoFQczZEWZcEPNZ4T9eF+E2b xppojCqyjpqeYa9jwenoXM7WdM2R915QzFbWshiUh5hCgRIK4/lblmasLb9LOnp69U4b hEBQ== X-Gm-Message-State: ABy/qLY5y1VRHcrlvUtbMKg7tdNXjV2YCL+vKaYPzFRIdZRHV/dWApJn 7b2KRTmy88GIdp8keo/nyfwm4vnVQek= X-Received: by 2002:a9d:7cc2:0:b0:6b9:9018:6ea with SMTP id r2-20020a9d7cc2000000b006b9901806eamr1022770otn.20.1689885264524; Thu, 20 Jul 2023 13:34:24 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:24 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:03 -0300 Message-ID: <20230720203415.41757-1-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/13] avcodec/avcodec: add side data to AVCodecContext 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: Xc1uxi8LjRuv Signed-off-by: James Almer --- libavcodec/avcodec.c | 2 ++ libavcodec/avcodec.h | 8 +++++ libavcodec/avpacket.c | 84 +++++++++++++++++++++++++++++++++++++++++++ libavcodec/packet.h | 54 ++++++++++++++++++++++++++++ 4 files changed, 148 insertions(+) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index 340abe830e..16869e97f2 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -467,6 +467,8 @@ av_cold int avcodec_close(AVCodecContext *avctx) av_freep(&avctx->internal); } + av_packet_free_side_data_set(&avctx->side_data_set); + for (i = 0; i < avctx->nb_coded_side_data; i++) av_freep(&avctx->coded_side_data[i].data); av_freep(&avctx->coded_side_data); diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index fe41ecc3c9..2902ecf6cb 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2102,6 +2102,14 @@ typedef struct AVCodecContext { * an error. */ int64_t frame_num; + + /** + * Additional data associated with the entire stream. + * + * - decoding: set by user + * - encoding: unused + */ + AVPacketSideDataSet side_data_set; } AVCodecContext; /** diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index 5fef65e97a..f569731403 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -645,3 +645,87 @@ int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp) return 0; } + +AVPacketSideData *av_packet_get_side_data_from_set(const AVPacketSideDataSet *set, + enum AVPacketSideDataType type) +{ + for (int i = 0; i < set->nb_side_data; i++) + if (set->side_data[i].type == type) + return &set->side_data[i]; + + return NULL; +} + +static int add_side_data_to_set(AVPacketSideDataSet *set, + AVPacketSideData **psd, + enum AVPacketSideDataType type, + uint8_t *data, size_t size) +{ + AVPacketSideData *sd, *tmp; + + for (int i = 0; i < set->nb_side_data; i++) { + sd = &set->side_data[i]; + + if (sd->type == type) { + av_freep(&sd->data); + sd->data = data; + sd->size = size; + *psd = sd; + return 0; + } + } + + if (set->nb_side_data + 1U > FFMIN(INT_MAX, SIZE_MAX / sizeof(*tmp))) + return AVERROR(ERANGE); + + tmp = av_realloc_array(set->side_data, set->nb_side_data + 1, sizeof(*tmp)); + if (!tmp) + return AVERROR(ENOMEM); + + set->side_data = tmp; + set->nb_side_data++; + + sd = &set->side_data[set->nb_side_data - 1]; + sd->type = type; + sd->data = data; + sd->size = size; + *psd = sd; + + return 0; +} + +int av_packet_add_side_data_to_set(AVPacketSideDataSet *set, + enum AVPacketSideDataType type, + uint8_t *data, size_t size) +{ + AVPacketSideData *sd; + + return add_side_data_to_set(set, &sd, type, data, size); +} + +AVPacketSideData *av_packet_new_side_data_to_set(AVPacketSideDataSet *set, + enum AVPacketSideDataType type, + size_t size) +{ + AVPacketSideData *sd = NULL; + uint8_t *data = av_malloc(size); + int ret; + + if (!data) + return NULL; + + ret = add_side_data_to_set(set, &sd, type, data, size); + if (ret < 0) + av_freep(&data); + + return sd; +} + +void av_packet_free_side_data_set(AVPacketSideDataSet *set) +{ + int i; + for (i = 0; i < set->nb_side_data; i++) + av_freep(&set->side_data[i].data); + av_freep(&set->side_data); + set->nb_side_data = 0; +} diff --git a/libavcodec/packet.h b/libavcodec/packet.h index f28e7e7011..590c2bf15a 100644 --- a/libavcodec/packet.h +++ b/libavcodec/packet.h @@ -318,6 +318,14 @@ typedef struct AVPacketSideData { enum AVPacketSideDataType type; } AVPacketSideData; +/** + * Structure to hold a set of AVPacketSideDataSet + */ +typedef struct AVPacketSideDataSet { + AVPacketSideData *side_data; + int nb_side_data; +} AVPacketSideDataSet; + /** * This structure stores compressed data. It is typically exported by demuxers * and then passed as input to decoders, or received as output from encoders and @@ -724,6 +732,52 @@ int av_packet_make_writable(AVPacket *pkt); */ void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst); +/** + * Allocate a new side data entry into to a set. + * + * @param set a set to which the side data should be added + * @param type side data type + * @param size side data size + * @return pointer to freshly allocated side data entry or NULL otherwise. + */ +AVPacketSideData *av_packet_new_side_data_to_set(AVPacketSideDataSet *set, + enum AVPacketSideDataType type, + size_t size); + +/** + * Wrap an existing array as a packet side data into a set. + * + * @param set a set to which the side data should be added + * @param type side information type + * @param data the side data array. It must be allocated with the av_malloc() + * family of functions. The ownership of the data is transferred to + * pkt. + * @param size side information size + * @return a non-negative number on success, a negative AVERROR code on + * failure. On failure, the set is unchanged and the data remains + * owned by the caller. + */ +int av_packet_add_side_data_to_set(AVPacketSideDataSet *set, + enum AVPacketSideDataType type, + uint8_t *data, size_t size); + +/** + * Get side information from set. + * + * @param set a set from which the side data should be fetched + * @param type desired side information type + * @return pointer to side data if present or NULL otherwise + */ +AVPacketSideData *av_packet_get_side_data_from_set(const AVPacketSideDataSet *set, + enum AVPacketSideDataType type); + +/** + * Convenience function to free all the side data stored in a set. + * + * @param set a set + */ +void av_packet_free_side_data_set(AVPacketSideDataSet *set); + /** * @} */ From patchwork Thu Jul 20 20:34:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42863 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp76843pzh; Thu, 20 Jul 2023 13:34:50 -0700 (PDT) X-Google-Smtp-Source: APBJJlG/+EKKNNQCuYJvyJG0UeYrlGF39xqZ7BBhaqbHZ38rNRkgLzLeMXK+qO8Moi0+NDJ32iQ9 X-Received: by 2002:a17:907:320b:b0:997:beca:f9db with SMTP id xg11-20020a170907320b00b00997becaf9dbmr3930443ejb.54.1689885290450; Thu, 20 Jul 2023 13:34:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885290; cv=none; d=google.com; s=arc-20160816; b=0ZMHXEEodVBvVJiu3iOMLP7lX3Lm43KGHJFSbcEJIjopfrZsBLIOOhc5tIocVoB2Wz 1tDecupaJesHXDX7pf1tt9vBV2omZuivgeL8xw+svIc3yXDfpPzbb4mXLdLnCjIr/kyc fcIfLLx0Sr8s06VTO9p4tjt6fcdlpFJZfwgr2MtrAKv1L4MGRhAUMHtFQz5bdeQQYTcl sooj2xwDqA4dpY6k+VM7BulZNGjyfvXp0cIUdw/xsJney0gvF2ZC3OCqbkyys2aFoVZJ ntNUtxQVVyIwcOoOYPA/uOuybkXScXhGqdlp6ROPf9Z/HW3BDihkzcPW88gloq2U0eJ6 hoAg== 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=9+6REUkjnHYq4E0inZerzPAHkvoGzPz27pN7iIOPlRA=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=c3PMYvLoEYAoXn9Cw3PxY9ChgO8ZdvHYGMi+Q6NxUm9RN/WwUCktNInEvrFKO/LjRR f8rH+IWkstRqopK+7KOIIbME1tNBgtTWc322AeyQpMuMAoqOKvCoEhBpPxFDX9niSXhe AcVOcOhfL6MH/M6zaf2BLzj7MJLMXI5fDSew0Y0jzpRC6+FkowSKKAFnljaRY8gl6NjP RyeHIGwhuK7K5WeO5N5Jt2Y0JlYYPraZM8doZv2eI48SeasJrqKFHYIlDr61x/8Uqyp2 3wlLNFIpy/jNecLcVd35nbk2hZwN0Y7C4SV3I5Hihd+yjj22NkfkzSIhdI3qQpb1SC3q Dglw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=I4Pp5+jR; 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=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 e18-20020a170906081200b00987c203c563si1068509ejd.182.2023.07.20.13.34.49; Thu, 20 Jul 2023 13:34:50 -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=20221208 header.b=I4Pp5+jR; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DE71B68C527; Thu, 20 Jul 2023 23:34:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f43.google.com (mail-ot1-f43.google.com [209.85.210.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6FB9B68C068 for ; Thu, 20 Jul 2023 23:34:27 +0300 (EEST) Received: by mail-ot1-f43.google.com with SMTP id 46e09a7af769-6b9cf1997c4so1011407a34.3 for ; Thu, 20 Jul 2023 13:34:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885266; x=1690490066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=4Woo6NWXPVmwOcdBajMWfmZGZEJasZfMAnrPxYX0QUM=; b=I4Pp5+jRkh9PfbXnZplzc182AQ7oZlOEdSwOsyErvf4Ok9wnd125JJwDU5IYTqHW1X e72Kkgi5N4nTUBT8a+0qlRItlADtfwlURm4i7v6VKi+M63ZvJxDRbejigROAJBDjP6L3 h9/EM7FB/QBLOE2ysN9FTRJoY2w2bEiBJ0r0/kZNCNsRsOyU5YdSU0JVGbhn9KU9AW5W L7hmVA5qqMyCxui20diKOswA13ynwPpph2eRNFyw0ThPrOCtXhU19X9gV3CSW+g65dxR m6GKo043IVo+0R00dS8A6aCjNmNYLwmtIi4cxEhMv552ve1lP3OYEvxai6w5AoOHYYF8 jWWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885266; x=1690490066; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4Woo6NWXPVmwOcdBajMWfmZGZEJasZfMAnrPxYX0QUM=; b=LA7rustFML0GUSHVRRuoydZ+ExKgC6A8U56oW5eER3HGlDm7FCumpJHqLspZDHE+oH eJ8jRkR7PihH8LmcTFo89GHEi4lyK+Xc0+EAIbAy4P8hrhq5GcXMjbT6U9IXAeuHy5hO DE07bWcxsgXFmzQmbBro4larFiMWw+LfQ98ysF8NhZu/cNlmIm7exS4FfrZXqVfbbpTX P8cN2a94zmJwPpdna1O6ON3UgAZepQFpAENegESyz9PggLy3MYr7aA75+mg0yK8r3JPQ 9tYsKbMnXHZ94WfNFFgmhcGv/7otDhX1C/b8bM9y82NlExBBWLFSsjyQYSSLxWnsFOLL Keww== X-Gm-Message-State: ABy/qLag9WUwCZHfQxS9E8qoubuUsJWP1Im6nRzK4rrY+1ZuIRgHd0lK KWVazjZ7YsZLKfGGEceo0tFhJPmq5I8= X-Received: by 2002:a05:6870:f153:b0:1b0:344b:a09f with SMTP id l19-20020a056870f15300b001b0344ba09fmr595050oac.16.1689885265603; Thu, 20 Jul 2023 13:34:25 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:25 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:04 -0300 Message-ID: <20230720203415.41757-2-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/13] avcodec/codec_par: add side data to AVCodecParameters 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: Ol0v/pp9uY+I Signed-off-by: James Almer --- libavcodec/codec_par.c | 36 ++++++++++++++++++++++++++++++++++++ libavcodec/codec_par.h | 6 ++++++ 2 files changed, 42 insertions(+) diff --git a/libavcodec/codec_par.c b/libavcodec/codec_par.c index 775c187073..c113cfcd80 100644 --- a/libavcodec/codec_par.c +++ b/libavcodec/codec_par.c @@ -27,11 +27,13 @@ #include "libavutil/mem.h" #include "avcodec.h" #include "codec_par.h" +#include "packet.h" static void codec_parameters_reset(AVCodecParameters *par) { av_freep(&par->extradata); av_channel_layout_uninit(&par->ch_layout); + av_packet_free_side_data_set(&par->side_data_set); memset(par, 0, sizeof(*par)); @@ -72,6 +74,29 @@ void avcodec_parameters_free(AVCodecParameters **ppar) av_freep(ppar); } +static int codec_parameters_copy_side_data(AVPacketSideDataSet *dst, + const AVPacketSideDataSet *src) +{ + if (!src->nb_side_data) + return 0; + + dst->side_data = av_calloc(src->nb_side_data, sizeof(*dst->side_data)); + if (!dst->side_data) + return AVERROR(ENOMEM); + + for (int i = 0; i < src->nb_side_data; i++) { + uint8_t *data = av_memdup(src->side_data[i].data, src->side_data[i].size); + if (!data) + return AVERROR(ENOMEM); + dst->side_data[i].type = src->side_data[i].type; + dst->side_data[i].size = src->side_data[i].size; + dst->side_data[i].data = data; + dst->nb_side_data++; + } + + return 0; +} + int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src) { int ret; @@ -89,6 +114,10 @@ int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src memcpy(dst->extradata, src->extradata, src->extradata_size); dst->extradata_size = src->extradata_size; } + memset(&dst->side_data_set, 0, sizeof(dst->side_data_set)); + ret = codec_parameters_copy_side_data(&dst->side_data_set, &src->side_data_set); + if (ret < 0) + return ret; ret = av_channel_layout_copy(&dst->ch_layout, &src->ch_layout); if (ret < 0) @@ -177,6 +206,9 @@ FF_ENABLE_DEPRECATION_WARNINGS memcpy(par->extradata, codec->extradata, codec->extradata_size); par->extradata_size = codec->extradata_size; } + ret = codec_parameters_copy_side_data(&par->side_data_set, &codec->side_data_set); + if (ret < 0) + return ret; return 0; } @@ -261,6 +293,10 @@ FF_ENABLE_DEPRECATION_WARNINGS memcpy(codec->extradata, par->extradata, par->extradata_size); codec->extradata_size = par->extradata_size; } + av_packet_free_side_data_set(&codec->side_data_set); + ret = codec_parameters_copy_side_data(&codec->side_data_set, &par->side_data_set); + if (ret < 0) + return ret; return 0; } diff --git a/libavcodec/codec_par.h b/libavcodec/codec_par.h index add90fdb1e..06e9d54615 100644 --- a/libavcodec/codec_par.h +++ b/libavcodec/codec_par.h @@ -29,6 +29,7 @@ #include "libavutil/pixfmt.h" #include "codec_id.h" +#include "packet.h" /** * @addtogroup lavc_core @@ -223,6 +224,11 @@ typedef struct AVCodecParameters { * when no higher-level timing information is available. */ AVRational framerate; + + /** + * Additional data associated with the entire stream. + */ + AVPacketSideDataSet side_data_set; } AVCodecParameters; /** From patchwork Thu Jul 20 20:34:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42864 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp76923pzh; Thu, 20 Jul 2023 13:35:00 -0700 (PDT) X-Google-Smtp-Source: APBJJlFsD+IkhcnrVTZkhuN2PtMDNP2+tL90LE9VSlXa1E/Shr+VpzUPT+/40ZadHNam4uFPoYpB X-Received: by 2002:a17:906:221c:b0:993:eef2:5d5f with SMTP id s28-20020a170906221c00b00993eef25d5fmr6478101ejs.27.1689885300636; Thu, 20 Jul 2023 13:35:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885300; cv=none; d=google.com; s=arc-20160816; b=eAC+i9Fw62TKpDuU2/ekvli92ggjMbYtoEtQUlazeHOrRSN3U6XZZ3j8iI2HDv7MwN gXQ4yMMUq2kZreMzPqJn8boV+Uz/0qDamP+Ry7pgypbt0GE5Bh4QAjZcnssVX+zxmnjw 8rS4/FbkQbp7KJHuHr0STrzCUSFCQVtVhsd5302Tg4uvbAXNcmXCOQxvo2tQbee9IDjt zzyavNB0KpjNiQenICbzRaAk3oRI2OL8R6JkZHZP6uuxqARe1/l20hrVrtlpuPRT7Ka6 0ceT5RAiGARKnG+cAIqr6B5DnQGdrKqP1Ru+CfzqzF73N51mfqr/9IgQbqSn0G37CCBn Ma8Q== 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=/E4mmOSc6qIlUgFJaeAnp8FFIL+rZhqyiMXuoAiQcOA=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=gsWhLWA9iNlHc3jESnwReJ1NPAPrXjw/QkifztDBJv6I0JKp3p+N0skZp02UBC9q8N rvc32+6FN6AUghkHdScSd8uDjolhQ0W1SP5fd3TpNq9sntERmpC2uBEWIoz4DuizVWAp 7b4Iruy7qmKLdgXwsMuc0VFOCKiH57sX7ojpPDeTW2dfr3YHibdODxRQzUcxkM7h5Vi7 1wcvcezoTkgQi99Tqk6oqPgZGWnS3lZyKOwJ1mw2P0Q3aLnOZ/uk+tfKFaQawl81T7jH qV/nYcwoSqgeMyG2Z95bjgNEGd0STiRe25qtnaS+CpOlQJ/Im1T6RqYtTjmiZRBozK1g VFxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=rIGZhNGh; 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=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 h3-20020a170906828300b00978ae651cacsi1270500ejx.0.2023.07.20.13.34.59; Thu, 20 Jul 2023 13:35:00 -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=20221208 header.b=rIGZhNGh; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 17EE268C578; Thu, 20 Jul 2023 23:34:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f47.google.com (mail-ot1-f47.google.com [209.85.210.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7ECBD68C4EF for ; Thu, 20 Jul 2023 23:34:29 +0300 (EEST) Received: by mail-ot1-f47.google.com with SMTP id 46e09a7af769-6b9ed0831bcso1008046a34.0 for ; Thu, 20 Jul 2023 13:34:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885268; x=1690490068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=EFF5o3SIJFg8jm9V5FW+ds7IEg9yERSWL0enjcRb5zw=; b=rIGZhNGhbE8xhH8t35nF4BO837tqeB5XBq+nW1eHY11WNDDW+3s4/xQY2pUMuBm9GV Bka3MxQVe1ZAOSSOPIYS1Oj92zlJxHadXllZUJ3cwH6F7uWzYIXixf0dr62S2V/NRavp SK6zjjomj1jAo+EUw8/O48b5qePlibA0ksSk5JyPMQ+SpFr/syI++2TwYNkqLZwrxgva /QMg16th59mlCldxyxi2A1nnF6MVK3gJg9Mn4/5BkcL6EO7rV2oFh6UZu9KMKNZliBk5 eEtEKw1EXVrxrQQSjLWkH7c5m9+ugH5eRFgXUAg5pAPINOLsZr3R3SbJSsucllPSI0l6 bnqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885268; x=1690490068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EFF5o3SIJFg8jm9V5FW+ds7IEg9yERSWL0enjcRb5zw=; b=BWyXCFnZbbAWKlurioJ+/ee7OFCcD8aJ7x7NneNC6QXe5WjYHibr7eclXJ7dR+d11V BCqFQHlDmoD0qunWzx+cDhX6VyL8vfDYV8iB4YY8Uo4efXOc5w6n813S6Vb7OSOBZRJu hnTlPCSGfGc80uReKCGOXDLPmr+9/SQkPW5sqtpKy9/DlPl+g5rd1YwnzmiDanTnHBpc zrwfbZhEv5UbQ5HMfThBvJBf4yz84cjUqzrCxAn/FaQd8kro+C/V8ie2XLDEZ1p3gDA0 aCPuWOe0ZZJD3B6A26jCG+KH6hb11V2OsTy72XIw/k9ok7Rn0F5z0SBCgDKBp/6wTgBt zThw== X-Gm-Message-State: ABy/qLYwTT2XA0Ggu7xE0/f3IzU2SLJ2CsIXYwotFaOOosmW7942Cs8L Hu3Cit8zkG7rEPCC3yHv6uq3tf9oHhg= X-Received: by 2002:a05:6830:1607:b0:6b7:4af2:492d with SMTP id g7-20020a056830160700b006b74af2492dmr3858764otr.38.1689885266818; Thu, 20 Jul 2023 13:34:26 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:26 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:05 -0300 Message-ID: <20230720203415.41757-3-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/13] avformat/avformat: use the side data from AVStream.codecpar 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: kTEmfCrmCR64 Signed-off-by: James Almer --- libavdevice/android_camera.c | 6 +-- libavformat/avformat.c | 42 ++++----------------- libavformat/avformat.h | 28 ++++++++++++++ libavformat/concatdec.c | 1 - libavformat/dashdec.c | 11 ------ libavformat/demux.c | 40 +++++++++++++++++--- libavformat/demux_utils.c | 4 ++ libavformat/dovi_isom.c | 2 +- libavformat/dump.c | 6 +-- libavformat/hls.c | 11 ------ libavformat/hlsenc.c | 11 +++--- libavformat/internal.h | 4 ++ libavformat/matroska.c | 2 +- libavformat/matroskadec.c | 20 +++++----- libavformat/matroskaenc.c | 35 ++++++++--------- libavformat/mov.c | 41 +++++++++++--------- libavformat/movenc.c | 73 +++++++++++++++++------------------- libavformat/mp3enc.c | 8 ++-- libavformat/mpegenc.c | 15 +++++--- libavformat/mpegts.c | 2 +- libavformat/mux.c | 19 ++++++++++ libavformat/mxfdec.c | 9 +++-- libavformat/mxfenc.c | 8 ++-- libavformat/options.c | 2 + libavformat/replaygain.c | 6 ++- libavformat/seek.c | 2 + libavformat/version_major.h | 1 + 27 files changed, 230 insertions(+), 179 deletions(-) diff --git a/libavdevice/android_camera.c b/libavdevice/android_camera.c index 1934999c18..7ceb1e1fc2 100644 --- a/libavdevice/android_camera.c +++ b/libavdevice/android_camera.c @@ -638,7 +638,7 @@ static int wait_for_image_format(AVFormatContext *avctx) static int add_display_matrix(AVFormatContext *avctx, AVStream *st) { AndroidCameraCtx *ctx = avctx->priv_data; - uint8_t *side_data; + AVPacketSideData *side_data; int32_t display_matrix[9]; av_display_rotation_set(display_matrix, ctx->sensor_orientation); @@ -647,14 +647,14 @@ static int add_display_matrix(AVFormatContext *avctx, AVStream *st) av_display_matrix_flip(display_matrix, 1, 0); } - side_data = av_stream_new_side_data(st, + side_data = av_packet_new_side_data_to_set(&st->codecpar.side_data_set, AV_PKT_DATA_DISPLAYMATRIX, sizeof(display_matrix)); if (!side_data) { return AVERROR(ENOMEM); } - memcpy(side_data, display_matrix, sizeof(display_matrix)); + memcpy(side_data->data, display_matrix, sizeof(display_matrix)); return 0; } diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 356b4de931..3afc5afd7f 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -46,9 +46,13 @@ void ff_free_stream(AVStream **pst) if (!st) return; +#if FF_API_AVSTREAM_SIDE_DATA +FF_DISABLE_DEPRECATION_WARNINGS for (int i = 0; i < st->nb_side_data; i++) av_freep(&st->side_data[i].data); av_freep(&st->side_data); +FF_ENABLE_DEPRECATION_WARNINGS +#endif if (st->attached_pic.data) av_packet_unref(&st->attached_pic); @@ -138,6 +142,8 @@ void avformat_free_context(AVFormatContext *s) av_free(s); } +#if FF_API_AVSTREAM_SIDE_DATA +FF_DISABLE_DEPRECATION_WARNINGS uint8_t *av_stream_get_side_data(const AVStream *st, enum AVPacketSideDataType type, size_t *size) { @@ -205,36 +211,8 @@ uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type, return data; } - -int ff_stream_side_data_copy(AVStream *dst, const AVStream *src) -{ - /* Free existing side data*/ - for (int i = 0; i < dst->nb_side_data; i++) - av_free(dst->side_data[i].data); - av_freep(&dst->side_data); - dst->nb_side_data = 0; - - /* Copy side data if present */ - if (src->nb_side_data) { - dst->side_data = av_calloc(src->nb_side_data, - sizeof(*dst->side_data)); - if (!dst->side_data) - return AVERROR(ENOMEM); - dst->nb_side_data = src->nb_side_data; - - for (int i = 0; i < src->nb_side_data; i++) { - uint8_t *data = av_memdup(src->side_data[i].data, - src->side_data[i].size); - if (!data) - return AVERROR(ENOMEM); - dst->side_data[i].type = src->side_data[i].type; - dst->side_data[i].size = src->side_data[i].size; - dst->side_data[i].data = data; - } - } - - return 0; -} +FF_ENABLE_DEPRECATION_WARNINGS +#endif /** * Copy all stream parameters from source to destination stream, with the @@ -270,10 +248,6 @@ static int stream_params_copy(AVStream *dst, const AVStream *src) if (ret < 0) return ret; - ret = ff_stream_side_data_copy(dst, src); - if (ret < 0) - return ret; - av_packet_unref(&dst->attached_pic); if (src->attached_pic.data) { ret = av_packet_ref(&dst->attached_pic, &src->attached_pic); diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 1916aa2dc5..e67ed4205e 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -164,6 +164,12 @@ * decoding functions avcodec_send_packet() or avcodec_decode_subtitle2() if the * caller wishes to decode the data. * + * There may be no overlap between AVCodecParameters.side_data_set and side data + * in packets. I.e. a given side data is either exported by the demuxer in + * AVCodecParameters, then it never appears in the packets, or the side data is + * exported through the packets (always in the first packet where the value + * becomes known or changes), then it does not appear in AVCodecParameters. + * * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for * pts/dts, 0 for duration) if the stream does not provide them. The timing @@ -209,6 +215,11 @@ * AVCodecParameters, rather than using @ref avcodec_parameters_copy() during * remuxing: there is no guarantee that the codec context values remain valid * for both input and output format contexts. + * - There may be no overlap between AVCodecParameters.side_data_set and side data + * in packets. I.e. a given side data is either set by the caller in + * AVCodecParameters, then it never appears in the packets, or the side data is + * sent through the packets (always in the first packet where the value becomes + * known or changes), then it does not appear in AVCodecParameters. * - The caller may fill in additional information, such as @ref * AVFormatContext.metadata "global" or @ref AVStream.metadata "per-stream" * metadata, @ref AVFormatContext.chapters "chapters", @ref @@ -937,6 +948,7 @@ typedef struct AVStream { */ AVPacket attached_pic; +#if FF_API_AVSTREAM_SIDE_DATA /** * An array of side data that applies to the whole stream (i.e. the * container does not allow it to change between packets). @@ -953,13 +965,20 @@ typedef struct AVStream { * * Freed by libavformat in avformat_free_context(). * + * @deprecated use AVStream's codecpar.side_data_set + * * @see av_format_inject_global_side_data() */ + attribute_deprecated AVPacketSideData *side_data; /** * The number of elements in the AVStream.side_data array. + * + * @deprecated use AVStream's codecpar.side_data_set */ + attribute_deprecated int nb_side_data; +#endif /** * Flags indicating events happening on the stream, a combination of @@ -1715,11 +1734,14 @@ typedef struct AVFormatContext { int (*io_close2)(struct AVFormatContext *s, AVIOContext *pb); } AVFormatContext; +#if FF_API_AVSTREAM_SIDE_DATA /** * This function will cause global side data to be injected in the next packet * of each stream as well as after any subsequent seek. */ +attribute_deprecated void av_format_inject_global_side_data(AVFormatContext *s); +#endif /** * Returns the method used to set ctx->duration. @@ -1856,7 +1878,9 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c); * * @return zero on success, a negative AVERROR code on failure. On failure, * the stream is unchanged and the data remains owned by the caller. + * @deprecated use av_packet_add_side_data_to_set() and stream->codecpar->side_data_set */ +attribute_deprecated int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type, uint8_t *data, size_t size); @@ -1868,7 +1892,9 @@ int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type, * @param size side information size * * @return pointer to fresh allocated data or NULL otherwise + * @deprecated use av_packet_new_side_data_to_set() and stream->codecpar->side_data_set */ +attribute_deprecated uint8_t *av_stream_new_side_data(AVStream *stream, enum AVPacketSideDataType type, size_t size); /** @@ -1880,7 +1906,9 @@ uint8_t *av_stream_new_side_data(AVStream *stream, * or to zero if the desired side data is not present. * * @return pointer to data if present or NULL otherwise + * @deprecated use av_packet_get_side_data_from_set() and stream->codecpar->side_data_set */ +attribute_deprecated uint8_t *av_stream_get_side_data(const AVStream *stream, enum AVPacketSideDataType type, size_t *size); diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index 5d4f67d0ac..2aeb4f1dfd 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -194,7 +194,6 @@ static int copy_stream_props(AVStream *st, AVStream *source_st) avpriv_set_pts_info(st, 64, source_st->time_base.num, source_st->time_base.den); av_dict_copy(&st->metadata, source_st->metadata, 0); - ff_stream_side_data_copy(st, source_st); return 0; } diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c index 29d4680c68..2441087606 100644 --- a/libavformat/dashdec.c +++ b/libavformat/dashdec.c @@ -1952,17 +1952,6 @@ static int open_demux_for_component(AVFormatContext *s, struct representation *p // copy disposition st->disposition = ist->disposition; - - // copy side data - for (int i = 0; i < ist->nb_side_data; i++) { - const AVPacketSideData *sd_src = &ist->side_data[i]; - uint8_t *dst_data; - - dst_data = av_stream_new_side_data(st, sd_src->type, sd_src->size); - if (!dst_data) - return AVERROR(ENOMEM); - memcpy(dst_data, sd_src->data, sd_src->size); - } } return 0; diff --git a/libavformat/demux.c b/libavformat/demux.c index 1ef297d5e7..7253196a82 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -1408,9 +1408,10 @@ FF_ENABLE_DEPRECATION_WARNINGS sti->skip_samples = 0; } +#if FF_API_AVSTREAM_SIDE_DATA if (sti->inject_global_side_data) { - for (int i = 0; i < st->nb_side_data; i++) { - const AVPacketSideData *const src_sd = &st->side_data[i]; + for (int i = 0; i < st->codecpar->side_data_set.nb_side_data; i++) { + const AVPacketSideData *const src_sd = &st->codecpar->side_data_set.side_data[i]; uint8_t *dst_data; if (av_packet_get_side_data(pkt, src_sd->type, NULL)) @@ -1426,6 +1427,7 @@ FF_ENABLE_DEPRECATION_WARNINGS } sti->inject_global_side_data = 0; } +#endif } if (!si->metafree) { @@ -2434,11 +2436,11 @@ static int add_coded_side_data(AVStream *st, AVCodecContext *avctx) { for (int i = 0; i < avctx->nb_coded_side_data; i++) { const AVPacketSideData *const sd_src = &avctx->coded_side_data[i]; - uint8_t *dst_data; - dst_data = av_stream_new_side_data(st, sd_src->type, sd_src->size); - if (!dst_data) + AVPacketSideData *sd_dst = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, + sd_src->type, sd_src->size); + if (!sd_dst) return AVERROR(ENOMEM); - memcpy(dst_data, sd_src->data, sd_src->size); + memcpy(sd_dst->data, sd_src->data, sd_src->size); } return 0; } @@ -2975,6 +2977,32 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options) goto find_stream_info_err; } +#if FF_API_AVSTREAM_SIDE_DATA +FF_DISABLE_DEPRECATION_WARNINGS + if (st->codecpar->side_data_set.nb_side_data > 0) { + av_assert0(!st->side_data && !st->nb_side_data); + st->side_data = av_calloc(st->codecpar->side_data_set.nb_side_data, + sizeof(*st->side_data)); + if (!st->side_data) { + ret = AVERROR(ENOMEM); + goto find_stream_info_err; + } + + for (int i = 0; i < st->codecpar->side_data_set.nb_side_data; i++) { + uint8_t *data = av_memdup(st->codecpar->side_data_set.side_data[i].data, + st->codecpar->side_data_set.side_data[i].size); + if (!data) { + ret = AVERROR(ENOMEM); + goto find_stream_info_err; + } + st->side_data[i].type = st->codecpar->side_data_set.side_data[i].type; + st->side_data[i].size = st->codecpar->side_data_set.side_data[i].size; + st->side_data[i].data = data; + st->nb_side_data++; + } + } +FF_ENABLE_DEPRECATION_WARNINGS +#endif sti->avctx_inited = 0; } diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index 56cc6e15d8..2946e82295 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -80,6 +80,8 @@ AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_ba return chapter; } +#if FF_API_AVSTREAM_SIDE_DATA +FF_DISABLE_DEPRECATION_WARNINGS void av_format_inject_global_side_data(AVFormatContext *s) { FFFormatContext *const si = ffformatcontext(s); @@ -89,6 +91,8 @@ void av_format_inject_global_side_data(AVFormatContext *s) ffstream(st)->inject_global_side_data = 1; } } +FF_ENABLE_DEPRECATION_WARNINGS +#endif int avformat_queue_attached_pictures(AVFormatContext *s) { diff --git a/libavformat/dovi_isom.c b/libavformat/dovi_isom.c index 76681b9451..031f19dba5 100644 --- a/libavformat/dovi_isom.c +++ b/libavformat/dovi_isom.c @@ -63,7 +63,7 @@ int ff_isom_parse_dvcc_dvvc(AVFormatContext *s, AVStream *st, const uint8_t *buf dovi->dv_bl_signal_compatibility_id = 0; } - ret = av_stream_add_side_data(st, AV_PKT_DATA_DOVI_CONF, + ret = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_DOVI_CONF, (uint8_t *)dovi, dovi_size); if (ret < 0) { av_free(dovi); diff --git a/libavformat/dump.c b/libavformat/dump.c index d31e4c2ec6..76981fb45f 100644 --- a/libavformat/dump.c +++ b/libavformat/dump.c @@ -431,11 +431,11 @@ static void dump_sidedata(void *ctx, const AVStream *st, const char *indent) { int i; - if (st->nb_side_data) + if (st->codecpar->side_data_set.nb_side_data) av_log(ctx, AV_LOG_INFO, "%sSide data:\n", indent); - for (i = 0; i < st->nb_side_data; i++) { - const AVPacketSideData *sd = &st->side_data[i]; + for (i = 0; i < st->codecpar->side_data_set.nb_side_data; i++) { + const AVPacketSideData *sd = &st->codecpar->side_data_set.side_data[i]; av_log(ctx, AV_LOG_INFO, "%s ", indent); switch (sd->type) { diff --git a/libavformat/hls.c b/libavformat/hls.c index 2a2fe28a54..d792833290 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -1851,17 +1851,6 @@ static int set_stream_info_from_input_stream(AVStream *st, struct playlist *pls, av_dict_copy(&st->metadata, ist->metadata, 0); - // copy side data - for (int i = 0; i < ist->nb_side_data; i++) { - const AVPacketSideData *sd_src = &ist->side_data[i]; - uint8_t *dst_data; - - dst_data = av_stream_new_side_data(st, sd_src->type, sd_src->size); - if (!dst_data) - return AVERROR(ENOMEM); - memcpy(dst_data, sd_src->data, sd_src->size); - } - ffstream(st)->need_context_update = 1; return 0; diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 27d97f5f72..b61079bd76 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -1351,16 +1351,17 @@ static const char* get_relative_url(const char *master_url, const char *media_ur static int64_t get_stream_bit_rate(AVStream *stream) { - AVCPBProperties *props = (AVCPBProperties*)av_stream_get_side_data( - stream, - AV_PKT_DATA_CPB_PROPERTIES, - NULL + AVPacketSideData *sd = av_packet_get_side_data_from_set( + &stream->codecpar->side_data_set, + AV_PKT_DATA_CPB_PROPERTIES ); if (stream->codecpar->bit_rate) return stream->codecpar->bit_rate; - else if (props) + else if (sd) { + AVCPBProperties *props = (AVCPBProperties*)sd->data; return props->max_bitrate; + } return 0; } diff --git a/libavformat/internal.h b/libavformat/internal.h index 9fc980601f..e625a6c654 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -149,7 +149,9 @@ typedef struct FFFormatContext { int missing_ts_warning; #endif +#if FF_API_AVSTREAM_SIDE_DATA int inject_global_side_data; +#endif int avoid_negative_ts_use_pts; @@ -356,10 +358,12 @@ typedef struct FFStream { uint8_t dts_ordered; uint8_t dts_misordered; +#if FF_API_AVSTREAM_SIDE_DATA /** * Internal data to inject global side data */ int inject_global_side_data; +#endif /** * display aspect ratio (0 if unknown) diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 79b2d09984..d217b68584 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -198,7 +198,7 @@ int ff_mkv_stereo3d_conv(AVStream *st, MatroskaVideoStereoModeType stereo_mode) break; } - ret = av_stream_add_side_data(st, AV_PKT_DATA_STEREO3D, (uint8_t *)stereo, + ret = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_STEREO3D, (uint8_t *)stereo, sizeof(*stereo)); if (ret < 0) { av_freep(&stereo); diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 49950956b6..598cf8a7bf 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2202,7 +2202,7 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) { AVContentLightMetadata *metadata = av_content_light_metadata_alloc(&size); if (!metadata) return AVERROR(ENOMEM); - ret = av_stream_add_side_data(st, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, + ret = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, (uint8_t *)metadata, size); if (ret < 0) { av_freep(&metadata); @@ -2213,13 +2213,13 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) { } if (has_mastering_primaries || has_mastering_luminance) { - AVMasteringDisplayMetadata *metadata = - (AVMasteringDisplayMetadata*) av_stream_new_side_data( - st, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, + AVMasteringDisplayMetadata *metadata; + AVPacketSideData *sd = av_packet_new_side_data_to_set( + &st->codecpar->side_data_set, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, sizeof(AVMasteringDisplayMetadata)); - if (!metadata) { + if (!sd) return AVERROR(ENOMEM); - } + metadata = (AVMasteringDisplayMetadata*)sd->data; memset(metadata, 0, sizeof(AVMasteringDisplayMetadata)); if (has_mastering_primaries) { metadata->display_primaries[0][0] = av_d2q(mastering_meta->r_x, INT_MAX); @@ -2245,6 +2245,7 @@ static int mkv_create_display_matrix(AVStream *st, const MatroskaTrackVideoProjection *proj, void *logctx) { + AVPacketSideData *sd; double pitch = proj->pitch, yaw = proj->yaw, roll = proj->roll; int32_t *matrix; int hflip; @@ -2261,10 +2262,11 @@ static int mkv_create_display_matrix(AVStream *st, st->index, yaw, pitch, roll); return 0; } - matrix = (int32_t*)av_stream_new_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, + sd = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX, 9 * sizeof(*matrix)); - if (!matrix) + if (!sd) return AVERROR(ENOMEM); + matrix = (int32_t*)sd->data; hflip = yaw != 0.0; /* ProjectionPoseRoll is in the counter-clockwise direction @@ -2365,7 +2367,7 @@ static int mkv_parse_video_projection(AVStream *st, const MatroskaTrack *track, spherical->bound_right = r; spherical->bound_bottom = b; - ret = av_stream_add_side_data(st, AV_PKT_DATA_SPHERICAL, (uint8_t *)spherical, + ret = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_SPHERICAL, (uint8_t *)spherical, spherical_size); if (ret < 0) { av_freep(&spherical); diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 41e13b273d..a382cdd120 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1323,7 +1323,7 @@ fail: static void mkv_write_video_color(EbmlWriter *writer, const AVStream *st, const AVCodecParameters *par) { - const void *side_data; + const AVPacketSideData *side_data; ebml_writer_open_master(writer, MATROSKA_ID_VIDEOCOLOR); @@ -1357,20 +1357,18 @@ static void mkv_write_video_color(EbmlWriter *writer, const AVStream *st, (ypos >> 7) + 1); } - side_data = av_stream_get_side_data(st, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, - NULL); + side_data = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_CONTENT_LIGHT_LEVEL); if (side_data) { - const AVContentLightMetadata *metadata = side_data; + const AVContentLightMetadata *metadata = (AVContentLightMetadata *)side_data->data; ebml_writer_add_uint(writer, MATROSKA_ID_VIDEOCOLORMAXCLL, metadata->MaxCLL); ebml_writer_add_uint(writer, MATROSKA_ID_VIDEOCOLORMAXFALL, metadata->MaxFALL); } - side_data = av_stream_get_side_data(st, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, - NULL); + side_data = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_MASTERING_DISPLAY_METADATA); if (side_data) { - const AVMasteringDisplayMetadata *metadata = side_data; + const AVMasteringDisplayMetadata *metadata = (AVMasteringDisplayMetadata *)side_data->data; ebml_writer_open_master(writer, MATROSKA_ID_VIDEOCOLORMASTERINGMETA); if (metadata->has_primaries) { ebml_writer_add_float(writer, MATROSKA_ID_VIDEOCOLOR_RX, @@ -1406,13 +1404,13 @@ static void mkv_write_video_color(EbmlWriter *writer, const AVStream *st, static void mkv_write_video_projection(AVFormatContext *s, EbmlWriter *writer, const AVStream *st, uint8_t private[]) { - const AVSphericalMapping *spherical = - (const AVSphericalMapping *)av_stream_get_side_data(st, AV_PKT_DATA_SPHERICAL, - NULL); + AVPacketSideData *sd = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_SPHERICAL); + const AVSphericalMapping *spherical; - if (!spherical) + if (!sd) return; + spherical = (const AVSphericalMapping *)sd->data; if (spherical->projection != AV_SPHERICAL_EQUIRECTANGULAR && spherical->projection != AV_SPHERICAL_EQUIRECTANGULAR_TILE && spherical->projection != AV_SPHERICAL_CUBEMAP) { @@ -1513,9 +1511,9 @@ static int mkv_write_stereo_mode(AVFormatContext *s, EbmlWriter *writer, AVStream *st, int is_webm, int *h_width, int *h_height) { + AVPacketSideData *sd; const AVDictionaryEntry *tag; MatroskaVideoStereoModeType format = MATROSKA_VIDEO_STEREOMODE_TYPE_NB; - const AVStereo3D *stereo; *h_width = 1; *h_height = 1; @@ -1538,9 +1536,9 @@ static int mkv_write_stereo_mode(AVFormatContext *s, EbmlWriter *writer, } } - stereo = (const AVStereo3D*)av_stream_get_side_data(st, AV_PKT_DATA_STEREO3D, - NULL); - if (stereo) { + sd = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_STEREO3D); + if (sd) { + const AVStereo3D *stereo = (const AVStereo3D*)sd->data; switch (stereo->type) { case AV_STEREO3D_2D: format = MATROSKA_VIDEO_STEREOMODE_TYPE_MONO; @@ -1605,8 +1603,11 @@ static void mkv_write_blockadditionmapping(AVFormatContext *s, MatroskaMuxContex AVIOContext *pb, mkv_track *track, AVStream *st) { #if CONFIG_MATROSKA_MUXER - AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *) - av_stream_get_side_data(st, AV_PKT_DATA_DOVI_CONF, NULL); + AVPacketSideData *sd = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_DOVI_CONF); + AVDOVIDecoderConfigurationRecord *dovi = NULL; + + if (sd) + dovi = (AVDOVIDecoderConfigurationRecord *)sd->data; if (IS_SEEKABLE(s->pb, mkv)) { track->blockadditionmapping_offset = avio_tell(pb); diff --git a/libavformat/mov.c b/libavformat/mov.c index ac19b3157a..4669ab998c 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -799,6 +799,7 @@ static int mov_read_esds(MOVContext *c, AVIOContext *pb, MOVAtom atom) static int mov_read_dac3(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; + AVPacketSideData *sd; enum AVAudioServiceType *ast; int ac3info, acmod, lfeon, bsmod; uint64_t mask; @@ -807,11 +808,12 @@ static int mov_read_dac3(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; st = c->fc->streams[c->fc->nb_streams-1]; - ast = (enum AVAudioServiceType*)av_stream_new_side_data(st, AV_PKT_DATA_AUDIO_SERVICE_TYPE, + sd = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_AUDIO_SERVICE_TYPE, sizeof(*ast)); - if (!ast) + if (!sd) return AVERROR(ENOMEM); + ast = (enum AVAudioServiceType*)sd->data; ac3info = avio_rb24(pb); bsmod = (ac3info >> 14) & 0x7; acmod = (ac3info >> 11) & 0x7; @@ -833,6 +835,7 @@ static int mov_read_dac3(MOVContext *c, AVIOContext *pb, MOVAtom atom) static int mov_read_dec3(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; + AVPacketSideData *sd; enum AVAudioServiceType *ast; int eac3info, acmod, lfeon, bsmod; uint64_t mask; @@ -841,11 +844,13 @@ static int mov_read_dec3(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; st = c->fc->streams[c->fc->nb_streams-1]; - ast = (enum AVAudioServiceType*)av_stream_new_side_data(st, AV_PKT_DATA_AUDIO_SERVICE_TYPE, + sd = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_AUDIO_SERVICE_TYPE, sizeof(*ast)); - if (!ast) + if (!sd) return AVERROR(ENOMEM); + ast = (enum AVAudioServiceType*)sd->data; + /* No need to parse fields for additional independent substreams and its * associated dependent substreams since libavcodec's E-AC-3 decoder * does not support them yet. */ @@ -1747,7 +1752,6 @@ static int mov_read_pcmc(MOVContext *c, AVIOContext *pb, MOVAtom atom) static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; - uint8_t *icc_profile; char color_parameter_type[5] = { 0 }; uint16_t color_primaries, color_trc, color_matrix; int ret; @@ -1768,10 +1772,10 @@ static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom) } if (!strncmp(color_parameter_type, "prof", 4)) { - icc_profile = av_stream_new_side_data(st, AV_PKT_DATA_ICC_PROFILE, atom.size - 4); - if (!icc_profile) + AVPacketSideData *sd = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_ICC_PROFILE, atom.size - 4); + if (!sd) return AVERROR(ENOMEM); - ret = ffio_read_size(pb, icc_profile, atom.size - 4); + ret = ffio_read_size(pb, sd->data, atom.size - 4); if (ret < 0) return ret; } else { @@ -6831,8 +6835,9 @@ static int mov_read_pssh(MOVContext *c, AVIOContext *pb, MOVAtom atom) AVEncryptionInitInfo *info, *old_init_info; uint8_t **key_ids; AVStream *st; - uint8_t *side_data, *extra_data, *old_side_data; - size_t side_data_size, old_side_data_size; + AVPacketSideData *old_side_data; + uint8_t *side_data, *extra_data; + size_t side_data_size; int ret = 0; unsigned int version, kid_count, extra_data_size, alloc_size = 0; @@ -6910,9 +6915,9 @@ static int mov_read_pssh(MOVContext *c, AVIOContext *pb, MOVAtom atom) info->data_size = extra_data_size; // If there is existing initialization data, append to the list. - old_side_data = av_stream_get_side_data(st, AV_PKT_DATA_ENCRYPTION_INIT_INFO, &old_side_data_size); + old_side_data = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_ENCRYPTION_INIT_INFO); if (old_side_data) { - old_init_info = av_encryption_init_info_get_side_data(old_side_data, old_side_data_size); + old_init_info = av_encryption_init_info_get_side_data(old_side_data->data, old_side_data->size); if (old_init_info) { // Append to the end of the list. for (AVEncryptionInitInfo *cur = old_init_info;; cur = cur->next) { @@ -6934,7 +6939,7 @@ static int mov_read_pssh(MOVContext *c, AVIOContext *pb, MOVAtom atom) ret = AVERROR(ENOMEM); goto finish; } - ret = av_stream_add_side_data(st, AV_PKT_DATA_ENCRYPTION_INIT_INFO, + ret = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_ENCRYPTION_INIT_INFO, side_data, side_data_size); if (ret < 0) av_free(side_data); @@ -8713,7 +8718,7 @@ static int mov_read_header(AVFormatContext *s) break; case AVMEDIA_TYPE_VIDEO: if (sc->display_matrix) { - err = av_stream_add_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, (uint8_t*)sc->display_matrix, + err = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX, (uint8_t*)sc->display_matrix, sizeof(int32_t) * 9); if (err < 0) return err; @@ -8721,7 +8726,7 @@ static int mov_read_header(AVFormatContext *s) sc->display_matrix = NULL; } if (sc->stereo3d) { - err = av_stream_add_side_data(st, AV_PKT_DATA_STEREO3D, + err = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_STEREO3D, (uint8_t *)sc->stereo3d, sizeof(*sc->stereo3d)); if (err < 0) @@ -8730,7 +8735,7 @@ static int mov_read_header(AVFormatContext *s) sc->stereo3d = NULL; } if (sc->spherical) { - err = av_stream_add_side_data(st, AV_PKT_DATA_SPHERICAL, + err = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_SPHERICAL, (uint8_t *)sc->spherical, sc->spherical_size); if (err < 0) @@ -8739,7 +8744,7 @@ static int mov_read_header(AVFormatContext *s) sc->spherical = NULL; } if (sc->mastering) { - err = av_stream_add_side_data(st, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, + err = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, (uint8_t *)sc->mastering, sizeof(*sc->mastering)); if (err < 0) @@ -8748,7 +8753,7 @@ static int mov_read_header(AVFormatContext *s) sc->mastering = NULL; } if (sc->coll) { - err = av_stream_add_side_data(st, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, + err = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, (uint8_t *)sc->coll, sc->coll_size); if (err < 0) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index f1cc80b1b3..06939d40d0 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -672,11 +672,11 @@ struct mpeg4_bit_rate_values { static struct mpeg4_bit_rate_values calculate_mpeg4_bit_rates(MOVTrack *track) { - AVCPBProperties *props = track->st ? - (AVCPBProperties*)av_stream_get_side_data(track->st, - AV_PKT_DATA_CPB_PROPERTIES, - NULL) : + AVPacketSideData *sd = track->st ? + av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, + AV_PKT_DATA_CPB_PROPERTIES) : NULL; + AVCPBProperties *props = sd ? (AVCPBProperties *)sd->data : NULL; struct mpeg4_bit_rate_values bit_rates = { 0 }; bit_rates.avg_bit_rate = compute_avg_bitrate(track); @@ -2127,18 +2127,16 @@ static int mov_write_colr_tag(AVIOContext *pb, MOVTrack *track, int prefer_icc) // Ref (MOV): https://developer.apple.com/library/mac/technotes/tn2162/_index.html#//apple_ref/doc/uid/DTS40013070-CH1-TNTAG9 // Ref (MP4): ISO/IEC 14496-12:2012 - const uint8_t *icc_profile; - size_t icc_profile_size; - if (prefer_icc) { - icc_profile = av_stream_get_side_data(track->st, AV_PKT_DATA_ICC_PROFILE, &icc_profile_size); + AVPacketSideData *sd = av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, + AV_PKT_DATA_ICC_PROFILE); - if (icc_profile) { - avio_wb32(pb, 12 + icc_profile_size); + if (sd) { + avio_wb32(pb, 12 + sd->size); ffio_wfourcc(pb, "colr"); ffio_wfourcc(pb, "prof"); - avio_write(pb, icc_profile, icc_profile_size); - return 12 + icc_profile_size; + avio_write(pb, sd->data, sd->size); + return 12 + sd->size; } else { av_log(NULL, AV_LOG_INFO, "no ICC profile found, will write nclx/nclc colour info instead\n"); @@ -2171,14 +2169,14 @@ static int mov_write_colr_tag(AVIOContext *pb, MOVTrack *track, int prefer_icc) static int mov_write_clli_tag(AVIOContext *pb, MOVTrack *track) { - const uint8_t *side_data; + const AVPacketSideData *side_data; const AVContentLightMetadata *content_light_metadata; - side_data = av_stream_get_side_data(track->st, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, NULL); + side_data = av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, AV_PKT_DATA_CONTENT_LIGHT_LEVEL); if (!side_data) { return 0; } - content_light_metadata = (const AVContentLightMetadata*)side_data; + content_light_metadata = (const AVContentLightMetadata*)side_data->data; avio_wb32(pb, 12); // size ffio_wfourcc(pb, "clli"); @@ -2196,11 +2194,12 @@ static int mov_write_mdcv_tag(AVIOContext *pb, MOVTrack *track) { const int chroma_den = 50000; const int luma_den = 10000; - const uint8_t *side_data; - const AVMasteringDisplayMetadata *metadata; + const AVPacketSideData *side_data; + const AVMasteringDisplayMetadata *metadata = NULL; - side_data = av_stream_get_side_data(track->st, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, NULL); - metadata = (const AVMasteringDisplayMetadata*)side_data; + side_data = av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, AV_PKT_DATA_MASTERING_DISPLAY_METADATA); + if (side_data) + metadata = (const AVMasteringDisplayMetadata*)side_data->data; if (!metadata || !metadata->has_primaries || !metadata->has_luminance) { return 0; } @@ -2419,7 +2418,7 @@ static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex track->par->color_trc != AVCOL_TRC_UNSPECIFIED && track->par->color_space != AVCOL_SPC_UNSPECIFIED; if (has_color_info || mov->flags & FF_MOV_FLAG_WRITE_COLR || - av_stream_get_side_data(track->st, AV_PKT_DATA_ICC_PROFILE, NULL)) { + av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, AV_PKT_DATA_ICC_PROFILE)) { int prefer_icc = mov->flags & FF_MOV_FLAG_PREFER_ICC || !has_color_info; mov_write_colr_tag(pb, track, prefer_icc); } @@ -2433,17 +2432,16 @@ static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex } if (track->mode == MODE_MP4 && mov->fc->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) { - AVStereo3D* stereo_3d = (AVStereo3D*) av_stream_get_side_data(track->st, AV_PKT_DATA_STEREO3D, NULL); - AVSphericalMapping* spherical_mapping = (AVSphericalMapping*)av_stream_get_side_data(track->st, AV_PKT_DATA_SPHERICAL, NULL); - AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *) - av_stream_get_side_data(track->st, AV_PKT_DATA_DOVI_CONF, NULL); + AVPacketSideData *stereo_3d = av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, AV_PKT_DATA_STEREO3D); + AVPacketSideData *spherical_mapping = av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, AV_PKT_DATA_SPHERICAL); + AVPacketSideData *dovi = av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, AV_PKT_DATA_DOVI_CONF); if (stereo_3d) - mov_write_st3d_tag(s, pb, stereo_3d); + mov_write_st3d_tag(s, pb, (AVStereo3D*)stereo_3d->data); if (spherical_mapping) - mov_write_sv3d_tag(mov->fc, pb, spherical_mapping); + mov_write_sv3d_tag(mov->fc, pb, (AVSphericalMapping*)spherical_mapping->data); if (dovi) - mov_write_dvcc_dvvc_tag(s, pb, dovi); + mov_write_dvcc_dvvc_tag(s, pb, (AVDOVIDecoderConfigurationRecord *)dovi->data); } if (track->par->sample_aspect_ratio.den && track->par->sample_aspect_ratio.num) { @@ -3390,7 +3388,6 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov, int group = 0; uint32_t *display_matrix = NULL; - size_t display_matrix_size; int i; if (mov->mode == MODE_AVIF) @@ -3400,15 +3397,15 @@ static int mov_write_tkhd_tag(AVIOContext *pb, MOVMuxContext *mov, duration *= mov->avif_loop_count; if (st) { + AVPacketSideData *sd; if (mov->per_stream_grouping) group = st->index; else group = st->codecpar->codec_type; - display_matrix = (uint32_t*)av_stream_get_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, - &display_matrix_size); - if (display_matrix && display_matrix_size < 9 * sizeof(*display_matrix)) - display_matrix = NULL; + sd = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX); + if (sd && sd->size == 9 * sizeof(*display_matrix)) + display_matrix = (uint32_t *)sd->data; } if (track->flags & MOV_TRACK_ENABLED) @@ -4606,12 +4603,10 @@ static int mov_write_moov_tag(AVIOContext *pb, MOVMuxContext *mov, track->tref_tag = MKTAG('h','i','n','t'); track->tref_id = mov->tracks[track->src_track].track_id; } else if (track->par->codec_type == AVMEDIA_TYPE_AUDIO) { - size_t size; - int *fallback; - fallback = (int*)av_stream_get_side_data(track->st, - AV_PKT_DATA_FALLBACK_TRACK, - &size); - if (fallback != NULL && size == sizeof(int)) { + AVPacketSideData *sd = av_packet_get_side_data_from_set(&track->st->codecpar->side_data_set, + AV_PKT_DATA_FALLBACK_TRACK ); + if (sd && sd->size == sizeof(int)) { + int *fallback = (int *)sd->data; if (*fallback >= 0 && *fallback < mov->nb_streams) { track->tref_tag = MKTAG('f','a','l','l'); track->tref_id = mov->tracks[*fallback].track_id; @@ -5444,7 +5439,7 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) if (st->codecpar->codec_id == AV_CODEC_ID_AC3 || st->codecpar->codec_id == AV_CODEC_ID_EAC3 || st->codecpar->codec_id == AV_CODEC_ID_TRUEHD || - av_stream_get_side_data(st, AV_PKT_DATA_DOVI_CONF, NULL)) + av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_DOVI_CONF)) has_dolby = 1; } diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index 5e81f72a59..7b666b7db0 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -400,10 +400,10 @@ static int mp3_queue_flush(AVFormatContext *s) static void mp3_update_xing(AVFormatContext *s) { MP3Context *mp3 = s->priv_data; + AVPacketSideData *sd; AVReplayGain *rg; uint16_t tag_crc; uint8_t *toc; - size_t rg_size; int i; int64_t old_pos = avio_tell(s->pb); @@ -423,11 +423,11 @@ static void mp3_update_xing(AVFormatContext *s) } /* write replaygain */ - rg = (AVReplayGain*)av_stream_get_side_data(s->streams[0], AV_PKT_DATA_REPLAYGAIN, - &rg_size); - if (rg && rg_size >= sizeof(*rg)) { + sd = av_packet_get_side_data_from_set(&s->streams[0]->codecpar->side_data_set, AV_PKT_DATA_REPLAYGAIN); + if (sd && sd->size >= sizeof(*rg)) { uint16_t val; + rg = (AVReplayGain *)sd->data; AV_WB32(mp3->xing_frame + mp3->xing_offset + 131, av_rescale(rg->track_peak, 1 << 23, 100000)); diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c index c06e308296..b28486821b 100644 --- a/libavformat/mpegenc.c +++ b/libavformat/mpegenc.c @@ -342,8 +342,6 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) lpcm_id = LPCM_ID; for (i = 0; i < ctx->nb_streams; i++) { - AVCPBProperties *props; - st = ctx->streams[i]; stream = av_mallocz(sizeof(StreamInfo)); if (!stream) @@ -431,12 +429,16 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) s->audio_bound++; break; case AVMEDIA_TYPE_VIDEO: + AVPacketSideData *sd; + AVCPBProperties *props = NULL; if (st->codecpar->codec_id == AV_CODEC_ID_H264) stream->id = h264_id++; else stream->id = mpv_id++; - props = (AVCPBProperties*)av_stream_get_side_data(st, AV_PKT_DATA_CPB_PROPERTIES, NULL); + sd = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_CPB_PROPERTIES); + if (sd) + props = (AVCPBProperties*)sd->data; if (props && props->buffer_size) stream->max_buffer_size = 6 * 1024 + props->buffer_size / 8; else { @@ -470,12 +472,15 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) audio_bitrate = 0; video_bitrate = 0; for (i = 0; i < ctx->nb_streams; i++) { - AVCPBProperties *props; + AVPacketSideData *sd; + AVCPBProperties *props = NULL; int codec_rate; st = ctx->streams[i]; stream = (StreamInfo *)st->priv_data; - props = (AVCPBProperties*)av_stream_get_side_data(st, AV_PKT_DATA_CPB_PROPERTIES, NULL); + sd = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_CPB_PROPERTIES); + if (sd) + props = (AVCPBProperties*)sd->data; if (props) codec_rate = props->max_bitrate; else diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 0b3edda817..093ee98447 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -2221,7 +2221,7 @@ int ff_parse_mpeg2_descriptor(AVFormatContext *fc, AVStream *st, int stream_type dovi->dv_bl_signal_compatibility_id = 0; } - ret = av_stream_add_side_data(st, AV_PKT_DATA_DOVI_CONF, + ret = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_DOVI_CONF, (uint8_t *)dovi, dovi_size); if (ret < 0) { av_free(dovi); diff --git a/libavformat/mux.c b/libavformat/mux.c index 415bd3948f..21ab32dc99 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -277,6 +277,25 @@ FF_ENABLE_DEPRECATION_WARNINGS break; } +#if FF_API_AVSTREAM_SIDE_DATA +FF_DISABLE_DEPRECATION_WARNINGS + /* if the caller is using the deprecated AVStream side_data API, + * copy its contents to AVStream.codecpar, giving it priority + over existing side data in the latter */ + for (int i = 0; i < st->nb_side_data; i++) { + const AVPacketSideData *sd_src = &st->side_data[i]; + AVPacketSideData *sd_dst; + + sd_dst = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, sd_src->type, sd_src->size); + if (!sd_dst) { + ret = AVERROR(EINVAL); + goto fail; + } + memcpy(sd_dst->data, sd_src->data, sd_src->size); + } +FF_ENABLE_DEPRECATION_WARNINGS +#endif + desc = avcodec_descriptor_get(par->codec_id); if (desc && desc->props & AV_CODEC_PROP_REORDER) sti->reorder = 1; diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 34230ece98..bb542207d1 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -2577,10 +2577,11 @@ static int parse_mca_labels(MXFContext *mxf, MXFTrack *source_track, MXFDescript if (service_type != AV_AUDIO_SERVICE_TYPE_NB && service_type != AV_AUDIO_SERVICE_TYPE_MAIN && !ambigous_service_type) { enum AVAudioServiceType *ast; - uint8_t* side_data = av_stream_new_side_data(st, AV_PKT_DATA_AUDIO_SERVICE_TYPE, sizeof(*ast)); + AVPacketSideData *side_data = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, + AV_PKT_DATA_AUDIO_SERVICE_TYPE, sizeof(*ast)); if (!side_data) return AVERROR(ENOMEM); - ast = (enum AVAudioServiceType*)side_data; + ast = (enum AVAudioServiceType*)side_data->data; *ast = service_type; } @@ -2980,7 +2981,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) st->codecpar->color_trc = mxf_get_codec_ul(ff_mxf_color_trc_uls, &descriptor->color_trc_ul)->id; st->codecpar->color_space = mxf_get_codec_ul(ff_mxf_color_space_uls, &descriptor->color_space_ul)->id; if (descriptor->mastering) { - ret = av_stream_add_side_data(st, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, + ret = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, (uint8_t *)descriptor->mastering, sizeof(*descriptor->mastering)); if (ret < 0) @@ -2988,7 +2989,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) descriptor->mastering = NULL; } if (descriptor->coll) { - ret = av_stream_add_side_data(st, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, + ret = av_packet_add_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, (uint8_t *)descriptor->coll, descriptor->coll_size); if (ret < 0) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index d8252ed68f..8ed4b0a49f 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -556,7 +556,7 @@ static void mxf_write_primer_pack(AVFormatContext *s) if (s->streams[i]->codecpar->codec_id == AV_CODEC_ID_H264 && !sc->avc_intra) { will_have_avc_tags = 1; } - if (av_stream_get_side_data(s->streams[i], AV_PKT_DATA_MASTERING_DISPLAY_METADATA, NULL)) { + if (av_packet_get_side_data_from_set(&s->streams[i]->codecpar->side_data_set, AV_PKT_DATA_MASTERING_DISPLAY_METADATA)) { will_have_mastering_tags = 1; } if (s->streams[i]->codecpar->codec_id == AV_CODEC_ID_FFV1) { @@ -1158,7 +1158,7 @@ static int64_t mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID const MXFCodecUL *color_trc_ul; const MXFCodecUL *color_space_ul; int64_t pos = mxf_write_generic_desc(s, st, key); - uint8_t *side_data; + AVPacketSideData *side_data; color_primaries_ul = mxf_get_codec_ul_by_id(ff_mxf_color_primaries_uls, st->codecpar->color_primaries); color_trc_ul = mxf_get_codec_ul_by_id(ff_mxf_color_trc_uls, st->codecpar->color_trc); @@ -1344,9 +1344,9 @@ static int64_t mxf_write_cdci_common(AVFormatContext *s, AVStream *st, const UID avio_write(pb, *sc->codec_ul, 16); // Mastering Display metadata - side_data = av_stream_get_side_data(st, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, NULL); + side_data = av_packet_get_side_data_from_set(&st->codecpar->side_data_set, AV_PKT_DATA_MASTERING_DISPLAY_METADATA); if (side_data) { - const AVMasteringDisplayMetadata *metadata = (const AVMasteringDisplayMetadata*)side_data; + const AVMasteringDisplayMetadata *metadata = (const AVMasteringDisplayMetadata*)side_data->data; if (metadata->has_primaries) { mxf_write_local_tag(s, 12, 0x8301); avio_wb16(pb, rescale_mastering_chroma(metadata->display_primaries[0][0])); diff --git a/libavformat/options.c b/libavformat/options.c index e4a3aceed0..ef0b593d36 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -309,7 +309,9 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c) st->sample_aspect_ratio = (AVRational) { 0, 1 }; +#if FF_API_AVSTREAM_SIDE_DATA sti->inject_global_side_data = si->inject_global_side_data; +#endif sti->need_context_update = 1; diff --git a/libavformat/replaygain.c b/libavformat/replaygain.c index 915bcb2382..302bd75aec 100644 --- a/libavformat/replaygain.c +++ b/libavformat/replaygain.c @@ -69,16 +69,18 @@ static int32_t parse_value(const char *value, int32_t min) int ff_replaygain_export_raw(AVStream *st, int32_t tg, uint32_t tp, int32_t ag, uint32_t ap) { + AVPacketSideData *sd; AVReplayGain *replaygain; if (tg == INT32_MIN && ag == INT32_MIN) return 0; - replaygain = (AVReplayGain*)av_stream_new_side_data(st, AV_PKT_DATA_REPLAYGAIN, + sd = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_REPLAYGAIN, sizeof(*replaygain)); - if (!replaygain) + if (!sd) return AVERROR(ENOMEM); + replaygain = (AVReplayGain*)sd->data; replaygain->track_gain = tg; replaygain->track_peak = tp; replaygain->album_gain = ag; diff --git a/libavformat/seek.c b/libavformat/seek.c index 386312cd3a..0180188595 100644 --- a/libavformat/seek.c +++ b/libavformat/seek.c @@ -745,8 +745,10 @@ void ff_read_frame_flush(AVFormatContext *s) for (int j = 0; j < MAX_REORDER_DELAY + 1; j++) sti->pts_buffer[j] = AV_NOPTS_VALUE; +#if FF_API_AVSTREAM_SIDE_DATA if (si->inject_global_side_data) sti->inject_global_side_data = 1; +#endif sti->skip_samples = 0; } diff --git a/libavformat/version_major.h b/libavformat/version_major.h index 293fbd3397..c348e3eb37 100644 --- a/libavformat/version_major.h +++ b/libavformat/version_major.h @@ -45,6 +45,7 @@ #define FF_API_GET_END_PTS (LIBAVFORMAT_VERSION_MAJOR < 61) #define FF_API_AVIODIRCONTEXT (LIBAVFORMAT_VERSION_MAJOR < 61) #define FF_API_AVFORMAT_IO_CLOSE (LIBAVFORMAT_VERSION_MAJOR < 61) +#define FF_API_AVSTREAM_SIDE_DATA (LIBAVFORMAT_VERSION_MAJOR < 61) #define FF_API_R_FRAME_RATE 1 From patchwork Thu Jul 20 20:34:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42865 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77009pzh; Thu, 20 Jul 2023 13:35:10 -0700 (PDT) X-Google-Smtp-Source: APBJJlHTMf5qFaXicmTs62QuYOC/Y2XzhQyKRyrz9JOW2fhEOsPVpSACwZ6/xyHnVVQTqKfGUS9l X-Received: by 2002:a17:907:7888:b0:98d:4ae:8db9 with SMTP id ku8-20020a170907788800b0098d04ae8db9mr18460ejc.19.1689885310375; Thu, 20 Jul 2023 13:35:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885310; cv=none; d=google.com; s=arc-20160816; b=Uscts18XagZlGgtgqjME+IxlIQlB45Mgaw3BVEj2ZQI2jYsPaknQf+9p5jvtC4W3Wf eiSBTPZux3bVTp2IUZ9xXOtK8CzmZeCI0h/6G+Idz/qCK49gntAZXgfo1Nu0m0mPzPOu jt8e2wRpJCC2A40GeodBxfw8gXWW4GLVmBXMG9xJoeTLDYWOnr5CXg+ck2OATqd7on4c PLt5+YFhMFiFqjV9ILKJVhPUmgTHjaQ1xOb1LIp4+zpMRaPfhkYwSswOiGXxTFbB+nPi rsFY4ERVWYpTXCILdhv4Duq5thQSqCxLsczu4ybAYX/JQghWpBCZStGYKV2h4CNYrk3w BhLg== 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=CuesdfpBTuH9apds0+NNeRMjZfNxGSx+Q9dOb+jHsr8=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=VJsWyc1UTasFOSMENB/x5hzdOaWjWcc5ZjPK0+2dbS6PMGvYCsPvuYPIqsETse1gKH ULJUw5DHbFJoKrPHu481NZ25wGC+oGaCpFQQAezDOt0gWcFkrI7OKAeqTvKM4e0GpBN1 HZ5ctwJiPp2/PtuP7I4NNi9ROtT4/yvE3ludf/ufWpjm2idh1BBg5njojXznffDP7791 4+2Obmdjd2lNG5eTIYjECAeFcgV1yYlh7rKG8Cf+ulLdqP4LkU0mxLpppeWny2UM5MSV /MP0yqv8tuA0/QILlI/I8LOry+yXbI4ylReG235i6L2HI5dX7eg0HbaI03uT8MzAbBDc aoxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=OHhjkhvE; 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=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 mj19-20020a170906af9300b009888665e53fsi1173642ejb.190.2023.07.20.13.35.09; Thu, 20 Jul 2023 13:35:10 -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=20221208 header.b=OHhjkhvE; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3F62D68C217; Thu, 20 Jul 2023 23:34:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AE76168C527 for ; Thu, 20 Jul 2023 23:34:29 +0300 (EEST) Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-6b9bf0252f3so1022580a34.2 for ; Thu, 20 Jul 2023 13:34:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885268; x=1690490068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=zGDeJvQxNqCgoxOnSm7eX8L+HAVT9sMoNzk6epgmYuU=; b=OHhjkhvEiWKy+qOfAb6cG9xxnHYNFj3jmvDIRpAE4u4EVEZ1unFW6N9AL2mpIhRJLj +t32vesCeCjjLUhu9FUvqt1OZ3/L8OVrrc7w+OGo+2pjtAYRcRzB384zXYGTQ1CBL98S cly6HdwF4by7G4mNokJQmsjmMg2Ug0O2z+x8GiXbE9egpDleUQsTRT11dp+oofkYD1Mf 0bBb+xdNiEETu10DG4c93f7kLJx3lJH/0oAYMhxcThfU39bw2CojxhYbm+7ga4sINIHS D3IdOru0QWj7A8+60iW14zEeY7NC8FgQ1E91NT09EqHBUSdyQ5kRPUIkaf1v7EgGEtWQ MLXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885268; x=1690490068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zGDeJvQxNqCgoxOnSm7eX8L+HAVT9sMoNzk6epgmYuU=; b=CVjw4sZc1DxelpqOse3zk76xTIkFzocCgwjBlEn4gfQZ8e/98Vrp/Xujw8Vye9CDJI s/Xkdfp+EAccVzldhKXb+2aNcyQSgHqKSSc9ekrMQzM13lYO2V3A6uhhiXi3ICJ3aEJp WD8IMWnWxbFHASotX62oMez/Ox92q2i2mill5BL9H7p+DiXF8xmGmll8gdfAlTWJTyOD IyD9whjv8g7aVjlvskxZRYM7O2XQXTbEjB75xXWFG4+Bnj8YZy1Q5YSUxnzh/n5bmIm0 iUKKA3uHXNbt00dgD8rmI30eTn/ZH3nWkaLa1zY9hGPO7aNehkCWqZMdah6n9tVozja1 cPLw== X-Gm-Message-State: ABy/qLa58xQXf+nVKxi1m2XbB9GmfFMHQiGMd5yaFAFuEchCGiPSlLx2 jEDR2vkO3Ldv5Z2vZAQBA7DfL/I6i7A= X-Received: by 2002:a9d:730c:0:b0:6b9:9cc0:537f with SMTP id e12-20020a9d730c000000b006b99cc0537fmr3649216otk.33.1689885267925; Thu, 20 Jul 2023 13:34:27 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:27 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:06 -0300 Message-ID: <20230720203415.41757-4-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/13] fftools/ffmpeg: stop using AVStream.side_data 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: As89XNBm3Dn9 Signed-off-by: James Almer --- fftools/ffmpeg_demux.c | 11 +++++++---- fftools/ffmpeg_enc.c | 25 +++++++++++++------------ fftools/ffmpeg_filter.c | 5 ++++- fftools/ffmpeg_mux_init.c | 16 ++++++++-------- 4 files changed, 32 insertions(+), 25 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 48edbd7f6b..f984df7c95 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -482,8 +482,8 @@ static int input_packet_process(Demuxer *d, DemuxMsg *msg, AVPacket *src) /* add the stream-global side data to the first packet */ if (ds->nb_packets == 1) { - for (int i = 0; i < ist->st->nb_side_data; i++) { - AVPacketSideData *src_sd = &ist->st->side_data[i]; + for (int i = 0; i < ist->st->codecpar->side_data_set.nb_side_data; i++) { + AVPacketSideData *src_sd = &ist->st->codecpar->side_data_set.side_data[i]; uint8_t *dst_data; if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX) @@ -979,6 +979,7 @@ static int add_display_matrix_to_stream(const OptionsContext *o, AVFormatContext *ctx, InputStream *ist) { AVStream *st = ist->st; + AVPacketSideData *sd; double rotation = DBL_MAX; int hflip = -1, vflip = -1; int hflip_set = 0, vflip_set = 0, rotation_set = 0; @@ -995,12 +996,14 @@ static int add_display_matrix_to_stream(const OptionsContext *o, if (!rotation_set && !hflip_set && !vflip_set) return 0; - buf = (int32_t *)av_stream_new_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9); - if (!buf) { + sd = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX, + sizeof(int32_t) * 9); + if (!sd) { av_log(ist, AV_LOG_FATAL, "Failed to generate a display matrix!\n"); return AVERROR(ENOMEM); } + buf = (int32_t *)sd->data; av_display_rotation_set(buf, rotation_set ? -(rotation) : -0.0f); diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index 96424272bf..f12024dff5 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -428,12 +428,12 @@ int enc_open(OutputStream *ost, AVFrame *frame) for (i = 0; i < ost->enc_ctx->nb_coded_side_data; i++) { const AVPacketSideData *sd_src = &ost->enc_ctx->coded_side_data[i]; - uint8_t *dst_data; + AVPacketSideData *sd_dst; - dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size); - if (!dst_data) + sd_dst = av_packet_new_side_data_to_set(&ost->par_in->side_data_set, sd_src->type, sd_src->size); + if (!sd_dst) return AVERROR(ENOMEM); - memcpy(dst_data, sd_src->data, sd_src->size); + memcpy(sd_dst->data, sd_src->data, sd_src->size); } } @@ -446,15 +446,16 @@ int enc_open(OutputStream *ost, AVFrame *frame) */ if (ist) { int i; - for (i = 0; i < ist->st->nb_side_data; i++) { - AVPacketSideData *sd = &ist->st->side_data[i]; - if (sd->type != AV_PKT_DATA_CPB_PROPERTIES) { - uint8_t *dst = av_stream_new_side_data(ost->st, sd->type, sd->size); - if (!dst) + for (i = 0; i < ist->st->codecpar->side_data_set.nb_side_data; i++) { + AVPacketSideData *sd_src = &ist->st->codecpar->side_data_set.side_data[i]; + if (sd_src->type != AV_PKT_DATA_CPB_PROPERTIES) { + AVPacketSideData *sd_dst = av_packet_new_side_data_to_set(&ost->par_in->side_data_set, + sd_src->type, sd_src->size); + if (!sd_dst) return AVERROR(ENOMEM); - memcpy(dst, sd->data, sd->size); - if (ist->autorotate && sd->type == AV_PKT_DATA_DISPLAYMATRIX) - av_display_rotation_set((int32_t *)dst, 0); + memcpy(sd_dst->data, sd_src->data, sd_src->size); + if (ist->autorotate && sd_src->type == AV_PKT_DATA_DISPLAYMATRIX) + av_display_rotation_set((int32_t *)sd_dst->data, 0); } } } diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 925b5116cc..33bc96c8dd 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -1383,11 +1383,14 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter, // TODO: insert hwaccel enabled filters like transpose_vaapi into the graph if (ist->autorotate && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) { + AVPacketSideData *sd = NULL; int32_t *displaymatrix = ifp->displaymatrix; double theta; if (!ifp->displaymatrix_present) - displaymatrix = (int32_t *)av_stream_get_side_data(ist->st, AV_PKT_DATA_DISPLAYMATRIX, NULL); + sd = av_packet_get_side_data_from_set(&ist->st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX); + if (sd) + displaymatrix = (int32_t *)sd->data; theta = get_rotation(displaymatrix); if (fabs(theta - 90) < 1.0) { diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c index 86521417ec..eb5dcf6543 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -1041,24 +1041,24 @@ static int streamcopy_init(const Muxer *mux, OutputStream *ost) } } - for (int i = 0; i < ist->st->nb_side_data; i++) { - const AVPacketSideData *sd_src = &ist->st->side_data[i]; - uint8_t *dst_data; + for (int i = 0; i < ist->st->codecpar->side_data_set.nb_side_data; i++) { + const AVPacketSideData *sd_src = &ist->st->codecpar->side_data_set.side_data[i]; + AVPacketSideData *sd_dst; - dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size); - if (!dst_data) { + sd_dst = av_packet_new_side_data_to_set(&ost->st->codecpar->side_data_set, sd_src->type, sd_src->size); + if (!sd_dst) { ret = AVERROR(ENOMEM); goto fail; } - memcpy(dst_data, sd_src->data, sd_src->size); + memcpy(sd_dst->data, sd_src->data, sd_src->size); } #if FFMPEG_ROTATION_METADATA if (ost->rotate_overridden) { - uint8_t *sd = av_stream_new_side_data(ost->st, AV_PKT_DATA_DISPLAYMATRIX, + AVPacketSideData *sd = av_packet_new_side_data_to_set(&ost->st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9); if (sd) - av_display_rotation_set((int32_t *)sd, -ost->rotate_override_value); + av_display_rotation_set((int32_t *)sd->data, -ost->rotate_override_value); } #endif From patchwork Thu Jul 20 20:34:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42866 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77108pzh; Thu, 20 Jul 2023 13:35:20 -0700 (PDT) X-Google-Smtp-Source: APBJJlEcs7k+NwWKWG+MvYsNqSu2Vc+9GnQopyjLkzaxYNRNGRC2pDshFmhdmVh3EjTWkggdABoj X-Received: by 2002:a17:906:3f0c:b0:997:e9a3:9c54 with SMTP id c12-20020a1709063f0c00b00997e9a39c54mr3387392ejj.0.1689885319843; Thu, 20 Jul 2023 13:35:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885319; cv=none; d=google.com; s=arc-20160816; b=e9j3qNbwA8BIdfK6ZU4JQTVpiw7Q1rdE4WCw/rm13mZg54B/usKWh4S/AnguTfnxbT VMvIh2b1jMcEgFVZ5/y9CIAFHXXnyEl1bTvjx0i8ac1RScMzVmzblAZ9C6zAtQDP38g6 OD5j29KqC2iOu7mRKoD4IW4As+ddscpi3r/D0jmWFdyxwMoH4RGTo/eYDH2jnXo786Ls 2tIeYrvsatm6f84az8WclMQlbpzjAy1gvG57CSW8eSSOsB6a9T8G84fTq0PbvQa+HUhh sgBbr4gf0/jbDZ4ECBFJH/9sVfSJVSLeWwhfxE7hHAEFajLG3Om4gWAWMiP7tZSrcEv9 7Kpg== 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=y04q+iN8c1Ta5rizkbmX12XxubVOweYpmwSj76pqwWw=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=cZGC7B4ld516dFB78bTglvwTwos3HW0NdWN9FLISIs8cUYKQtXBBkK2Ygeea0GIkql Domf8ndolTTiKxWN3op3sZwAyQyGtnNCg7jNXX3tlzub6EpjqvN7O5sOIwYERuGXL8x/ x6AqVkUWTK4arYUMktrGAjBaTSZ+6vWjDrvE44+cid/nBwjNqLPEiF62f0ah06MhsPF8 dRMXDJe3TL9jsg9lO86PFLLrISP3S3YRMIlCcGarzvmrUIugZqcOFrcrBPA7NgFJofig 3eBuSCsc30haF9z8fSLXMfeG2gDLXoEnFv+bwRAbFqVxUqgfPQhjgtPJAdvI0RU+1AVn z8Tw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=PKq2J82z; 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=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 me25-20020a170906aed900b00993fe9ca8cfsi1007980ejb.766.2023.07.20.13.35.19; Thu, 20 Jul 2023 13:35:19 -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=20221208 header.b=PKq2J82z; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 628F268C5FD; Thu, 20 Jul 2023 23:34:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f43.google.com (mail-ot1-f43.google.com [209.85.210.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A4B3E68C4D4 for ; Thu, 20 Jul 2023 23:34:30 +0300 (EEST) Received: by mail-ot1-f43.google.com with SMTP id 46e09a7af769-6b9aadde448so1007123a34.0 for ; Thu, 20 Jul 2023 13:34:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885269; x=1690490069; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=R08R+4Ob+tih1z02adcst6MwV1dQ4r+kg7GVr0xPiWM=; b=PKq2J82zd1rRt3hA+2XBQCq8sXJpUwWg4DWB24Ebb571XkbscyT7Liq40Af5W+f91T sK58l1NesOwaanyKzk4IJtIVsUhn/M7gaGLyBUbbd2wx4k8Ltc+2UDl9Uqv8xXaCYXRZ 51Ngt0S2GC4Ptf7k4LdTlOuBW43lARsOPv3OnMrjgX6rYRiNOcqtymjSt4xGUa8kfGT0 LdoNmUtXEya7rvs+DicXYhpbesbMOaHCvLSxQYM1o5cv4nqNCmxZBcSFNNgtZ2lsl8eS eBW5ylGa/6VZL48Sv0kGoLtTnVMcJ5TyAXULlEtdl+Q2HCqDHQlgfok1tblvK/bdTaHl cogg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885269; x=1690490069; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R08R+4Ob+tih1z02adcst6MwV1dQ4r+kg7GVr0xPiWM=; b=QhwKVpJdluqHdaFmi60xf/6mh3g9dNzKkIqj9ExUNixjmvrWCNsg6hffCGpLlPEL6C nQ2ye3dd3UDfE6nMPhLx78wz9FFRGYtlQN2zRrKaO6h81czfHtCdXEY9QoabchYX8o+f /VCGZ16sRVOeBPUFsixNWLUIAHKOVDvpVFl6r7zL5oWDziS31nWo0e+U35VmimN5Nhez pD8gAIo42xtFxYKQIKU6rp78QI5G4DLwUSQIrK7bB/9+SE/MVvK0E19OzCCqjT5Mo5Z/ TX+Kcax5N53K0BLxwpkpk7pWCDRKeukcQKBa+AoRpgb+GZdQS0AvS//ncXVGavAhkd5V SWpg== X-Gm-Message-State: ABy/qLZjTS2qKDDZqnnvBBVG/0aZoeT2MTK3igWPK1PWSRTW4E21Bmvx /xWfIx+tbz/oajodXWwc0HHUxeeRWDI= X-Received: by 2002:a9d:7ac2:0:b0:6b9:8feb:4930 with SMTP id m2-20020a9d7ac2000000b006b98feb4930mr3205922otn.35.1689885269020; Thu, 20 Jul 2023 13:34:29 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:28 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:07 -0300 Message-ID: <20230720203415.41757-5-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/13] fftools/ffplay: stop using AVStream.side_data 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: 4E8hrgv7pv5d Signed-off-by: James Almer --- fftools/ffplay.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fftools/ffplay.c b/fftools/ffplay.c index 5212ad053e..c123511027 100644 --- a/fftools/ffplay.c +++ b/fftools/ffplay.c @@ -1904,8 +1904,12 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c AVFrameSideData *sd = av_frame_get_side_data(frame, AV_FRAME_DATA_DISPLAYMATRIX); if (sd) displaymatrix = (int32_t *)sd->data; - if (!displaymatrix) - displaymatrix = (int32_t *)av_stream_get_side_data(is->video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL); + if (!displaymatrix) { + AVPacketSideData *sd = av_packet_get_side_data_from_set(&is->video_st->codecpar->side_data_set, + AV_PKT_DATA_DISPLAYMATRIX); + if (sd) + displaymatrix = (int32_t *)sd->data; + } theta = get_rotation(displaymatrix); if (fabs(theta - 90) < 1.0) { From patchwork Thu Jul 20 20:34:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42867 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77170pzh; Thu, 20 Jul 2023 13:35:29 -0700 (PDT) X-Google-Smtp-Source: APBJJlEWIf2QNxQM+iLBe3HGBCXRtacQLFJcjHOQvFvOFJT8H4guodgLqQKSHa+c0NLlSaH7UapI X-Received: by 2002:a17:907:1c26:b0:98d:4b97:acc8 with SMTP id nc38-20020a1709071c2600b0098d4b97acc8mr6450603ejc.25.1689885329142; Thu, 20 Jul 2023 13:35:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885329; cv=none; d=google.com; s=arc-20160816; b=aGowXqsm45g7Rme/NwzSehxssxGXT11CnnVUZVLPpDiuz81VzHtLkijm0G7TxtjSSs ubQ/SKQayhcvK0YmWSyuzxFSRQPHAsOPJPFh4U1E1VZT5It3mXAJVS0oO8qvfyxaOB2H I7d0cH5PbWcTg00v6WzPpa4TgoIsjTutjazeQgdq2G4Xc8vD7LI1tcmOGJao49sF3FtU ao3os2CzsJaTrsdpszQzJ+9PAkE1TD+7cMtkfdiSqD01PXoriRDuHNkqsxdD2PB0kwpa gUDmFnAMZHqsxkhB+yKIjnKiZc23s78oW0EvT62hV7b6daBKULkKYZLzX55T68VZR/BG lpOQ== 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=AsrMN0pQLzvM4ANtjPCvxVHPkIfksaHOFZwg7Dy8T0E=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=Cy5lpLT2+P6ZCg2ogsr/1E/OKNu98VPQYokmIqmOPqSZjxesZTeOjf53ctPrJfAlUh hjg90V8rYJSRGyO7nHP2rVIPlJtBohgXPkYg130IONZMgzGz1/EbDO8UrS/U8od5myO4 NwZ9N4rPH03rutO030QRjavmcjDSaWmx1w2oc8g7r5Hyb1ccgk4qrESpyswktUqs8ncf 2wblBZKDkFe9ChRAViuNSxqUQQQXcwqpyD+KweACmFgYD+jmIWIPyPZSnTmRHzQb7zPT 3TGWXOhj2dnP09N/6+zPiD8p0UEDX+8tSKcufK84l3Pt9p5nfiR7Q9wjsHoFyAbGt7Kj t6Ig== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=TAenOyhE; 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=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 j17-20020a1709062a1100b00992b32e3e3esi1203586eje.468.2023.07.20.13.35.28; Thu, 20 Jul 2023 13:35:29 -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=20221208 header.b=TAenOyhE; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 48FAB68C5A4; Thu, 20 Jul 2023 23:34:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f49.google.com (mail-ot1-f49.google.com [209.85.210.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D8FD168C55C for ; Thu, 20 Jul 2023 23:34:31 +0300 (EEST) Received: by mail-ot1-f49.google.com with SMTP id 46e09a7af769-6b9f46ec07aso811872a34.1 for ; Thu, 20 Jul 2023 13:34:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885270; x=1690490070; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=DMwEoaYgNUvJED0CXa91pYEnXUG8gGWpBsm0o7t7ZYw=; b=TAenOyhEr0KBReqseQZvYverk9cDHH74TmpNI83HWdoBaUgWN+FbXbyDE5ZPdROma1 FMP6mdjP1YDlAHuDiONTWj3TRmV4W57rw5f790enctHiDLQPKWx3/iKpUtYs6z3eGAtU 4y9z08Bip8PPtDNWXKoKEAfk8zw0XtaiWSyxLeZG1i2rmpKBZWA5h+a30PhM+NM2Af5l hpwjfcN5TyE0IiuuONDbLmMUDRxtsKviW8TUKC4FPbJA02u7fsbmUxNI/fIv/YawLHiP KdZf+/nJ9MMeQPNDK1DFILP42LnlTi0NnUIQevecSTaZ0z/FzY+KqA1l3XlzsqTaLkg4 TN5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885270; x=1690490070; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DMwEoaYgNUvJED0CXa91pYEnXUG8gGWpBsm0o7t7ZYw=; b=lWNI14WrE1B2A94C5DJbSdZ4DuN3jdJ6GufBNJk/zmmoSVxVFYKjUOgBy0p5oItCuH WBKAHvOjt0O9zAUbDu9YJUVDGShD0oaAGVwosqP9ye1UQ0Qu7g7/fRAGBaRUw1NpwQlw X579w+XyRcnQYm48rQGOsuGPPH4A1crU1c9yyEH8ce6kMRS+vhBHVFGGMWakAdoj7yI4 nsuL5r/k/utDp4MGGLOrseEsJCrsoocHx5hl39LV2MBmFA6fB4XWsabLkEhlwuwmGpNz if0OGmoNJG5Jtm0NAp+CMZaHRv49x0+biK8Y1YNNBLI4QQoB1TAdRnDtouvo3exg85uR ygLQ== X-Gm-Message-State: ABy/qLa1E9xkCSsAJMVjmRB8joC0dk8NlMk4BAmWbBpHZLD1ZWxFpSvh ae32WDYGHArf+SCKQP9tSxNHP8QD2qw= X-Received: by 2002:a05:6830:78b:b0:6b9:57d2:8ec1 with SMTP id w11-20020a056830078b00b006b957d28ec1mr2859096ots.2.1689885270148; Thu, 20 Jul 2023 13:34:30 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:29 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:08 -0300 Message-ID: <20230720203415.41757-6-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/13] fftools/ffprobe: stop using AVStream.side_data 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: DdnRNhsQe8G3 Signed-off-by: James Almer --- fftools/ffprobe.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index a39185f6fe..b60fd8eb1f 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -3186,8 +3186,9 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id if (do_show_stream_tags) ret = show_tags(w, stream->metadata, in_program ? SECTION_ID_PROGRAM_STREAM_TAGS : SECTION_ID_STREAM_TAGS); - if (stream->nb_side_data) { - print_pkt_side_data(w, stream->codecpar, stream->side_data, stream->nb_side_data, + if (stream->codecpar->side_data_set.nb_side_data) { + print_pkt_side_data(w, stream->codecpar, stream->codecpar->side_data_set.side_data, + stream->codecpar->side_data_set.nb_side_data, SECTION_ID_STREAM_SIDE_DATA_LIST, SECTION_ID_STREAM_SIDE_DATA); } From patchwork Thu Jul 20 20:34:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42869 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77329pzh; Thu, 20 Jul 2023 13:35:46 -0700 (PDT) X-Google-Smtp-Source: APBJJlH+9AA36ScVLjGAC4/nMcFtWuplpONXpF4s/BNvrE0HnZ5WPM3XtKc47UcDROTn4AsKE2xS X-Received: by 2002:a17:906:3f54:b0:994:542c:8718 with SMTP id f20-20020a1709063f5400b00994542c8718mr5904436ejj.76.1689885346129; Thu, 20 Jul 2023 13:35:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885346; cv=none; d=google.com; s=arc-20160816; b=0RjCHLAXCclEbUZGyqcHUXAzCcIyVa+/V6glEjGmR56zQdCtCGDornCeOvhoqYRZG7 sP1F1+ByT43FtZahsDTbynIZF3Z/OkPuwZyv+IUm/V7o2hgq3Q4yAOVf7KH3iIFUwNAG 9UkD7dn6kbl61paTVzwJoe9NeFb4rBrsx/ouloDRgWA+rF1tVJkkYNZ7dwpu2O2L4HD5 PVkzfVs9c1OCYtANQATwDlWdj6W0kbX0l391zKE1XyclUHtTf2aCV6v7Y38zICfETq+o RfuBSR5ATSkBh6xHhTviusHk8O9tum41jhWAnJ6a7hV8oSs3x72lFgbRvNrat78Ebrlq ICOQ== 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=0z55GEcDMSykCGMrwyDssbQrumORpnyOEQZyGAuSEPE=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=D5iEK0IZLkbMpADO14gDkVDrQoRbPww/oCqiK+w528x4MrP59L0vshdrPGMaYbss8K dXXMvPwShrrTaUKdkO1PFz7Gl74jRnMvcM4pGcWszOy4N+F824sG4naoDcXNlvhkB2Dd JvnzT6By8LEYan64HcrSLlTuPz0JxCwMdVkaF/s8MRqikL+CDvGmy4AQmUBhgmfFNrGV DTsevBOFUe6z0tbXE49od5COPOX+nBxIaI+bkDSnafxE3byfPKw0n256OotXF0jbNuJf x0H/ztXfKd2EtKlPeP76TKU65Vz5oULgIK4FTpR7+r+cDT6MDPbGCMdOiHeA1+z7m6pZ xp0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=NRJ4lTiC; 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=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 v24-20020a17090690d800b009939d1b60bdsi1118101ejw.67.2023.07.20.13.35.45; Thu, 20 Jul 2023 13:35:46 -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=20221208 header.b=NRJ4lTiC; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7423968C63D; Thu, 20 Jul 2023 23:34:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oo1-f44.google.com (mail-oo1-f44.google.com [209.85.161.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F1A9568C5D3 for ; Thu, 20 Jul 2023 23:34:32 +0300 (EEST) Received: by mail-oo1-f44.google.com with SMTP id 006d021491bc7-563439ea4a2so801507eaf.0 for ; Thu, 20 Jul 2023 13:34:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885271; x=1690490071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=0Wo6ys7fJvyK2gZ3yb6jpp9ZFIgySxQUL2mMoe3+x1k=; b=NRJ4lTiC4y8onxzT6N8Ibej9Y4yH+B01zwct0huoHaWbgEtY+wwiTJEpN5aOt6NIFI NgmSKmIKZWNFA/HR4+izLndIyb54pVU8PP6b6ljGu/AQBXKyf4+LLVkqcwT3oDBdKodz OXCRjbnqVvGTphvDpI/17DpwrQZ4GsWT+a/KY+3E/8OX9HBd/Vdr0VgPOqbNGB2YrtBE AtRXSC/lt8ea9/2aVxyPkkV5iUk/cwwT5jAfqjnn+NnWP0DFsR70lBUtwtNk4xOb6Uu1 8erCcfkRtrWfMVcn6LZQeXZekss5ahEybjPALbq0Oc3HPdUiP7ufDykpa6ctGDH/Lkmm zcFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885271; x=1690490071; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0Wo6ys7fJvyK2gZ3yb6jpp9ZFIgySxQUL2mMoe3+x1k=; b=ImmKDAge0NJkGCNvvODewDyD4s7EcS3oaogijw2nOHXxG9iUYujnHH1dQqapV+J5MW alX0ZHHmAj2VMJgCzEKfwsRBu5YJDPNHN0PnZlhRSWKre1lOZt9gp1qtG1rzFqN7HpLv yZqrPJwIpRah/2OG63rZ/hY7dfOseqIE+aBQOTDnGxn7Fgs3cvdI5NlUUUQoqQwe+KG5 MwgDWveyK7fXfpbDVAq/gOTp+CFdiwkQZXDJVhcKIutzhA8mObUebOwgEL8MbehWUgq/ VNjzv7WN6NtNkhOzDS5HnMqfofFBf2KfA0rCNIxyWgezQnnBPFM4QztQRONPljoEt7Y5 +URg== X-Gm-Message-State: ABy/qLY6FbhPebB15BwwVdczkG8RaVmWtzcMOwWQVvH4/pm2iVnjioDH c6O7ZzZNc6F5PlodMq8IVpIXQl/4Xqw= X-Received: by 2002:a4a:6c1c:0:b0:566:ffa7:fd00 with SMTP id q28-20020a4a6c1c000000b00566ffa7fd00mr276472ooc.6.1689885271262; Thu, 20 Jul 2023 13:34:31 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:31 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:09 -0300 Message-ID: <20230720203415.41757-7-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/13] avcodec/hevcdec: check for DOVI configuration record in AVCodecContext side data 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: 4fi0qpFe7cba Signed-off-by: James Almer --- libavcodec/hevcdec.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index fcf19b4eb6..0d659e4c55 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -3403,8 +3403,12 @@ static int hevc_decode_frame(AVCodecContext *avctx, AVFrame *rframe, } sd = av_packet_get_side_data(avpkt, AV_PKT_DATA_DOVI_CONF, &sd_size); - if (sd && sd_size > 0) + if (sd && sd_size > 0) { + av_log(avctx, AV_LOG_WARNING, + "passing a DOVI configuration record through packet side data is " + "deprecated and will stop working soon. Use AVCodecContext side data\n"); ff_dovi_update_cfg(&s->dovi_ctx, (AVDOVIDecoderConfigurationRecord *) sd); + } s->ref = NULL; ret = decode_nal_units(s, avpkt->data, avpkt->size); @@ -3707,12 +3711,18 @@ static av_cold int hevc_decode_init(AVCodecContext *avctx) atomic_init(&s->wpp_err, 0); if (!avctx->internal->is_copy) { + AVPacketSideData *sd; + if (avctx->extradata_size > 0 && avctx->extradata) { ret = hevc_decode_extradata(s, avctx->extradata, avctx->extradata_size, 1); if (ret < 0) { return ret; } } + + sd = av_packet_get_side_data_from_set(&avctx->side_data_set, AV_PKT_DATA_DOVI_CONF); + if (sd && sd->size > 0) + ff_dovi_update_cfg(&s->dovi_ctx, (AVDOVIDecoderConfigurationRecord *) sd->data); } return 0; From patchwork Thu Jul 20 20:34:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42871 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77460pzh; Thu, 20 Jul 2023 13:36:03 -0700 (PDT) X-Google-Smtp-Source: APBJJlFMs3HIq8Sq/5rpxfkQZulXpkeYWgIcR6A7ptMhbsF/CvVJn6JsPFiCABRaHfOnCQCtoqhG X-Received: by 2002:a05:6402:1486:b0:514:9df0:e3f3 with SMTP id e6-20020a056402148600b005149df0e3f3mr19787edv.0.1689885363438; Thu, 20 Jul 2023 13:36:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885363; cv=none; d=google.com; s=arc-20160816; b=tTv6uSkqk14EaeJLeVq6DzP7JomWx9hD1qQus2ElkDXH3hGFH6pqn2jvz8WSYAp0wz ibl4XTxOchmPmeaFbDRNgIFe9JuzAPUqe+tTmQ27UaiyiMZIYEMhEi6MdEBz6IfsZr+c c8w+E7WkVBWTAm4xvdPbg3dsRRqOMqm1jF4Wopm4Dfvl4BIIZd4CwhIegO2fbBhAl26t 31D6bWqFysrMPDfmoww1SpjFeaQatZjK4I7ZbUq4OKjcoZyM4pmFDHgT/YdmAA1qD7kS kC7BK1qzTAS/ap80LJH6/7j0OOtJG4L5R+g+GmEEXU/qwC6bdkqNSEemE6QgH2vr1d88 TRvQ== 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=tvUuqFehbk3BUa9J74J3+3N6ehSbRngCR1dP39FgcIs=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=pUK8AVYgA8ce1UJjxjdFQ/G9bYZJqVJtnSXBw2uN8CcIPP+SOJU2tnxm3qYdTbCWbZ X8ntJOfUKHi/nWR78UCg2fSu5e2hy3T30FrEMyHZ4Uy7FUROcFy1NktGM60QkLs213dw bu+1AwDWFS4moEBhoQiNe2mcfAJihIXPqJ2xSzv39UXZCC11ztdHppjjsXP70RF6thrJ kzbZYn3ERt4Qqu833XHFXBQzuSCk3vo8wGXlNJLcRdCGkhctgrNN8HF5yC6HTjflI1PH UozUKl7xBNQVGpQFxnZUke2yiHRjSvO9dJpsv3FRVAX4ALGBdLBkrDk5MbKEZCkv2Yys mnrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=JuqVMXNe; 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=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 ca21-20020aa7cd75000000b00521d2fbcfa2si1439380edb.311.2023.07.20.13.36.03; Thu, 20 Jul 2023 13:36:03 -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=20221208 header.b=JuqVMXNe; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9836968C5C4; Thu, 20 Jul 2023 23:34:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f46.google.com (mail-ot1-f46.google.com [209.85.210.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 30E6268C5FD for ; Thu, 20 Jul 2023 23:34:34 +0300 (EEST) Received: by mail-ot1-f46.google.com with SMTP id 46e09a7af769-6b9e478e122so1014721a34.1 for ; Thu, 20 Jul 2023 13:34:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885272; x=1690490072; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=3QMIM9ShVB2IurWkZEGZXU12AdInGFQDvc7Ow+bQexU=; b=JuqVMXNe251YRAO/xJ4N4RynJQ6bHIraUqVUETtHYF/LE3xWazF8ybqEINT3f+KOpl C6II5lCAzQUZoDIDPJUXI5azWmsi5Z1p6yLDRTASipZRpC85RHu/7S89PNnoLMhoOrUu dlouMaJIClEswk2nWedxQHJVJ80UhFDqTKeDbA3L5tqsYvtlN8kKR4UAIWLf31S9G0mv STA9Ce5sjNZahmrLo+6Q00GNFtU9aiQUX6rogR3CJgjETQ1ycufnuAJQtr6w5bMAeZNK ssvtTFsInJcAJNt0HymATgiMXvaQuTG89KE5cYmFSLpNHeklp82EhXYWuiAy0XIJyPx3 I5YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885272; x=1690490072; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3QMIM9ShVB2IurWkZEGZXU12AdInGFQDvc7Ow+bQexU=; b=d3Sq7Kn9m9r49jo7XPdE9uNKRu3UPfTaOyEJw2jH7L0CQt3Z3b1u/IlqvGNN+YzgiH QvTIaEsboaFaOljtp9ixEJugyp2YLGMkJxI8bt37XOXJpMkTMFQJ3u8JEAVIxrj8xXpb HMtjJdM5OF9GYf7FOGFagBtnY1n5tmGggtL+DHKAJ1a3cNYkv42Z2ae+GbUbMvk7WA/3 2S4090+FOzRVphNceA3tpyh0yCTX1ZwHo9qnm+VX2Ri6hnf1Xon8OrsFcUC8Sj6JeALc 6DTZy3NxEDJQyQ5c8vv7IpDMGaqagLm3GufqYI0keFxGUzSdASzA2NwyG65tb+LlSIij n31g== X-Gm-Message-State: ABy/qLaP9CaMcLsQhRg0Ewqf3JIXKLnuSsTMhLJCSi2QyKUHT1gpu6Ab 6Ri3/NNBiinmAyPkHRWFuKXwEMEgXR8= X-Received: by 2002:a05:6870:969f:b0:1b3:eec8:fa87 with SMTP id o31-20020a056870969f00b001b3eec8fa87mr524743oaq.42.1689885272435; Thu, 20 Jul 2023 13:34:32 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:32 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:10 -0300 Message-ID: <20230720203415.41757-8-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/13] avcodec/decode: check for global side data in AVCodecContext side data 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: s47E4UtAqwaW Signed-off-by: James Almer --- libavcodec/decode.c | 56 +++++++++++++++++++++++++++++++++++++-------- libavcodec/decode.h | 2 +- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/libavcodec/decode.c b/libavcodec/decode.c index f0e6acc03e..66506b6dfb 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1396,25 +1396,30 @@ static int add_metadata_from_side_data(const AVPacket *avpkt, AVFrame *frame) return av_packet_unpack_dictionary(side_metadata, size, frame_md); } -int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx, +static const struct { + enum AVPacketSideDataType packet; + enum AVFrameSideDataType frame; +} sd_global_map[] = { + { AV_PKT_DATA_REPLAYGAIN , AV_FRAME_DATA_REPLAYGAIN }, + { AV_PKT_DATA_SPHERICAL, AV_FRAME_DATA_SPHERICAL }, + { AV_PKT_DATA_STEREO3D, AV_FRAME_DATA_STEREO3D }, + { AV_PKT_DATA_AUDIO_SERVICE_TYPE, AV_FRAME_DATA_AUDIO_SERVICE_TYPE }, + { AV_PKT_DATA_MASTERING_DISPLAY_METADATA, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA }, + { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, + { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, + { AV_PKT_DATA_DYNAMIC_HDR10_PLUS, AV_FRAME_DATA_DYNAMIC_HDR_PLUS }, +}; + +int ff_decode_frame_props_from_pkt(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt) { static const struct { enum AVPacketSideDataType packet; enum AVFrameSideDataType frame; } sd[] = { - { AV_PKT_DATA_REPLAYGAIN , AV_FRAME_DATA_REPLAYGAIN }, - { AV_PKT_DATA_DISPLAYMATRIX, AV_FRAME_DATA_DISPLAYMATRIX }, - { AV_PKT_DATA_SPHERICAL, AV_FRAME_DATA_SPHERICAL }, - { AV_PKT_DATA_STEREO3D, AV_FRAME_DATA_STEREO3D }, - { AV_PKT_DATA_AUDIO_SERVICE_TYPE, AV_FRAME_DATA_AUDIO_SERVICE_TYPE }, - { AV_PKT_DATA_MASTERING_DISPLAY_METADATA, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA }, - { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, { AV_PKT_DATA_A53_CC, AV_FRAME_DATA_A53_CC }, { AV_PKT_DATA_AFD, AV_FRAME_DATA_AFD }, - { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, { AV_PKT_DATA_S12M_TIMECODE, AV_FRAME_DATA_S12M_TIMECODE }, - { AV_PKT_DATA_DYNAMIC_HDR10_PLUS, AV_FRAME_DATA_DYNAMIC_HDR_PLUS }, { AV_PKT_DATA_SKIP_SAMPLES, AV_FRAME_DATA_SKIP_SAMPLES }, }; @@ -1427,6 +1432,23 @@ FF_DISABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS #endif + for (int i = 0; i < FF_ARRAY_ELEMS(sd_global_map); i++) { + size_t size; + uint8_t *packet_sd = av_packet_get_side_data(pkt, sd_global_map[i].packet, &size); + if (packet_sd) { + AVFrameSideData *frame_sd; + + av_log(avctx, AV_LOG_WARNING, + "passing global side data through packet side data is " + "deprecated and will stop working soon. Use AVCodecContext side data\n"); + + av_frame_remove_side_data(frame, sd_global_map[i].frame); + frame_sd = av_frame_new_side_data(frame, sd_global_map[i].frame, size); + if (!frame_sd) + return AVERROR(ENOMEM); + memcpy(frame_sd->data, packet_sd, size); + } + } for (int i = 0; i < FF_ARRAY_ELEMS(sd); i++) { size_t size; uint8_t *packet_sd = av_packet_get_side_data(pkt, sd[i].packet, &size); @@ -1463,6 +1485,20 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) const AVPacket *pkt = avctx->internal->last_pkt_props; int ret; + for (int i = 0; i < FF_ARRAY_ELEMS(sd_global_map); i++) { + AVPacketSideData *packet_sd = av_packet_get_side_data_from_set(&avctx->side_data_set, + sd_global_map[i].packet); + if (packet_sd) { + AVFrameSideData *frame_sd = av_frame_new_side_data(frame, + sd_global_map[i].frame, + packet_sd->size); + if (!frame_sd) + return AVERROR(ENOMEM); + + memcpy(frame_sd->data, packet_sd->data, packet_sd->size); + } + } + if (!(ffcodec(avctx->codec)->caps_internal & FF_CODEC_CAP_SETS_FRAME_PROPS)) { ret = ff_decode_frame_props_from_pkt(avctx, frame, pkt); if (ret < 0) diff --git a/libavcodec/decode.h b/libavcodec/decode.h index 2b9fe59907..0abbdf067c 100644 --- a/libavcodec/decode.h +++ b/libavcodec/decode.h @@ -67,7 +67,7 @@ int ff_decode_get_packet(AVCodecContext *avctx, AVPacket *pkt); /** * Set various frame properties from the provided packet. */ -int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx, +int ff_decode_frame_props_from_pkt(AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt); /** From patchwork Thu Jul 20 20:34:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42873 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77579pzh; Thu, 20 Jul 2023 13:36:20 -0700 (PDT) X-Google-Smtp-Source: APBJJlGjTQpfDRGDNUeh1QseT+uYZGE1nKbR12ExcI6tOu9rTNlbplXI09kdkjITxmOZJqNfIdrS X-Received: by 2002:a17:907:7e92:b0:98e:4f1:f987 with SMTP id qb18-20020a1709077e9200b0098e04f1f987mr7040367ejc.3.1689885380371; Thu, 20 Jul 2023 13:36:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885380; cv=none; d=google.com; s=arc-20160816; b=idZ+IYNNochwGE2D0vCz6xw0BQh7M2bSlDB9wANs0kWIMsIMJuiW11SNJUn3yaIEzW tlLRVwnDLShzm9US6XDph970bFmou5WCXVFz3Ep85LYvuP/aCIwQkhJe4334Wuf5UAvM nJuND4WnFtpgE5p7WH7ud+EyqcOKtNJ/zsrXPIeRgYt17jqT11aPvKH1SQbkg4/2O/5Y GW4XPwHnyHEo8XjeVi2cLOUkucC6N0FQ0ECPr4RwVFRjvgwfQ28EfTqd+hU/+67Ny6Rr gb36wpFTK2R+K1mJyixQKReGDCKgL6MHreoOmb+ISuT8Mj2amCT75ZWngmn3MQbyTznE M5lg== 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=gBWpjaX9oQC43IbIrzs2RTh7sadCxNkJm/ngfoc1l4U=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=Mc4GHUHpHiSDiK8GSnSBJLPCibS1nWRhMzYxxFqdocv7anYbA7e9wedHCS7yWUy3S0 Z12DBxK0tIa/eUmA08RFvrbMy+/nSqbvsa2gGi+8EbYgF1fspCKBD/hqQDQprq+tM2Tn PmNdYulp0G1R+OIlItuGQaobj/fJfnFeKQMWyEpj4vkfdlqgJeXDgGib5BvCB8TpiWkQ fz7o3aCgypIYODtxpuSmvL3eF9PoI/b+yO88PW/YnpKrQ/WRkYyO8PJqOEFLEx6tc9HD cUL/q+OdAInAc4Roj7lfXQ45JDgcAk2t7bs211yt3b0gOezmtq3ltfbZlXw3HAHogvD4 ShOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=ZntYrkvA; 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=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 i6-20020aa7dd06000000b00521775bec83si1237869edv.336.2023.07.20.13.36.20; Thu, 20 Jul 2023 13:36:20 -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=20221208 header.b=ZntYrkvA; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AA15768C171; Thu, 20 Jul 2023 23:34:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f41.google.com (mail-ot1-f41.google.com [209.85.210.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 79DCE68C621 for ; Thu, 20 Jul 2023 23:34:35 +0300 (EEST) Received: by mail-ot1-f41.google.com with SMTP id 46e09a7af769-6b9b835d302so925701a34.1 for ; Thu, 20 Jul 2023 13:34:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885274; x=1690490074; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=4o8qMTSf5pjO99VKodUD2UXPHkxIWpCyJMqQM9yb2Y4=; b=ZntYrkvAif/hepljFcGhK/C2iS4NcF6TheUzhAjAsfiKsIb7VOuV7QmFqadaTWh430 yKxVl0by717XlJlxkp7X0bzAd675m45ZSOHsWiiuPF5PbFYGJiA6gQYE0Hz9wZgTku/J um4OfxI3JAdPV5zLZYdJ9+w54E08+a4J0kc/2qlscE/rIZr7xHck5Qz19GN1OHI3jJcw eNC+YxWJxV+tcn0kJhFwxJ8uHtsbYJJ69xIk98EHpdJNAnjS538iqJV/Mxv26xI6Fyzb 6jWL60QAGHP0hMYxZraYC4bQaExVXPePACDV+v+vG9KV6p/AyEhiymBlYgl7/zcUI+uQ suZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885274; x=1690490074; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4o8qMTSf5pjO99VKodUD2UXPHkxIWpCyJMqQM9yb2Y4=; b=Z9TIsOYmjr4pct1HtYV/dNuO2He6tuQm5W8dS/4dpo/Kto/jZieRTMWhj5L3XK0/1I gpLQKKewXp9nJ8tlykoNd335SvrSNoQPkO3fWjbpdLMc/yRnHtcF7MAFmLg4f7xUMSSJ znd2UcdDJeeCPb1rPyJpS8CkvKmMoQrfb+tbM6WqWIVxJDUuE/3MhFLuGvJTcqPfqeHa xtk8O6lWiWodoaEBmhgjdjOeNjSADVXldQa9sjLxQB6gPFH35s+VhDBAwifEPpo41mXJ IFk6K31h1kymvwSsQY+1hPXFUx/THH97FzrETnmve6Dh+9O49ZDdZ4UV0rj7Ti14CFqb YeEA== X-Gm-Message-State: ABy/qLZTYlqWlAVNpfdj3RShfJq8moOwVfu6Rqlmkhk+VZKKaa6Yic9C VegPnpNQECJMoDY1Jib2L3Z1iFwNDGU= X-Received: by 2002:a9d:738e:0:b0:6b8:6e6c:6b5a with SMTP id j14-20020a9d738e000000b006b86e6c6b5amr3489095otk.21.1689885273518; Thu, 20 Jul 2023 13:34:33 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:33 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:11 -0300 Message-ID: <20230720203415.41757-9-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/13] fftools/ffmpeg: stop injecting stream side data in packets 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: iQ2Wrm2HWL6t This is no longer needed as the side data is available for decoders in the AVCodecContext. The tests affected reflect the removal of useless CPB and Stereo 3D side data in packets. Signed-off-by: James Almer --- fftools/ffmpeg_demux.c | 22 ------------------- tests/ref/fate/autorotate | 4 ++-- tests/ref/fate/copy-trac3074 | 2 +- tests/ref/fate/matroska-avoid-negative-ts | 2 +- tests/ref/fate/matroska-dovi-write-config7 | 2 +- tests/ref/fate/matroska-dovi-write-config8 | 2 +- tests/ref/fate/matroska-encoding-delay | 2 +- .../fate/matroska-mastering-display-metadata | 4 ++-- tests/ref/fate/matroska-spherical-mono-remux | 4 ++-- tests/ref/fate/matroska-vp8-alpha-remux | 2 +- .../ref/fate/mov-mp4-disposition-mpegts-remux | 4 ++-- tests/ref/fate/mxf-d10-user-comments | 2 +- tests/ref/fate/mxf-remux-applehdr10 | 2 +- tests/ref/fate/vp9-superframe-bsf | 2 +- 14 files changed, 17 insertions(+), 39 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index f984df7c95..16519b4b2b 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -480,28 +480,6 @@ static int input_packet_process(Demuxer *d, DemuxMsg *msg, AVPacket *src) ds->data_size += pkt->size; ds->nb_packets++; - /* add the stream-global side data to the first packet */ - if (ds->nb_packets == 1) { - for (int i = 0; i < ist->st->codecpar->side_data_set.nb_side_data; i++) { - AVPacketSideData *src_sd = &ist->st->codecpar->side_data_set.side_data[i]; - uint8_t *dst_data; - - if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX) - continue; - - if (av_packet_get_side_data(pkt, src_sd->type, NULL)) - continue; - - dst_data = av_packet_new_side_data(pkt, src_sd->type, src_sd->size); - if (!dst_data) { - ret = AVERROR(ENOMEM); - goto fail; - } - - memcpy(dst_data, src_sd->data, src_sd->size); - } - } - if (debug_ts) { av_log(NULL, AV_LOG_INFO, "demuxer+ffmpeg -> ist_index:%d:%d type:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s duration:%s duration_time:%s off:%s off_time:%s\n", f->index, pkt->stream_index, diff --git a/tests/ref/fate/autorotate b/tests/ref/fate/autorotate index dff628bbff..2aa29fafa7 100644 --- a/tests/ref/fate/autorotate +++ b/tests/ref/fate/autorotate @@ -11,8 +11,8 @@ #codec_id 1: ac3 #sample_rate 1: 44100 #channel_layout_name 1: mono -0, -512, 0, 512, 6997, 0x55c700f6, S=1, 40 -1, -256, -256, 1536, 416, 0x92ddc529, S=2, 10, 4 +0, -512, 0, 512, 6997, 0x55c700f6 +1, -256, -256, 1536, 416, 0x92ddc529, S=1, 10 0, 0, 512, 512, 4847, 0xe74f522e, F=0x0 1, 1280, 1280, 1536, 418, 0x0a7fcd2d 0, 512, 1024, 512, 5281, 0xbd4a5dac, F=0x0 diff --git a/tests/ref/fate/copy-trac3074 b/tests/ref/fate/copy-trac3074 index b6d23f8c1c..53ba27e920 100644 --- a/tests/ref/fate/copy-trac3074 +++ b/tests/ref/fate/copy-trac3074 @@ -5,7 +5,7 @@ #codec_id 0: eac3 #sample_rate 0: 48000 #channel_layout_name 0: stereo -0, 0, 0, 1536, 512, 0x2beaf79f, S=1, 4 +0, 0, 0, 1536, 512, 0x2beaf79f 0, 1536, 1536, 1536, 512, 0x29ddf9d6 0, 3072, 3072, 1536, 512, 0xba0afa79 0, 4608, 4608, 1536, 512, 0xe019f394 diff --git a/tests/ref/fate/matroska-avoid-negative-ts b/tests/ref/fate/matroska-avoid-negative-ts index dcde937d52..aabc741827 100644 --- a/tests/ref/fate/matroska-avoid-negative-ts +++ b/tests/ref/fate/matroska-avoid-negative-ts @@ -11,7 +11,7 @@ #codec_id 1: mp3 #sample_rate 1: 44100 #channel_layout_name 1: mono -0, -37, 43, 40, 9156, 0xe5bd034a, S=1, 40 +0, -37, 43, 40, 9156, 0xe5bd034a 1, 0, 0, 26, 417, 0x7198c15e 0, 3, 3, 40, 1740, 0x29ac4480, F=0x0 1, 26, 26, 26, 417, 0x3c67c32d diff --git a/tests/ref/fate/matroska-dovi-write-config7 b/tests/ref/fate/matroska-dovi-write-config7 index ef4c87d885..a2f106340d 100644 --- a/tests/ref/fate/matroska-dovi-write-config7 +++ b/tests/ref/fate/matroska-dovi-write-config7 @@ -13,7 +13,7 @@ #dimensions 1: 1920x1080 #sar 1: 0/1 0, -83, 0, 41, 699, 0x728548f1 -1, -83, 0, 41, 1085, 0xfb2dba82, S=1, 8 +1, -83, 0, 41, 1085, 0xfb2dba82 0, -42, 167, 41, 95, 0xc0312044, F=0x0 1, -42, 167, 41, 481, 0xf23f91d5, F=0x0 0, 0, 83, 41, 99, 0x5e0a2221, F=0x0 diff --git a/tests/ref/fate/matroska-dovi-write-config8 b/tests/ref/fate/matroska-dovi-write-config8 index bb22563eee..cfde9d860c 100644 --- a/tests/ref/fate/matroska-dovi-write-config8 +++ b/tests/ref/fate/matroska-dovi-write-config8 @@ -12,7 +12,7 @@ #codec_id 1: aac #sample_rate 1: 44100 #channel_layout_name 1: stereo -0, -67, 0, 33, 63375, 0xc76606ab, S=1, 8 +0, -67, 0, 33, 63375, 0xc76606ab 0, -34, 133, 33, 46706, 0x0e08a7e5, F=0x0 0, 0, 67, 33, 29766, 0x753c031a, F=0x0 1, 0, 0, 23, 6, 0x031e0108 diff --git a/tests/ref/fate/matroska-encoding-delay b/tests/ref/fate/matroska-encoding-delay index 437992468d..f8b12cca6f 100644 --- a/tests/ref/fate/matroska-encoding-delay +++ b/tests/ref/fate/matroska-encoding-delay @@ -12,7 +12,7 @@ #sample_rate 1: 48000 #channel_layout_name 1: stereo 1, -10, -10, 24, 1152, 0x724077b8 -0, 0, 0, 40, 237628, 0xeff25579, S=1, 40 +0, 0, 0, 40, 237628, 0xeff25579 1, 14, 14, 24, 1152, 0x80625572 1, 38, 38, 24, 1152, 0x7d7f4dce 0, 40, 40, 40, 238066, 0xb2265f41 diff --git a/tests/ref/fate/matroska-mastering-display-metadata b/tests/ref/fate/matroska-mastering-display-metadata index c63365c181..6eb4a1e0fa 100644 --- a/tests/ref/fate/matroska-mastering-display-metadata +++ b/tests/ref/fate/matroska-mastering-display-metadata @@ -22,9 +22,9 @@ a4924bfe22ed0c72b0eddc353bbee10c *tests/data/fate/matroska-mastering-display-met #codec_id 3: ffv1 #dimensions 3: 1280x720 #sar 3: 1/1 -0, 0, 0, 16, 57008, 0x43416399, S=2, 8, 88 +0, 0, 0, 16, 57008, 0x43416399 1, 0, 0, 16, 2403, 0xaa818522 -3, 0, 0, 16, 274117, 0xc439610f, S=2, 8, 88 +3, 0, 0, 16, 274117, 0xc439610f 0, 17, 17, 16, 57248, 0xa06cd7b5 1, 17, 17, 16, 2403, 0xe1a991e5 2, 17, 17, 16, 1602, 0x5d868171 diff --git a/tests/ref/fate/matroska-spherical-mono-remux b/tests/ref/fate/matroska-spherical-mono-remux index 0940e3ea86..61e8447a96 100644 --- a/tests/ref/fate/matroska-spherical-mono-remux +++ b/tests/ref/fate/matroska-spherical-mono-remux @@ -12,8 +12,8 @@ #codec_id 1: h264 #dimensions 1: 1920x1080 #sar 1: 0/1 -0, -80, 0, 40, 69118, 0x73cb52f0, S=2, 12, 36 -1, -80, 0, 40, 69118, 0x73cb52f0, S=2, 12, 36 +0, -80, 0, 40, 69118, 0x73cb52f0 +1, -80, 0, 40, 69118, 0x73cb52f0 0, -40, 160, 40, 1103, 0x082a059f, F=0x0 1, -40, 160, 40, 1103, 0x082a059f, F=0x0 [STREAM] diff --git a/tests/ref/fate/matroska-vp8-alpha-remux b/tests/ref/fate/matroska-vp8-alpha-remux index 86024b3477..14f3efc895 100644 --- a/tests/ref/fate/matroska-vp8-alpha-remux +++ b/tests/ref/fate/matroska-vp8-alpha-remux @@ -5,7 +5,7 @@ #codec_id 0: vp8 #dimensions 0: 320x213 #sar 0: 1/1 -0, 0, 0, 33, 2108, 0x59b92a34, S=2, 1900, 12 +0, 0, 0, 33, 2108, 0x59b92a34, S=1, 1900 0, 32, 32, 33, 142, 0x2f2a3fed, F=0x0, S=1, 160 0, 65, 65, 33, 157, 0x17804767, F=0x0, S=1, 209 0, 99, 99, 33, 206, 0x537262ca, F=0x0, S=1, 317 diff --git a/tests/ref/fate/mov-mp4-disposition-mpegts-remux b/tests/ref/fate/mov-mp4-disposition-mpegts-remux index efef043074..ba419843dc 100644 --- a/tests/ref/fate/mov-mp4-disposition-mpegts-remux +++ b/tests/ref/fate/mov-mp4-disposition-mpegts-remux @@ -10,9 +10,9 @@ adb3b95c07a5f3e0c86641dd62f01dae *tests/data/fate/mov-mp4-disposition-mpegts-rem #codec_id 1: ac3 #sample_rate 1: 48000 #channel_layout_name 1: stereo -1, 0, 0, 1536, 768, 0xa63778d4, S=1, 4 +1, 0, 0, 1536, 768, 0xa63778d4 1, 1536, 1536, 1536, 768, 0x7d577f3f -0, 3072, 3072, 1536, 768, 0xc2867884, S=1, 4 +0, 3072, 3072, 1536, 768, 0xc2867884 1, 3072, 3072, 1536, 768, 0xd86b7c8f 0, 4608, 4608, 1536, 690, 0xa2714bf3 1, 4608, 4608, 1536, 626, 0x09f4382f diff --git a/tests/ref/fate/mxf-d10-user-comments b/tests/ref/fate/mxf-d10-user-comments index 1b59beec7c..ccfdc83f11 100644 --- a/tests/ref/fate/mxf-d10-user-comments +++ b/tests/ref/fate/mxf-d10-user-comments @@ -6,7 +6,7 @@ #codec_id 0: mpeg2video #dimensions 0: 1280x720 #sar 0: 3/4 -0, -1, 0, 1, 150000, 0x0547870d, S=1, 40 +0, -1, 0, 1, 150000, 0x0547870d 0, 0, 1, 1, 150000, 0xe80a1612, F=0x0 0, 1, 2, 1, 150000, 0xc5c50e2f, F=0x0 0, 2, 3, 1, 150000, 0x51e28a04, F=0x0 diff --git a/tests/ref/fate/mxf-remux-applehdr10 b/tests/ref/fate/mxf-remux-applehdr10 index 29e0e03a72..9fbf8b60c7 100644 --- a/tests/ref/fate/mxf-remux-applehdr10 +++ b/tests/ref/fate/mxf-remux-applehdr10 @@ -10,7 +10,7 @@ #codec_id 1: pcm_s24le #sample_rate 1: 48000 #channel_layout_name 1: mono -0, 0, 0, 1, 57008, 0x43416399, S=1, 88 +0, 0, 0, 1, 57008, 0x43416399 1, 0, 0, 801, 2403, 0x00000000 0, 1, 1, 1, 57248, 0xa06cd7b5 1, 801, 801, 801, 2403, 0x00000000 diff --git a/tests/ref/fate/vp9-superframe-bsf b/tests/ref/fate/vp9-superframe-bsf index d7985c6973..485644dfb2 100644 --- a/tests/ref/fate/vp9-superframe-bsf +++ b/tests/ref/fate/vp9-superframe-bsf @@ -3,7 +3,7 @@ #codec_id 0: vp9 #dimensions 0: 352x288 #sar 0: 1/1 -0, 0, 0, 33, 6958, 0x38e58ee6, S=1, 12 +0, 0, 0, 33, 6958, 0x38e58ee6 0, 33, 33, 33, 852, 0x3edf9ed0, F=0x0 0, 66, 66, 33, 27, 0x62d007e5, F=0x0 0, 100, 100, 33, 25, 0x51980749, F=0x0 From patchwork Thu Jul 20 20:34:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42874 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77635pzh; Thu, 20 Jul 2023 13:36:29 -0700 (PDT) X-Google-Smtp-Source: APBJJlGjdURp6DtYfgE6eJrn49jizCjyG58snUCQIUZdOz65eBNsrL2c1SsYcMm3UPlDv/238Wh3 X-Received: by 2002:a17:907:2ccf:b0:997:e7d9:50f7 with SMTP id hg15-20020a1709072ccf00b00997e7d950f7mr5814576ejc.66.1689885389298; Thu, 20 Jul 2023 13:36:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885389; cv=none; d=google.com; s=arc-20160816; b=MN0LIXiMN5epn2efrzC5ZFF8yREtY55vpK6Bh/kbjU7XXoFlU184QTAwcaAAGhGtwJ 6pwaLhfaW3zcaZyZYeRJEC5wv7N2qa7x/Iu8IslPAXYkQHAKcOT21Wg7YiLqvbk2aQS2 p8O1IITDw/yfX75kQtgxIjXW0vYxprAtaSIHEI3ecg8it/6Cre8fc6rzTSn61R2hYyyu 86LBI1vUJm5isp2AYUklPrAcvoMySvjralmA65X7urdWjJV1XZM1sm/pzA2CwUYZE+jH thwg+n2hmh72Yy+fsoMSyamfI7+QZ+HyPOr7QNTdx9Cvgvb8IOT7pHm90BpdpEQd9l1q a+vg== 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=Ai11VClKHEVd80QFj/An6sv+6GfEyokqC+o66XY16Sc=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=VlwLUvvkNLu/WVzeNsLEsCOn4mhvfkFRc46FFfstUHvqP75aesyEC2oj/Pp+bI9pTM KFymcWNtAQ4FERZK2ATAcaRwzB9BtpOal6PZNoVbYQ71vzjwzkTXDJJ1mhcg7RaH6lIO T3YMxVmTZ5zVDdaXrv8flTsxMpmVih/x0P4OdLBPBo9T7D9b/CFBtliFTBsTw3/PVvtU +63kjxhpOonbnvAF9yJsGTnuvmHVPFvBccpI1EcFESapsRrcXaNVEinjUIEm4DbOyVZH EfdlZk3G2pp4ILEfA8Ul2Yc0lQtvc6beA7j1kCv6fuOD+cOdtchABS41knlI5darAz5P u+YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=OVXUiF8z; 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=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 p8-20020a1709060dc800b0098d9dfee9c7si1215299eji.493.2023.07.20.13.36.28; Thu, 20 Jul 2023 13:36:29 -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=20221208 header.b=OVXUiF8z; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D569A68C68B; Thu, 20 Jul 2023 23:34:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oo1-f41.google.com (mail-oo1-f41.google.com [209.85.161.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 66FB868C644 for ; Thu, 20 Jul 2023 23:34:36 +0300 (EEST) Received: by mail-oo1-f41.google.com with SMTP id 006d021491bc7-558a79941c6so790870eaf.3 for ; Thu, 20 Jul 2023 13:34:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885274; x=1690490074; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=rbcsgQW8kiFy8z0foSgbaSA363oHH0cuYj4uBIwT0v4=; b=OVXUiF8zqJzOty2qORYinu4bFNBYQWPIufRMQM76Jn8u79CDtvQpfgYqScHuL0bgo1 lvF2cyPQc0i5NVJfnugJ7ubI7AFr+3U6hhFat49+QMq0pbJq7nqM3ft+yxs1ntRUNyP/ vj0hbSmhVCWkKkQr4Xi/hckihRHunhZ33HoZQmW/w4e9GIgZJK0X95j1WnVbxIyZZDZC YQrzKK7/7RNZxzSrsbveUYKzQrrF32EZb1izYI7flKkVC4RYWHcl9TBtJNrdJ1UAMZTP JcFwGEz05/UmGd1JJhsamDoTphbI9tLzWxtotbxw1LT0qrDJQQylvk0uke3B+I/IQi9c xJpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885274; x=1690490074; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rbcsgQW8kiFy8z0foSgbaSA363oHH0cuYj4uBIwT0v4=; b=E61/9IfPwml3MlZvVXSsphIORkBZjkV+hOZzm6UvKDMxhtD93rx9SvaslcQ4qy2V9l 4lb/PJMk3yg+LiZeQqlXPM68n9h3MdL+2YK3JxiyyAS+0MS/KA8kGnOPXxw4A/wYxPg3 +/9Yd8/pXzcyePwIeg6EzbNovPpC5r+/NkQlvL9NF6E6tESgAI2a7TDYK88xWXnSmdM6 3Y3Jp/9+EeoLtGJ9Bz2MJRu7iF+c8hvpLuRAEvxuomQR5Ke7+raMCtotYKLjkcDYz/Tv E3Iqwo1Ux9h+ZKFelFxNXjMIpMiTf7PLdYbYjUwk7Kx/eQvMc4PZqJwU+hwVG4Zlk251 MyTQ== X-Gm-Message-State: ABy/qLZ8RhRiEfEs8Xh2oGDfnVqbr1YZ7vyqKaaOd6sIm0bQYHZuZFPx n5blyRD44SgUxywcQeW7Sc2EPaxGxiA= X-Received: by 2002:a4a:4993:0:b0:566:f5bb:7d40 with SMTP id z141-20020a4a4993000000b00566f5bb7d40mr3082364ooa.6.1689885274677; Thu, 20 Jul 2023 13:34:34 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:34 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:12 -0300 Message-ID: <20230720203415.41757-10-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/13] fftools/ffplay: stop injecting stream side data in packets 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: SsDLSuG6tXAX This is no longer needed as the side data is available for decoders in the AVCodecContext. Signed-off-by: James Almer --- fftools/ffplay.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/fftools/ffplay.c b/fftools/ffplay.c index c123511027..e902ba0f6b 100644 --- a/fftools/ffplay.c +++ b/fftools/ffplay.c @@ -2781,8 +2781,6 @@ static int read_thread(void *arg) if (genpts) ic->flags |= AVFMT_FLAG_GENPTS; - av_format_inject_global_side_data(ic); - if (find_stream_info) { AVDictionary **opts; int orig_nb_streams = ic->nb_streams; From patchwork Thu Jul 20 20:34:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42868 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77244pzh; Thu, 20 Jul 2023 13:35:37 -0700 (PDT) X-Google-Smtp-Source: APBJJlEqlHWWMuC9YJ2yxxZ/RBNC/uvIASyYrqnxpWBD24r6q7Gik63LzL4Xxg0yFU1WAVK3VNrb X-Received: by 2002:a17:906:21a:b0:982:b224:2a5d with SMTP id 26-20020a170906021a00b00982b2242a5dmr6013593ejd.37.1689885337431; Thu, 20 Jul 2023 13:35:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885337; cv=none; d=google.com; s=arc-20160816; b=J4yHYy17H+JurnBFcoSNff/Osv0/57ZLePO2lXuLynTqRvek1k3Dj+wJ7zVB8ODI+b FhX9C3pEAXQ/ZJx4PtNFlsXCQOo3BeakjcJVuKK3ouslkg7TyH/C7GDfsNGIWVW3CfVM 07+B+tT+t/U+JABz6+VXvST+cxwIY5/I07qkjQCtNfwz1DLpuAW5w5wsNdB69heu5FCq RvQNqmysuzNldlH9iKms7oHnHgePatvlf+z2ZATybMIjMLVLgSvFvRmIZHiYO10wfBAL bt5dtPYjTcrmPczrj9ih+Rlrg4F1AwLiNhNE/uHBZYB2NnP8PLfl2oALKRFrTt4PsDnK dcLA== 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=e+M46HRDr/PltceDAIdPpJfTe0T2S1uLY7YdecdBwwk=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=sx2WxFgr1j61pLFlw1JJdEEzxG1rIpCcxNBErwsTjsgx2zadx7v58bVUKvDCpJ+YT4 VpDQnAWxc8cVvOB2Hyq+QXaCRMezGhc3LdSEJnEVga6b+J8yv0YXuEpQN/duXbiCGv3e kNNJWfUMi0zcu75HrYL7nk1SThl03ThYNoz/8/IM7AqblG60ZpSsxTfiHIfMymWB6wYg u+Ccnr/ngF5Fh/oDPqKB+zxPSQg1AZAss6LW1tvylHPUphVYkYEFDOBPvK24ysGt+m5u lIzwu05Hkr/JdedIkjifqEWNDgjbcxRR4IAuMlv3jZAtZrAXTJQegse5Xgk0w2sMKw9s urBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=J9UeIbfb; 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=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 um15-20020a170906cf8f00b009931661377fsi1117993ejb.964.2023.07.20.13.35.37; Thu, 20 Jul 2023 13:35:37 -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=20221208 header.b=J9UeIbfb; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5B5AD68C638; Thu, 20 Jul 2023 23:34:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f53.google.com (mail-ot1-f53.google.com [209.85.210.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D0BB468C56E for ; Thu, 20 Jul 2023 23:34:37 +0300 (EEST) Received: by mail-ot1-f53.google.com with SMTP id 46e09a7af769-6b9f46dc2e3so935902a34.0 for ; Thu, 20 Jul 2023 13:34:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885276; x=1690490076; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=fLEXxGfwrcHKCyHILejhzp4mtJjv0ShRbQhMYjxQvDA=; b=J9UeIbfb3j/Cqyvnb7F3UHebY5PkSYeu9q9SO5u4Wu9SFBuvucoAYD1JX8peyEgCsD +lCZ2ikW+QbntLedPxpxVTQ8xSLRyqEwN1wCt2v8UHCx0szUaghWI+P29OH3cKVrPa6X xxstAoROCP43zXoxt4055fDqB7B3i21IQPPPLCDYMiZytWm9FAZsFW0CA6C9AoIeGftf 8LgTc5GjvJAABFWSavgMXLxZ0dznR26eq9FEZHQtvHHH3VRlTSWN4n1t51zaZ4lfA/1c wEKzN9XNZWCbo0EqrqWYTXxW7pMESnfWY0ruEHFQjAF7QflTl/pRwiSlzLoAo6A+wjJn 54JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885276; x=1690490076; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fLEXxGfwrcHKCyHILejhzp4mtJjv0ShRbQhMYjxQvDA=; b=ME7k1ZMlnd3LlbanGJGykUpiU4TVllI/UfZ9oneO8c6WHPOMRilNM2D3tF+ef664Mh Y1sEtNw12wHTa7/+AxnIKbPRJiFgrDwF20vQxb9KjfEi1YM8MjeWrGh+EZ+JCH2aFlNe b4fnlhqDKzKqLcq0I6Zh9mpLGbc2eNtDWGVfxpzkG8L+egtwDcaZ+HwlB29H76UWcgGw ZLkMETJW1KbMMppsX27g73g9UkQdsQLmHWbVnRP1Jz2i1kn93qi86+TqWCaFCMyIX5eN WD/byl4LhO3Uw93zfWdh3xux7fJolzvfDTJpkawHAv29Yf24R313HwUBot4fancPfWmy 3e6Q== X-Gm-Message-State: ABy/qLbatjdkOY3DOhvmUenWnypyuRRUpans/Zz88O0d3agL81sMIzRu VoNHXsLRJgx5kDSqVk1Q2QVR5xzu7Gw= X-Received: by 2002:a05:6871:80a:b0:1ba:8c54:6722 with SMTP id q10-20020a056871080a00b001ba8c546722mr764348oap.14.1689885275834; Thu, 20 Jul 2023 13:34:35 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:35 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:13 -0300 Message-ID: <20230720203415.41757-11-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/13] avcodec/avcodec: deprecate coded_side_data 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: AJ9Wg+A8R8z2 In favor of AVCodecContext.side_data_set Signed-off-by: James Almer --- libavcodec/avcodec.c | 34 ++++++++++++++++++++++++++++++++++ libavcodec/avcodec.h | 7 ++++++- libavcodec/utils.c | 24 +++++++++--------------- libavcodec/version_major.h | 1 + 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index 16869e97f2..2b9de43c78 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -334,6 +334,36 @@ FF_ENABLE_DEPRECATION_WARNINGS avci->needs_close = 1; } +#if FF_API_CODED_SIDE_DATA +FF_DISABLE_DEPRECATION_WARNINGS + if (av_codec_is_encoder(avctx->codec)) { + const AVPacketSideData *sd = + av_packet_get_side_data_from_set(&avctx->side_data_set, AV_PKT_DATA_CPB_PROPERTIES); + if (sd) { + uint8_t *data; + AVPacketSideData *tmp = av_realloc_array(avctx->coded_side_data, + avctx->nb_coded_side_data + 1U, + sizeof(*tmp)); + if (!tmp) { + ret = AVERROR(ENOMEM); + goto free_and_end; + } + avctx->coded_side_data = tmp; + + data = av_memdup(sd->data, sd->size); + if (!data) { + ret = AVERROR(ENOMEM); + goto free_and_end; + } + + avctx->coded_side_data[avctx->nb_coded_side_data].data = data; + avctx->coded_side_data[avctx->nb_coded_side_data].size = sd->size; + avctx->coded_side_data[avctx->nb_coded_side_data++].type = AV_PKT_DATA_CPB_PROPERTIES; + } + } +FF_ENABLE_DEPRECATION_WARNINGS +#endif + ret=0; if (av_codec_is_decoder(avctx->codec)) { @@ -469,10 +499,14 @@ av_cold int avcodec_close(AVCodecContext *avctx) av_packet_free_side_data_set(&avctx->side_data_set); +#if FF_API_CODED_SIDE_DATA +FF_DISABLE_DEPRECATION_WARNINGS for (i = 0; i < avctx->nb_coded_side_data; i++) av_freep(&avctx->coded_side_data[i].data); av_freep(&avctx->coded_side_data); avctx->nb_coded_side_data = 0; +FF_ENABLE_DEPRECATION_WARNINGS +#endif av_buffer_unref(&avctx->hw_frames_ctx); av_buffer_unref(&avctx->hw_device_ctx); diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 2902ecf6cb..ba6cfc09a0 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1892,14 +1892,19 @@ typedef struct AVCodecContext { #define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002 #define FF_CODEC_PROPERTY_FILM_GRAIN 0x00000004 +#if FF_API_CODED_SIDE_DATA /** * Additional data associated with the entire coded stream. * * - decoding: unused * - encoding: may be set by libavcodec after avcodec_open2(). + * @deprecated use side_data_set */ + attribute_deprecated AVPacketSideData *coded_side_data; + attribute_deprecated int nb_coded_side_data; +#endif /** * A reference to the AVHWFramesContext describing the input (for encoding) @@ -2107,7 +2112,7 @@ typedef struct AVCodecContext { * Additional data associated with the entire stream. * * - decoding: set by user - * - encoding: unused + * - encoding: may be set by libavcodec after avcodec_open2(). */ AVPacketSideDataSet side_data_set; } AVCodecContext; diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 672eb15d98..01223de707 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1048,32 +1048,26 @@ AVCPBProperties *av_cpb_properties_alloc(size_t *size) AVCPBProperties *ff_add_cpb_side_data(AVCodecContext *avctx) { - AVPacketSideData *tmp; + AVPacketSideData *sd; AVCPBProperties *props; size_t size; - int i; + int ret; - for (i = 0; i < avctx->nb_coded_side_data; i++) - if (avctx->coded_side_data[i].type == AV_PKT_DATA_CPB_PROPERTIES) - return (AVCPBProperties *)avctx->coded_side_data[i].data; + sd = av_packet_get_side_data_from_set(&avctx->side_data_set, AV_PKT_DATA_CPB_PROPERTIES); + if (sd) + return (AVCPBProperties *)sd->data; props = av_cpb_properties_alloc(&size); if (!props) return NULL; - tmp = av_realloc_array(avctx->coded_side_data, avctx->nb_coded_side_data + 1, sizeof(*tmp)); - if (!tmp) { - av_freep(&props); + ret = av_packet_add_side_data_to_set(&avctx->side_data_set, AV_PKT_DATA_CPB_PROPERTIES, + (uint8_t *)props, size); + if (ret < 0) { + av_free(props); return NULL; } - avctx->coded_side_data = tmp; - avctx->nb_coded_side_data++; - - avctx->coded_side_data[avctx->nb_coded_side_data - 1].type = AV_PKT_DATA_CPB_PROPERTIES; - avctx->coded_side_data[avctx->nb_coded_side_data - 1].data = (uint8_t*)props; - avctx->coded_side_data[avctx->nb_coded_side_data - 1].size = size; - return props; } diff --git a/libavcodec/version_major.h b/libavcodec/version_major.h index 95c5aec0c5..7b01300c4a 100644 --- a/libavcodec/version_major.h +++ b/libavcodec/version_major.h @@ -49,6 +49,7 @@ #define FF_API_SUBFRAMES (LIBAVCODEC_VERSION_MAJOR < 61) #define FF_API_TICKS_PER_FRAME (LIBAVCODEC_VERSION_MAJOR < 61) #define FF_API_DROPCHANGED (LIBAVCODEC_VERSION_MAJOR < 61) +#define FF_API_CODED_SIDE_DATA (LIBAVCODEC_VERSION_MAJOR < 61) // reminder to remove CrystalHD decoders on next major bump #define FF_CODEC_CRYSTAL_HD (LIBAVCODEC_VERSION_MAJOR < 61) From patchwork Thu Jul 20 20:34:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42870 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77407pzh; Thu, 20 Jul 2023 13:35:55 -0700 (PDT) X-Google-Smtp-Source: APBJJlHCebPek0HZmLZbhCSYxexc0VPR1SnmxruEB96fKzxTVtMxC0sGW6uPC+3nBjWaBHgkcg3w X-Received: by 2002:a17:906:535d:b0:965:fb87:4215 with SMTP id j29-20020a170906535d00b00965fb874215mr5808605ejo.15.1689885355102; Thu, 20 Jul 2023 13:35:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885355; cv=none; d=google.com; s=arc-20160816; b=Yz40piPayRTU3QO8DFMiK0L9iXRnxhOvURpfCfKHfN01l0KYPMqyAC98KrwK4CpQvr Y7r5GwGuDHOB9ysFC18pdyG1X3AygGHbdrnaVYovucq1Tot5JEHtrY8bLzeYZPAuHOnm y/IWnWQSCGIY5U3spDSKMsSktH0dr8LtZoMeE92vMEoO296P2AjAAdEw9/W+pV67HCZf Nhvq6KLTX8raqLLWEmMb0c17ycZcKbCCLQrBRG/EOPv7DwqCvyqUGTjMft5xTeBf58tr IjI1e1MgLKLflonx8igQRN7kCNCKcQWJk5fFDA7l+sh/dDjgQGNou4p1HwHmBHQg1lj8 6nxQ== 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=epY7U3rlKareOYgrRXtNHjrm+3mgzCMQFX2+PhtEvXw=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=wLX+b+cj0d6ba9E64l7+zz8aXWeoMuRFnJSA+0MFyyGnyvoHm0QpAllhHl6ik9OjNI 5xeMxav5SaPZ1KLvaY0T6eYFcRllM1hfDmXrRKaSluEy973dDFld0Kw/I9Ls5Fy1tLmN QHS7RbHiory62kXlTKDVljguzjhmPclZVHHt+m9jzUXEcsy9b6cGI6fBXIEwdlxOL6d5 yzSUqsXxC6j6wZv2JbPwyNeIt7WN8PyHmSlwFBMmJF9vm+MgnuF8bAoBhVgczbfmu+Xi 9fmNxOG4slJUDYPmv7uDKByDp8XekeWmprgrR2olYhgA4hh9O3miTkE3e1HhuwKHO7k0 7DhA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b="OA/CQRAe"; 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=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 n23-20020a170906379700b00988be9d8c53si1199488ejc.946.2023.07.20.13.35.54; Thu, 20 Jul 2023 13:35:55 -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=20221208 header.b="OA/CQRAe"; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A7CDC68C629; Thu, 20 Jul 2023 23:34:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f51.google.com (mail-ot1-f51.google.com [209.85.210.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BA9B268C5A4 for ; Thu, 20 Jul 2023 23:34:38 +0300 (EEST) Received: by mail-ot1-f51.google.com with SMTP id 46e09a7af769-6bb0cadd372so359589a34.0 for ; Thu, 20 Jul 2023 13:34:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885277; x=1690490077; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=izTpwJrdE6EpDX/e8GLuKzz8dNtdaNZ1RVFESnZsq1A=; b=OA/CQRAecbATbf7mOy/vxMWOJDdA9ITUGqMhIMw5QDAkyeleZ58+6dmAMTeLe14ioL pZrbpwsosZk2sc5ORZb1efYYnREAy5E39zoHnm2zIoKsPlWh4a+XzN0534T8Qn6Vr0VM Iev/Ngso5bIBFvodI4/ZKem864QIbrAfzzDrLX5JTMwpPVfKwe6OqvhMCzNZRWIV1QjZ SbbOoOcYKfxtbVUwjylcaxjTNrIB8Rgq2dLlC22Mhc57LV+410rrflAzpZJciDOLOL5H AmSKYoJcmicC0aBkmPJoCacyqJmrwOFyQ0DJoiM9Y5dWZu0aQN1GFQPtrEDOX3ddxQQX j8Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885277; x=1690490077; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=izTpwJrdE6EpDX/e8GLuKzz8dNtdaNZ1RVFESnZsq1A=; b=bRk1Qnn3lwIgE1vx5pe5Bhi3blu8vUEph+LDvUXG+VVnDIwsOQKNRuciuNhlGSkCtU CBJ2R6KpqCHvJMhO6BBu7uUO3y1GMSEisnqkJuzsnWgGfohB3aPX/gfIY/aFp9wm0YEd ePM44n8Wmvil4Fdb/hG/H4NqHOCDl170P8NQ86HI3/tfWgKx1CDUDk6QrgfYxIk4ikVU QAFVLdnL/7YJCBkdwTIxi+Zc01jK+hrGmTpiiOpt/BR9wtUX/QDWET3dVcQYOFVpOiv7 b8naZ+XjoMP2bt6/FoVKRESLiUfkIefIqEl7OyflvHz5qj73wkxGApHZkvc1Mzjq9IB1 bkKg== X-Gm-Message-State: ABy/qLaBNqa+9sMv7RAGrSgi5+yU3OzfljgY7HO/CW/uNO9xN1O6KZz7 B7hhf1KokthvpAC9kZ7kS2UTsELkUvU= X-Received: by 2002:a9d:77ca:0:b0:6b8:6c1d:d83d with SMTP id w10-20020a9d77ca000000b006b86c1dd83dmr4024165otl.26.1689885276990; Thu, 20 Jul 2023 13:34:36 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:36 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:14 -0300 Message-ID: <20230720203415.41757-12-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/13] avformat/demux: stop copying the internal AVCodecContext coded_side_data 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: tnsCHvXvk9oj It's no longer needed Signed-off-by: James Almer --- libavformat/demux.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/libavformat/demux.c b/libavformat/demux.c index 7253196a82..24bc8fce2a 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -2432,19 +2432,6 @@ static int extract_extradata(FFFormatContext *si, AVStream *st, const AVPacket * return 0; } -static int add_coded_side_data(AVStream *st, AVCodecContext *avctx) -{ - for (int i = 0; i < avctx->nb_coded_side_data; i++) { - const AVPacketSideData *const sd_src = &avctx->coded_side_data[i]; - AVPacketSideData *sd_dst = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, - sd_src->type, sd_src->size); - if (!sd_dst) - return AVERROR(ENOMEM); - memcpy(sd_dst->data, sd_src->data, sd_src->size); - } - return 0; -} - int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options) { FFFormatContext *const si = ffformatcontext(ic); @@ -2972,9 +2959,6 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options) ret = avcodec_parameters_from_context(st->codecpar, sti->avctx); if (ret < 0) goto find_stream_info_err; - ret = add_coded_side_data(st, sti->avctx); - if (ret < 0) - goto find_stream_info_err; } #if FF_API_AVSTREAM_SIDE_DATA From patchwork Thu Jul 20 20:34:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42872 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77523pzh; Thu, 20 Jul 2023 13:36:12 -0700 (PDT) X-Google-Smtp-Source: APBJJlEw9T6zGCRfYwnagKc+L656jkVE/rXvdMdmuiSITehJ6n1dMgyHbR+mYuvCJph0p+zV5D6b X-Received: by 2002:a17:906:779a:b0:989:450:e565 with SMTP id s26-20020a170906779a00b009890450e565mr4431ejm.23.1689885371812; Thu, 20 Jul 2023 13:36:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885371; cv=none; d=google.com; s=arc-20160816; b=rXsyN5W/2eusy4a9JGq6rhVMA0jZycPWAjvJiAFxKBcvmKcfRNt+f5IneBNbvbEiDK b5oTdjuSlDm/+t7b1IW+Z1isRbwoms2qfoo6hyFFanM4IbmomJDVnoiWoraGRExnjRg1 h9ud2T56qCzhUluATXVIH9/5/BwqlTs50N4dCjzfFGe2GWrX42GK83N9e7I+vliikuc7 5VN3ZnLMbG/3KjZKnd6p1RjCKxVcb2vZnTjlh+8/AgiPCg66jjQybQRKOxPHHzz6Xq9D MkdO7Yf/JvKd500tqQ7Dp/+2Q+TO5FMP1RxLl91L6703aBHYGRS8J9OTHBA90OKvPUGb My4Q== 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=+C5+JZXYDkRM9SQFZ2kuSyqstCj7RTm+YgdPVvR/gS4=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=zTrVhnjFYlzlidBfKzAvkS18lOffD6/lNnJgXcdGwJq8sfmtriS2E1fgTN1VR3tMQs vvS2LUDbSROYgDspQ4dSIBGxb0/qGrbQ5dJbSnuJGKFuLLg32Od2I2bAqw9w/PpaBfLy zCnaPb4RLSZgemHvY83fZb0EAcZqzK7ph7u23d5GpnvJzbiPF6QIOGml9xkanlDr+riH zrYEFmkZodwpEtvqttKb4g1QS1U0+npSF2P0jR7zLvbNQ8fyMFv5ge2q6ghZ47exHGlT lF4sEeCe17WzMi3uiNL23vK7QnjXf3Cxiury4BvN268EAM5duEQprrZqpEVOdyGsLNdm m4OA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=djQFIbnP; 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=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 ck25-20020a170906c45900b00992e23f0e6asi1083858ejb.822.2023.07.20.13.36.11; Thu, 20 Jul 2023 13:36:11 -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=20221208 header.b=djQFIbnP; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9D35C68C674; Thu, 20 Jul 2023 23:34:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oo1-f47.google.com (mail-oo1-f47.google.com [209.85.161.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6505568C5C4 for ; Thu, 20 Jul 2023 23:34:40 +0300 (EEST) Received: by mail-oo1-f47.google.com with SMTP id 006d021491bc7-5634db21a58so860123eaf.0 for ; Thu, 20 Jul 2023 13:34:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885278; x=1690490078; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=wxvCm6QGtI8iAU2IyxCOxR+Xp6IYClt+vw7YopI0yts=; b=djQFIbnPNVTV5gmPfqv4WwASG13eecRjiheWj56ZqS2NCbgROSog47ixvWCf694k2G Zy5YI1PhLAAxSSCK8i7BXSQAGmDpP0a5NDNafyks8FvNu82u/h1u+KzUS7T1ifmrchxO YEXKXLGNnVkVZojxuEq6ewxNdHC5LsMN6W5a0Bgil5b76O1zbW4enXcp1Lk0EWiUISya 4D5/9vIKNYouxxv3qUdJhPlooCqSnhKP7tVrHe7EzXTjtoqwe5azXK/abl+veRUEerf4 F9rQUmJuxLaBwaRDXI8LrDUormg6UG05ec3JpuOApl4C9RuCdJFnAQ/j/LY2P7dVlC/7 KCBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885278; x=1690490078; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wxvCm6QGtI8iAU2IyxCOxR+Xp6IYClt+vw7YopI0yts=; b=gW1VWzMvoHhHqt+5jGYic0CDBsFOWlX+qWWVna9Uijlwk1vi8jxrEvL1ctD39xZdYk q5ZPbByeD7vjhvo1aeOGIy7jUTrIO2b2pu7gkBkkBfONmO7r2gpdVWV82KeHhPQRcD+T S/F4O92F+rYJw98p/r9YklWPqi16eSeE4csVqwcw/s7ZqzxHukXCnsddfUY53Pf1lGJj U+yGLuxdrOQ00AZZEh0p0yStlvK+uuloLtpFB5GbSaSP9yMmlUj6ENYfqsgY74U+uQqz ZylEOHNXFzXa0GKMluWQr47h725gLUFsUUTwaZiGGJPzAeElZSWwK6SRO8WQ+K05p6Ge A49A== X-Gm-Message-State: ABy/qLZha+GFVB8/qk3VUxQO4GQaPBASsK9uQKWhbzyD0VhQG5mCTQqu PNQYPXMZXhs/9w3gA0lP41xGd3nrVGg= X-Received: by 2002:a4a:6c5d:0:b0:563:624b:430f with SMTP id u29-20020a4a6c5d000000b00563624b430fmr311369oof.1.1689885278147; Thu, 20 Jul 2023 13:34:38 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:37 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:15 -0300 Message-ID: <20230720203415.41757-13-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/13] fftools: stop propagating the encoder's coded_side_data 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: eJpUfLofrgTp It's no longer needed Signed-off-by: James Almer --- fftools/ffmpeg_enc.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index f12024dff5..7efbfdafb3 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -423,20 +423,6 @@ int enc_open(OutputStream *ost, AVFrame *frame) return ret; } - if (ost->enc_ctx->nb_coded_side_data) { - int i; - - for (i = 0; i < ost->enc_ctx->nb_coded_side_data; i++) { - const AVPacketSideData *sd_src = &ost->enc_ctx->coded_side_data[i]; - AVPacketSideData *sd_dst; - - sd_dst = av_packet_new_side_data_to_set(&ost->par_in->side_data_set, sd_src->type, sd_src->size); - if (!sd_dst) - return AVERROR(ENOMEM); - memcpy(sd_dst->data, sd_src->data, sd_src->size); - } - } - /* * Add global input side data. For now this is naive, and copies it * from the input stream's global side data. All side data should