From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id C761141A63 for ; Wed, 15 Dec 2021 19:15:36 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 39C4C68AF08; Wed, 15 Dec 2021 21:15:29 +0200 (EET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-oln040092066013.outbound.protection.outlook.com [40.92.66.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6FB9168AEB1 for ; Wed, 15 Dec 2021 21:15:22 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b5xXPCAzOsGWsyK0QRty5xMiq8urNrEvPs7h7WrCy/dJjTyJaqg9rChjvgFcrw6x2yBjYJwjEKtb0P9p73pD5dEgp1EyRiYFqIU+LBMUGpjB8jcDmzV9qvMzGVnVDylj7mhPw63XFpqe92WsCJbrzfx1yWev0szswaMket/5+2s+hvEEcUsQ9AmhnPHoDt/r4Gm04uMmf88PsCKicgLH4dSUcL8qcHErmI4fNCGMkfnQRselg95D1gwILLZ8pssY5JOxYM2/P4NgYnOsAmpL8hcj+zQ+328NlVdAT30yxi50Xh9d4Ol23yS7PizqYwOeqZQBKIwzG0DZjiOP80kPuQ== 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=f3Qf2KAvInrYY4bk5dwr9cMEubpMXJkAalcjQ1kluXw=; b=Ue5e0OmjA0FSWGqXhssqFbeKRjR2SPoEjCE+5FSOceCf2jDwtqNURK8zcQRpnduogG46NcgLVbxDbCnFhev0wcxRovQJGgCzdie9VKE947w0ug+iMp9enCs3Ni3uKQB/enVJnaAQuFACAupZ97i6d8VQXHAKKyhN/CfpOcxP1dkHi0Me4evUaF3nRWijOk884D0qCwWEC8jN34Ok9IwepHcQk3QNBDJiufDQ+GAsgYI9+lxQ8gem4/QfrlSbzNKEwokvhYq7qZ0Y8HvAdV7ygu/X/5h6Hhhbg1AvUXLI5gGeXIER+1ukZLjU2MnXNd8nlH6sZfyOzd0Iw4PmGyuorA== 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=f3Qf2KAvInrYY4bk5dwr9cMEubpMXJkAalcjQ1kluXw=; b=Tb93+l1tHZaLhc7QzFWE+uhTlgVfhPUXXTeaM090L07YYCP04fJGdNMbQR58NdyR1xC/25srv5mIvE2gBWRHIplMMNndiNgW2sHZ/v20dg45RQ332a46pBK5xZSkVWMPefdjT3f0gfCRRH3wOyAUKf9cXuNwaASJ6U5Qcmvz47xyvhJBnRcRhxIKWYxL24Kf/1nF6KYhupuhsJ74FNWLdzBr4lKMo7Q/KAiJBf8gVYvnP+9M6snrL+v7/2a726sIJZsQNyXfnZVaTw5/q5ytyi/eAsiHd3kpWfaADRvipJ3h47IewmJn6Djh+SUhNptShOC4M4g5uVd30uDjTsu+KQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AS8PR03MB7045.eurprd03.prod.outlook.com (2603:10a6:20b:292::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.17; Wed, 15 Dec 2021 19:15:21 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%6]) with mapi id 15.20.4778.018; Wed, 15 Dec 2021 19:15:21 +0000 Message-ID: Date: Wed, 15 Dec 2021 20:15:19 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20211215190031.14529-1-g.sole.ca@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20211215190031.14529-1-g.sole.ca@gmail.com> X-TMN: [Cx+yEeCGpePYO4LxnGhuLpXGFTECtQSW] X-ClientProxiedBy: AM7PR02CA0022.eurprd02.prod.outlook.com (2603:10a6:20b:100::32) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 13b983bc-90b2-4982-2e4d-08d9bfff3cb0 X-MS-TrafficTypeDiagnostic: AS8PR03MB7045:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IUYXH7ZupSXPbhKExAnHNV6WKvST2gUMOx/bYz+4yDSyIJTneHTH2et+cyfQGiJWjhEYWHQ9O3t9muk/gwxmHhmn2e74sAmsGCSr0Qgm8IBULicByg7M/VK6r6MWwHfNWHl1BtsY6XWnqTN+A/NjjJEKOdXDTkBAkcQ5aKzJaoOKGhxBSfjaR90rQCv1p4t5dpezyiqoL4ZajHe22R23cWqemsvxFplfYIOt2BcScGssk3KZGormkYRCrqMR31U92QY6viu3seV1LO2DWqgLxmikQ2d6wVC/G/AA9bGO4K6GG/n74KBFMDyw20gaPyQTESk/6oKxYgFVy5M/fpzLQr99m72Bq+OZF3oxB1NCgR23zD6AsX4VQL73SQuRxhoK8IcECEs/aNO6ogYUfkIb+EjGpd4e4y2vionGcq6kij2p8yHQba7Hg0/yM9CaGoTTzzqHR8qIZxtXEWMzHboVh/grQ3qm85x9xSAWgOVtdhEzfN0WKCpvUAd/V99entDHrp+7gGyo5+GBo0+lCeX6Lx+or7Rx8HhvHRplJIAjTI323FF0VgTcCXVcr8dHVC5vbilzlYPCzMZF/PiBdBEtdw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eGUzemc2WTkzVG5Jc0hDQUxLNXBPbWxjaFRNMUkyU0RBS1ZXbVQrTWhsZkhM?= =?utf-8?B?cUovOFgzUngrbUdHOHZUbndTSEMxenpielNMV004Q25GaFNjSjI0UEZjcksz?= =?utf-8?B?eVVhb3h3SUJEWHl2bVloQmRaeW4yK2EwcS9Uekw3YlArYVBHalFnUklRbnVi?= =?utf-8?B?bCtUSVhpektWNU84bEpqNHoyTzlpNGtJZmc1SDVFZXpObXBPT3JEazhjUm5n?= =?utf-8?B?bC9rTERKRDdzYkNQL21DRHAyTGpuVS9ybzAzeTB5UGx4U0U3dzEvYS9jdUdM?= =?utf-8?B?UlNscDhVYStEWUFiVStxM2xuTmROUGhUVVRmWjVkUkFZUDhlS25tZ0s3bFRJ?= =?utf-8?B?SUdmbTc2WUZmbjdTekoxQ083blk3UkVPbDAraUlYV1BjQUV6Nm1nbHIwUmRz?= =?utf-8?B?SDRvN29lWFNWUzlsbHJFZnU5cGNVSVZpR1Z1a1QvWjR2V08rM2xVZXNsbDRv?= =?utf-8?B?R3M3dEZ6Z1k2NzY1Y0RoQlR0Q1pjV2tCN1N3aGFjWEEwUDR5N0Y0eXVxcC9i?= =?utf-8?B?Ti9rYmRNWXZUMUtXelFSbXdTTTVLbjgvdTdld3dISWRZN2xENEs4RGdId0Vq?= =?utf-8?B?aFYybmh6NVgycmxvbjVCQ3BDNS8zcFNvL2k5cEJMTEZCajZudlhBN3Azcm1E?= =?utf-8?B?SnZyY3B3K0hGdStvc2czK0pLRTVLMklGbVRaSjBYSE1mQW1FVk9nYXJqVldx?= =?utf-8?B?eVdPa012N25CQm4zRUYySTNmZlQrWEdqdUR3Ukp5M05wTFNWa0JSMElJM2NK?= =?utf-8?B?Q1pEVmpLbW9hNm4wMEplVGF4SVBXL1hqL3A0UWRBQ1J3UzcvR2trRVBiUURJ?= =?utf-8?B?NGIvekpoZW12bnE5R2FGOTVudmJ2cGcvcVRUMEN3L0FGdVFzOUtqdnMwM0lK?= =?utf-8?B?d3dxVHZDWWdXcDE5QXBmdHpRRlp5bEhBVTEyOExpY3JiMmpkYXdmNTVwR2Y4?= =?utf-8?B?T2pXL3V0amRrYklWNkl0MVRhazBoNy8zU3NoQjF4NDNVQ281bkE5aDVLbFoy?= =?utf-8?B?eVFxMys3WTcySHFNS0gyWDhCL2RUTWxpRXJsZTgxY3ZEMWF6di9pOWJ4TXB3?= =?utf-8?B?V0NRK1YzRkpNck5Uc01TQVY3NVRhUENXK1RvcGw5a3dTUlFqL0xYU1ZFcVND?= =?utf-8?B?dDVMMWNsSldpR2VmN1FpUnNFK0JlcjZIV2VoK2lYdWJlZVdVM0cwbjE1ME9W?= =?utf-8?B?WExENm1XU0V5eWZtM0ZGMk1FaVk0VmlDL1QyNGdIT3hWVVk3MDN3WlRCZWZW?= =?utf-8?B?OEZUbkVYYlNLUlMyYTgwQ1hZL1ZkVnBpTGJWODlXWW1xbHcvUT09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13b983bc-90b2-4982-2e4d-08d9bfff3cb0 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Dec 2021 19:15:20.9442 (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: AS8PR03MB7045 Subject: Re: [FFmpeg-devel] [PATCH] libavformat: add side_data copy in concat demuxer 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Gerard Sole: > Adds support for concat demuxer to copy the side data information > from the input file to the resulting file. It will behave like the > metadata copy, where the metadata of the first file is kept in the > the output file. > > Extract the current code that already performs the stream side_data > copy into a separate method and reuse the method in the concat demuxer. > > Signed-off-by: Gerard Sole > --- > libavformat/concatdec.c | 1 + > libavformat/internal.h | 9 +++++++++ > libavformat/utils.c | 9 +++++++++ > tests/ref/fate/concat-demuxer-extended-lavf-mxf | 2 +- > tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 | 2 +- > tests/ref/fate/concat-demuxer-simple1-lavf-mxf | 1 + > tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 | 1 + > tests/ref/fate/concat-demuxer-simple2-lavf-ts | 1 + > 8 files changed, 24 insertions(+), 2 deletions(-) > > diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c > index 8d80e536d1..0603c6e254 100644 > --- a/libavformat/concatdec.c > +++ b/libavformat/concatdec.c > @@ -191,6 +191,7 @@ 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/internal.h b/libavformat/internal.h > index eb8239cd3f..0e08dc832e 100644 > --- a/libavformat/internal.h > +++ b/libavformat/internal.h > @@ -840,6 +840,15 @@ int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *a > */ > int ff_stream_encode_params_copy(AVStream *dst, const AVStream *src); > > +/** > + * Copy side data from source to destination stream > + * > + * @param dst pointer to destination AVStream > + * @param src pointer to source AVStream > + * @return >=0 on success, AVERROR code on error > + */ > +int ff_stream_side_data_copy(AVStream *dst, const AVStream *src); > + > /** > * Wrap ffurl_move() and log if error happens. > * > diff --git a/libavformat/utils.c b/libavformat/utils.c > index b5a4a09ae8..332ba534d2 100644 > --- a/libavformat/utils.c > +++ b/libavformat/utils.c > @@ -605,6 +605,15 @@ int ff_stream_encode_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; > + > + return 0; > +} > + > +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); > diff --git a/tests/ref/fate/concat-demuxer-extended-lavf-mxf b/tests/ref/fate/concat-demuxer-extended-lavf-mxf > index 4b2a8624db..543c7d6a8c 100644 > --- a/tests/ref/fate/concat-demuxer-extended-lavf-mxf > +++ b/tests/ref/fate/concat-demuxer-extended-lavf-mxf > @@ -1 +1 @@ > -29e4e502a912b6d863e75d44e156ed31 *tests/data/fate/concat-demuxer-extended-lavf-mxf.ffprobe > +d367d7f6df7292cbf454c6d07fca9b04 *tests/data/fate/concat-demuxer-extended-lavf-mxf.ffprobe > diff --git a/tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 b/tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 > index 1dedc6bf43..57b22848b9 100644 > --- a/tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 > +++ b/tests/ref/fate/concat-demuxer-extended-lavf-mxf_d10 > @@ -1 +1 @@ > -8de04a786521677a593283c44a53572e *tests/data/fate/concat-demuxer-extended-lavf-mxf_d10.ffprobe > +1fac6962d4c5f1070d0d2db5ab7d86aa *tests/data/fate/concat-demuxer-extended-lavf-mxf_d10.ffprobe > diff --git a/tests/ref/fate/concat-demuxer-simple1-lavf-mxf b/tests/ref/fate/concat-demuxer-simple1-lavf-mxf > index 2fe703e2a6..589dbb73b6 100644 > --- a/tests/ref/fate/concat-demuxer-simple1-lavf-mxf > +++ b/tests/ref/fate/concat-demuxer-simple1-lavf-mxf > @@ -121,4 +121,5 @@ Strings Metadata > video|0|37|1.480000|34|1.360000|1|0.040000|24786|212480|K_|1 > Strings Metadata > 0|mpeg2video|4|video|[0][0][0][0]|0x0000|352|288|0|0|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|1|N/A|25/1|25/1|1/25|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|51|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 > +CPB properties|0|0|0|49152|-1 > 1|pcm_s16le|unknown|audio|[0][0][0][0]|0x0000|s16|48000|1|unknown|16|N/A|0/0|0/0|1/48000|0|0.000000|N/A|N/A|768000|N/A|N/A|N/A|N/A|50|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 > diff --git a/tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 b/tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 > index 0a3af658f6..7fb6ba2c9c 100644 > --- a/tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 > +++ b/tests/ref/fate/concat-demuxer-simple1-lavf-mxf_d10 > @@ -79,4 +79,5 @@ Strings Metadata > audio|1|65280|1.360000|65280|1.360000|1920|0.040000|7680|2074624|K_|1 > Strings Metadata > 0|mpeg2video|0|video|[0][0][0][0]|0x0000|720|608|0|0|0|0|0|1:1|45:38|yuv422p|5|tv|unknown|unknown|unknown|topleft|tb|1|N/A|25/1|25/1|1/25|0|0.000000|N/A|N/A|30000000|N/A|N/A|N/A|N/A|35|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 > +CPB properties|30000000|0|0|1212416|-1 > 1|pcm_s16le|unknown|audio|[0][0][0][0]|0x0000|s16|48000|2|unknown|16|N/A|0/0|0/0|1/48000|0|0.000000|N/A|N/A|1536000|N/A|N/A|N/A|N/A|35|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0x060A2B340101010501010D001300000000000000000000000000000000000001 > diff --git a/tests/ref/fate/concat-demuxer-simple2-lavf-ts b/tests/ref/fate/concat-demuxer-simple2-lavf-ts > index 76dde3b873..7c6079e2b1 100644 > --- a/tests/ref/fate/concat-demuxer-simple2-lavf-ts > +++ b/tests/ref/fate/concat-demuxer-simple2-lavf-ts > @@ -213,3 +213,4 @@ video|1|175582|1.950911|171982|1.910911|3600|0.040000|15019|224848|__MPEGTS Stre > > 0|mp2|unknown|audio|[3][0][0][0]|0x0003|s16p|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 0 > 1|mpeg2video|4|video|[2][0][0][0]|0x0002|352|288|0|0|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|1|N/A|25/1|25/1|1/90000|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 1 > +CPB properties|0|0|0|49152|-1 > The documentation of AVStream.side_data contains: "demuxing: Set by libavformat when the stream is created". Does your patch guarantee this? copy_stream_props() seems reachable from concat_read_packet(). (Actually, a similar question can be asked about extradata and other AVCodecParameters fields.) - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".