From patchwork Sat May 7 11:28:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35657 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122130pzb; Sat, 7 May 2022 04:32:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyto3xVCBV//JcMLfJRJhTC31rkMrojNiA3DojnmiCBpzaI2Y1O7qYqv/SV6flxvB6Cewta X-Received: by 2002:a05:6402:278a:b0:427:d0e1:599e with SMTP id b10-20020a056402278a00b00427d0e1599emr8214070ede.58.1651923157669; Sat, 07 May 2022 04:32:37 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b3-20020a170906490300b006e8bf5ed3e9si7337579ejq.928.2022.05.07.04.32.37; Sat, 07 May 2022 04:32: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=@outlook.com header.s=selector1 header.b=rZbDfOvV; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D7D6168B485; Sat, 7 May 2022 14:30:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068045.outbound.protection.outlook.com [40.92.68.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9BC3668B3F7 for ; Sat, 7 May 2022 14:30:02 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W4J8Feuz/1ZCliypj0RkxBzV/KQ2R4Y9DH0Bh0NNlEzhmsUNGhFbfXgSLrli9taYdKPm5+YO3XvZ0t+Q63J9k6G8Pqw+8xQOGbO98hybwVOGbOSLiwjWnVBv53UPUMwXNVkMdUW4wPJotQbzX4UiGQKlTuu27vIvw2If6kA1QgyTJRCoyxFzY4+LTekMt4tJ2NJxavEmJ1pEweA53kJs3hZALBqnzL7Symdzu1+1lRxTNRvfRxbZWr49rAG9x/r6ApW6iWV84kENSxJSA/wrSrCSua4RXeT0yV2tZTD82Wt87LkwK62g5VA3NFGJFABTNNJDhh5rxsGRjK3yLs0c7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RtRe9y58qCSGNj8k2OxYZPcyvpcIBDW+cT8oL026q5s=; b=N93gLQfrP+U9sW/YpMhWI8efOQdzlFFjrmRsAAx0Dwil29wxMEsdZbd5EHEyDkAkQI/od3xFfob5KaJHX4VriT520pY89UlWEkzxSC8IpjrOnR75xdi+BJnob06uazZRtD2H3ht2FbDlu30L7DrC0khXf6tpk2BTIkjhmqnu6PPf7iuafFyzJLwR9PgAqAxlk1JnzavQXPXjvpIU6nheBg99YE/mE7KDYsLNZhhc6j4bWvkBo1HKWptP1FL6OuMDilfZU0osJAH/beNfjgl4TYNXCPWBmYnb/CbC/zqeew8x5BcmojuHJbEHXDu74z1Wbjd20gNkSv5rxrP2/eyn0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RtRe9y58qCSGNj8k2OxYZPcyvpcIBDW+cT8oL026q5s=; b=rZbDfOvVcKAE9COkCS/WVojdMmln4VvS/CjmBfAhOcreNZ2bJJnhr4hn4Cy0fVF31oOngNLX7+s05rs8sqU83zPBZ2yx6r0kpVILXuHQr1ZbkYQImI1FgowmEdy7QKsag+BeRFYVleGTdcbU32nbzwKp7cB8wn+vA2jFIl4vue3Y88UhR+9a55M4MUM34aGNJc1Vgbo8tOSBV1L2oiIetT/tGsLTHMvlo6w0/L7Xx+zAeGq+3Z38LCYNPuNAqR2/UcXzVuBApKaXENwhg3yeJy3Uj0HIv/wgP3vO52MaufZSKejxfGUGX28Ol4M5L3CsqMTV/+n6+DIstAqFBIIcoA== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.24; Sat, 7 May 2022 11:30:01 +0000 Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::1854:2c30:7ba1:c431]) by AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::1854:2c30:7ba1:c431%6]) with mapi id 15.20.5206.024; Sat, 7 May 2022 11:30:01 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:09 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [LJbskQm9hO4HELvbSkANkWeMeZZeMMQl] X-ClientProxiedBy: ZRAP278CA0004.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:10::14) To AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) X-Microsoft-Original-Message-ID: <20220507112830.406162-22-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 97b85fb2-203e-4f4d-970a-08da301cec58 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwKYiNJ2RXwflyl3Ya0Bcti225QD7gsIZZO6CtLmsDMuA4wy4Fv7IUk0/ENE0tZebQuS6g1+ZbKFh1YqUShktWXpd2mwsqhcCXr0K6R1vgKmtGX2QFQsg9BBAdL6ZxsQW0QyCyJc3KPJewwEn1z/+sZCJTv4QajsQ4gmMkfGpRDF4CHuuzuglX3KailIzakswAf82H6b6nx4AoEmSIetzzq9b6PedN4M1ufU0Eda/ts/Ve/BQyVNqHwapJHZcTfNSwaPGnqE711TGrCHK4Jg5ouQ3N2N2yCsBxl7bsSLO0ck4qnxkZ8ZEcZGq09H2qYWrJZjfUGzeYqdd7y17wWEWZr62G956fp1Y1xax3uqbgBdKbBU7f0jYBcteBGavjmCTirzivwDuSHzCNxAfCYcYk8YOBOBVPCcufDscNVRNIXy8Xr5N1enQkL0tnzlBXLjJjgw+qiWwapOyjlGy2zTaHpkL45vGd+gRvUY0N+KicHBU6mp2MnyblvJkTwegKI7ZwroCm/3fg5ZWqkpAqxVMstX+Cyn/sReyswsSqbVEouMk+DREgFsFyUGQhRwKcnlF+djYBn1EV2TyV3CBNyW/+2BspMeJFt+wR5yGItbuDQbU0i9cp1r1jeiVpumBt1du8Na2Jh3fzFkEt7oyPZB82TQ/OimyLfb4/hFav/uYAJln85EuCLmS+7xzyquuZmZfJTziamRp5CGZ8D5vopztxNb/jTSUrc1h9aWL5IrMPiH4= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TAIE7VoitvKaTgs8a1NtOCcp5JjKuu1XuZuhDQL/sa1q8Q2C/n8A4jY2nILAr3q9JvWkla6OG2kOuNbh4VIbS0V98MyQnAxNtjF0cr7cWzAoEL3sxGTCHiR0u8/sbSpGsUnapBAHLRzo/O1KknPQQn3en0HHKCDoOZGoYVOL7bklDD25/3YETLV4spDYWILxRpWqEVBDC47c78dLEVxskVDAE8J/Ru/EmrWlUfOUrkdzhXc4YKlSoxjyWS1fHfcqjSZZIfNiSHKgtAjyYGDyqA/ZB5iMkW2Cm14DJmETWeJehuYLFjpgWoQlnulf88xx9ce1nJeU/ArDiJEhiwDJMSOvSHdwAxNWhBMiNIYYUksQLSap0YUmH6gdGDc/LasP7h8Dsof4w9Y9mANSzNnAqeULJYD/FXwWhfciaP8r5Qsbmy1UG0KR2fcE5ZEcgKBGmxqlzwjKuDLoHA9RtBNPe9zoM0VjIapAjA0y4IslPNPfrUinV/aac7q5GwUmJwnUtg+lAGopZesKdyiTbBeu3I29vt8Dyu6iM6O1OihZvhFcUSgUAECI1uu6agOcDtpiBu8Ma8O6QwhCKohxpr2hOnDIZlTpCEOxHY+/l01zQ+QnYmT1Axv1a0rxJDuUahRM X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fXbfURfdieQshpnSmwcqWxQcZe/qwxpDa4nYGblTe5gHmWiyLMDK0z5N0y1NDqkyWpsMUIBtpanEZ9dhSBF5bHpfAOaXi1fg2NA1rgulkfQL4gZkAGVGkPtQFp1+rYHdhkaem6VMHbepnSbPJpM+sBfHZ4pt2RduNK90Pp+sLT1Nm9oCOmj2lFonFPY/FrxVSOv3yzK0071waO5SVgwxjTWeKoq11sTEajZ1zYXmaR0ndVwcJ99G8JaITfaDvzmg+N+rmnt3emtwX+WMdF5/dG/sNZV0lNksLX2oradYPk6LXZTF7PohG6ALS3qeN2jYWoV3OW1jfkwlbNNCBi/ttQTgC4X/IkUPyGObJ/5QFSRXNZcRVGkHYlwh1Jz4CsilzEWsbsqAbv7LTjqZyG6N5FVKqSxoxTPuJPoboYKWdddjExBwdSm7ZB7GDYTXFnztTEIXoKQ0lHeUuLU5yYOpSCe8SG0Eb/6i+JnLzd0CYE3id7iGkfR/WenrortpdfiU9kAMv71CYWnQaq79l76hZY5X6YyC5qvF0gvIXZooMbe8IZkavNWrJfj0zBbL+j7czLrw0RkQ5JZn8o/8Y50xAl1uQmHAHnfL8oZGahgd5PpQkgLYk3amSFxnJSbp/GnyDNY/X9I/EaXJyDrYAme+5vTr6eJPNdwNpcrygc8ctF6cSFmVnvbn/XeZSiEoSdP2v8S3qhDtjKBmPdy7fLhLiLDFDmJD+Mi2V2aNiHIPhp3mYPezyljWr1FOeXB8ukzBSyz0Q9EsknFlCqunSSnKLnzDtp5WLMmFygf76+sHn2craUz1ZPXg6Cusiv9zC78+bTGpSA6x3z9T1UWmRSJRJfwo/EygKLz8q6rHzaF33emmRtH7vMzegTI/1NwJvYgPZk0uXpyBX3hDkVIonq/xYqJv04zmrGRTMF2Gbmuy1dXT+bLHM3plgVQy1uxM3PtERsI3qIqL/lSwKeTbxEihzYxLm2wddEUdOTLm+qU8GQneZp8Aj1tB5RhmmMgpj8BiYwopZmihIE227FkTjvRDmM/3tbTot+5vP62qzplIUiztTmbOvOUehSo6dtn//ClPChKu0Ut48C5/5QzI6UnZaxkM8R9eE5ohq1VUlVfFPgkAUjs5qqj9jbeW/3BJntjap8oLgmiJhtthfY43jNw9HKa5pw4WmPITKU1sYQbpgHCR9HUleZYGa6eaq1ebl2XRE5Tm5jIG8N93/7RuvpHSUCJjhE+YXUezdlO+OzYSfoWLcWG+c7SFtkAd5fHosJ1XERL9lLL+7jYzl++O0BYx9WrugVba3BQrCdM61G05tesS/NHQ4oL78j6Yo8HOwaE3NPYJxFxeIyobjEDbTbiqmS0zl5wbF4pKyJ+Jel0ApujFYh7ujsEXXKBVdN9uHpJgL+WKetodVVwEhEVyKE1tNHNzZLJdrOLVQ7LCAhL9J0YIpeoNBZI2TCloZMEQ0o5D X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97b85fb2-203e-4f4d-970a-08da301cec58 X-MS-Exchange-CrossTenant-AuthSource: AS8PR01MB7944.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 May 2022 11:30:01.0823 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 23/44] avformat/utils: Move ff_add_param_change to demux_utils.c X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: s5TSAgqFdazE Only demuxers have a need to add side-data to a packet. Signed-off-by: Andreas Rheinhardt --- libavformat/demux.h | 8 ++++++ libavformat/demux_utils.c | 54 +++++++++++++++++++++++++++++++++++++++ libavformat/flvdec.c | 1 + libavformat/internal.h | 8 ------ libavformat/ipmovie.c | 1 + libavformat/swfdec.c | 1 + libavformat/utils.c | 53 +------------------------------------- 7 files changed, 66 insertions(+), 60 deletions(-) diff --git a/libavformat/demux.h b/libavformat/demux.h index 546569ae6a..03f7c22bdd 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -203,4 +203,12 @@ AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_ba int ff_add_attached_pic(AVFormatContext *s, AVStream *st, AVIOContext *pb, AVBufferRef **buf, int size); +/** + * Add side data to a packet for changing parameters to the given values. + * Parameters set to 0 aren't included in the change. + */ +int ff_add_param_change(AVPacket *pkt, int32_t channels, + uint64_t channel_layout, int32_t sample_rate, + int32_t width, int32_t height); + #endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index 1fd634d1a2..ee8a05a54f 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -19,7 +19,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavcodec/version_major.h" + #include "libavutil/avassert.h" +#include "libavcodec/bytestream.h" #include "libavcodec/packet_internal.h" #include "avformat.h" #include "demux.h" @@ -143,3 +146,54 @@ fail: ff_remove_stream(s, st); return ret; } + +int ff_add_param_change(AVPacket *pkt, int32_t channels, + uint64_t channel_layout, int32_t sample_rate, + int32_t width, int32_t height) +{ + uint32_t flags = 0; + int size = 4; + uint8_t *data; + if (!pkt) + return AVERROR(EINVAL); + +#if FF_API_OLD_CHANNEL_LAYOUT +FF_DISABLE_DEPRECATION_WARNINGS + if (channels) { + size += 4; + flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT; + } + if (channel_layout) { + size += 8; + flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT; + } +FF_ENABLE_DEPRECATION_WARNINGS +#endif + if (sample_rate) { + size += 4; + flags |= AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE; + } + if (width || height) { + size += 8; + flags |= AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS; + } + data = av_packet_new_side_data(pkt, AV_PKT_DATA_PARAM_CHANGE, size); + if (!data) + return AVERROR(ENOMEM); + bytestream_put_le32(&data, flags); +#if FF_API_OLD_CHANNEL_LAYOUT +FF_DISABLE_DEPRECATION_WARNINGS + if (channels) + bytestream_put_le32(&data, channels); + if (channel_layout) + bytestream_put_le64(&data, channel_layout); +FF_ENABLE_DEPRECATION_WARNINGS +#endif + if (sample_rate) + bytestream_put_le32(&data, sample_rate); + if (width || height) { + bytestream_put_le32(&data, width); + bytestream_put_le32(&data, height); + } + return 0; +} diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index 0c90748422..c5d3c63bd0 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -34,6 +34,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #include "flv.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index 4d80501eac..cd6240b0a3 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -584,14 +584,6 @@ const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, void avpriv_set_pts_info(AVStream *st, int pts_wrap_bits, unsigned int pts_num, unsigned int pts_den); -/** - * Add side data to a packet for changing parameters to the given values. - * Parameters set to 0 aren't included in the change. - */ -int ff_add_param_change(AVPacket *pkt, int32_t channels, - uint64_t channel_layout, int32_t sample_rate, - int32_t width, int32_t height); - /** * Set the timebase for each stream from the corresponding codec timebase and * print it. diff --git a/libavformat/ipmovie.c b/libavformat/ipmovie.c index 793f1f6fee..4f5c164d3f 100644 --- a/libavformat/ipmovie.c +++ b/libavformat/ipmovie.c @@ -35,6 +35,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #define CHUNK_PREAMBLE_SIZE 4 diff --git a/libavformat/swfdec.c b/libavformat/swfdec.c index 52c5e5c480..716c95a743 100644 --- a/libavformat/swfdec.c +++ b/libavformat/swfdec.c @@ -32,6 +32,7 @@ #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavcodec/get_bits.h" +#include "demux.h" #include "swf.h" #include "flv.h" diff --git a/libavformat/utils.c b/libavformat/utils.c index 9e2e3335ac..5249607745 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -28,13 +28,13 @@ #include "libavutil/bprint.h" #include "libavutil/dict.h" #include "libavutil/internal.h" +#include "libavutil/intreadwrite.h" #include "libavutil/opt.h" #include "libavutil/pixfmt.h" #include "libavutil/thread.h" #include "libavutil/time.h" #include "libavcodec/bsf.h" -#include "libavcodec/bytestream.h" #include "libavcodec/internal.h" #include "libavcodec/packet_internal.h" @@ -1007,57 +1007,6 @@ int avformat_network_deinit(void) return 0; } -int ff_add_param_change(AVPacket *pkt, int32_t channels, - uint64_t channel_layout, int32_t sample_rate, - int32_t width, int32_t height) -{ - uint32_t flags = 0; - int size = 4; - uint8_t *data; - if (!pkt) - return AVERROR(EINVAL); - -#if FF_API_OLD_CHANNEL_LAYOUT -FF_DISABLE_DEPRECATION_WARNINGS - if (channels) { - size += 4; - flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT; - } - if (channel_layout) { - size += 8; - flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT; - } -FF_ENABLE_DEPRECATION_WARNINGS -#endif - if (sample_rate) { - size += 4; - flags |= AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE; - } - if (width || height) { - size += 8; - flags |= AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS; - } - data = av_packet_new_side_data(pkt, AV_PKT_DATA_PARAM_CHANGE, size); - if (!data) - return AVERROR(ENOMEM); - bytestream_put_le32(&data, flags); -#if FF_API_OLD_CHANNEL_LAYOUT -FF_DISABLE_DEPRECATION_WARNINGS - if (channels) - bytestream_put_le32(&data, channels); - if (channel_layout) - bytestream_put_le64(&data, channel_layout); -FF_ENABLE_DEPRECATION_WARNINGS -#endif - if (sample_rate) - bytestream_put_le32(&data, sample_rate); - if (width || height) { - bytestream_put_le32(&data, width); - bytestream_put_le32(&data, height); - } - return 0; -} - AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame) { AVRational undef = {0, 1};