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 97490439E4 for ; Thu, 4 Aug 2022 16:53:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 01D9768B9F3; Thu, 4 Aug 2022 19:53:23 +0300 (EEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2078.outbound.protection.outlook.com [40.92.89.78]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 34B6468B9E2 for ; Thu, 4 Aug 2022 19:53:17 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PSAlrbUZRI9xdEvIO8Zi1uM4PY77aOpzpNFgTYGHJ13uNku4okhCvfGE4tyxCnKZZ8zyxkkC406ydK4yqS8QAkZwo6M/Ia7kVCzE3+ChoIOm5zugiKneKdwvqOFG4XyOjonvZSMJT1GpA5RHz3g0bKIrzhN6KQXXvH4ll6CmNTYh9fVecsCeyRW2Ph+i8KYQ577jd9KygKB/SHtehEe2myGJhJsjBGZ5JbOZYJiI/NxLWnOvwM1t6IKvl08q5Ceo/jqNIiNC3VLEBEHVzWb28iS+oSQaew+LMPA6RbA2gGIPxHewFRXahwqXKKHESEGjMXTUdEufrYe1OIyeBED0fQ== 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=TG24HQe1e2mxcxrYz2f879dXjZQJWIH/e/TTh640+B0=; b=bQvbAmVWbb0euL27Ty0uOWzMLK43gTLtMvy7xKqR5kPntCbfkVxaDBoZV2s3ASyP8HgxDxaQNY0QEaQAFp8r7SrEc62YPLjeVicEOfZn+zJpQ3O1M/BPkaX5cMdNzG7Op5bJH/lsi7w+rbAzxGwYBnA2+NP+vR1GF331KwXE+h5srhFDD+yIfcKXcNVGa2yPBJvA3eFkdk/nw01s2a1PDda2PEeIXsGrb5JybDugz6r+r8B2RY1zduB+Nsa9BTlgWNhxtqU1aqxLbr0BYAKWIFGFd45pgzxfJN8iZ0qjts9kPT8oQ8iBw44R61nLtGlFg6iSBOW7eyLftH/2DQpwCA== 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=TG24HQe1e2mxcxrYz2f879dXjZQJWIH/e/TTh640+B0=; b=ecnr4syYNc/47cVKRblJno7IXU0CxkpAA0N1SdlM44WYwVlAlf3X0LYQLvkbSwbgxqG0UDAedugv2mjWgxQj4wRCV+x5RWM/LjEexVkyyrhFbvaRM4eR1+WvkPqORo6Hl/7ksXMAf4Llvb8/fv680I5HJC+soU6LY5Mhs42P01gRJbAWg7huoOms1y1nHOVmZemntMgvbdT1UqkAQd5/N2VSh3rdumRZcoEYEJ5RPsei8oJLIwlQ60R5k/BB4zi6Lruodbxj9/PNiBBlWypvOEDmjfIdaZqyCGOGSiaxYEhod2ND/QLixIRX+2BpAnWRywNQm1N87dhUKpVBwj1RkA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AM0PR01MB6097.eurprd01.prod.exchangelabs.com (2603:10a6:208:171::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 16:53:15 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5482.016; Thu, 4 Aug 2022 16:53:15 +0000 Message-ID: Date: Thu, 4 Aug 2022 18:53:13 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220731215157.22022-1-pal@sandflow.com> From: Andreas Rheinhardt In-Reply-To: <20220731215157.22022-1-pal@sandflow.com> X-TMN: [S/ZgkAtdYzfagli3Enefjchmc01PPIc9] X-ClientProxiedBy: FR0P281CA0137.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::13) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <529ca261-24f3-8e97-82a8-6a99e4bf5ab4@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 91aa8784-caaf-4329-58d3-08da7639d2a1 X-MS-TrafficTypeDiagnostic: AM0PR01MB6097:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GNqIxs+jT5LmBbw4zrxfu3edEs7mmKUGk8kmhxnhKapMTfOKgVm0CaiRNi8KjKeWEVrg+9sAQt887NpESMeEYIKVlaahaRNyVcoNjz/XrrU7MzG3DyKuE+Z/wepGsPCBQ5fPpBAag9PEGskpM2YlVI+X01Jh0g8T/bTlBBQnB1Kd1vp21+xKKzYdTuBkY3Lhq/KnyPOgOPyuHrCdu2xk2KkFBCBrMFyOYhNN0YwSwaesE0xbLT3xNFwBGQsQgw7E7DpMwpermrjAludXnKA7gNJpxOyeHPNRERAev1HtU1XlHydtzXmmjSiLlt+RdoNShGt0vWrmoPog2N68ccBquIGW+st0voarwgfLJ7qBZsN3XloMbJ4ISh8IA0BSYDiGPjMp8WWSFFaKa8DEUEkxAFB4DKrDvI6E8RvXuKVa2zuI04VFxxdZKHZiVZFfp/VEvtzc7ynReUQ8r75rdjEIj4JlZaeamAS+CBnj2Z0DLJMxbVoclHrPajt+tybI7Iuo39hwUonDW3NC7myBWrqbznqaoXTvqHh/lW5ScFLjgumCvCg1Zp2luvM8564oOPeQuusOXXSoZW8U0Crc9ZpO/OnrTsShVRa5AO6y3SmKcfu7AVVF6by8JTy9KtQ7FZglc/kDlQBg0CG9tz6weq2p0UZMSMdVCs4+fqYxdprG1TpEUwQSWoypRgN9eYVq5E3FTYWew/ou3H0Hce9vMdF/XHerwNJi3fmuK5+3Ymiwk38= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VURDcEozYVd3Wi9LNmtsR2dHd2p2ekIrd2lhQkkrVkwvOXcwNWZFN1VKTjRu?= =?utf-8?B?am1BTkJLemNyNU1RTDU2MVpsSWFZTmQxemdYVTlTQnlZQm5CZTNGU2drdUpt?= =?utf-8?B?QVpqSmJhWDRPNCtBVUhLYk40Wm1GbkNjRE9zN2pOeHBhU3Z2K3pDTmV0R0t6?= =?utf-8?B?UEdhTHZwWXFXbGFYZTRUZ1FHT1d4bU1hSnA5VEdPQ2dUT2p2S1dZWjFBNDVC?= =?utf-8?B?NVdPZlBLaDhIeDZ0NDJscEdZSjVNTWVSY0RZNVdrRzk3RTE0ZXZrMkZxSllt?= =?utf-8?B?YnFXYXR2dFRwcTlnRlQxaGRoU3A3M1dzUW5RQjI5UXZGNXVvM1B2NXkxbzJa?= =?utf-8?B?UFlaTnl4L1hQUG1xeUNtcExrcTl6dUhncUR5MTU2YzdKMDZjOXU1ZDhJYklW?= =?utf-8?B?bWFmRGwwVjJjTmFyL29veW1tSmlYQ3AzSEdaOU1ZQlljQ2ZLOStGM2N0RXBI?= =?utf-8?B?MmFkeVYrOTc4TWNrOU9TSi9SN29qcFlVZ0ZhczNZRGd5SjhZNHRpZlpZc3R2?= =?utf-8?B?TDlxWisxVjhWZXVCSkZsdWhoZ0VjZUZzZTRmV1lEWk1xQVltbnp5VEtOVXB2?= =?utf-8?B?WWRWN0JqVEtaVzBRT2xHdFpZWTNST3huNlFVY1p0SlVodEtKbVJYN3JoVDJ4?= =?utf-8?B?a2pYK052UWwyb0tzc3ZXZ0hjVWtTaURtRVYxRHBBZzJxVXh3V1kxbEV5Q1Bt?= =?utf-8?B?Z01kSEc2dHFVYXk2QmhkZ0hyaFFzOEZsMTNpdHVOMEVMcHFMVmluWXJhSG1L?= =?utf-8?B?dFhzY2NzV2VrV3BJSHlacVBqcjdBS3VVY1BWQzhiZnYrY2I3NHJKSzlrWGpz?= =?utf-8?B?UzllZkZyOVVtcUJBbVcrS05tdnFOVkFLUCsrMmRqR2NFNmp5TDNZY3d1bjd4?= =?utf-8?B?QTYrMFRwMG9kZUVlNlRaSTZyVERqd0VVM05mZFhmWTNBMDlrTEQwUm41T1pQ?= =?utf-8?B?bFZBa1NBMGhYTXd0RnErZ1l5MkhlOThHbzdrYUd5YkZSYzZlU2JFbWhvS3Vn?= =?utf-8?B?VEowVGRzL20xcGlXTzZibkdqWGphQ3hoQ2hId21FL05DWFVMWnFGNjVhUlE1?= =?utf-8?B?WFZ1eldPOWdFNmM5SWxXYWZkQUVCQkJsVTFPWVRwNjBneVpRenZ2cUlxdUU1?= =?utf-8?B?TnFXTStXeXk1MjJPTHlzSVZudlBveTJxSHRKeU1QS0RBY09yc0RNMHhzNTU4?= =?utf-8?B?Vmc1QkdzWEU4VUhSN3hhQml1bVY5QlJpNTVtMHVRVnVIZjZycy9Pa3J6RlZC?= =?utf-8?B?bUtrSkRZd0F1RG1Rdmh3ZjFTVE9wMXdTV1c2ay9nWDZ2UUZPaEI3SXJja3c2?= =?utf-8?B?Tnh5eTNCaGd0M0hDSG9oSE1UY252eHNXeXJyK1Jxb1djQVRoWWd4U0Jac0dP?= =?utf-8?B?WWdrbFVBMnpQWkIwTk5UdlQ4ZzZCOFNUVXdtQXpKUU1zaUx6akF6S25SR1Bt?= =?utf-8?B?SUx0Z1BrMXZkODYzWHJzRU9hQW9NdE1TWFhxVGdZT2JDN29qVWZjQkxRTndX?= =?utf-8?B?VHI0RENzd0s0ZUZWYkFoSHBMdFd3MzRTL0lwTXUrdWsyYlhXd1BnMVJsNWVZ?= =?utf-8?B?dnJIS0tyaUo5L3NBRW1peDhEZm5mY1N3Mm9sSm4xeiszWGl0Tll1QkFxUHJy?= =?utf-8?B?alAxeVAxRUZvSTNBVXBKZDc2alMyYnRiam5uRTVtL0JMeVg2cnBVMmo4N3N1?= =?utf-8?B?dkVaOTZxMnpwd2E3SloraGROcDgzNkhaY2R4ZTVGemJna2JkU1gyZVBZdG9t?= =?utf-8?Q?y/+OBIDY6s8eI5w2QA=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 91aa8784-caaf-4329-58d3-08da7639d2a1 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 16:53:15.0661 (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: AM0PR01MB6097 Subject: Re: [FFmpeg-devel] [PATCH v5 1/2] avformat: refactor ff_stream_encode_params_copy() to ff_stream_params_copy() 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: pal@sandflow.com: > From: Pierre-Anthony Lemieux > > As discussed at https://ffmpeg.org/pipermail/ffmpeg-devel/2022-July/298491.html. > Note that ff_stream_params_copy() does not copy: > * the index field > * the attached_pic if its size is 0 > > Addresses http://ffmpeg.org/pipermail/ffmpeg-devel/2022-August/299514.html > > --- > libavformat/avformat.c | 40 ++++++++++++++++++++++++++++++++++++++++ > libavformat/fifo.c | 2 +- > libavformat/internal.h | 12 ++++++++++++ > libavformat/mux.h | 9 --------- > libavformat/mux_utils.c | 28 ---------------------------- > libavformat/segment.c | 2 +- > libavformat/tee.c | 2 +- > libavformat/webm_chunk.c | 2 +- > 8 files changed, 56 insertions(+), 41 deletions(-) > > diff --git a/libavformat/avformat.c b/libavformat/avformat.c > index 30d6ea6a49..242187c359 100644 > --- a/libavformat/avformat.c > +++ b/libavformat/avformat.c > @@ -235,6 +235,46 @@ int ff_stream_side_data_copy(AVStream *dst, const AVStream *src) > return 0; > } > > +int ff_stream_params_copy(AVStream *dst, const AVStream *src) > +{ > + int ret; > + > + dst->id = src->id; > + dst->time_base = src->time_base; > + dst->start_time = src->start_time; > + dst->duration = src->duration; > + dst->nb_frames = src->nb_frames; > + dst->disposition = src->disposition; > + dst->discard = src->discard; > + dst->sample_aspect_ratio = src->sample_aspect_ratio; > + dst->avg_frame_rate = src->avg_frame_rate; > + dst->event_flags = src->event_flags; > + dst->r_frame_rate = src->r_frame_rate; > + dst->pts_wrap_bits = src->pts_wrap_bits; > + > + av_dict_free(&dst->metadata); > + ret = av_dict_copy(&dst->metadata, src->metadata, 0); > + if (ret < 0) > + return ret; > + > + ret = avcodec_parameters_copy(dst->codecpar, src->codecpar); > + 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.size > 0) { > + ret = av_packet_ref(&dst->attached_pic, &src->attached_pic); > + if (ret < 0) > + return ret; > + } > + > + return 0; > +} > + > AVProgram *av_new_program(AVFormatContext *ac, int id) > { > AVProgram *program = NULL; > diff --git a/libavformat/fifo.c b/libavformat/fifo.c > index ead2bdc5cf..fef116d040 100644 > --- a/libavformat/fifo.c > +++ b/libavformat/fifo.c > @@ -509,7 +509,7 @@ static int fifo_mux_init(AVFormatContext *avf, const AVOutputFormat *oformat, > if (!st) > return AVERROR(ENOMEM); > > - ret = ff_stream_encode_params_copy(st, avf->streams[i]); > + ret = ff_stream_params_copy(st, avf->streams[i]); > if (ret < 0) > return ret; > } > diff --git a/libavformat/internal.h b/libavformat/internal.h > index b6b8fbf56f..87a00bbae3 100644 > --- a/libavformat/internal.h > +++ b/libavformat/internal.h > @@ -625,6 +625,18 @@ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags); > */ > int ff_stream_side_data_copy(AVStream *dst, const AVStream *src); > > +/** > + * Copy all stream parameters from source to destination stream, with the > + * exception of: > + * * the index field, which is usually set by avformat_new_stream() > + * * the attached_pic field, if attached_pic.size is 0 or less > + * > + * @param dst pointer to destination AVStream > + * @param src pointer to source AVStream > + * @return >=0 on success, AVERROR code on error > + */ > +int ff_stream_params_copy(AVStream *dst, const AVStream *src); > + > /** > * Wrap ffurl_move() and log if error happens. > * > diff --git a/libavformat/mux.h b/libavformat/mux.h > index c01da82194..1bfcaf795f 100644 > --- a/libavformat/mux.h > +++ b/libavformat/mux.h > @@ -113,15 +113,6 @@ int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size) > */ > int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options); > > -/** > - * Copy encoding parameters 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_encode_params_copy(AVStream *dst, const AVStream *src); > - > /** > * Parse creation_time in AVFormatContext metadata if exists and warn if the > * parsing fails. > diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c > index eb8ea3d560..2fa2ab5b0f 100644 > --- a/libavformat/mux_utils.c > +++ b/libavformat/mux_utils.c > @@ -121,34 +121,6 @@ int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **op > return 0; > } > > -int ff_stream_encode_params_copy(AVStream *dst, const AVStream *src) > -{ > - int ret; > - > - dst->id = src->id; > - dst->time_base = src->time_base; > - dst->nb_frames = src->nb_frames; > - dst->disposition = src->disposition; > - dst->sample_aspect_ratio = src->sample_aspect_ratio; > - dst->avg_frame_rate = src->avg_frame_rate; > - dst->r_frame_rate = src->r_frame_rate; > - > - av_dict_free(&dst->metadata); > - ret = av_dict_copy(&dst->metadata, src->metadata, 0); > - if (ret < 0) > - return ret; > - > - ret = avcodec_parameters_copy(dst->codecpar, src->codecpar); > - if (ret < 0) > - return ret; > - > - ret = ff_stream_side_data_copy(dst, src); > - if (ret < 0) > - return ret; > - > - return 0; > -} > - > int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int return_seconds) > { > AVDictionaryEntry *entry; > diff --git a/libavformat/segment.c b/libavformat/segment.c > index fa435d9f32..a8f3e94714 100644 > --- a/libavformat/segment.c > +++ b/libavformat/segment.c > @@ -169,7 +169,7 @@ static int segment_mux_init(AVFormatContext *s) > > if (!(st = avformat_new_stream(oc, NULL))) > return AVERROR(ENOMEM); > - ret = ff_stream_encode_params_copy(st, ist); > + ret = ff_stream_params_copy(st, ist); > if (ret < 0) > return ret; > opar = st->codecpar; > diff --git a/libavformat/tee.c b/libavformat/tee.c > index f1f2a9d2a5..dbfad604d0 100644 > --- a/libavformat/tee.c > +++ b/libavformat/tee.c > @@ -289,7 +289,7 @@ static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave) > goto end; > } > > - ret = ff_stream_encode_params_copy(st2, st); > + ret = ff_stream_params_copy(st2, st); > if (ret < 0) > goto end; > } > diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c > index d69db3a004..39f21fce7a 100644 > --- a/libavformat/webm_chunk.c > +++ b/libavformat/webm_chunk.c > @@ -94,7 +94,7 @@ static int webm_chunk_init(AVFormatContext *s) > if (!(st = avformat_new_stream(oc, NULL))) > return AVERROR(ENOMEM); > > - if ((ret = ff_stream_encode_params_copy(st, ost)) < 0) > + if ((ret = ff_stream_params_copy(st, ost)) < 0) > return ret; > > if (wc->http_method) Looking at these callers shows that they all have one thing in common: They create a stream and immediately afterwards copy stream parameters. The caller that you intend to add in #2 does the same. How about we make a function that is equivalent to avformat_new_stream+ff_stream_params_copy above and use that? (But please leave ff_stream_params_copy as it is in the form of a static function.) - 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".