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 879FA472A0 for ; Mon, 4 Sep 2023 11:30:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CA6FD68C7AB; Mon, 4 Sep 2023 14:30:47 +0300 (EEST) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2027.outbound.protection.outlook.com [40.92.59.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D890368C07A for ; Mon, 4 Sep 2023 14:30:46 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B7wNCAAbQ8RggqRUxckYirQAmu2EYf2INOkYHODv9uKdq2afESY+aRaXXDyYsHTi+RTheRdxDB0f2BWtduMS+h0i4ChuolJRPCmsAY4kE5N7CFe4t423KA17cLdwGyP5+ZrgRZ5S/74bpDihjI8fs6WGkcAhnYo9u+oOBQW+ASBg0vuKW2LxekC5+qJoQlFfjLnPuqi4YeBa+3WyMTdhAzSEdMOXFh/XmAgZnh67lTe+o9CU32aLvAZ8ht3Kedcz9CyIXtGMKq2ED9RGmwBn4dDJsUisdJfJDp7jCd7aIoYp+1TQOoo4z8BAUZsD+F//ldCa4SjMYCg41cFs6pCguA== 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=oUp3SdO1l4srQVRaeAtDxhnacXAWKRMc6BNgfhBM6Ew=; b=hDkBdtUul2cFs5P/RdEbvndGqKdg7c4QqVRyfHuz1EcA9YIenD1Wz+wE1mzCa4TZOs32d+9fhbcki/mM1e/nXAo/J1t5Uu/CmGilHv878/Kb9lMbsA0N4GauoY4fYKTRA70+mRYGq3xEmhIF5ST1bE1NquvYMN8umEgznQX+jrzc3RyPcoYeTJnsySVqnxXlL8OpRRfsohyG0vM1CbMNbULacY19pINwGe+CKJb8ci8St2KJ4ztMiT0TR419n207rogPSqX7yD9fRzTo2gw7xT2Jj2+4tNasHEUYjeuRkjPoM7pIqmi2CuzjEXPCmrXLvjvoh93bM+vNRGpt7rv4TA== 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=oUp3SdO1l4srQVRaeAtDxhnacXAWKRMc6BNgfhBM6Ew=; b=eHkn5GTAraxmaOb0q3QlOERGZjcwSYdMzf6ev295x38cqslHmQPAuNXBx5UsvPMGAAKpRuKb4v1igS08vvcbGsVGn5Puls9c1XfFA2MTlFe4qUJUvuldQIGD6c4cAagdOQbBOHCDS1Jpec3SCUfJA8byNkUhmW/fu+QGEUQ2cg3HJ++UcsjiuFqpV61rm3O441uYPhPACv7S7wcRhndmxERuoMi/GF5MahJ42E/MEZWmt/v8NxGBSHhQz/musr4nydxD7D8exEsMdV5ZM6iNM+OsGaQrF0vIykCRDYv61g0xB8Ima8i4x0O/sDDKIWraLfdN6vsD3t29PeV34SBxeA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0017.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:3d8::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.32; Mon, 4 Sep 2023 11:30:45 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6745.030; Mon, 4 Sep 2023 11:30:45 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 4 Sep 2023 13:27:56 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [2c2RxUN0QayoDbHLiJf9lukr9AyZ4+SQ0i9z882iJfU=] X-ClientProxiedBy: ZR2P278CA0078.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:65::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230904112759.2652347-16-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0017:EE_ X-MS-Office365-Filtering-Correlation-Id: c7a58273-7e15-458d-ffc8-08dbad3a60f5 X-MS-Exchange-SLBlob-MailProps: 0wLWl8rLpvtlEyItUpZmgfjbRm+zWpoMhj+a/1N1/tVlk+6FnnjwnU7jlnO23MqXvWSXluE1K+yVtiM4YIDnMWmjzK1zcAv4NGGcUJEKflJX2zA/jsgVzZ0eqO8OM9KDsVqS2qhxB+67uYznkoVTzfxjNVn1uDz9QOG0ZTGEzdi+/6uqkSCFFinGqHc+hgA9wLyYCp27atpNLCPy2J0qydNSzBn+deUKpOdr4N0iE3FUwSf1Xoura8okNEhLZ1rxHhxaM6OJ8mZnR6jnodO+mmsF/8By6rO4XeCR5+j+0MZfKqwTvnIWGq7wTrIX0/hnY2V5lxx0yjSj27Ke+heJ+2OoCQzhPyqRz4gyHz078u9MJiQUgXZufng8AtlW8jus+Eq13syXRPRZm+J92GX0KF5GaECRVwj969WSUZf0+eK4jyplwv2W4AnwTB0Q6/7vOVMUasKCsXYr9O1vuKIsVUno96H8SbACx6DcOHFLjicv2jorJap8OVA80NGkYOZW2ixfSNrgfPvzygPKZBHoiNAsj2lUwr+pkDIgV33JIVYz88dNiyOqpNca6aOeNqCfm+MB4Sgo9JyWnw/zZF3Mc3O3DOZJdrUdyrXGBiXrt8LxltUSHNFUBz2QSJGgXWWj0pH3K8tjMNgWaE8mIT2E3SMomRvPxY6LTnGGv5bdQGIC3Fdn0ZzYDKMbocDi8V8+mAlTyG1u4QeJg0u6Frk+y8DohlRcIXARMSy8takj3liXg4t3qaEhZv1xbM6w3Z+cK18YtYazDYE= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8fuJFYz5NCZ+ptxMy+1j6e+yo5tYBBgORShcfw72cVKfdzsxcTuCB2ERgkkI1sm5zjt4daUYf56GY7vcsYiOV1mxZLqQIi4rTBEuVDmlbW1tmjDSVzSZpYZWJPE4nXt6kPTu0xwTc4/zzkTxhG4rfqj7VOoJQYm8h59cK4RDvEblhOW9JASdgxGtYWDmvoxmCNLMg4utvKIWSEvvq5SJT1/CNKASJwXvEomeyg2vcnCePD49tn+iYseqnAHIV0vhFIFU89SuO0RtbjW06Z4o5PvWPnMZBzT4vmoegByvpXh7H7y/Kn5sSlBpaQEhqtdIwkVVWjjRMRUPM6HIve7qxL93foIf1rPvLIJokXkRifrhqEDFGu8bvABpRpVzTI+ePRADWV8XQ8N+7xZcMJ5QGu5CNnMxRMjAO2ok7VQW9XDJROLuWqwGOGB/23ISJqsvlFp94qn9eonF7TyUYZ+aoUQhWfWW/wumvyuoG+fnOL+298z/xlygLKzGmXDb9DKRI8nMz5FOQw168SCzeHZllEPmDcsXfoPBMC6OcUotkFXI/VlETUiF7RbqdP4tqT/G6xISZ/7zE7kgUsNyBRt9BvGzZhdwO7n/LHkqPSpJNh8= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?TQizzJ/gCZ9Ma0ahUtY4VUG880yHlGZVbwYh7QAb92+a9Rg3mx7G2IFBoxU+?= =?us-ascii?Q?+c/6mO/PRNlRK8RCvVMc/QTQRClmbxtiHlGxlwJxIGGXYL6kfrR2BGkE4OYv?= =?us-ascii?Q?PiVC8aV0CFupWAdYHSw0rONrIa+UMQ9AlawA3NMutnUA85OrrDciVlnSOs7T?= =?us-ascii?Q?vH2xOYrQFI0j++EmmzkKVGwMfvPKFh+Ak0Q5rvuXfjQvB6cxhlTxhgQ8s8nO?= =?us-ascii?Q?3T5APvGuC2OIJ2ShOC5BWqbMGTb4x73pCRicT8MQSDwvmWCR6CTVxA0zIFN+?= =?us-ascii?Q?5LaJEgdPRhfQ0RO8BD76mwXJWGcz20cZrGc1vfysxdfRXA8ZytSkq40l+w6K?= =?us-ascii?Q?D+UqJ5SHac50tfksj8wwPlAtZWZpo3e7Y03JXKiQFt++4BfKtilCqOHueQq9?= =?us-ascii?Q?b3JGQVeiSJVLG/ftGAr4RpBxwoYzQyYywOlVdaAkSDlKPqCs1t3Min9a6+zq?= =?us-ascii?Q?HEH3uocr3hIzNofJRO7NdNuC/WVzoKbcUd3SCH/+fxSf/z1Uf4JT3RHlK2oI?= =?us-ascii?Q?/PAnWtnD6HMcDRi5rSPKdDLOj34Uj6DQsBSMbj5LD2T+Z4BbNELD53wY7CgB?= =?us-ascii?Q?kVOQMn1iRo0Opfl0XdbpofMMmkkvIqR2lXi++9dTjbkUGlfpxIT6Oy9i63rb?= =?us-ascii?Q?FSLtFyJw37vv1DZwALHzq6AMpjYSFHv1kMPnqMYmRlNQK1hWqJ5CU5FVsnQB?= =?us-ascii?Q?pGgEOYH/4et7xoGJzorDyil/ngt469Ua470iRd1MKKD8dkyHTE6o8v/vCRhH?= =?us-ascii?Q?bANsCus2gD4qC55ejmrGT9c1u9sM8hgScp0veWx4S53HE1dWYmR64gMG1vaw?= =?us-ascii?Q?frY0WRVvHsXOePHFan02Cu27GTdQHFQ9sFocskA9TB5gTLWIl06bqZWW4HBd?= =?us-ascii?Q?05FEXAMG2ERNX4NsSrpe9Sn+EI4W5oB9UySpA9At33a5lddmlEJ/40Z7YlWq?= =?us-ascii?Q?vwZlQJPuFrp58Wzf9qY9YIi9DmXXtFwXSfUNqWPGxIo6m6xcocsd1+oNNqCX?= =?us-ascii?Q?OrZ4CbAyxvDwHomjvwjBN47LLUgnFez5WVINRBBJhk5WnA1KAB4XdBvXjPMU?= =?us-ascii?Q?f6LNI8ZTU94C0HnvlN0/BvWejHmNzlqLYexqV3X0QkuFNirGqQtNGgAAMKlD?= =?us-ascii?Q?ZGkQsWZCA2HZ1qwpMEBOaB5knEhnidbd+tM3b3ivqSLrXWk1fQs2UjQrsyZl?= =?us-ascii?Q?+cPKZNA3PAx7hsopdLwj2aA2MAyw8hPBMKcNAK8rSIPE1CQRGAIFqT0U2qyP?= =?us-ascii?Q?zefhh7iE76tkzZTVV1gq?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c7a58273-7e15-458d-ffc8-08dbad3a60f5 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2023 11:30:45.1648 (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: AM8P250MB0017 Subject: [FFmpeg-devel] [PATCH 17/20] avformat/matroskadec: Factor generic parsing of audio tracks out X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt 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: Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 79 +++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 32 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 1bbdb6b980..7adb72aa23 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2734,6 +2734,50 @@ static int mka_parse_audio_codec(MatroskaTrack *track, AVCodecParameters *par, return 0; } +/* Performs the generic part of parsing an audio track. */ +static int mka_parse_audio(MatroskaTrack *track, AVStream *st, + AVCodecParameters *par, + const MatroskaDemuxContext *matroska, + AVFormatContext *s, int *extradata_offset) +{ + FFStream *const sti = ffstream(st); + int ret; + + ret = mka_parse_audio_codec(track, par, matroska, + s, extradata_offset); + if (ret) + return ret; + + par->codec_type = AVMEDIA_TYPE_AUDIO; + par->sample_rate = track->audio.out_samplerate; + // channel layout may be already set by codec private checks above + if (!av_channel_layout_check(&par->ch_layout)) { + par->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; + par->ch_layout.nb_channels = track->audio.channels; + } + if (!par->bits_per_coded_sample) + par->bits_per_coded_sample = track->audio.bitdepth; + if (par->codec_id == AV_CODEC_ID_MP3 || + par->codec_id == AV_CODEC_ID_MLP || + par->codec_id == AV_CODEC_ID_TRUEHD) + sti->need_parsing = AVSTREAM_PARSE_FULL; + else if (par->codec_id != AV_CODEC_ID_AAC) + sti->need_parsing = AVSTREAM_PARSE_HEADERS; + if (track->codec_delay > 0) { + par->initial_padding = av_rescale_q(track->codec_delay, + (AVRational){1, 1000000000}, + (AVRational){1, par->codec_id == AV_CODEC_ID_OPUS ? + 48000 : par->sample_rate}); + } + if (track->seek_preroll > 0) { + par->seek_preroll = av_rescale_q(track->seek_preroll, + (AVRational){1, 1000000000}, + (AVRational){1, par->sample_rate}); + } + + return 0; +} + /* Performs the codec-specific part of parsing a video track. */ static int mkv_parse_video_codec(MatroskaTrack *track, AVCodecParameters *par, const MatroskaDemuxContext *matroska, @@ -2959,7 +3003,6 @@ static int matroska_parse_tracks(AVFormatContext *s) AVCodecParameters *par; int extradata_offset = 0; AVStream *st; - FFStream *sti; char* key_id_base64 = NULL; /* Apply some sanity checks. */ @@ -3089,7 +3132,6 @@ static int matroska_parse_tracks(AVFormatContext *s) av_free(key_id_base64); return AVERROR(ENOMEM); } - sti = ffstream(st); par = st->codecpar; par->codec_id = codec_id; @@ -3133,8 +3175,8 @@ static int matroska_parse_tracks(AVFormatContext *s) st->time_base); if (track->type == MATROSKA_TRACK_TYPE_AUDIO) { - ret = mka_parse_audio_codec(track, par, matroska, - s, &extradata_offset); + ret = mka_parse_audio(track, st, par, matroska, + s, &extradata_offset); if (ret < 0) return ret; if (ret == SKIP_TRACK) @@ -3162,34 +3204,7 @@ static int matroska_parse_tracks(AVFormatContext *s) memcpy(par->extradata, src, extra_size); } - if (track->type == MATROSKA_TRACK_TYPE_AUDIO) { - par->codec_type = AVMEDIA_TYPE_AUDIO; - par->sample_rate = track->audio.out_samplerate; - // channel layout may be already set by codec private checks above - if (!av_channel_layout_check(&par->ch_layout)) { - par->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; - par->ch_layout.nb_channels = track->audio.channels; - } - if (!par->bits_per_coded_sample) - par->bits_per_coded_sample = track->audio.bitdepth; - if (par->codec_id == AV_CODEC_ID_MP3 || - par->codec_id == AV_CODEC_ID_MLP || - par->codec_id == AV_CODEC_ID_TRUEHD) - sti->need_parsing = AVSTREAM_PARSE_FULL; - else if (par->codec_id != AV_CODEC_ID_AAC) - sti->need_parsing = AVSTREAM_PARSE_HEADERS; - if (track->codec_delay > 0) { - par->initial_padding = av_rescale_q(track->codec_delay, - (AVRational){1, 1000000000}, - (AVRational){1, par->codec_id == AV_CODEC_ID_OPUS ? - 48000 : par->sample_rate}); - } - if (track->seek_preroll > 0) { - par->seek_preroll = av_rescale_q(track->seek_preroll, - (AVRational){1, 1000000000}, - (AVRational){1, par->sample_rate}); - } - } else if (par->codec_id == AV_CODEC_ID_WEBVTT) { + if (par->codec_id == AV_CODEC_ID_WEBVTT) { par->codec_type = AVMEDIA_TYPE_SUBTITLE; if (!strcmp(track->codec_id, "D_WEBVTT/CAPTIONS")) { -- 2.34.1 _______________________________________________ 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".