From patchwork Sat May 7 11:27:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35638 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2120920pzb; Sat, 7 May 2022 04:29:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtQSFqV88HoHjyZ9px8v8Q+tzv5QPbFte/QjBuhvbgUTiNo3/cGPXDk3O2ttkjpUAS9rS0 X-Received: by 2002:a05:6402:e99:b0:41d:11f2:85e0 with SMTP id h25-20020a0564020e9900b0041d11f285e0mr8074191eda.339.1651922953351; Sat, 07 May 2022 04:29:13 -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 dm8-20020a170907948800b006f39944bd6fsi6726882ejc.329.2022.05.07.04.29.12; Sat, 07 May 2022 04:29:13 -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=mBugoGB1; 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 1BBFF68B3BB; Sat, 7 May 2022 14:29:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2020.outbound.protection.outlook.com [40.92.91.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1AF3068B245 for ; Sat, 7 May 2022 14:28:57 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WsQJv/iUsBCg/rvOHY9bBy7ixEG2kcaBwCzjXA21Z+E5HcLoAJ3W0iPqll8EzqoRgGkhDLGUGmLb1PnwHgM2QmYDZ0t1jMZ2bKSFbOhiRBMxoAF6YTNEKwCSaA2N0TCIUXfhHuEO3mNEsubVSvuYVAU28U3sQeZRFIbdsiGuBqbbSX/y1bepYAnKvJtfDJ1AxybiJWwF2GCoMo8lWTjhlsbePif4lU4EHl3CLHoHO7YLYLmoWbkRGGutHsYEAdggjmZfw2ykgTHSnTCGF7emkpj4WIQfNUnOafyXMzbUSgjiE3BqFhp+tIdWtPpqh5VKpVij1WhSzzPsMCvjZQ5EnQ== 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=eXCw+XbPCOuPNlOh9WmrL984bUQKDTDA5Xpg228NlbA=; b=ambp6C/9GzbPXSTWVB/JZUku5fHaJnQ8hxQ29mLkjG1KGs9ye4IYArQU6xcdKtN4IKUA92mwBcnW3ACzr6EIBfdIaO4H7IY7rA5szNaaGyNevCZxNHU81G+Mn0hqP9jnhHvMmYC9QW3FTLH0e4aOsLe+tXELzrmRi9HTJcG8/lgWq0fgzxPsSs16ptnf5ge3OKH7FrjkJ8dmt6UOgDcZX9GIgIH7srP4xlaVOtM5tzqxxAtpCPLD8FdbqnMdCgXdQBqgqTtat0aMFZvk8kkr4HWwvG9hOO+jPGswzYyIgYPioeILPtvYmL/bOp5GGvRgzjHfzaLnIB7aN/DLwm7V8A== 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=eXCw+XbPCOuPNlOh9WmrL984bUQKDTDA5Xpg228NlbA=; b=mBugoGB1udWgK8DAMpLx8ThB3Ios0dSt7SXY4ZnlixPKNf7OWK4gBc5r0yco9er+k31WHNhuosJjnQRxeLj5w18QwqzSvESAufkEXb7jam/t9x3hopCmc+xRIMApRff3wuwF26lfhtoMcNIQuLHwW3CWeceYj6c0cGulhWUN2K0JHPANjnOLDtsYQ/nsyZvhfv8TM0uuhdd8BO5MnLcAtbLDEEyv6b5VCcjxq9C3VzIEU9tuGEv1UbMkdCcQMO10Ao4rRPzdjNyjxPAEPtkrNTyaSWXxEHPPPy8XC5fIDPrHua9oIY68dROamlLcQTEWqsOKm5gGlMPMTKXVPAj66Q== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR0102MB2663.eurprd01.prod.exchangelabs.com (2603:10a6:6:e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.21; Sat, 7 May 2022 11:28:55 +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:28:55 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:50 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [hPvqIesqoWTpftG2jHhKN2ChDzWYf24a] 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-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1eb0d610-a097-4468-75e0-08da301cc568 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwExdzMmImnJNRNv6NXfAt7fB5qkrJetG705VgDu9ABjBcitb5QYItjoLa8eG7gBSN9ZlaExYBjcjEOCuHf+4vH6v3TrK2k0qXocSGTT8rvKfg2MJVamwD3QSunk02t68tKk/wx6cpRT5ZDk31CLbCW/ENDfxFP2a72JIZRn4lpttUqzdRgUSOYlMeQwckGMJA2Ky4ovluv4uQvraS+M92U0uWSWyyoIGVsqvf/pOEyrG7+hLBWkn+piGHIfNRmegc8IsXhBx3zzQl3SkDgH5IEBqmDzoYIsC1FZRzt0oUTLCA5rKnYSlzuSOqxKV+34AGacFddtd00yZvwdob5nlmiUQ75iC0zylI8blWJlZNbg0Ouep3XgXWogRuNrQbdWxZxQUDGy18OBNBPWahvR5cyO0zjBMnFFOpswQKkXvT5EZjlpARabQg5k2iNngwyJ3ZMUjiW46oXP1nsISj5rJBpJ7sghg6c43NjSuxaLGDGswfXWMrb+5/ZYMXPMnc8AQ4c34A+WND3L9S20WSgQ0wjlaydtfpfrOoETOC0hn+D2kfLU2KYJfhUGCQghv7t2mN/TSwjAwjccm2leAA9NI00hiK8ODoxFeml2HHyWTDm5vVocAOmHjxPdXc0g9PmjxARwr1al74Qur723pSYdg0OHeCz+9K5DY9EUAoSeOtx8ZgWw2uW6fsE1r2k8qHjyKAT7lfjF00Jvq35Zg5ljj9eXz0zcjiKoKswnTPJf6yEZ8= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uL9KMv6uDBiVlgqmPkB2b2bvBad35EQT6Eys3QX+aDTXd1MI4VGdRbRNgSP+XXwhE/5lgbJTHWwkyUJ+SKRG8q7vjpE48Km2BQTSaWTTETeIsUqEGNwvqr+IREH6IHlARQP451EJSoYgQsVFwSGWqK/mNvcvVkFYly+Jp7wifCLRMmN0iaW+EboA0ON3bkKAiKnVWMiEKKHnSVLRcPiEOK9eSC00W1Fl0actZgxLGdmPZ8aUJgtQUPzIo7Xd9gBP8mn8LJoRkEkZ1jT4AMLpAGpe1i87J4UJGUVZI0dUeQjMTeuPuSc2oT8I/FjS0n2jHm6aw1QYKYINa8NNJB8cGpBZ8SzxxsPe+D7LcqCT8ppMDpPAtdrm4yktfFTntsvbW8hg2f9d3OgeogYPEA97aAjTTzK6hFbr2WP+7jpSgYHxVG9PCvqvlHZAC3gOrA+E4mgGtEQXGXfXMYE+JLbwqb6clh5tkqChlLIg2I0qkkmMzaJ0PQAy34LI2mb+FO1pHWY8X5qDr8Rv7soU/UOKKgWOmkaQlvqPGrho7AbezWz0p7c0p2wWX/z1YH71UOML6yaLoPloY9ARHQv9ABmEEgzCdUd6s9raotsxpvK3RYiGC2y9PPOh84SUe7IJUxTEd1jrJo1gUheYxjgGWCnCvQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZPNfJQB1E8R92Udj+RCb2zgpt7ot/0uM3uqfA3Q1MyD3Ya24aL7AvFeU9A59WgX0IspYrKrJ9cE18WDUR3E1RrcotsY1i3fW8Q7sLRiuwSrdACL8cuXDYewcWs82CRBN9+VcIHxXGMBs2mcC9V1jR0a8idd83e54+2VgsxG+JbHQR3uJY53p8ZcZzfIHkvOruMjigkjt8McRXeaL5lnX+islK+iDXAGXLQymvG/4PEAiXm5hVJaghKZGmnUwJasKrmcqvu9jaXK64SE9M5ljxPKK2UCozxWRfKZ5rqx5AWWCAJ9Cd08gGQfUms6HyALeMzbUbN8/Wp5SAu9Ex/6aTm3llwK5RsH/jjUPlaBi4f6gPfW/Zp3SGOuTv6nvFNsh3eOpyhF57cGhFbn4/f05ru9Xjd1g7TX0Vr9eM1kI7zG4DY0TWULjkcS2AJ4YzTMmP3bR29Ns5YXuELP7kWFTgpAqjxn+KznbnHlywiyoD7MV3q5McoDce8DVRJBuho0B+tLYrMdUmB77U6h5QqlzojRAnBasGCM2a5PIDT37aXWAPwWYEqBW1ma53Hr23KRykGhrrEtujZXdUn3cD6CmKCMBX1/iYJYjaJuPWqdBQeGSU83bPEJq+rpuWo0u/ETY/8egS9QhPAzFogKOOQAnQx+VGoLUYdG1CbR0VfEhOEysiuCd8/+mIRjp8IE4g1yrtaYORslEHm723yD7uHZOQVYxdZuuUuMC6bfri+f7dKOWw7FxhZ3RKTBMucR8yAYnj2kwE6Of5oJgGP6plw7IQbt217lHAf9PA5MksoF2XsgclaxxDOZ/ekMC2LjtjtK6T/rgnG+RjxkZFhEHdQYFe0ZO8FbReALDN52t/kDumgFOLV71N8ab6fiQ8QA4eQXI2i6rfeS/zA8Xt6gxKa0FI+cBrGyIsalHTaIraADaq81vAhFl/INw1/4BVebiLV1trwZNA9prQZNCIgFQcWDyavHzM/Vs5X1wHicDBV8vtAaPzzVUicwkv868Rdjpf840wW4MdPZzP/asTM+/G/Tgbvcd4p+3uw+c8bWkAzWP2RuhbLu9PIS8Jxqk3YbU+NqDUzyDnjql6GPq6HrhaXAVvjofn7RmqMZMhZg4K+EmelEIac3LgSHFRRCpU27/n8kmbgpEwBcPMJPydvWYfoKxverOLx/C13mbnMNA22/LEvjUskToilPLYDToVmHCNxTUxR1tc/9MvMqNgxRIarHBB/6VWxFWuFQk06EohetG/1a8JXcBrOzevSkuTeG7+mRnzjOf63eRHX5m2hJfiyl9vA9MDvc6iPLfH0UOPnDLNdoTlOR3g9R7UmYDaSKnay4SQmdHlGitVwcW8soxKdGPNmPvSIoVamzG4W7dG/l+csqdLjX2QG7abS89jWv3XLxhlhhti4yKjJB6eEYCrgE/AgBAKYbRW6w0vvgOUEaUf7vIQUNwZZ/SVZ8H4/vlWaV2Mez4nYlTQN03Y/6iSq4k7g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1eb0d610-a097-4468-75e0-08da301cc568 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:28:55.7708 (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: DB6PR0102MB2663 Subject: [FFmpeg-devel] [PATCH 04/44] avformat/mux: Move ff_choose_timebase to nutenc, its only user 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: 314P72ZBIJHN (This function does not seem to abide by its documentation.) Signed-off-by: Andreas Rheinhardt --- libavformat/internal.h | 9 --------- libavformat/mux.c | 15 --------------- libavformat/nutenc.c | 22 +++++++++++++++++++++- 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/libavformat/internal.h b/libavformat/internal.h index 5ffc26600a..715e3ce33f 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -765,15 +765,6 @@ int ff_is_intra_only(enum AVCodecID id); */ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags); -/** - * Chooses a timebase for muxing the specified stream. - * - * The chosen timebase allows sample accurate timestamps based - * on the framerate or sample rate for audio streams. It also is - * at least as precise as 1/min_precision would be. - */ -AVRational ff_choose_timebase(AVFormatContext *s, AVStream *st, int min_precision); - /** * Chooses a timebase for muxing the specified stream. */ diff --git a/libavformat/mux.c b/libavformat/mux.c index f1ae1c874e..cfcfa600df 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -89,21 +89,6 @@ static void frac_add(FFFrac *f, int64_t incr) f->num = num; } -AVRational ff_choose_timebase(AVFormatContext *s, AVStream *st, int min_precision) -{ - AVRational q; - - q = st->time_base; - - for (int j = 2; j < 14; j += 1 + (j > 2)) - while (q.den / q.num < min_precision && q.num % j == 0) - q.num /= j; - while (q.den / q.num < min_precision && q.den < (1<<24)) - q.den <<= 1; - - return q; -} - enum AVChromaLocation ff_choose_chroma_location(AVFormatContext *s, AVStream *st) { AVCodecParameters *par = st->codecpar; diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c index d8c35783ae..0cea1fabb3 100644 --- a/libavformat/nutenc.c +++ b/libavformat/nutenc.c @@ -36,6 +36,26 @@ #include "riff.h" #include "version.h" +/** + * Chooses a timebase for muxing the specified stream. + * + * The chosen timebase allows sample accurate timestamps based + * on the framerate or sample rate for audio streams. It also is + * at least as precise as 1/min_precision would be. + */ +static AVRational choose_timebase(AVFormatContext *s, AVStream *st, int min_precision) +{ + AVRational q = st->time_base; + + for (int j = 2; j < 14; j += 1 + (j > 2)) + while (q.den / q.num < min_precision && q.num % j == 0) + q.num /= j; + while (q.den / q.num < min_precision && q.den < (1<<24)) + q.den <<= 1; + + return q; +} + static int find_expected_header(AVCodecParameters *p, int size, int key_frame, uint8_t out[64]) { @@ -728,7 +748,7 @@ static int nut_write_header(AVFormatContext *s) if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->sample_rate) { time_base = (AVRational) {1, st->codecpar->sample_rate}; } else { - time_base = ff_choose_timebase(s, st, 48000); + time_base = choose_timebase(s, st, 48000); } avpriv_set_pts_info(st, 64, time_base.num, time_base.den);