From patchwork Sat May 7 11:28:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35668 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122941pzb; Sat, 7 May 2022 04:34:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw8I+3J4NtpDC+DC+ydYZHzV4SlbyfNh+AF2e6lm/XNLrxwY3KOsvx2DP2js+5g9yVI9HuU X-Received: by 2002:a50:eb87:0:b0:425:c3e2:17a9 with SMTP id y7-20020a50eb87000000b00425c3e217a9mr8239932edr.109.1651923290401; Sat, 07 May 2022 04:34:50 -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 z2-20020a50f142000000b00425c0e470e5si6638232edl.375.2022.05.07.04.34.46; Sat, 07 May 2022 04:34:50 -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=r4VCnn+g; 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 61B6768B4C6; Sat, 7 May 2022 14:30:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2093.outbound.protection.outlook.com [40.92.89.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 929A368B4BE for ; Sat, 7 May 2022 14:30:54 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XY9jM2fSQy/ONp9amrmh61Va3MtQT50mCyd2OBXT13M2IVms3K8OlkkFVxZxwp4tN7j/ZiW2ytD1KLGDwSQArgkPOy2ZWfUXdc/+RPvD/S59CIO5ynYL85a4LDb5W4BgDiLnMulwgJRnH60zQjH3JZrK2uw49KmTbgkj250kVjFN2M3Z3YCs6z3cQS2kb+HYmLet3vqztZE3DERaP8HaJtpsLU/h+iXEFZORXJPz+vyPW1pe0seDSPSb/l34ht/DLtAvAtMs0RNz+oUc2BmmCGd47UHmiOnQlwrX19i3s6SQEXsryej6lMVvuNNQLTU/MtoAhD831OdONjUb6RY7gQ== 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=ChWe6EvS3TlWMKaVlb1jfzmu1p/8QQ/ncNAPkSqlrOk=; b=YvoBVGaaCOPTtqIZ3rPmnNy6ReJMrdut3mPLojSoGfiQLX4AZWF67feLVkBim4hOwDsczEp7qSI677Cj5HkWcI5jrpzQmKkR78zkiZKM1OzHJ22OeysGxlfHpB4A1eExxw5ve4rp4jcr04/4CTPey+XX4PyWFPMUdwnPhhlTfnRcdQpmKi6H7t82yggdsD96KniO5An7LmBnTLwm6Ybgivsuy1p48KCQOV5TsjDllv6e/YmKnESdXt5zIehO5fSxrAP5uAMW/6jPVIN3ypsbNF4dwkcNb6D7UvYVxMRreX//1hpVdjp67XQr5G3Yc/G5xTwg0/y2qY45kfEb71u0+Q== 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=ChWe6EvS3TlWMKaVlb1jfzmu1p/8QQ/ncNAPkSqlrOk=; b=r4VCnn+gWInT6lLN70OzHPORja0d+IrnCb5XNC+3bL45jZnfrs1loOplCuUZl9u226gCsKMKbZGaoXF4TBbKqGEvpx6B+maTRk0KNPJAWLeWwe2ZlECpRZ1zXukMqK9YEqMGSw6Rh/AmXVOZ/8VVoYQ+zm3j7T1mR1W/gfF/9K767OMMONhIbK2U3CmTmpCD1+jRRfDv7WGjSYhOLwly5/rB82F/20g17PiZa9bZ0gW8/S21PuzSiUWTiW+6lAbzPVxS9xSDFrdHrkOeRc0pvxJLA80AeOpedeCTh49niY7ua14/infBmZfEbHT7JGQzmPsoPRfJgRnuu5gqEsA0Sw== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by AM6PR0102MB3128.eurprd01.prod.exchangelabs.com (2603:10a6:209:c::33) 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:52 +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:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:21 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [suIFkkeSUwH3VWll6RtBrxzRGmFWHUX5] 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-34-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 24cf78d3-6d24-4956-ac30-08da301d0a01 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwBd0ovWX5IIHexDTVvqG6XC0EerCQtDMybzztoFIlA8ROND6ZPCCTyBN2lQ9aU1vmmjcn+wWf7aopMYEsRL+eRLD/BkkD5tiye7M4eu/s2eGp2HuZJ8hjDVH9y5kSy9sor+8MtaJe4qvvj9XfyzvzXpdaSaiv/f3vfxR9i6y2s0/yOiDc7wMpfMkDaf7MQJUtd/PYufp0xL4FmEpIjmxTgQ6VoczVwgBdoeCvoRxOq1avp5Gk126H609qqycQ4DW5ulZ1v8RZsOQkYaDaB9OoImx40h3sE9xCa8X7g1JbCgrsc3uArKqB92Y1xkmzKYFzVIVf7TMPPGIr1FGscGaUOudBUpl+RFtJW4m6cAwmX4WwLF+fr+6KMRUyasCS/i8J9QxES7qSQLXqX/LRXIkeO8GxHtnrKGR61FyGRWbOJrTDyCLsq5QNXU5FQW4rZuvRohXBI155l+SZ0R96CiaYTKSU29c57XggLzWzNocO3QLYQeTYAAMtFjiUl6Kfg33k0xif9doz1/tWQiQLBKbNhQcRaDq+cTBQ8zNmOQtPirE4IFtvhf3auMVWjxI5WQGDsFP3SlRlEJnSPIGxQeEAidCd1Yzra6CFoC5f+c3XcR6/vNkt1rUI6XoHbLPu1gtm1kaQXTDttsTIY2VzbGqQ7YlRTl46TXLVnwi2Uq0h+utVNEm/a/sIbyR8LLMo2Bp6EoYlePhONWOjmRlH4Aynzte2Kt1j0W4+4apT9PTvxBU= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qC7+QygOo3IQ2kcjRF2MWZ3Sv4I4k/1aYw5dGoEaPUj5qp5OhwBgW7Xj8Z1KADJE79kJxwoaB2MAjqpJ6hYzlArZk0bbJdMe0twP/1Avs5whq8xh0JfI6Ec1jePY6bqF4mrdo4HlgDqegXMB4e010BghGqrruc/O2vWpLsZthqp5sqe5iJUYpYvIYVtNw6Z9Ps63rsNAuYu2fSgX9tfPXPFEcOzCXng/OMsdHf2n8e537ZzB6aE9yOGXhvV7VIM8HAUVeE8h1nS2z/lM35EovmHve5/dAhEGCRjNiKJxxXgX8sSv+aA3l9nl1X0SNdeVK1igZk6SuLqLVzqsGnrsLc+J6T4+IXd/VjCiKjKHbadStWDKC6Qv/T/kwkuhYZ/u9duVzSD9xExxSJOJWTubgkiWgUgtBoIh3/iFCVa5bUPtUvHWIYRskfges0DsXgh4pL5AASNZelZ0y4LIJs6JxafmzslAgG0K4/vFKuASxNLUBjVi2LP6JvSkf+18JJXTQhIXWBw0GVLk6CCFhVQ1IlRlbhuk7g1SongHIVI4TJQh+e9pDBFbcvvfOEqtZok+Zgbqu9nAsdcDbtdqROqPJTrvMkA4s7OWslOa/wqSwsEesLNMsML3Mw/vj50aYgnl X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: k14mTREAZtYpzBkN6QTj15u2mMn7phBMWaBTD53DX+Cng64Tj/qzzHgqJLgovluChfQE4nXxPXIlxm8VxxOPNGiAjLOQvgDMeaPlc8yctUnpx52gtZcaEwVS161ysE0YH0MQSVUhVGOyCDY2LMEM3U6po0N+52FZBS3puGD18QLlpbvjZ+HNURJthacAy5S8faPs++9h62GV6qVSH9cTBYoWP2bgWAsn8rkcxqiHELCorGpF3ymKWnl/vJsA7XTNUaeLTROjuDkjWAC+SOOkpn98ilgcFlQmDMMveB33YK1NzyLGh6H7wbIgAzblmBXqUduFP74D7qqg1Vwh4nDHN+K4wkySvTGrw09R0Mygn2YHtlPHbI+9kd0LiL5Bme3PSR88sjHU4O9cgRbgCwTPxVzPd/0HZc3p6u6ywg3D7JjfEtwytFi5/fe/PsRT+6Fyy86gc6fhUe6nIfDEyoI2r1FTzroEK7lwQSiyfkNpFRaJjP2y8aFg+M3yZI97HO3UERwazRaXllg4U3PzRC89tkr7XAMwrb9TehKSlMOseXT9CISS8VexSMght3lz9ttfw0NqRwuk4paH0dCg8GlIV6SzaHW+ijHpMlvYAR2i1OnFC+Z83kYnAhJxAvsES+YRHi2Pv8rKZz6X5OmVAV2u/x1F7dXp6x3djTL6A0NPbbI52DWFbWzUDMg5V/VAqDVdN6Rx9doGbD6NU2CN9I+w1X/ttSkA9KtVoxLC7V6osuq6iVTSUrJLTqilndzd1BeAnvi36Xm3c9dPyP1kN+WQq5TqDaIwOKKZhaIMUeK2kLXG8K7OCAatIKpy6YxUNfzMJ8Vd60inyanNEUG0gvSRiRs+Exm7zQqZYAL9QXWL5H6sFMDxYbynfi4E1ag5aOvLqYKY7EThQ2lvsiyyPaeFYmLvqRzuc2bblSp0xrLKa3xEVQuBFLaUFyIyL73aicJ6K1lsB0aEJn0GP1nLddhX1bonVtCnKI2wxbHlKBPecXlCbxw0dHGuL+Np11PzE6QKEYqj2nVUATp1fDxxg4ctdV2eYU73XaSpfb2vJ32RMRVBOff3z9GrKuyMQx44AKQu+BXeo6Eg62fva8HVdJbhdsyz5kPWkrpsPqqUMuVs9JLfUzusT0xQUuvhkoodXAk3yW3zODLNTSxS2iQw8iSDvxbebNURQg6AZPFgkxt5a1PW34mAI5Ai0CZ+CWgZSNRuCDI7ppysKJPqki3Cz1G6pt9k9Rulz0BxUDo2eyXj42NNNMz3GLCEjJYhrk2T9h2RBtoCi88WDRxLI6Io7N04tNL/bzlNwpXeXl5OC3AhOXTTQ0OwFAtOLXk6v2q2cjFVG1Qbp/qMpGEfv0lZDxFhG7rE9DW94Ks9NNEiEFenvvuS1XW7ivJiwXeSE1zA0T5tu9k6YfqMXBXUL4kmgKqNh6t3Pi5dp+JRlPPo02W/rI23xAQZ+gy6cdJkCLwlcWaf X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24cf78d3-6d24-4956-ac30-08da301d0a01 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:50.8287 (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: AM6PR0102MB3128 Subject: [FFmpeg-devel] [PATCH 35/44] avformat/utils: Move av_find_default_stream_index to avformat.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: uxXE0o9hXHIU While it is clearly written with demuxers in mind, it is not forbidden to call it with muxers, hence avformat.c and not demux_utils.c. Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 36 ++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 36 ------------------------------------ 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index e3dad1f9a5..2b012a903f 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -276,6 +276,42 @@ AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int return NULL; } +int av_find_default_stream_index(AVFormatContext *s) +{ + int best_stream = 0; + int best_score = INT_MIN; + + if (s->nb_streams <= 0) + return -1; + for (unsigned i = 0; i < s->nb_streams; i++) { + const AVStream *const st = s->streams[i]; + const FFStream *const sti = cffstream(st); + int score = 0; + if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { + if (st->disposition & AV_DISPOSITION_ATTACHED_PIC) + score -= 400; + if (st->codecpar->width && st->codecpar->height) + score += 50; + score+= 25; + } + if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) { + if (st->codecpar->sample_rate) + score += 50; + } + if (sti->codec_info_nb_frames) + score += 12; + + if (st->discard != AVDISCARD_ALL) + score += 200; + + if (score > best_score) { + best_score = score; + best_stream = i; + } + } + return best_stream; +} + /** * Matches a stream specifier (but ignores requested index). * diff --git a/libavformat/utils.c b/libavformat/utils.c index e500d35d83..b448f7b9cd 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -181,42 +181,6 @@ int ff_is_intra_only(enum AVCodecID id) return 1; } -int av_find_default_stream_index(AVFormatContext *s) -{ - int best_stream = 0; - int best_score = INT_MIN; - - if (s->nb_streams <= 0) - return -1; - for (unsigned i = 0; i < s->nb_streams; i++) { - const AVStream *const st = s->streams[i]; - const FFStream *const sti = cffstream(st); - int score = 0; - if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { - if (st->disposition & AV_DISPOSITION_ATTACHED_PIC) - score -= 400; - if (st->codecpar->width && st->codecpar->height) - score += 50; - score+= 25; - } - if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) { - if (st->codecpar->sample_rate) - score += 50; - } - if (sti->codec_info_nb_frames) - score += 12; - - if (st->discard != AVDISCARD_ALL) - score += 200; - - if (score > best_score) { - best_score = score; - best_stream = i; - } - } - return best_stream; -} - /*******************************************************/ unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id)