From patchwork Fri May 6 10:31:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35617 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp1585505pzb; Fri, 6 May 2022 03:32:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx6U1oR4z6TAnfqfKlRkWIBOyUwZ9KvM5AcHQtCT/n3O/OLkMLLKdOCkFmaYww1ij8hLfC8 X-Received: by 2002:a17:906:3101:b0:6d6:5b64:906f with SMTP id 1-20020a170906310100b006d65b64906fmr2248286ejx.513.1651833125975; Fri, 06 May 2022 03:32:05 -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 v1-20020a50c401000000b0041d70e6ea5bsi3871380edf.533.2022.05.06.03.32.04; Fri, 06 May 2022 03:32:05 -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=tDiJ+n4o; 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 392FF68B278; Fri, 6 May 2022 13:32:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075068.outbound.protection.outlook.com [40.92.75.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0CD4C68B278 for ; Fri, 6 May 2022 13:31:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R31VgPG+M+P+Z0pL3WVQ7xP/tYwIhsBIs2ng/M/+9+9Q4cFrPnawswp3FBOERpzgO3zRWywIxEpnCU/CWTg0/zGG4NZZt1URFmp3qsCjLR1ZNGAuSV/mV/Z1KKNXkTIyB30gPj/aARw1G7fOahtOs5YQOsKCzJm5UJunFN6VpfWO1ONUy7UqISXXQJFHrTL6rv3IASGh9eeG1LpvLIqlCL8t5P84yb7uanHcqzsERxIf8nVlh84dKrcyQhE/Mfdfe1m6fOOo5MCc8kiADTLdIe9NbdbDOBtJ9gh/fQaeSyOv9z64zxkoQFMQoVrE1LGXjMgIEoQbl0xDThQ4BSHyhg== 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=IMp5H6PhC4PGyg7ES1G16JAyg/BBkpRk3Fid4ocfzGA=; b=mTYmebUkE0RH/qgzZ+QTN5iJKTZm3WXL1Q4nOEytH6k7QfEG9vQu8pHau49GgLCA1W8FiW7JuT1PrD5JtZj5EL9j5TI89epHvSZVNCgaTsstzjTdR8oibcHKgn4V45Cym+ow0sXq3gSHu9Iz+FpqZjvMOAO+FnPGVcT9rC+qHxfKJtV92jqfJPU/9JP5Ze5KSA/VLQnAskoSTHKIzeHrJyUb/UWJD8V/ROvIdBGE6+wdgnRqzMmEhCFMTxDXvGmwniEUduo5IudF9UGT00iK4LO7Kgyk09gKkQpvssrfULoIFu9y6VVhbEjSWMwPGgEorWJbKhP0AnhQWuqRUE1YOg== 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=IMp5H6PhC4PGyg7ES1G16JAyg/BBkpRk3Fid4ocfzGA=; b=tDiJ+n4oFmheeM1yfeuEJ1LTUbkQyx5Rh6oG3mqjtOI+W7+hEyK42DSt39BNWhklq9sfHfco4pddlRqeGXdmeZfLoKhRrEgTbwpapzyNRz959s9aFzU9NlI4LIif4D27kW59//NDneQXKXS8dSVEMTARJSgt5oMklVgzhWZMExehWa89nbFBfHF5QeuxHiYtg+oTS6PZQDOmDbBi2hUYOoiojQWuz7MZ+9OxnFkQ5o+uwSRTV9xQMi9GJWj/NoZBXN6E0wr6BjE1d9MrdcUTQL/qIXauhGSWytn7GUwGYSrvpcp1US2ixxwqcwedbWb/xbKJifPinPzJObrJazznRQ== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by PAXPR01MB8884.eurprd01.prod.exchangelabs.com (2603:10a6:102:2ba::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.25; Fri, 6 May 2022 10:31:50 +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; Fri, 6 May 2022 10:31:50 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 6 May 2022 12:31:35 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 X-TMN: [d1PpiNAd9hrGMK2hcfWEUJYvxrn/OdMb] X-ClientProxiedBy: ZR0P278CA0083.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:22::16) To AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) X-Microsoft-Original-Message-ID: <20220506103135.116363-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eb3202d4-723c-48ae-25db-08da2f4b9da9 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNV5xbDn+Qw+qpR/iYrwAecbfWnEA0sqNpYrnuDPXPLZVT9tN4cWurEuum9KPYEXDdC/8FbMe3uYVI0eMUCnxJCp9pCeVwK02DpY6O/4iCI8f+0dNO/mGfyGrPcMml+YJEiy1iA67HdOwUVShZqK2S3Z82+texf1kKdoGLUCgCcEoJXth7gUT+TiAaaGebY+MCrxAN7hfAcrhP37MJiEX+0vR/kDRGV8P842B4iyWKdSY8I3hA0JoGT2fNi4gsqkTXQXhTNHYLCVpQgrqmWlOygf0d2sDeyRQTk0BJVnJMeFU74nKwCdi3kPsigFgThXRJ7wCXe9SV9UB11wOcjkt/VO+T0h7yiG8LT90az28Z23Tx+A5i+1YoSHMQdHcVswWW8jR3EA5xhpI4WoZNYU+U/z3wcviWYBmCAMJ/1THYdxMXsiX/Xj0ZBW6NJjErY1wOJYEebUi3IgjFOKqB2wc4rxAWhUQ5mgCFPu/owKR37ZZErFfXNdL9s/ilvXkv9hUNaNOaTSUP+tt09LrrHzE0VUBHZBQxa5K2gtvR1KeuU+slEORnoN2RAcRsUoPEjO2oZIbiSaHZA3cXrpSd3MPyrFPzRD+zqCLm03+29x+lhE30BbM9fn9SZGMwf/0aEIBMwL6jLsYDRxN87DHgXq984ciUyukhgteDEP7Y3n3/eLow5o75wLbJ/hn7xoWyHfyoN293xa8fNdwsOsHReA4MZdd+ODsS0H5l4= X-MS-TrafficTypeDiagnostic: PAXPR01MB8884:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cGuVUknrpe4uYJjTh6QPXm9Ki8NtMuoFybtb2E6YpzMNd+LZKJqaLtGHyDGAO1wmsnREM1nSQEEgXNvGesVV1xkbWpmgHukl5r44EQZpqRoIgGw149vT88Y3tc6y7i+OkcBEj8ZmeEobjphHctIxhG45CgHWIGiY4Tb3qgvdgn1jRLz6Z0EnoxLDW05V07mmHHxWAkGhcn5eykfGmuxVMM5y+z8oxtZbdbfsulYF+MzUcD+0a+GRw0h/2oEppyWxUSLEihubqon5ISWK+E5fS1wI3BoV02XeHCB3KnPZNQ7WusuhxhD1XXBiONJ0ABl2TCQrwo+N1FBr8Z23m9IDMwkgQksGVfJEoy72cH+KpKHffalB3PlUP/tJHiNUJd8lTTOoz4AoYAsexRJo++MZApIZpFjlRITal2ryCUI3UsQJJH3kdtAaVLfSQHprkZsPW2DDY1opbPNioqf6lJL3jefJF6L1h73XoWdrvWawmFcflnN96MM3urQ8Do6mU82vmPhxrRGtD7vLGb4lDURnPrpO/KE2c4CAbPFZgCFCdhKUO89WZvmM2HtfxbajfbOj5+STMymAgarpl1K8W+aw0IZBbudfLuZY0CJrNcFerj/51eRpII1kEOKrABBSh+RRpWH6mkgoa4FO6TwS5SA28A== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /tkEnMnILURAbebJP07RzAMJiHQB++fSJbQ4N0HzimwcapK+FVwY/OEKvYVJmlz3NwZXGaaTgYNL8BbwwVx3MVWtVsB15j7DD0aGbqHmuUmdJRBYg0EWaGwg+BdFOeZPEGaIt/texcYX8/wZA0+bx29YSkySpz+AWM6s4q0JbLatdkJ/r4jgBnjKMzyOI6hJxlro2vC0nCUqEr8rLFb0fM/qB3sRmuPMUvEF64Y3CU+3SWr/cTeiGI9uZfl9gUxEwKn8v/+AP4ywTdIkirRivOxeVMz5UxYTXeq4S16Ci8ifHEjaLVmcBn5gioW4LKhI9O6bWpofm/8S5f2rS99z6q3MmHVXeY2oyiHy2W/l4Gw8UT/M0csKz7lt7Ng9ofuIzeS0bpHPOEnwQU5LDkM5ow9AFEIGdWD2fS0bpEd+k5+zfw0IqayBNTZ1UaDsXly8EzygKlmS63kcIRU3WKWeDJ34ga5xoqPTDPNZCnVVFVmH2HSZcCjJH8OkP5B04yIwbKqupxevbk6rDZ4krwd4t8+0VeKsK7ZjjtSkGK8FkvIdfrf1tAvFkSaX6NenNvL/HtNm1zKyAJTBs18/k9dxD5z0NPy1IteoXe4ws2uiwjzIjVj+TKeiG6s3J5DJm5GEAdQxAKNDz8EhNTSlyOxEoR8pc1sP+JTQwWTfOwID2b9kaUw1jS6/Axhwjyyqh9S4+8Nz470H2A+8jcpsNvBZXEmxR85PJyvdbDialGlxzB2B6K7+p/T57ORccG2nrfyFNmQf5K1UcIdpJvpwFOJxN00cDO8hCCdsPuYZQCf9Rw7gwDb1BG3/cXTzzYpoV+c+/qa6YHpHME7K80xDpu5Cm5dGIKCDtsRpZuoEXPgXnkZRICGBNXnMKgz3wmXUiUsBK/8tKhTPgHqqIgQ51CaF2DmNGChtTBiW1TwlVfszLgPahbWsluEfFbS1fbm+Fmq1qlGijsJyxqdndtdWJ6QW0OCWHwTV2ukUOP1tG2BS3FqiLDrSFLX1HvvFo2bjTMMCri0eI0TxDItzxIS1A2TPrHutUcIG5oag9Sj2cu9W8v1n0SjIgJC8vYmmGMgEqGLaSuBC4dc9Fm7gdX2EeIJSzPMXQkO/5gDmwu4gxzhM2ID34XCcNfQcSD3J167rpSAr4L9cIkCFuDfR0sQ58ybmmaaroxDbyV/uyPztrIa9LZZb6aTxg+jzDfxJWCC09HpA3jh6sJmkfwyUWAsAyMiuNH1CsXKeS8UqBhFf+hVKU7meZBJH6qGwmuRpy3apaf68xza8q6Fd5wovhlmy0wtPhT1Rh+yfZIEtC0fMeynHUWHJANONfF5F9MSY6KUFa0HrBjyhel21GypTN//JY/r3HsRgV5zbLce252PF3vSIXQ9H3Aq5VnB6IpTkITvvw4+1fxrNuC04hYzgcIqUz35pwqNcfG4tr77HuvGqnsMz5xHuuQxpqHkE0ieJ2CNt31Gl0wTIb5C37egHmznS/RzAYQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb3202d4-723c-48ae-25db-08da2f4b9da9 X-MS-Exchange-CrossTenant-AuthSource: AS8PR01MB7944.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2022 10:31:50.2403 (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: PAXPR01MB8884 Subject: [FFmpeg-devel] [PATCH] lib*/version: Move library version functions into files of their own 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: Cd029H6WJ9XH This avoids having to rebuild big files every time FFMPEG_VERSION changes (which it does with every commit). Signed-off-by: Andreas Rheinhardt --- Makefile | 4 ++- ffbuild/common.mak | 2 -- libavcodec/Makefile | 1 + libavcodec/avcodec.c | 25 -------------- libavcodec/version.c | 50 +++++++++++++++++++++++++++ libavdevice/Makefile | 1 + libavdevice/avdevice.c | 24 ------------- libavdevice/version.c | 45 ++++++++++++++++++++++++ libavfilter/Makefile | 1 + libavfilter/avfilter.c | 23 ------------ libavfilter/version.c | 44 +++++++++++++++++++++++ libavformat/Makefile | 1 + libavformat/utils.c | 21 ----------- libavformat/version.c | 45 ++++++++++++++++++++++++ libavutil/Makefile | 1 + libavutil/utils.c | 43 ----------------------- libavutil/version.c | 71 ++++++++++++++++++++++++++++++++++++++ libpostproc/Makefile | 3 +- libpostproc/postprocess.c | 21 ----------- libpostproc/version.c | 44 +++++++++++++++++++++++ libswresample/Makefile | 1 + libswresample/swresample.c | 21 ----------- libswresample/version.c | 45 ++++++++++++++++++++++++ libswscale/Makefile | 1 + libswscale/utils.c | 20 ----------- libswscale/version.c | 41 ++++++++++++++++++++++ 26 files changed, 397 insertions(+), 202 deletions(-) create mode 100644 libavcodec/version.c create mode 100644 libavdevice/version.c create mode 100644 libavfilter/version.c create mode 100644 libavformat/version.c create mode 100644 libavutil/version.c create mode 100644 libpostproc/version.c create mode 100644 libswresample/version.c create mode 100644 libswscale/version.c diff --git a/Makefile b/Makefile index 48cfb6e240..f38b521765 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,8 @@ vpath %/fate_config.sh.template $(SRC_PATH) TESTTOOLS = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 audiomatch HOSTPROGS := $(TESTTOOLS:%=tests/%) doc/print_options +ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale swresample + # $(FFLIBS-yes) needs to be in linking order FFLIBS-$(CONFIG_AVDEVICE) += avdevice FFLIBS-$(CONFIG_AVFILTER) += avfilter @@ -113,7 +115,7 @@ include $(SRC_PATH)/fftools/Makefile include $(SRC_PATH)/doc/Makefile include $(SRC_PATH)/doc/examples/Makefile -libavcodec/avcodec.o libavformat/utils.o libavdevice/avdevice.o libavfilter/avfilter.o libavutil/utils.o libpostproc/postprocess.o libswresample/swresample.o libswscale/utils.o : libavutil/ffversion.h +$(ALLFFLIBS:%=lib%/version.o): libavutil/ffversion.h $(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF) ifeq ($(STRIPTYPE),direct) diff --git a/ffbuild/common.mak b/ffbuild/common.mak index 42f7b23641..24113c59eb 100644 --- a/ffbuild/common.mak +++ b/ffbuild/common.mak @@ -29,8 +29,6 @@ $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR)))) $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL)) endif -ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale swresample - # NASM requires -I path terminated with / IFLAGS := -I. -I$(SRC_LINK)/ CPPFLAGS := $(IFLAGS) $(CPPFLAGS) diff --git a/libavcodec/Makefile b/libavcodec/Makefile index cfaa6f196a..1b60e0e1d4 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -56,6 +56,7 @@ OBJS = ac3_parser.o \ qsv_api.o \ raw.o \ utils.o \ + version.o \ vlc.o \ vorbis_parser.o \ xiph.o \ diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index d11f035481..8afb6cd62e 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -40,31 +40,6 @@ #include "frame_thread_encoder.h" #include "internal.h" #include "thread.h" -#include "version.h" - -#include "libavutil/ffversion.h" -const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION; - -unsigned avcodec_version(void) -{ - av_assert0(AV_CODEC_ID_PCM_S8_PLANAR==65563); - av_assert0(AV_CODEC_ID_ADPCM_G722==69660); - av_assert0(AV_CODEC_ID_SRT==94216); - av_assert0(LIBAVCODEC_VERSION_MICRO >= 100); - - return LIBAVCODEC_VERSION_INT; -} - -const char *avcodec_configuration(void) -{ - return FFMPEG_CONFIGURATION; -} - -const char *avcodec_license(void) -{ -#define LICENSE_PREFIX "libavcodec license: " - return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; -} int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size) { diff --git a/libavcodec/version.c b/libavcodec/version.c new file mode 100644 index 0000000000..d7966b2015 --- /dev/null +++ b/libavcodec/version.c @@ -0,0 +1,50 @@ +/* + * Version functions. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "libavutil/avassert.h" +#include "avcodec.h" +#include "codec_id.h" +#include "version.h" + +#include "libavutil/ffversion.h" +const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION; + +unsigned avcodec_version(void) +{ + av_assert0(AV_CODEC_ID_PCM_S8_PLANAR==65563); + av_assert0(AV_CODEC_ID_ADPCM_G722==69660); + av_assert0(AV_CODEC_ID_SRT==94216); + av_assert0(LIBAVCODEC_VERSION_MICRO >= 100); + + return LIBAVCODEC_VERSION_INT; +} + +const char *avcodec_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char *avcodec_license(void) +{ +#define LICENSE_PREFIX "libavcodec license: " + return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; +} diff --git a/libavdevice/Makefile b/libavdevice/Makefile index 99fea7133a..bbe2f69dcc 100644 --- a/libavdevice/Makefile +++ b/libavdevice/Makefile @@ -8,6 +8,7 @@ HEADERS = avdevice.h \ OBJS = alldevices.o \ avdevice.o \ utils.o \ + version.o \ OBJS-$(HAVE_LIBC_MSVCRT) += file_open.o diff --git a/libavdevice/avdevice.c b/libavdevice/avdevice.c index 833d200054..b4fb272eb6 100644 --- a/libavdevice/avdevice.c +++ b/libavdevice/avdevice.c @@ -17,15 +17,8 @@ */ #include "libavutil/avassert.h" -#include "libavutil/samplefmt.h" -#include "libavutil/pixfmt.h" #include "avdevice.h" #include "internal.h" -#include "config.h" -#include "version.h" - -#include "libavutil/ffversion.h" -const char av_device_ffversion[] = "FFmpeg version " FFMPEG_VERSION; #if FF_API_DEVICE_CAPABILITIES const AVOption av_device_capabilities[] = { @@ -33,23 +26,6 @@ const AVOption av_device_capabilities[] = { }; #endif -unsigned avdevice_version(void) -{ - av_assert0(LIBAVDEVICE_VERSION_MICRO >= 100); - return LIBAVDEVICE_VERSION_INT; -} - -const char * avdevice_configuration(void) -{ - return FFMPEG_CONFIGURATION; -} - -const char * avdevice_license(void) -{ -#define LICENSE_PREFIX "libavdevice license: " - return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; -} - int avdevice_app_to_dev_control_message(struct AVFormatContext *s, enum AVAppToDevMessageType type, void *data, size_t data_size) { diff --git a/libavdevice/version.c b/libavdevice/version.c new file mode 100644 index 0000000000..92d7f2d159 --- /dev/null +++ b/libavdevice/version.c @@ -0,0 +1,45 @@ +/* + * Version functions. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "libavutil/avassert.h" +#include "avdevice.h" +#include "version.h" + +#include "libavutil/ffversion.h" +const char av_device_ffversion[] = "FFmpeg version " FFMPEG_VERSION; + +unsigned avdevice_version(void) +{ + av_assert0(LIBAVDEVICE_VERSION_MICRO >= 100); + return LIBAVDEVICE_VERSION_INT; +} + +const char * avdevice_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char * avdevice_license(void) +{ +#define LICENSE_PREFIX "libavdevice license: " + return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; +} diff --git a/libavfilter/Makefile b/libavfilter/Makefile index 41bab96aab..ee2ea51e69 100644 --- a/libavfilter/Makefile +++ b/libavfilter/Makefile @@ -20,6 +20,7 @@ OBJS = allfilters.o \ framequeue.o \ graphdump.o \ graphparser.o \ + version.o \ video.o \ OBJS-$(HAVE_THREADS) += pthread.o diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index a6d486bd66..a987dfe7b4 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -29,10 +29,8 @@ #include "libavutil/hwcontext.h" #include "libavutil/internal.h" #include "libavutil/opt.h" -#include "libavutil/pixdesc.h" #include "libavutil/rational.h" #include "libavutil/samplefmt.h" -#include "libavutil/thread.h" #define FF_INTERNAL_FIELDS 1 #include "framequeue.h" @@ -43,10 +41,6 @@ #include "formats.h" #include "framepool.h" #include "internal.h" -#include "version.h" - -#include "libavutil/ffversion.h" -const char av_filter_ffversion[] = "FFmpeg version " FFMPEG_VERSION; static void tlog_ref(void *ctx, AVFrame *ref, int end) { @@ -75,23 +69,6 @@ static void tlog_ref(void *ctx, AVFrame *ref, int end) ff_tlog(ctx, "]%s", end ? "\n" : ""); } -unsigned avfilter_version(void) -{ - av_assert0(LIBAVFILTER_VERSION_MICRO >= 100); - return LIBAVFILTER_VERSION_INT; -} - -const char *avfilter_configuration(void) -{ - return FFMPEG_CONFIGURATION; -} - -const char *avfilter_license(void) -{ -#define LICENSE_PREFIX "libavfilter license: " - return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; -} - void ff_command_queue_pop(AVFilterContext *filter) { AVFilterCommand *c= filter->command_queue; diff --git a/libavfilter/version.c b/libavfilter/version.c new file mode 100644 index 0000000000..db1a2511e7 --- /dev/null +++ b/libavfilter/version.c @@ -0,0 +1,44 @@ +/* + * Version functions. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "libavutil/avassert.h" +#include "avfilter.h" +#include "version.h" + +#include "libavutil/ffversion.h" +const char av_filter_ffversion[] = "FFmpeg version " FFMPEG_VERSION; + +unsigned avfilter_version(void) +{ + av_assert0(LIBAVFILTER_VERSION_MICRO >= 100); + return LIBAVFILTER_VERSION_INT; +} + +const char *avfilter_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char *avfilter_license(void) +{ +#define LICENSE_PREFIX "libavfilter license: " + return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; +} diff --git a/libavformat/Makefile b/libavformat/Makefile index f16634a418..537f5a1124 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -25,6 +25,7 @@ OBJS = allformats.o \ seek.o \ url.o \ utils.o \ + version.o \ OBJS-$(HAVE_LIBC_MSVCRT) += file_open.o diff --git a/libavformat/utils.c b/libavformat/utils.c index 3f253c2045..19f5ae720c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -46,10 +46,6 @@ #if CONFIG_NETWORK #include "network.h" #endif -#include "version.h" - -#include "libavutil/ffversion.h" -const char av_format_ffversion[] = "FFmpeg version " FFMPEG_VERSION; static AVMutex avformat_mutex = AV_MUTEX_INITIALIZER; @@ -58,23 +54,6 @@ static AVMutex avformat_mutex = AV_MUTEX_INITIALIZER; * various utility functions for use within FFmpeg */ -unsigned avformat_version(void) -{ - av_assert0(LIBAVFORMAT_VERSION_MICRO >= 100); - return LIBAVFORMAT_VERSION_INT; -} - -const char *avformat_configuration(void) -{ - return FFMPEG_CONFIGURATION; -} - -const char *avformat_license(void) -{ -#define LICENSE_PREFIX "libavformat license: " - return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; -} - int ff_lock_avformat(void) { return ff_mutex_lock(&avformat_mutex) ? -1 : 0; diff --git a/libavformat/version.c b/libavformat/version.c new file mode 100644 index 0000000000..5f321d847e --- /dev/null +++ b/libavformat/version.c @@ -0,0 +1,45 @@ +/* + * Version functions. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "libavutil/avassert.h" +#include "avformat.h" +#include "version.h" + +#include "libavutil/ffversion.h" +const char av_format_ffversion[] = "FFmpeg version " FFMPEG_VERSION; + +unsigned avformat_version(void) +{ + av_assert0(LIBAVFORMAT_VERSION_MICRO >= 100); + return LIBAVFORMAT_VERSION_INT; +} + +const char *avformat_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char *avformat_license(void) +{ +#define LICENSE_PREFIX "libavformat license: " + return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; +} diff --git a/libavutil/Makefile b/libavutil/Makefile index 81df3b0640..234de62a4b 100644 --- a/libavutil/Makefile +++ b/libavutil/Makefile @@ -174,6 +174,7 @@ OBJS = adler32.o \ tx_float.o \ tx_double.o \ tx_int32.o \ + version.o \ video_enc_params.o \ film_grain_params.o \ diff --git a/libavutil/utils.c b/libavutil/utils.c index ea9b5097b8..94d247bbee 100644 --- a/libavutil/utils.c +++ b/libavutil/utils.c @@ -19,55 +19,12 @@ #include "config.h" #include "avutil.h" #include "avassert.h" -#include "samplefmt.h" -#include "internal.h" /** * @file * various utility functions */ -#include "libavutil/ffversion.h" -const char av_util_ffversion[] = "FFmpeg version " FFMPEG_VERSION; - -const char *av_version_info(void) -{ - return FFMPEG_VERSION; -} - -unsigned avutil_version(void) -{ - av_assert0(AV_SAMPLE_FMT_DBLP == 9); - av_assert0(AVMEDIA_TYPE_ATTACHMENT == 4); - av_assert0(AV_PICTURE_TYPE_BI == 7); - av_assert0(LIBAVUTIL_VERSION_MICRO >= 100); - av_assert0(HAVE_MMX2 == HAVE_MMXEXT); - - av_assert0(((size_t)-1) > 0); // C guarantees this but if false on a platform we care about revert at least b284e1ffe343d6697fb950d1ee517bafda8a9844 - - if (av_sat_dadd32(1, 2) != 5) { - av_log(NULL, AV_LOG_FATAL, "Libavutil has been built with a broken binutils, please upgrade binutils and rebuild\n"); - abort(); - } - - if (llrint(1LL<<60) != 1LL<<60) { - av_log(NULL, AV_LOG_ERROR, "Libavutil has been linked to a broken llrint()\n"); - } - - return LIBAVUTIL_VERSION_INT; -} - -const char *avutil_configuration(void) -{ - return FFMPEG_CONFIGURATION; -} - -const char *avutil_license(void) -{ -#define LICENSE_PREFIX "libavutil license: " - return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; -} - const char *av_get_media_type_string(enum AVMediaType media_type) { switch (media_type) { diff --git a/libavutil/version.c b/libavutil/version.c new file mode 100644 index 0000000000..b0f4f94a7a --- /dev/null +++ b/libavutil/version.c @@ -0,0 +1,71 @@ +/* + * Version functions. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#include "config.h" +#include "avassert.h" +#include "avutil.h" +#include "common.h" +#include "libm.h" +#include "log.h" +#include "samplefmt.h" +#include "version.h" + +#include "libavutil/ffversion.h" +const char av_util_ffversion[] = "FFmpeg version " FFMPEG_VERSION; + +const char *av_version_info(void) +{ + return FFMPEG_VERSION; +} + +unsigned avutil_version(void) +{ + av_assert0(AV_SAMPLE_FMT_DBLP == 9); + av_assert0(AVMEDIA_TYPE_ATTACHMENT == 4); + av_assert0(AV_PICTURE_TYPE_BI == 7); + av_assert0(LIBAVUTIL_VERSION_MICRO >= 100); + av_assert0(HAVE_MMX2 == HAVE_MMXEXT); + + av_assert0(((size_t)-1) > 0); // C guarantees this but if false on a platform we care about revert at least b284e1ffe343d6697fb950d1ee517bafda8a9844 + + if (av_sat_dadd32(1, 2) != 5) { + av_log(NULL, AV_LOG_FATAL, "Libavutil has been built with a broken binutils, please upgrade binutils and rebuild\n"); + abort(); + } + + if (llrint(1LL<<60) != 1LL<<60) { + av_log(NULL, AV_LOG_ERROR, "Libavutil has been linked to a broken llrint()\n"); + } + + return LIBAVUTIL_VERSION_INT; +} + +const char *avutil_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char *avutil_license(void) +{ +#define LICENSE_PREFIX "libavutil license: " + return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; +} diff --git a/libpostproc/Makefile b/libpostproc/Makefile index f7debb8eeb..d3f3b27f35 100644 --- a/libpostproc/Makefile +++ b/libpostproc/Makefile @@ -6,7 +6,8 @@ HEADERS = postprocess.h \ version.h \ version_major.h \ -OBJS = postprocess.o +OBJS = postprocess.o \ + version.o \ # Windows resource file SLIBOBJS-$(HAVE_GNU_WINDRES) += postprocres.o diff --git a/libpostproc/postprocess.c b/libpostproc/postprocess.c index b954dc2eaa..383c691cb4 100644 --- a/libpostproc/postprocess.c +++ b/libpostproc/postprocess.c @@ -89,30 +89,9 @@ try to unroll inner for(x=0 ... loop to avoid these damn if(x ... checks //#define DEBUG_BRIGHTNESS #include "postprocess.h" #include "postprocess_internal.h" -#include "version.h" #include "libavutil/avstring.h" #include "libavutil/ppc/util_altivec.h" -#include "libavutil/ffversion.h" -const char postproc_ffversion[] = "FFmpeg version " FFMPEG_VERSION; - -unsigned postproc_version(void) -{ - av_assert0(LIBPOSTPROC_VERSION_MICRO >= 100); - return LIBPOSTPROC_VERSION_INT; -} - -const char *postproc_configuration(void) -{ - return FFMPEG_CONFIGURATION; -} - -const char *postproc_license(void) -{ -#define LICENSE_PREFIX "libpostproc license: " - return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; -} - #define GET_MODE_BUFFER_SIZE 500 #define OPTIONS_ARRAY_SIZE 10 #define BLOCK_SIZE 8 diff --git a/libpostproc/version.c b/libpostproc/version.c new file mode 100644 index 0000000000..494575ae67 --- /dev/null +++ b/libpostproc/version.c @@ -0,0 +1,44 @@ +/* + * Version functions. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "libavutil/avassert.h" +#include "postprocess.h" +#include "version.h" + +#include "libavutil/ffversion.h" +const char postproc_ffversion[] = "FFmpeg version " FFMPEG_VERSION; + +unsigned postproc_version(void) +{ + av_assert0(LIBPOSTPROC_VERSION_MICRO >= 100); + return LIBPOSTPROC_VERSION_INT; +} + +const char *postproc_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char *postproc_license(void) +{ +#define LICENSE_PREFIX "libpostproc license: " + return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; +} diff --git a/libswresample/Makefile b/libswresample/Makefile index b74ee20987..dc80027c35 100644 --- a/libswresample/Makefile +++ b/libswresample/Makefile @@ -14,6 +14,7 @@ OBJS = audioconvert.o \ resample_dsp.o \ swresample.o \ swresample_frame.o \ + version.o \ OBJS-$(CONFIG_LIBSOXR) += soxr_resample.o diff --git a/libswresample/swresample.c b/libswresample/swresample.c index be59b69b73..9b77ef65bf 100644 --- a/libswresample/swresample.c +++ b/libswresample/swresample.c @@ -24,32 +24,11 @@ #include "libavutil/avassert.h" #include "libavutil/channel_layout.h" #include "libavutil/internal.h" -#include "version.h" #include #define ALIGN 32 -#include "libavutil/ffversion.h" -const char swr_ffversion[] = "FFmpeg version " FFMPEG_VERSION; - -unsigned swresample_version(void) -{ - av_assert0(LIBSWRESAMPLE_VERSION_MICRO >= 100); - return LIBSWRESAMPLE_VERSION_INT; -} - -const char *swresample_configuration(void) -{ - return FFMPEG_CONFIGURATION; -} - -const char *swresample_license(void) -{ -#define LICENSE_PREFIX "libswresample license: " - return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; -} - int swr_set_channel_mapping(struct SwrContext *s, const int *channel_map){ if(!s || s->in_convert) // s needs to be allocated but not initialized return AVERROR(EINVAL); diff --git a/libswresample/version.c b/libswresample/version.c new file mode 100644 index 0000000000..00f71e3393 --- /dev/null +++ b/libswresample/version.c @@ -0,0 +1,45 @@ +/* + * Version functions. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "libavutil/avassert.h" +#include "swresample.h" +#include "version.h" + +#include "libavutil/ffversion.h" +const char swr_ffversion[] = "FFmpeg version " FFMPEG_VERSION; + +unsigned swresample_version(void) +{ + av_assert0(LIBSWRESAMPLE_VERSION_MICRO >= 100); + return LIBSWRESAMPLE_VERSION_INT; +} + +const char *swresample_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char *swresample_license(void) +{ +#define LICENSE_PREFIX "libswresample license: " + return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; +} + diff --git a/libswscale/Makefile b/libswscale/Makefile index 1f02b56421..8e95f74c6b 100644 --- a/libswscale/Makefile +++ b/libswscale/Makefile @@ -17,6 +17,7 @@ OBJS = alphablend.o \ swscale.o \ swscale_unscaled.o \ utils.o \ + version.o \ yuv2rgb.o \ vscale.o \ diff --git a/libswscale/utils.c b/libswscale/utils.c index e86c151f67..ffa130524a 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -40,8 +40,6 @@ #include "libavutil/attributes.h" #include "libavutil/avassert.h" -#include "libavutil/avutil.h" -#include "libavutil/bswap.h" #include "libavutil/cpu.h" #include "libavutil/imgutils.h" #include "libavutil/intreadwrite.h" @@ -59,7 +57,6 @@ #include "rgb2rgb.h" #include "swscale.h" #include "swscale_internal.h" -#include "version.h" static SwsVector *sws_getIdentityVec(void); static void sws_addVec(SwsVector *a, SwsVector *b); @@ -68,23 +65,6 @@ static void sws_printVec2(SwsVector *a, AVClass *log_ctx, int log_level); static void handle_formats(SwsContext *c); -unsigned swscale_version(void) -{ - av_assert0(LIBSWSCALE_VERSION_MICRO >= 100); - return LIBSWSCALE_VERSION_INT; -} - -const char *swscale_configuration(void) -{ - return FFMPEG_CONFIGURATION; -} - -const char *swscale_license(void) -{ -#define LICENSE_PREFIX "libswscale license: " - return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; -} - typedef struct FormatEntry { uint8_t is_supported_in :1; uint8_t is_supported_out :1; diff --git a/libswscale/version.c b/libswscale/version.c new file mode 100644 index 0000000000..b165e2563e --- /dev/null +++ b/libswscale/version.c @@ -0,0 +1,41 @@ +/* + * Version functions. + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" +#include "libavutil/avassert.h" +#include "swscale.h" +#include "version.h" + +unsigned swscale_version(void) +{ + av_assert0(LIBSWSCALE_VERSION_MICRO >= 100); + return LIBSWSCALE_VERSION_INT; +} + +const char *swscale_configuration(void) +{ + return FFMPEG_CONFIGURATION; +} + +const char *swscale_license(void) +{ +#define LICENSE_PREFIX "libswscale license: " + return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1]; +} From patchwork Sat May 7 11:27:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35635 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2120840pzb; Sat, 7 May 2022 04:28:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjQvRqtOE60TFZrzSbuP6d5h5zXi+8n4ILu3M7kZ1BPeISIaPta6kKpKKfV5pQIlnLTxHs X-Received: by 2002:aa7:c04e:0:b0:400:4daf:bab1 with SMTP id k14-20020aa7c04e000000b004004dafbab1mr7993691edo.101.1651922935423; Sat, 07 May 2022 04:28:55 -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 i21-20020a0564020f1500b00420a7fdbdd0si7419273eda.594.2022.05.07.04.28.53; Sat, 07 May 2022 04:28:55 -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=Jpjh5uXO; 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 E914D68A2F6; Sat, 7 May 2022 14:28:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073016.outbound.protection.outlook.com [40.92.73.16]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 96D8668A2F6 for ; Sat, 7 May 2022 14:28:43 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pew5k1KLlQum7yAzDyQ9s8894E492zSj874rWhm81gwuPpR3/7Rt8GR1Azj6XGxvcOW0HcDi4FYmy5jxBpimjwt09FtcMD/AkAL4VbGamwhQR7O1QA3gRHtKZ1CUMgABescAF+gnSfSlKntvLGk/PcsGY80vVdzQgnnVoC0JgDTDvzRGduWFJZ0oDgImrm/8ZYL/QAnQxUMAd0l5kP28bvLMxaACSfz0CrlEF8hDrsh48jGLK+w1gvw2Adrv44I69eqQCi671gWplekn2gfcmB38a2hKTm1fhfqTiWlD5OPFlx+NkeFPQQqkpZr78L0aVs2+c4rOd5J11RPDhqrsRQ== 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=nYOwgpUJ1131PbqGHmwo0sltBUoG53DmQlr+sAOTn94=; b=FIDNP0PsGLZspqukPnpl/Mu3PTFP3fKK4IQVv8NZ+KSSgT1bfClPU8GgSOExHSC1KzxnjWw1jTn09D82kj4FEuAifU6t63ghBIBPN88TrCvuc/ldpACltBQ//wbkZd7bSvI5RIAtGd3eFKRHkht5UQpOzIxPsgQEFqQVUxlb3xpyBPnKkDeJLPJnqkCfyyhg/t9ARUo50ny47ZY91nH0V+226LnsOQ+1Y+lx6agQ2Y7dtzUOWfG6zdWP8xQBUlLMF8YVu3zLK6bDp0VgGTP1sOLGwKXTXwsCihp/DAocBtcjq+NzvgcxD5NCDstWQBtNdRrZx1Dt2xa/ToFoghhbUw== 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=nYOwgpUJ1131PbqGHmwo0sltBUoG53DmQlr+sAOTn94=; b=Jpjh5uXOJi2UbHu4PVj6UCeVxcPdj/SrOQfQd6caPhrO60knEuTrPjYEBojoe1Dd3v3zfHkIkD1EYX8Vzoq0DphSJynbInraNQ03grEF7+p2YkBT64qgoYFjgwN0p/xPUasarAXWhw68VBUzXdFi+JiSXwEHfI7y/IEdXp6h1WMWht6SYBV/F7VLM3fxDzwy1jYJPOzwv+izAT42d7YMg/bBnGZP5IlJg/X84yAFYOxizb9LO90MOmogug8IEzdZ8WofHeO5HZIgNgj2e2LkAOYH1ftZUKffQ47HjR6Mtl44fBADG+1eSrHEoLZmLBYGbkVMYhG4Zc9OcOUEdGkGOA== 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:41 +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:41 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:48 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [4DeQTvPUvvjSTxqj7lQuTLiVv5NM8Njh] 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-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9633cc45-267a-4a18-d991-08da301cbc3f X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwG9nJ5e8tNw0nIORMChrRreu2WHzA+hmNhF4RbgBDHgtpuuFJ1PLpiimK4MnXspo3W8yju4E+FaHX1f0Bbm2aBvmsqlMGEP0R9oVOA9Jd6z5Stw5VdFKTKWl+lklEEMSM1myuPiJ2zJQKsYbW5nDtAr5itYk28Ccl7gXi7RfCbvWEly0C+INQsU2/pgCfIBPywkPkbs1OwugwAa62IqWwyDFkIkNJr+ewlklqw7894E1/NbWN47Yt4G3NDRUgCwAtXiP4ULTGnF6TFkxhk2fhLforIHlLhgcatqqIQ4LAsF0+ulD2KrhYuRgEEJ1AcSloPzREjrssVL5Ch8Ahrtbx0JelthwuZ+z+B2pQ0q+9UwK4jcezLX0VhvpoHlTaBcN2HM7n6TSXS1OLa09ahkN+2BsfVPDhoYrTr7sYvOuDGK4aNC6maLauzAf170kMNBs3cvE06OSnuPkFTSppkEGnKo5FM5gwx1thabtQhgnK2AqtvPQWqIA6CJEGXfv5SgE/PMdj3b/lwWVE4lNByGrVR/1NTTyASlSkTAEl1TcpGnqnun6vgKUe+0WbI8Wjc7g6aZmGrIFAThrOQzoFQfFzrh/wQ08wvkiP/2l+a+k7yA3j6iSY+6p8Z6Fhy8HH0A4hePe509juNv0j7ORPxGYU6bhTR3UKxLDsRc9UIfAFBDdOh2UTVZhuIWarIkAORhP9hptRu8aOFbDg9zq4Hsj7cNZJ85nH3gAyUAjjunJb898= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AhNuo3shFaemf1P/JfvPQGVhn4u+VUX04OKHpQLcdqj+5dWCpL6toGzVtWCu4O2p005p8hBNHJFi3JH92r5xzUmws52dnAvHJ7uEXTfUwE6t6I4h4Md90HrPu7sQRnNrX9CkURrq6ECcZIAlPj+P+0x9AUMAWz8neoHMskDClDiKBI+bC/XWDelX3nyCZmjTXEPnYNJARLDP+wL7tJpmjBTCUDFuU760EKvN7QPjWnYf6RG24wikXzsE/znuySvDbpSFegGbY8ZSUdyMBSmSgr/Yag9MFG0c3FRAOIqnmtBKY/aTEXhdeG10AbQaxxSk6US/wA2afBDjwpykwGep759mmSA//smjO4dGNdHJRKlMyUM2ON2Wbrlv+ic/0mgi7GJNCR0+cywiULQVEPZfgZey8X12Qb9RUZQcwm1G5mUOzEn553NgAJQYIS8ZSvleh2pSbz/CaqK9z8Y0X0L5ZQ+cYvhg37/Yz4jM+Vt+0NQUKfCVwDATaIhn3Ey5hezfM0RIK0Oy1Gy3vUzjcx9SjDPEQNDjlbufUOMLR9eRxL9i8uf6KO9lYURE5knVLINto8OPZHqR96hX18+sblQjQCEKeZxBcfy2UYM21hcc1VOVMQ1IhHDDQwQ4WKkZ3jURvVBAhDobWcnf07k95Kl85w== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ecdX4V81P7d95eN8xYzLNPhhvT/u/3klw/M+P0t5ulsODGex/NMhx0bJUsjZbsDVXlkHp5TAgKwymkxfmlNRUol+VN8xsh1sqOrJuP8l2ZHr1yRIvK4MuDL3sVfqUo9wIuZjjtSDaHzwqY4VhL+deVT7eB/WlBiJKpbw/3O9BeWx3eTwjPFyp6vPXITYTVAdf0gG6falYnGUYXqS9b4+7nRSJ1k+hdv45bEp3QYgJ473BwyRXfimEoOv1DbO9MNIazBACc+C6+wuxqA54HQd0ovlyfpgBVVKpKj2+cIDR+pIJluYibY+GIUEiM0t2jyH6V/BsW7VGXNQd9Hark3M4I5NTTaQMjeSaHEUIeld7KGqzPCkkgr3GKfrWhFQ48112lkPmvnUAkTnvZz4EUQ8nxQZzqhODO99poqRbKGqbIcvvxL8XN7fjOarH7+O53PEMMlXswcacgNmq4y7R0y79mKgFWYU54FIBX725bRKc5jfcwZHhtZ0DFYdl0KTml/I1vYc9zBCm+xC9v+pwyg0jgGbwPcpw6fey4nLO+jhIHbhGm3MIy9e0BEbC5V7AeOG5hqzVYCeMCLUMaYlUNVi/U+PlSfDPvu8OeL18sXL/BvGl7IrWrKlOtPnplNAOJ+XiljxoeMiSrjFRIPg3GhT8J60h1Wyr0gRKY4maMn66atg/crN6QgoFSytqGh525+oRwQpB+tIuDwxEGA6tt5sCD48xWQPSQ8cFcz4gQaE8MNcawQtDbu2xIbxbfEfpWDgjJSKaiVrF5JWdpEfLoxfTMUygmwLFy0gbphWsvi8eRm5tJru1NGNxhGu+qGuaamk3kR4N/RFqX8ATAlSMuc9NafxKJZ+uV8tTqKbtfQk+Vkt7NYxTLc/fA2bLqq0/mbBhpLCnqQeejbWWzP3+wqC0qRPEDwA0afL28oA3xyzKzcuyTyNV4yOLK8bz1I0m3mgFZCG//u1MIlLfusVPlLvYZAgyPqebqfySWX96LZM2TdWbqWv7dnUxuhX9wibPYUUuhnSf7+5+FaH8GsfS3BBbfp1dB6JjoqBWsRlKNb79UJ0xpyaT0HIn2Y7Nk8qhsDtbTvjBkRUMs7aQ/eySPeHCepbtFY9V5Gq8gK+rbErGwEDOqWSkr0qMTlDLUmxXnaUPHUqP48xPHsosUy7DZEDne4Y2OP79yGnn1pDhBaulAffHOSws7qq5Sng9FETvJPMZgxrtEB1FdVXZg64F+33Tawba1RQdiXdRmt3/v8joJ4cKYJPtsDGQtyJvwXhyNiyY4GVyVPETK7nLgMAn0wRLy+aNG61icHLnSrfpGsAe8JHOl/jyMS/TZpmx89kVZcQi4iYt18HR+VLaR/FnXp6Rn3txlX/p/aGlCW3JmNFpTWJk++mwDW4QJykpsTbsqsMkGYGxQjNQO43mRmV2e6R+iYPOgVX6eeDb0FJ19qji1am9PPooMqUaft6SN5gqOpDlIH03qdabQ2V1LJXxRgtkg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9633cc45-267a-4a18-d991-08da301cbc3f 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:41.5612 (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 02/44] avformat/utils: Use av_realloc_array for reallocating array 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: CKd2QpzvBXKO Also improve the size check a bit; given that av_realloc_array() checks for overflow itself, we only have to check for nb_side_data + 1 still being representable in an int. But given that we can check for representability in size_t at no additional cost we do so as it leads to a nicer error code. Signed-off-by: Andreas Rheinhardt --- libavformat/utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 19f5ae720c..a905838468 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1739,10 +1739,10 @@ int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type, } } - if ((unsigned)st->nb_side_data + 1 >= INT_MAX / sizeof(*st->side_data)) + if (st->nb_side_data + 1U > FFMIN(INT_MAX, SIZE_MAX / sizeof(*tmp))) return AVERROR(ERANGE); - tmp = av_realloc(st->side_data, (st->nb_side_data + 1) * sizeof(*tmp)); + tmp = av_realloc_array(st->side_data, st->nb_side_data + 1, sizeof(*tmp)); if (!tmp) { return AVERROR(ENOMEM); } From patchwork Sat May 7 11:27:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35637 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2120870pzb; Sat, 7 May 2022 04:29:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxphuXCfyMG8ik/qcrdPpl6CPe1S3IafbD1rX+dGrDOwSeZNnDRwmT+sjw9hb5cKJAJldYF X-Received: by 2002:a17:906:ad9:b0:6f3:da10:1389 with SMTP id z25-20020a1709060ad900b006f3da101389mr6953546ejf.32.1651922943882; Sat, 07 May 2022 04:29:03 -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 ag10-20020a1709069a8a00b006f361fc2eafsi7655583ejc.192.2022.05.07.04.29.03; Sat, 07 May 2022 04:29:03 -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=X9SerHsr; 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 1828468B3B1; Sat, 7 May 2022 14:28:59 +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 E94B168B37A for ; Sat, 7 May 2022 14:28:51 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TcF2ARRngAeFbQP5Qx3G80Pk2AG/9QhCYKhAzDPQNbbBpJXXni2v5KNNJM36HYosO3jkIpEk1Dpw13Rjs74tSSvh/juclb4zXjM9TgxV6KifUhwVzfoR6nlh0tglrmijlhOyZqG6NS//8UHIWkF5dOpXuSu3ihKCT7h85jqIhF4qgDxOkiKNje73MRaymt9hbCz/7uDtotS9q2+Lkt7+i3qo8HfWG/8uKUgl9PwNJv8oapzP1MysGsSmu9t36eT+1HkCSdRCodLxUCYe/jSQFKwcmTTnR2hhyOu0Plr/gSXmEfKYa9gV6K0oKTFP8F8z2VOTp8HzN/n4aNl2Evt7sQ== 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=af+4rbx5uMUzgrTjkmxy6GTwYgG9HRLPXL6cfChfQUg=; b=D35sMhSYqm7DXzpuj84PDacii/rl3zgXo9OB5DWg5HSHnQrrAswsSSneijaOj8S7mS9SCHDpFOtoz/YzdU5Sc1nFOXwLpwa6u5mKIvRHW0qybWzP1rf74EDKSCJkxcA+tca7XOONpAKx9IH9NmrlHgXk0lemQJcCc8i/CA3wg3DqMrfv/ii28YVn8OdjBSnPio5lx/DdTcDjP9j97zAII/cX3RpyfqCW41hsdDbEO2BfJ/TV0CObyI0AKxfGqowJB02JnGBg/D8XbKepVjWv5DnAwAJiThpMfUZivC6+4JotP4CmBjlt8jxg2jnucnyJ0WfjZRq7JSxlkPQw4JhZhw== 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=af+4rbx5uMUzgrTjkmxy6GTwYgG9HRLPXL6cfChfQUg=; b=X9SerHsrCXNEewJwOsjGt1l/uhUy1f6P01IA03v/FSrumAd314RSwf6KhmBZjsc+FUXdOEUlyndVK6psC6Hl5rkPk1QD6OjcRSXF6cv/TG4wlOQn3LRZJFeKdKP6uPA2HJ6tDENka2IPk4LJ/Di3csGw/+mpbvO/foQsikjyxDAZT0oITLSMkeg1pSRsTaEGxom18eamx4o+8/KOnu1Fa5EN7Fyk41CiCDw65FH1af7qaTIsZqyTajAysmu7fDPWey7g+h99BzP2zVSbZTwPfYY2lXBbf1ksDaijK6lCKfR+hFsHyCb5+lh5v/o7tvr+GsVV8eZ9SbVjiOuLL4zITg== 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:50 +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:50 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:49 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [z5qbsYJwOFp7jC5YqU8N2sVO/PcmGWyI] 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-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: deb70de7-fea3-45d0-e4d5-08da301cc22c X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItw/xtAfaDL8YFQlGyJTVAlEYlq3SNk5LYJVPdGRUYnjwHjl1DYx7dqznrpAxaR2ZwtFwUKc07lUID3Va6EFQ+TZoDnRpdOWf/4CTzRk/BMzrryg2ZoWKF5ayhs/eLnt7Z0uQBiFPii11LJuZFy+fF0Yt1EhyvE0XYM6YBRhRm88z031vLHfyzri0Hf8Y+0iEDKGDFTROdNNBw0JFqGkpkZoDMLhBjudtOzyQ5VIpBLQdcoukwilhVCQxOhGk087mAaHlv+LJMBRJ7NJGkgae18hflHOUQmVLJj7LqFGX7NWBQD5+DDQFbtc5fCRszRV9aWefQvS+OfeSQm5Cox+oYtIWivZH/hsOwaDJI4BeDk8IlUUWhSJENRQI2OKVzVExDzreF4oIgG7rGDdMKxSYf5ewo5DWAkszsjD7PSEeqtOPSCNfCd4zy2bc07qTAMPC8MaEFj7s0VlhxDpeA04PN0LsqoJ6vCE2QejDvITL+J9035jzMsFR1ub3e9atY3XgNqnw5l3N+smRJPh+KWnUgmPPn6gvZ+jCUGQgrB9gFEoVCLfretzaZlDFvwOgObC+A0PK5/78wlLcyHq4DgEpvp7kvYayS91t5wwQaz4ck2Qq2kyyQOTyFWwcNawLSFlZ0YT4eTasnS5HSCX/Sc4p1BlG8/FstkdAFIZET6kb25AXeDfmldN7v2YOefBZj7wsgcnTlaDe7hEwifgl2PTO4xbES1EMX1Pv4OwGcp9JLnTkA= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: K1+0+s4RkABbnJ/w+60t8Zsq9scUc2YW+LrxnHqHNYEgtdi4Z9f1+GhhaMVMmarPwb4zz8UhSuV2M6tIu+xLSvm9DGWZ5QpWsbjcVQNryVul9l6XX4kFhI3Qjs+QEB9atnaDxkcAfhTi5aU4fandTd/9arR/xehaaZtC2XPq8vceh0EJGL/Kx4ij29waO+Nysqf44WDKPoBDGifXTKxc67oRLWUaFHlYNcf7+JKOEzoYJ3Z0YDzJiAkEP71yVedeZ0SivPnosEtzqSKoU4r4eq9KAyoQ7q8i9hpCOYM/BKvvumY9p/31+qpMyvtHO654ieHLKnwqRQc/QYtSoai0n0Mlu+hj+Cv+FHXPdBxlWaAEu3oQM7iClEBtUUbkLUElgW++2FxzWES5jnBlvWgPahtY96q1KXRtGT34ViRCDX2HKxZElTwy/zri3Rvz0mY7Upbn5LQ4QyaXZG+LDep/HMBvn7KLiGD24bPib6LWy+BcykqQ+EkdgfR8/HSl128P7e+qEL1SU9aCJK/0BKtts7xdB7+YjTezbXZrMiGGtxNribKp4EjDti/AXTeNBs4/WOi6MVzUTTgG9XMvrEHXdAC7hFEnZ9UGj27iQ2fbtopn0KKKBqtOpWGaoT7AtgUO9re4eEVE4IraZ2RU7yRpeg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +1WW9llJ7Vm6LFcbeu0jzjx/pdARB4htHzb01S4vsebX3oE21X4laiSTR86uu33tK6ia07Ji9ckZHbsY9YdBPwIaw9b5Te0j0aDpiscDpf3ripyUy+jvN12W8MMqSLDZEdyCnAePfVptIie8FnDWo81+uPODJf9/JwcVaCMXIMbDsijDo8PLENJuwnAz+gQ5CofaSEjIcV+o4Kr9FXiumqc4ih0LcQajcOWI5a4Znxd6LZli6QykQv5oam+NfliPGippX86Bwt2/xYhNaHYrT4Ejy244ybdcPaubU/bCdBiqHj5uQWwpEEh/LMwaeJgLNoUBf03TlukssVFCU69b9ZErw7iu2YbYZOzuLfKllEflmfI6iT7Sg4Q0Z7oznBkcIRllDMjJrj8X240OXR9ry50L58pYhH6JaYA66Yexw/dm4sIiuAQnFdGji674rOXHcmO5SsKv2kTeRmGaGQH/yl5LzONPOKGxlnswLQABGV9P84ypptgB+lUvYaRUytEe7RI8ez6watFfbbN1ui7hys6SEctCLNHGZHC4ONM+/6KuCzOM6eZy5aj2J+2NhRUZoA5wm4lTi/ctK9aUWeclfFGtd7AxtqPATYwPD+m64lONYeOhKTgZChPok3Ga7RhhUuKFhkrHz9yZOYv7+QRLB8xEQJdgna0B47gDjzgSqyiX7D3jV6y5SwpHpSHr4sJVnpd36wJD4GRg7AsFCzSGwEJu2WWerlmL2ulcFBUbqidh2/SvPEsWh4o57sx7b+vg9Pj3xP9v+93gsx6HnsmX69DQwoJVxcB5Dhkek7V+Eh07Dv0ggNT2n6/7MM1lCpnq7ai1tyl+k5e3Egd/eNuqI0fFP/Z35qCVaYGjJNIvCv0pNOLTJvpjK7caOtiTK2fKNXaHo+7vOAe7DVoKKylfgoL4PkRKnUrEvyoehPVW23JVlgfJM+jKze063zxhyKiqfddUuOGOBJO0Abp7p/C3cuKshI2+JG7f3uftPIzCbkyhxuWtDoAInEbAuYiVhw9vz9eCZBXZS1Mg79mY35l8zfgrQq8LwA16BtWl1SnL/lbrs+KY6Oa+IKbtjuMviehlK3H01osSiUTxzxX5CMfZpkQzBZwHTGT+bvLSI7c30ZVgDXd6f8TV70aN/e7xhusWHG0L7GrO7ZL2kY7VKzihZd8j4N+tkCeLGrmNK1kjGDIn/SGR4jLDTR449oeoyaluUqijpiLA4lZeO0/6TR9EYpEG1pwXJj55gdjD6ZdkpqN/0kFiWSXSVsrEnZbXqoYYVxZsNvEX63f9Jx54v1XxnQ8zVci3rVJPrmLKvqP5pWYE86NB/eUDHyXfuAXWVfhRj4fTrSgScmuWUvXVzaqpYoIC99ghypyqKuDEJEIr1wQLWtlvg+c1pPsjz49isnr1AJu5OxuA6+4rOvPYTDMY3s553aeK05Qbp/w1LB9TL+fDK7WQs9hzwm5DAA3+qgUA5gYgNba7pFBJqGuySiP4cA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: deb70de7-fea3-45d0-e4d5-08da301cc22c 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:50.4566 (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 03/44] avformat/internal: Move muxing-only functions to new mux.h header 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: 4Rc8hIw0+iX/ Signed-off-by: Andreas Rheinhardt --- libavdevice/alsa_enc.c | 1 + libavdevice/opengl_enc.c | 1 + libavdevice/pulse_audio_enc.c | 1 + libavdevice/xv.c | 2 +- libavformat/dashenc.c | 1 + libavformat/gxfenc.c | 3 +- libavformat/hdsenc.c | 3 +- libavformat/hlsenc.c | 4 +- libavformat/internal.h | 60 ---------------------- libavformat/movenc.c | 1 + libavformat/movenchint.c | 2 +- libavformat/mux.c | 2 +- libavformat/mux.h | 88 ++++++++++++++++++++++++++++++++ libavformat/mxfenc.c | 2 +- libavformat/nullenc.c | 2 +- libavformat/rtspenc.c | 1 + libavformat/sapenc.c | 1 + libavformat/segment.c | 3 +- libavformat/smoothstreamingenc.c | 6 +-- libavformat/uncodedframecrcenc.c | 1 + 20 files changed, 106 insertions(+), 79 deletions(-) create mode 100644 libavformat/mux.h diff --git a/libavdevice/alsa_enc.c b/libavdevice/alsa_enc.c index fc5e5d9c94..3d6bccdc2a 100644 --- a/libavdevice/alsa_enc.c +++ b/libavdevice/alsa_enc.c @@ -44,6 +44,7 @@ #include "libavformat/internal.h" +#include "libavformat/mux.h" #include "avdevice.h" #include "alsa.h" diff --git a/libavdevice/opengl_enc.c b/libavdevice/opengl_enc.c index 9302979f46..06e8d3d7d3 100644 --- a/libavdevice/opengl_enc.c +++ b/libavdevice/opengl_enc.c @@ -57,6 +57,7 @@ #include "libavutil/avstring.h" #include "libavformat/avformat.h" #include "libavformat/internal.h" +#include "libavformat/mux.h" #include "libavdevice/avdevice.h" #include "opengl_enc_shaders.h" diff --git a/libavdevice/pulse_audio_enc.c b/libavdevice/pulse_audio_enc.c index 35beb14ead..d5928e2b3f 100644 --- a/libavdevice/pulse_audio_enc.c +++ b/libavdevice/pulse_audio_enc.c @@ -23,6 +23,7 @@ #include #include "libavformat/avformat.h" #include "libavformat/internal.h" +#include "libavformat/mux.h" #include "libavformat/version.h" #include "libavutil/channel_layout.h" #include "libavutil/internal.h" diff --git a/libavdevice/xv.c b/libavdevice/xv.c index a346f8e306..348c289bea 100644 --- a/libavdevice/xv.c +++ b/libavdevice/xv.c @@ -35,7 +35,7 @@ #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/imgutils.h" -#include "libavformat/internal.h" +#include "libavformat/mux.h" #include "avdevice.h" typedef struct { diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index c90cb4c0fa..295b01e225 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -48,6 +48,7 @@ #endif #include "internal.h" #include "isom.h" +#include "mux.h" #include "os_support.h" #include "url.h" #include "vpcc.h" diff --git a/libavformat/gxfenc.c b/libavformat/gxfenc.c index e25d8764ba..0f971c039a 100644 --- a/libavformat/gxfenc.c +++ b/libavformat/gxfenc.c @@ -21,13 +21,12 @@ #include "libavutil/avassert.h" #include "libavutil/intfloat.h" -#include "libavutil/opt.h" #include "libavutil/mathematics.h" -#include "libavutil/timecode.h" #include "avformat.h" #include "avio_internal.h" #include "internal.h" #include "gxf.h" +#include "mux.h" #define GXF_SAMPLES_PER_FRAME 32768 #define GXF_AUDIO_PACKET_SIZE 65536 diff --git a/libavformat/hdsenc.c b/libavformat/hdsenc.c index 2a52019120..a8f340ac46 100644 --- a/libavformat/hdsenc.c +++ b/libavformat/hdsenc.c @@ -20,14 +20,13 @@ */ #include "config.h" -#include #if HAVE_UNISTD_H #include #endif #include "avformat.h" -#include "avio_internal.h" #include "internal.h" +#include "mux.h" #include "os_support.h" #include "libavutil/avstring.h" diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index 14eb7c4530..f085780feb 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -22,7 +22,6 @@ #include "config.h" #include "config_components.h" -#include #include #if HAVE_UNISTD_H #include @@ -36,11 +35,9 @@ #include "libavutil/avassert.h" #include "libavutil/mathematics.h" -#include "libavutil/parseutils.h" #include "libavutil/avstring.h" #include "libavutil/bprint.h" #include "libavutil/intreadwrite.h" -#include "libavutil/random_seed.h" #include "libavutil/opt.h" #include "libavutil/log.h" #include "libavutil/time.h" @@ -54,6 +51,7 @@ #endif #include "hlsplaylist.h" #include "internal.h" +#include "mux.h" #include "os_support.h" typedef enum { diff --git a/libavformat/internal.h b/libavformat/internal.h index 3ad76d992c..5ffc26600a 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -509,14 +509,6 @@ char *ff_data_to_hex(char *buf, const uint8_t *src, int size, int lowercase); */ int ff_hex_to_data(uint8_t *data, const char *p); -/** - * Add packet to an AVFormatContext's packet_buffer list, determining its - * interleaved position using compare() function argument. - * @return 0 on success, < 0 on error. pkt will always be blank on return. - */ -int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt, - int (*compare)(AVFormatContext *, const AVPacket *, const AVPacket *)); - void ff_read_frame_flush(AVFormatContext *s); #define NTP_OFFSET 2208988800ULL @@ -564,22 +556,6 @@ int ff_sdp_write_media(char *buff, int size, const AVStream *st, int idx, const char *dest_addr, const char *dest_type, int port, int ttl, AVFormatContext *fmt); -/** - * Write a packet to another muxer than the one the user originally - * intended. Useful when chaining muxers, where one muxer internally - * writes a received packet to another muxer. - * - * @param dst the muxer to write the packet to - * @param dst_stream the stream index within dst to write the packet to - * @param pkt the packet to be written. It will be returned blank when - * av_interleaved_write_frame() is used, unchanged otherwise. - * @param src the muxer the packet originally was intended for - * @param interleave 0->use av_write_frame, 1->av_interleaved_write_frame - * @return the value av_write_frame returned - */ -int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, - AVFormatContext *src, int interleave); - /** * Read a whole line of text from AVIOContext. Stop reading after reaching * either a \\n, a \\0 or EOF. The returned string is always \\0-terminated, @@ -766,20 +742,6 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt); int ff_add_attached_pic(AVFormatContext *s, AVStream *st, AVIOContext *pb, AVBufferRef **buf, int size); -/** - * Interleave an AVPacket per dts so it can be muxed. - * See the documentation of AVOutputFormat.interleave_packet for details. - */ -int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *pkt, - int flush, int has_packet); - -/** - * Interleave packets directly in the order in which they arrive - * without any sort of buffering. - */ -int ff_interleave_packet_passthrough(AVFormatContext *s, AVPacket *pkt, - int flush, int has_packet); - void ff_free_stream(AVFormatContext *s, AVStream *st); unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id); @@ -891,19 +853,6 @@ int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t dts); void ff_rfps_calculate(AVFormatContext *ic); -/** - * Flags for AVFormatContext.write_uncoded_frame() - */ -enum AVWriteUncodedFrameFlags { - - /** - * Query whether the feature is possible on this stream. - * The frame argument is ignored. - */ - AV_WRITE_UNCODED_FRAME_QUERY = 0x0001, - -}; - /** * Copies the whilelists from one context to the other */ @@ -1000,15 +949,6 @@ struct AVBPrint; */ int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf); -/** - * Find the next packet in the interleaving queue for the given stream. - * - * @return a pointer to a packet if one was found, NULL otherwise. - */ -const AVPacket *ff_interleaved_peek(AVFormatContext *s, int stream); - -int ff_get_muxer_ts_offset(AVFormatContext *s, int stream_index, int64_t *offset); - int ff_lock_avformat(void); int ff_unlock_avformat(void); diff --git a/libavformat/movenc.c b/libavformat/movenc.c index c2aed6329f..d32328d40c 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -61,6 +61,7 @@ #include "rtpenc.h" #include "mov_chan.h" #include "movenc_ttml.h" +#include "mux.h" #include "ttmlenc.h" #include "version.h" #include "vpcc.h" diff --git a/libavformat/movenchint.c b/libavformat/movenchint.c index 35212f2c5d..aaaaa3ac7b 100644 --- a/libavformat/movenchint.c +++ b/libavformat/movenchint.c @@ -21,7 +21,7 @@ #include "movenc.h" #include "libavutil/intreadwrite.h" -#include "internal.h" +#include "mux.h" #include "rtpenc_chain.h" #include "avio_internal.h" #include "rtp.h" diff --git a/libavformat/mux.c b/libavformat/mux.c index 1c1fbf275c..f1ae1c874e 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -21,6 +21,7 @@ #include "avformat.h" #include "internal.h" +#include "mux.h" #include "version.h" #include "libavcodec/bsf.h" #include "libavcodec/internal.h" @@ -30,7 +31,6 @@ #include "libavutil/pixdesc.h" #include "libavutil/timestamp.h" #include "libavutil/avassert.h" -#include "libavutil/avstring.h" #include "libavutil/internal.h" #include "libavutil/mathematics.h" diff --git a/libavformat/mux.h b/libavformat/mux.h new file mode 100644 index 0000000000..d1dc2fa2cb --- /dev/null +++ b/libavformat/mux.h @@ -0,0 +1,88 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_MUX_H +#define AVFORMAT_MUX_H + +#include +#include "libavcodec/packet.h" +#include "avformat.h" + +/** + * Add packet to an AVFormatContext's packet_buffer list, determining its + * interleaved position using compare() function argument. + * @return 0 on success, < 0 on error. pkt will always be blank on return. + */ +int ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt, + int (*compare)(AVFormatContext *, const AVPacket *, const AVPacket *)); + +/** + * Interleave an AVPacket per dts so it can be muxed. + * See the documentation of AVOutputFormat.interleave_packet for details. + */ +int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *pkt, + int flush, int has_packet); + +/** + * Interleave packets directly in the order in which they arrive + * without any sort of buffering. + */ +int ff_interleave_packet_passthrough(AVFormatContext *s, AVPacket *pkt, + int flush, int has_packet); + +/** + * Find the next packet in the interleaving queue for the given stream. + * + * @return a pointer to a packet if one was found, NULL otherwise. + */ +const AVPacket *ff_interleaved_peek(AVFormatContext *s, int stream); + +int ff_get_muxer_ts_offset(AVFormatContext *s, int stream_index, int64_t *offset); + +/** + * Write a packet to another muxer than the one the user originally + * intended. Useful when chaining muxers, where one muxer internally + * writes a received packet to another muxer. + * + * @param dst the muxer to write the packet to + * @param dst_stream the stream index within dst to write the packet to + * @param pkt the packet to be written. It will be returned blank when + * av_interleaved_write_frame() is used, unchanged otherwise. + * @param src the muxer the packet originally was intended for + * @param interleave 0->use av_write_frame, 1->av_interleaved_write_frame + * @return the value av_write_frame returned + */ +int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, + AVFormatContext *src, int interleave); + +/** + * Flags for AVFormatContext.write_uncoded_frame() + */ +enum AVWriteUncodedFrameFlags { + + /** + * Query whether the feature is possible on this stream. + * The frame argument is ignored. + */ + AV_WRITE_UNCODED_FRAME_QUERY = 0x0001, + +}; + +#endif /* AVFORMAT_MUX_H */ diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 8bc1a2807c..2061b2eede 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -38,7 +38,6 @@ */ #include -#include #include #include "libavutil/opt.h" @@ -56,6 +55,7 @@ #include "avio_internal.h" #include "internal.h" #include "avc.h" +#include "mux.h" #include "mxf.h" #include "config.h" #include "version.h" diff --git a/libavformat/nullenc.c b/libavformat/nullenc.c index d4769d5920..3deca5a7ed 100644 --- a/libavformat/nullenc.c +++ b/libavformat/nullenc.c @@ -20,7 +20,7 @@ */ #include "avformat.h" -#include "internal.h" +#include "mux.h" static int null_write_packet(struct AVFormatContext *s, AVPacket *pkt) { diff --git a/libavformat/rtspenc.c b/libavformat/rtspenc.c index 5c7e0b4e8b..21b204381b 100644 --- a/libavformat/rtspenc.c +++ b/libavformat/rtspenc.c @@ -24,6 +24,7 @@ #if HAVE_POLL_H #include #endif +#include "mux.h" #include "network.h" #include "os_support.h" #include "rtsp.h" diff --git a/libavformat/sapenc.c b/libavformat/sapenc.c index 9319ee6f80..8eb9d3b92a 100644 --- a/libavformat/sapenc.c +++ b/libavformat/sapenc.c @@ -27,6 +27,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/time.h" #include "internal.h" +#include "mux.h" #include "network.h" #include "os_support.h" #include "rtpenc_chain.h" diff --git a/libavformat/segment.c b/libavformat/segment.c index ef0529a920..fa435d9f32 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -26,12 +26,11 @@ #include "config_components.h" -#include #include #include "avformat.h" -#include "avio_internal.h" #include "internal.h" +#include "mux.h" #include "libavutil/avassert.h" #include "libavutil/internal.h" diff --git a/libavformat/smoothstreamingenc.c b/libavformat/smoothstreamingenc.c index c67f0cba43..1713dd9009 100644 --- a/libavformat/smoothstreamingenc.c +++ b/libavformat/smoothstreamingenc.c @@ -20,24 +20,20 @@ */ #include "config.h" -#include #if HAVE_UNISTD_H #include #endif #include "avformat.h" -#include "avio_internal.h" #include "internal.h" +#include "mux.h" #include "os_support.h" #include "avc.h" #include "url.h" -#include "isom.h" #include "libavutil/opt.h" #include "libavutil/avstring.h" -#include "libavutil/file.h" #include "libavutil/mathematics.h" -#include "libavutil/intreadwrite.h" typedef struct Fragment { int64_t start_time, duration; diff --git a/libavformat/uncodedframecrcenc.c b/libavformat/uncodedframecrcenc.c index 1ad37071a6..99990616d3 100644 --- a/libavformat/uncodedframecrcenc.c +++ b/libavformat/uncodedframecrcenc.c @@ -23,6 +23,7 @@ #include "libavutil/bprint.h" #include "libavutil/imgutils.h" #include "libavutil/pixdesc.h" +#include "libavformat/mux.h" #include "avformat.h" #include "internal.h" 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); From patchwork Sat May 7 11:27:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35639 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2120990pzb; Sat, 7 May 2022 04:29:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw0pBiqHy/pzu8JYJpSplTGmMQ3sKSNVWUAXRKXfND8Xu9xK3lLwUzbjv0CY8OU36/RjROb X-Received: by 2002:a17:906:19cb:b0:6f4:e601:9643 with SMTP id h11-20020a17090619cb00b006f4e6019643mr6774705ejd.578.1651922963900; Sat, 07 May 2022 04:29:23 -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 s12-20020a50d48c000000b0042873be34dasi2464531edi.252.2022.05.07.04.29.23; Sat, 07 May 2022 04:29:23 -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=bVyVUKt4; 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 7ECB268B3C8; Sat, 7 May 2022 14:29:09 +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 35A2D68B3A5 for ; Sat, 7 May 2022 14:29:02 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bsh9SDMcqZFiQug269wZv5/3RfBAZQRknqs4ZCADE7up86+VmtJRYmad2451nOBCq9KhV/f4Bd0+NpQ2srnqlulsEIcxI+HTa1n0uqhkyd3E9DbqdMFOu2v5zrOvl36ZabU/lk9Sg4wZvuaIvhdA5jFlCXZXs7+C2Qa60IhCWKdY9d3XXQJtnIYducVfN7WFuunE0NgPaDMRJb+JHsaEVbBbPxNOvvn8DBWM4Q/kCibzXpWDLSq3EayX3mgo79q6L8S8HkXhJWt0S1I+x3UBqPjnF13HLkomvo0hDgjLWWt2+Ka5yEpYhmgUBsx/qOOra9mkZ6HfJ10GEXVrlK58AQ== 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=giBjIrF3rpUJF1hmuIBq0lJjKL3ntHEdX4nOzVyqQPQ=; b=b9hi9pGJIQ59FQ/Nzd42jIo2Mj+v5+j4VuAjPLCNG9zh71uuxLmGu806vcBIzIBRM76YG+SwrxNcCq+OcbYJRECrozzoygflqFM5eQPFERqJvjVucHTxwL4xwU8tEgG8mqjFac5s7XbH9cMQ5tdCkKmWh+bBs2pfZflwxHdZzOU+E63GeKqVPvLn3GX76V8U05hIKIaaT4leGoSOkZa7CLrSdPnSaXgsvfACZMpRHBHmmzzQKnFc8suuny7ZbqGcVFvoHOynBqpAIREOS9wxGkEYw3fwfABtbKZqkvuWcWwXJh9yNkuJmopH65Con5RzsVEde3OdZ5N9ZJIdFR7ESQ== 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=giBjIrF3rpUJF1hmuIBq0lJjKL3ntHEdX4nOzVyqQPQ=; b=bVyVUKt45+eZwu0MNbevebOCssiNNS90+PQfAsULE3SfAtiEdOFKJLJHuGSPOqDcxe9+WKGjjTX8NkxPbi5D1CSEVqWg/8XCQuc6XSIJ2vF6o0ypA604MvUXImwwkiHicORvtStCL77m+E+vqqZQX5gzP0mJqR9C2GZMGqyc6q9woQTHHW2XENU8uwWKqVoDjPzXbPVlYvka3URA+4V048sAHgxdhynvtv8ahfeDw3peeHXsrSw6kImFMJtSPUgk4X26quKv6tSqaUbDig2TZXc2mf9ptjUfvRYA+fRT3C4JkgkJwDJcYd6bINpBC2XSpQdB96YzFVlGes1Y/7I1BA== 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:57 +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:57 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:51 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [ighgPIwkPHG5rkP9EG/IZ0sVACsaEExX] 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-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4f91c225-9fcd-467c-1db0-08da301cc62c X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItw/Sva+BKJI5xwWvVFLcVbpQbqLAXbVO6kXvrOeakh6WigG03Hgvo5sy54Gd5mIvLd5hI3IzoHIYzZeEOss89yes/l0llcXBEaLk6IPaqX4Eq5CFjumJc1TIIc+4AohQYj+z5qlLjE4VpDbKa+nIziSjOCzLqABviwxBHPDzTq+M34/d0VlA4kEmFhKbCf20KISNKdHF8yao76jdr3T3JNr67UiuPq3dNALg32P/GCr+mUrhWLlZwNwsp13ao/Lqf/IUpxGxQylF0KWG5G+4gF+zHk7aod4+aS0Oa1WQQW6z15o2XY7eo0UjTiOiVld4iGsxsYg3VWJmuRD/ZlzQNXgFCKxkvcsGcDzDKqo9RBO9dmyVpQijmKOb9zJyEMinOk38ovykXIlFJZCBN+bqX22PAPcI84NNar3dUIhWYm98FDbELkZbP0ULLQimkJTjB2cBJrh0twm5X3p3DR+muv8lo3sf3kXuzPGuwaIl1m2VAPfAX5L2ZbTQ1J3UQaZQmarSWRVP7+sVoeApL/0nxkK7xAwB+C5fC9tk8kbp9Gyb4KK+9RcfSYA/vcizUybIBScIX4f+Gg2CLQF/2Yj03bqxgrnV87qHKW329NtFb4Qv9vs0iRrsCMghPT2Ri1m4D1J//S9B4l8wSSYGaIrRt0GMLc9ruLFaS8Ih27ADZkDF1SRQkNSnoKeTQI9pBL44k8bwvcjCMUyArwDHzs+eImvh18tJHEOsrsavKFLBmA+Gc= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tbI66SwX8lMTmJbm3F8Td7/mTAmSp2r5U7Xvur8rTHoZlWO47cj+J3iysjqF+5jQYZpGeXzPGGvPtHAJLX+CB0Tko5tfBZkes4xYdvcpF4maG2GgevEdzW5bkdXpPmTVzwLFPzkkeCxk4sSuGayasvUJOrlVu9JfUoTb9Xt7BCUOysX2UWx+bZw+XiF67Vnfx6+haCseeJ2cle82prOvBoMUnqvZLPJuYWSYGr/Po2Leh/Df+5mepJ9c8XEkTTeXgSq3mQTVIejsrM5K2tWSQuZF3mVdYdU4I2GkWjE0zvBR1vhfJIW2/MS0AUXSGyGqARMDAmS2p+45V70sCR4apnETIdrLwOgCgi0m7HbVlNq5EtukN/PfV81kKc8u13XTvHM7ybQektBRFXJyTGQUmZx56wKnL/mmaYlN4IWKQXU2R+2oyjIToJRtAlmPGpSkynoXa7mEaNMiYAWBlkypOQZEmtMXAaBqfbit/h5+ld1QxMR86ThN/MTtqH7pBCenyqYZsPhsaVPjNHxs+v9eSU/vniaTPwmgQuokXE5Dv96wLc/FF2IqFEkMjGTvTyGYvfyOK6V+MpQAha8NEEUfefNpyJCKcy1CayC7ICPgfwuMB4hOVTQL905YulIrZRJvDSZvlxm1C9Heyauei0LaCA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: r7jQB7twAZND8W7InxUpPay+r6vLLLl8I9RV9/7wT0YU2v8KAlSCSnXkMrNYjSu9lfz0qBQB+bqQmcRHZQdRrctNbJvP2+/7PUBf4qgfnol3tsX6jTKjoQAjceMpb4nR538kMZEoMfHiqGrxqzA4lx9+Hk64oRf/t4wBMcCkQnngSmfE1n9P0bEBYIbaJH06CiZLrRbD8bURWyq1s00FGfhzmGJNnnhPWrX9NhNvCaPg/qQVkdI44fcTRwxVKYYP8669uNCn+NnW6RMMPSS0yJGuPPN2gyHKpBOcNRPduLiD9kl7tiXCyvbbAR1UymeUGiSoopJU1AKW4MTIdvm+M83pDKqNj15vXC9Yj8cVO3xO2WJILMecnxxyhNxbHd0gDQaxrMTgdx/My+wBPC8GyD+RMBu9rA9zjTJjbChQccexqv3WuTdIB+CibCuYKurmGbS/bMiZfaEsHTQeSJ3+udRAdfgeNDYtG+nfPbx+RQBYVmlS9I1EEgBQj1g7JdGMMraVATrBrhsqhqnnQgKb9laFculyELxUqYUr0bBDQDeqKu7Dx1/oW+u88QmLNVQ/YcXUi93hZB/0CtgQj/0T1bSnHOL4gEyuHPagvI47FiuW7rbI6sVSBbKxREOpzcoFY/6OSrXqnTMxpV7ZdPn8kXptUxovQGJMAhBUZpg+NtXL4xKXVidiZ8QhTbA77J35Va2GY/RtgciBzL3O4w25WlTrD5LzQGe4bkienLT75vxgKG4/aS22yv1sfGDiDVRihxYcEOnyKXdbCepIcCRJITdlTpgQewfMzud0934u/WYc1yoBCFBDifetD0AsQB1+69b9EKpIUpf0R11cP2+W2b+hXa39cEhB/ehFFECTDesFEa9cuFjFLjP3AsaGa+PFZkNCYMXF5ycj/jd/hPm2dMskz6tc0UBTa1V59MlVn1PNyYZEV6OjpafCEGK+sSmEme+Q0tzBsx5YCxcKHBNjUQfC5ookq3PCK4yftFJ8utVZJPYk3rV5EW6FMOjvL6rt+qqbdX+IYwgVQNAAbL+zbAOBPa9iTo/M1cLggC05DxSMcI+UwQyp9lqKFiofz0Yugs7HYMfGe+P92fxkHI7zI8I+VqUP/kLx9+zZEI1BYKbaD6u5j7+qnopL7YaQq7LiRICOm/4L93OWrECLQ11agdPN19ZrWuAioiBukm27/zCvwd5gWaOj3Z70Kagmc9VMLY0lld+EFlZ6jcZd7leIVvXimPvjjJllN1v1Z8BjB9x8UTqs09BV5LN6Y4Fw2921QN5R4mGLXWKbZBEiZKrn6+mflr2cZ1/ZDyp5N6Gkz+Xs3ZsL7uAFPoMjDoCTupMDgtcMLWT3rmccppSYvtfCi1Gj6nToTgHOsS9TvITA2l0HlP8UxY6Ji0qIBIjX0qtnX3K2uYaFJE/HDV9coDEZx44X+TpnuIq1B9K3kKw3Vy57aa9rVq13JISWEqss/gYOVAvHogsGoUcJa9JFKWY0UA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f91c225-9fcd-467c-1db0-08da301cc62c 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:57.1937 (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 05/44] avformat/mux: Move ff_choose_chroma_location to mxfenc, 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: siHRGz5dv29B Signed-off-by: Andreas Rheinhardt --- libavformat/internal.h | 5 ----- libavformat/mux.c | 31 ------------------------------- libavformat/mxfenc.c | 31 ++++++++++++++++++++++++++++++- 3 files changed, 30 insertions(+), 37 deletions(-) diff --git a/libavformat/internal.h b/libavformat/internal.h index 715e3ce33f..5e84942fb9 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -765,11 +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. - */ -enum AVChromaLocation ff_choose_chroma_location(AVFormatContext *s, AVStream *st); - /** * Generate standard extradata for AVC-Intra based on width/height and field * order. diff --git a/libavformat/mux.c b/libavformat/mux.c index cfcfa600df..11b0cb1307 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -28,7 +28,6 @@ #include "libavcodec/packet_internal.h" #include "libavutil/opt.h" #include "libavutil/dict.h" -#include "libavutil/pixdesc.h" #include "libavutil/timestamp.h" #include "libavutil/avassert.h" #include "libavutil/internal.h" @@ -89,36 +88,6 @@ static void frac_add(FFFrac *f, int64_t incr) f->num = num; } -enum AVChromaLocation ff_choose_chroma_location(AVFormatContext *s, AVStream *st) -{ - AVCodecParameters *par = st->codecpar; - const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(par->format); - - if (par->chroma_location != AVCHROMA_LOC_UNSPECIFIED) - return par->chroma_location; - - if (pix_desc) { - if (pix_desc->log2_chroma_h == 0) { - return AVCHROMA_LOC_TOPLEFT; - } else if (pix_desc->log2_chroma_w == 1 && pix_desc->log2_chroma_h == 1) { - if (par->field_order == AV_FIELD_UNKNOWN || par->field_order == AV_FIELD_PROGRESSIVE) { - switch (par->codec_id) { - case AV_CODEC_ID_MJPEG: - case AV_CODEC_ID_MPEG1VIDEO: return AVCHROMA_LOC_CENTER; - } - } - if (par->field_order == AV_FIELD_UNKNOWN || par->field_order != AV_FIELD_PROGRESSIVE) { - switch (par->codec_id) { - case AV_CODEC_ID_MPEG2VIDEO: return AVCHROMA_LOC_LEFT; - } - } - } - } - - return AVCHROMA_LOC_UNSPECIFIED; - -} - int avformat_alloc_output_context2(AVFormatContext **avctx, const AVOutputFormat *oformat, const char *format, const char *filename) { diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 2061b2eede..7041659143 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -2496,6 +2496,35 @@ static int mxf_init_timecode(AVFormatContext *s, AVStream *st, AVRational tbc) return av_timecode_init(&mxf->tc, av_inv_q(tbc), 0, 0, s); } +static enum AVChromaLocation choose_chroma_location(AVFormatContext *s, AVStream *st) +{ + AVCodecParameters *par = st->codecpar; + const AVPixFmtDescriptor *pix_desc = av_pix_fmt_desc_get(par->format); + + if (par->chroma_location != AVCHROMA_LOC_UNSPECIFIED) + return par->chroma_location; + + if (pix_desc) { + if (pix_desc->log2_chroma_h == 0) { + return AVCHROMA_LOC_TOPLEFT; + } else if (pix_desc->log2_chroma_w == 1 && pix_desc->log2_chroma_h == 1) { + if (par->field_order == AV_FIELD_UNKNOWN || par->field_order == AV_FIELD_PROGRESSIVE) { + switch (par->codec_id) { + case AV_CODEC_ID_MJPEG: + case AV_CODEC_ID_MPEG1VIDEO: return AVCHROMA_LOC_CENTER; + } + } + if (par->field_order == AV_FIELD_UNKNOWN || par->field_order != AV_FIELD_PROGRESSIVE) { + switch (par->codec_id) { + case AV_CODEC_ID_MPEG2VIDEO: return AVCHROMA_LOC_LEFT; + } + } + } + } + + return AVCHROMA_LOC_UNSPECIFIED; +} + static int mxf_init(AVFormatContext *s) { MXFContext *mxf = s->priv_data; @@ -2544,7 +2573,7 @@ static int mxf_init(AVFormatContext *s) sc->h_chroma_sub_sample = 1 << pix_desc->log2_chroma_w; sc->v_chroma_sub_sample = 1 << pix_desc->log2_chroma_h; } - switch (ff_choose_chroma_location(s, st)) { + switch (choose_chroma_location(s, st)) { case AVCHROMA_LOC_TOPLEFT: sc->color_siting = 0; break; case AVCHROMA_LOC_LEFT: sc->color_siting = 6; break; case AVCHROMA_LOC_TOP: sc->color_siting = 1; break; From patchwork Sat May 7 11:27:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35640 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121062pzb; Sat, 7 May 2022 04:29:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx5dCqB5FsHEuBqAp8XnuI04OpPggxgIybmDt6PzpiomUjFfVxdVwH+NvKzEBGuHGQiluMz X-Received: by 2002:a05:6402:90e:b0:425:a4bc:db86 with SMTP id g14-20020a056402090e00b00425a4bcdb86mr8215036edz.98.1651922974581; Sat, 07 May 2022 04:29:34 -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 gy25-20020a170906f25900b006f457f90cd9si7204499ejb.300.2022.05.07.04.29.34; Sat, 07 May 2022 04:29:34 -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="H/c1qpJI"; 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 A044568B3D6; Sat, 7 May 2022 14:29:13 +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 5017268B3B4 for ; Sat, 7 May 2022 14:29:07 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fYMg7ZY5hJptKwuJR0rQ1iNX1DedMZNExeQzLSAdbJWL1FYg6w+EwY7oSN8qOt7OjP8eeKybE1oKymapTUhcrLDU4AGBk+dDYYYmpiFdCvDRUFwKWiblS5qVW76RTE9FL8aje2ij+UVsju2Ik6UcNarUrUK2azvocMgwJ6+xQOGqsHCW9d4XuMbMueqlbKQMS5UyurVmmHZ9XbqDchruAFu610VwAUeVcdOpkNgGw5Z8QkRru2EJO1vweBeyaou3utNGLK0Kz/jwwla9oq+703BHFr/Lv0XlOik/dI6pCkFApfmOU7X7JvN3ZuvpfZAyzQoetYhG7RBYWQiRM8mvEw== 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=w7/hY9N4rKbDA224etZk7vY3cfy1qTyqGJO0m310tms=; b=l68FRLXvu3yoE+CDOdAaJ7dwAvKvEBqrQe7Zy9oQ1NBvK/icsAAJy65M1XeETAPzTNDLiwE8P1kqTzgi7jH3etz2A8Oc0Yb6/yBe5i7K5yHHJKla7BvnrnuA/ACZJmgXYmNPJXaatLoe2zEGLBnXrMW4/RykMx0We1ctmnAuUgU53eJG5MfzoFGQoNzr3pIUgOL1/8zTI1LZdkLrL52ShikO3UbIwFqWfmOlSZupjESidRLdjHmxLoGvj8/ejDbvsA7PhCoUNrTsbnhwvN8XNQ60TOVl59+vr3F48cpUOAXB/YHkKmWOk1vETXuZkmaJzT3cKgbtgB/2Aa0gs9zO2g== 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=w7/hY9N4rKbDA224etZk7vY3cfy1qTyqGJO0m310tms=; b=H/c1qpJIkNxf8yOJ0g6g4Lt0I9SMZdf26gxgGhqNgfNHTbCZFSons+YLmD4Ms/GJW+86+DyV+wYZUKn21K2aS8UrWrnibTD+8kM9XuEgMjPPH84x9BIffvMe+mKwcg7JM/1u1TkK9xSH9iNwtApScdTwN+MAf7IAeOKRvBYQOoFE+l7F9iMEcFa5S2Weaqv5VeY/EYhwikKIj4QUQKWKq592OKM/psiUg/B7Y9JYb+sT5XBwpjbFbHEIBKTBJb0xT/C7sW3gY1LOCW/dG1srKRGUGjsx258Db+K0mKBRf4Ol1NLO1qhgC+4l/g1+BeotuCEed4mTPkycTgWlvjMziA== 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:58 +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:58 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:52 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [o63sqdpcEcxq36VrK7ctPccqJMhIG56N] 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-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 022eb0d9-5a30-4cb9-01e1-08da301cc6eb X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwBd0ovWX5IIHexDTVvqG6XLV6qF4FWGWTBDu0omOmoq2P+Sh5g2tz2NKRBCeC6u2yXlLo4yDN/yxvjZI+acuYv+COPmicusDoYmV+Bysedve1zrwLN8PUbX5BlnbKyY8ZLRQCk5ohQ3RnLPgkI0sivEpM0/aHy+9wTosfL5QPa4ppGD/b0Vhd47TikS2BlUQR8PfrYF3AT3ij9hXsjXJB5x4WYoCTJHGfEGc/WN/Kh8vZ8CiOdYUSFT3Zs316xA0qqQF8vAIS0qWn2OR0LWnu/fWMwx1CZCx9vG5RMRdkVLgJQdyXjfSFK5vI5lRdu6KEIexO0WbttutQAxvcemCFE071cmy+DB8lbctXscOpF1XFbuDjlhNC45mIzMaJJc7B8DuN70PULohgo83mkyZt6EdTwoQayRrxMavmBH7DqNwRpJrKvGlXi+DQ3zxritOo+UfhF47ICnM0U8JlfRTOyUN6yvlKcI6XxGH5UCHmUxLe13PgnpOuZS+ej6/HMtvYyf44+b96AEA4+5TM1kN8HBXoQ8F901yWFfSkpq8RKR0VO+WOCr3vVYl7qkhuVkTb+Nl1lqMVLamdpeLxVH5hqolzXLe2oL9yqmGXbNXWzuUWg7vF+CWoCISzPTZcKgyt4qoy2nGKsQfVKeCC9C4k1biqABLDQ2oSl9Wnm9AueBu9EU/3/1kivPFTEMWTenFFZuUIO+oz9ZUQSU6zn2rfDvQuve2RjdG+Vx+MND6iLUc= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zVeviuLJcu9patUkaywpqwn1V44xnb1Dre1gI6naOW2LS8Lazw4oJPpxAABBEiTHkV/mZUplIxSJMCmU/aQTGru7OxDs8jN1hPavtHNSQn/QsBmHZfqTH2pzTXOTMuFxANNF8oAX0diyerNkn+MW5ZfeOk3ANiiYlF1ykZCY73/NVBCYfqxbZjRQA6n9funcGZ/RqkAjzG/ck2+9f7mo8FpNDZBCBP+sAgpWaazgymC95s1XXhtKKyMSYhzWQmRecH826h18BrV+awuZ6VMGuYnhVj+m7+2nPM1C8CqIWe2tXwoTm0Yf5kRschWSyusV7WvCKvn9gBgfz2n7DwnImBDAgqJMoo3Ylz5n3D9s6Ie/Z8VY3zpkp/E6ovBW35fSzZ7Zqg4k+rzTg3GoBF8qmaUCGG+JoTuj4mul9TV7hNfCyo6np6Qt0zqM6mGXs7o5yhcv/ixXLAOVPFEdvHiE3SXi1Z3qFiErRT/kv4dnBB+/mLYPYhqMCyXF/EdGtRx0gXaOcEZePM0scel6MA8py8jr/6uDGMxNyo5SUv2IsyMjDQATSPGVQmoSkcgQcaKR7qjkt6KK/2PZ5dq1bxZai63gQdnsX29ivjyKHxuZmEp1DOFN7zrBiyXt8n8kdzhym79C1IVfz5XYhdW57QrbyA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZBzSQKKiPmhu0S+zy69nM9vZNjCVZDa4vho9RwsnJWMrqgUBr8ho6BSXBGje6sYNhmIWqzJ0MraOGRiWS+RUp/Z7LtSq0LkdhYiqXltiMDlGYc6Wc6F1QYGwQGU3FIcPb/5N//DY0Z4Qw1B3mYn8YCwGw6vUsGiy0VJBP1bEhzsyQ4qHV1oFomjLN3LBQaqDJlzHuEaGfd2wkEugYlq8zO5lwxpw3tp0oimq+D0amAn08JUWKFDe97GC0on7TCWDZqh6RXUFNUIJWoOC/p++abfWxEEyr3Qtg6RcceJgCKl5Zoh+eIinbuzRpNSWIav/2fCGE+2D8ZakxwYKkkf7SCo7d8kjGrJny2iq1jRnjMcO2STiYxccnRKO0XDkvuW+63LGeMiNAKOZxhwePJcUqP1vinQFSNUDRwwlIa4lsG/RRqJaBlr/UZ0ymlWNgSot4Z0ps5GNIhkaF/tjbeq+OIgc/92TrdzCVPkoA+w8tS1vwA7eYwzbAyxLE6H4TPP2YG7LQg0y+r+ent5erqW4vA9Nfzy2L9F2aUDVgxLo65QqmjKp/pU5wGAcJfyYefQgvz0Kukt2pT6njB1+DGq1z0+b5OePOuVELBsLDurjyY9VJfpuZx7dGT+jS+pEzUA0e7szcLUjLrpaxk/qLyr23Y3MJepigW/6leXE3g5jf+q1A1G2oeinj3sYY1rwpVYRJYmrKXq9HkgP/+P4sHJN+GjjGjw5N9n3VYYlaaUHoOYSLsdjKuQZRJHG9mJxnaoowymGcHfb41bCAWkc7A++MyDpR5o0NGbzLnOX/bTDmeWPyNgrJ6+E+RxBIOJO0sJx5hTvl0kqzqzzlzVAtVi2IJN4oSnxM4CR/03HkXvGaR5KThP2ev/lAChGOou0VoE/z8NO6OU+e2ME1pdZlC+IC55snAfzZ1GH9DtviFmd+YgbyuILrmMW4G7cmO0VMw56yoNwxLl/RNNspzzIO3YPu0jI24IjdV1nViLP7mH1f3bm+paDdtZy5pj8DC8Xg8594wc1gdpjFvpg880csRbPahDWhS2OkJld5v7dn43ZIKNSXnmdqyFezGw3aOedWv7wUBE6jTBEnzFMNRV/zFSRIpFa9qW5iwA0/SiWoOALJ5EoIvJEJ1LqDc5o0+I6DwBy6nWDmZXu+TanBmyuHXJAEG6U07CeVPwvf/k4hKIfWO4jq5z3aZscqP5OUOT4OFIZq7Mbb71Z2OJ+nVEt2HZtj405/ZyYJ2Iew8wr88WTiSPlxam1Q4B7iZ6p1ICrSdyQqD+Z7vdDiYl64L1DpTxe1/aV9tUp6Da9E449+N+fXBXUivhIaXKAtxHYsRFzEwVIJyBOpiWA83KrHgOijKWS0jRu7/c4kqV1R6uFd/97ZUd4KisAKGUDJhO1+DGoqVbXycVhR2BoD+pVo0YwOaeYirx67RQUZqHNFFRyQq+43Jwsj1CWY8D+4MhooEGo87t7zP4hwVmlB8f8tCVDVaLPDQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 022eb0d9-5a30-4cb9-01e1-08da301cc6eb 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:58.3041 (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 06/44] avformat/utils: Move ff_stream_add_bitstream_filter to mux.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: rL06ocQmwfeu It is muxing-only; in fact, it should be considered part of the core muxing code. Signed-off-by: Andreas Rheinhardt --- libavformat/flvenc.c | 3 +-- libavformat/internal.h | 11 ---------- libavformat/ivfenc.c | 1 + libavformat/latmenc.c | 1 + libavformat/matroskaenc.c | 2 +- libavformat/mpegtsenc.c | 1 + libavformat/mux.c | 43 +++++++++++++++++++++++++++++++++++++++ libavformat/mux.h | 11 ++++++++++ libavformat/rawenc.c | 2 +- libavformat/utils.c | 43 --------------------------------------- 10 files changed, 60 insertions(+), 58 deletions(-) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index 429732297d..4e65ba4066 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -25,13 +25,12 @@ #include "libavutil/avassert.h" #include "libavutil/mathematics.h" #include "libavcodec/mpeg4audio.h" -#include "avio_internal.h" #include "avio.h" #include "avc.h" #include "avformat.h" #include "flv.h" #include "internal.h" -#include "metadata.h" +#include "mux.h" #include "libavutil/opt.h" #include "libavcodec/put_bits.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index 5e84942fb9..a40a29c5c0 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -771,17 +771,6 @@ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags); */ int ff_generate_avci_extradata(AVStream *st); -/** - * Add a bitstream filter to a stream. - * - * @param st output stream to add a filter to - * @param name the name of the filter to add - * @param args filter-specific argument string - * @return >0 on success; - * AVERROR code on failure - */ -int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *args); - /** * Copy encoding parameters from source to destination stream * diff --git a/libavformat/ivfenc.c b/libavformat/ivfenc.c index 5aa8bd1257..ed5ec90ce9 100644 --- a/libavformat/ivfenc.c +++ b/libavformat/ivfenc.c @@ -19,6 +19,7 @@ */ #include "avformat.h" #include "internal.h" +#include "mux.h" #include "libavutil/intreadwrite.h" typedef struct IVFEncContext { diff --git a/libavformat/latmenc.c b/libavformat/latmenc.c index 72865c9565..6553c28d9f 100644 --- a/libavformat/latmenc.c +++ b/libavformat/latmenc.c @@ -28,6 +28,7 @@ #include "libavutil/opt.h" #include "avformat.h" #include "internal.h" +#include "mux.h" #include "rawenc.h" #define MAX_EXTRADATA_SIZE 1024 diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 3b8ca11f28..4f9e283940 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -21,7 +21,6 @@ #include -#include "config.h" #include "config_components.h" #include "av1.h" @@ -35,6 +34,7 @@ #include "internal.h" #include "isom.h" #include "matroska.h" +#include "mux.h" #include "riff.h" #include "version.h" #include "vorbiscomment.h" diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index ead2ca25db..18e8f7e45f 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -34,6 +34,7 @@ #include "avio_internal.h" #include "internal.h" #include "mpegts.h" +#include "mux.h" #define PCR_TIME_BASE 27000000 diff --git a/libavformat/mux.c b/libavformat/mux.c index 11b0cb1307..31361f9b46 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -1304,6 +1304,49 @@ int av_get_output_timestamp(struct AVFormatContext *s, int stream, return 0; } +int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *args) +{ + int ret; + const AVBitStreamFilter *bsf; + FFStream *const sti = ffstream(st); + AVBSFContext *bsfc; + + av_assert0(!sti->bsfc); + + if (!(bsf = av_bsf_get_by_name(name))) { + av_log(NULL, AV_LOG_ERROR, "Unknown bitstream filter '%s'\n", name); + return AVERROR_BSF_NOT_FOUND; + } + + if ((ret = av_bsf_alloc(bsf, &bsfc)) < 0) + return ret; + + bsfc->time_base_in = st->time_base; + if ((ret = avcodec_parameters_copy(bsfc->par_in, st->codecpar)) < 0) { + av_bsf_free(&bsfc); + return ret; + } + + if (args && bsfc->filter->priv_class) { + if ((ret = av_set_options_string(bsfc->priv_data, args, "=", ":")) < 0) { + av_bsf_free(&bsfc); + return ret; + } + } + + if ((ret = av_bsf_init(bsfc)) < 0) { + av_bsf_free(&bsfc); + return ret; + } + + sti->bsfc = bsfc; + + av_log(NULL, AV_LOG_VERBOSE, + "Automatically inserted bitstream filter '%s'; args='%s'\n", + name, args ? args : ""); + return 1; +} + int ff_write_chained(AVFormatContext *dst, int dst_stream, AVPacket *pkt, AVFormatContext *src, int interleave) { diff --git a/libavformat/mux.h b/libavformat/mux.h index d1dc2fa2cb..4f6e8a50e5 100644 --- a/libavformat/mux.h +++ b/libavformat/mux.h @@ -56,6 +56,17 @@ const AVPacket *ff_interleaved_peek(AVFormatContext *s, int stream); int ff_get_muxer_ts_offset(AVFormatContext *s, int stream_index, int64_t *offset); +/** + * Add a bitstream filter to a stream. + * + * @param st output stream to add a filter to + * @param name the name of the filter to add + * @param args filter-specific argument string + * @return >0 on success; + * AVERROR code on failure + */ +int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *args); + /** * Write a packet to another muxer than the one the user originally * intended. Useful when chaining muxers, where one muxer internally diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c index efdfd0b0aa..26099cb1c1 100644 --- a/libavformat/rawenc.c +++ b/libavformat/rawenc.c @@ -26,7 +26,7 @@ #include "avformat.h" #include "rawenc.h" -#include "internal.h" +#include "mux.h" int ff_raw_write_packet(AVFormatContext *s, AVPacket *pkt) { diff --git a/libavformat/utils.c b/libavformat/utils.c index a905838468..fcee417c4e 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1776,49 +1776,6 @@ uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type, return data; } -int ff_stream_add_bitstream_filter(AVStream *st, const char *name, const char *args) -{ - int ret; - const AVBitStreamFilter *bsf; - FFStream *const sti = ffstream(st); - AVBSFContext *bsfc; - - av_assert0(!sti->bsfc); - - if (!(bsf = av_bsf_get_by_name(name))) { - av_log(NULL, AV_LOG_ERROR, "Unknown bitstream filter '%s'\n", name); - return AVERROR_BSF_NOT_FOUND; - } - - if ((ret = av_bsf_alloc(bsf, &bsfc)) < 0) - return ret; - - bsfc->time_base_in = st->time_base; - if ((ret = avcodec_parameters_copy(bsfc->par_in, st->codecpar)) < 0) { - av_bsf_free(&bsfc); - return ret; - } - - if (args && bsfc->filter->priv_class) { - if ((ret = av_set_options_string(bsfc->priv_data, args, "=", ":")) < 0) { - av_bsf_free(&bsfc); - return ret; - } - } - - if ((ret = av_bsf_init(bsfc)) < 0) { - av_bsf_free(&bsfc); - return ret; - } - - sti->bsfc = bsfc; - - av_log(NULL, AV_LOG_VERBOSE, - "Automatically inserted bitstream filter '%s'; args='%s'\n", - name, args ? args : ""); - return 1; -} - int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options) { if (!s->oformat) From patchwork Sat May 7 11:27:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35641 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121117pzb; Sat, 7 May 2022 04:29:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy+p8FV7GE7C0Uaajf8vFObgNOQFh9m86rxfo2cZkDOd2wtQDS9h2cGFQx4cK6GbUgOiN9T X-Received: by 2002:a17:906:fccc:b0:6f3:7569:77fd with SMTP id qx12-20020a170906fccc00b006f3756977fdmr6980910ejb.266.1651922986135; Sat, 07 May 2022 04:29:46 -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 i24-20020aa7dd18000000b0042397a44b6bsi6738122edv.183.2022.05.07.04.29.45; Sat, 07 May 2022 04:29:46 -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=k95RL49W; 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 98B5468B3E7; Sat, 7 May 2022 14:29:15 +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 AFED568B3D7 for ; Sat, 7 May 2022 14:29:12 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LeuU/dPF3zeT2xdu3q/3971UCbkZHOpBfVJih/ShdiaqRlGLldAj/NRXCKiIngX6+vOIdW9fjjpv9MCN6xIy4N8oLpbvbY+x4hb/lWrxoUVfVzkk1rhhxz+c86h4pmT4macEP37LBnp9FlP8v8/aq+Pi7w1zngdpDkpVKp2QFuHUCm00CbEfHxhYLSRIrJ5JEWX+J1A5fhGeSb5rcuehN8WfYu3x5nd1ZjgrRCPiOgx9NXkkjnN7TeDV8pRRdqlg4HMD9vVWXwdWDzGyyVDfBsgllQbCNrRtgu8aNExspuBjlxTJ0FfxeDYAQAOnQkxMqCdRpx8bvWRFXuKpicN9Pw== 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=zNhS4UeZS4AVtj7d4t+SzdFfhdHWplfh5GLZ+IdB4+g=; b=SjpETPHPBqEXCMjp741PO2L+cnk436/alfTmAQu8vAlcybIKv17DDv6IfU7v9KxpCAe7Xf3PH3t1USMzA19uiqjv57VH9NDCle0noCuw/Q1VOGitGJmiihgEkBLDjaZvwhJL/9ibDe+mbJlm/HIiUjDKZxjN/vBK0N+PGWoKwa75ZbEK9Gbxyz1SHpgbGd6D53+f0RPIuM9Cgf/1yIuVn+l9YtOkRidY6AVacnWnrjELx3+6ejGiG3MwWaIALj8eFFqnfM0v5ymwNH4HbsLZuBGsbyZg8dQaigNuNdkCndG6pryG3EHbxDbeCYX7vRqi08ug+38h+sFoJSuFQ4NJ9g== 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=zNhS4UeZS4AVtj7d4t+SzdFfhdHWplfh5GLZ+IdB4+g=; b=k95RL49WfT2To8PP0DOXIwVcZbTxAoss2n3AhgO0tuc86blixwd4/y+NO5xuyKTdtCS3jA1ZitL33Htbt75F/kt5nDQ9ItQtikOHblvTTccNO+jEdwP7YKVqN2KjwJmuM3uXwpph0G/JhCcwbGvuGfhro0tG22C4x8E2hyHpyp4PBv3sU9B0uIRSUeLLU0Uo+nL+2iTo8/7wZoX0YnKzcRFHXgnTUaQQxlwVnDMdDkyu1ENDdlhcUmA30hFVrevU/g+0jD1Zd477DbcaTFkOngYp+bUw9Yu7C7lGxg+AnMlhTNDlmCnpFU0sTbiqjzicLH3vaPZDgxEpPz7QLgl9hQ== 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:29:00 +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:59 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:53 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [sNxlti4oOjleuF+aHNrbjTiod/tA8fFH] 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-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9cb9b73a-7b01-4278-619b-08da301cc7d9 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8HS0nz+EXHexgC05tUIQQ0B2BfHZnJiOjod30zUVBT1PZUxKM5qvSeSoL9jOM9nWyfGt3cAeJZOgXLzGl1JKnSUt8wkSUXBJ9yiKRI5wfWf4RvKqZxeEcz4d3+OOia/H7g4+TJryZ7chNbNXReYar7yO7ACPAIh+uSlEwLpeGsZdqfTnrpMuTu5byBlLYQ9/HIlAQDpoFY4NPm0nBrDwBBblbBnYALnVcn454nFKu267T5vJ5wvISrXhY/EVyAOTYhLms77W5wWP7R+jcTI54MmEggrpJlc9p0JsMYZGlxUbFBa/eVWZ/jYRUeIJNrMsQkEyXWdIzREQG6pbYGOGyCkNauOqFtmYcUDWF7oQQtDHWCfTvhMDnALAIqzLywRu24KnTrzdSsyR62WY5PfMIYxuGAF2qNHV/mqCuctHKNfxI3bS2CHKJpl9zZHUs550op78hihV4Pm7DdPL4O6rtRom3mAGFHDXAkyk2i8FJ0M0KRIkQOCI7586GrP1pVR4npTVcDXplW7WtGB9+o2NJoamn530J1uok+R7dzKJ2w1/TdjHKqciYUlb1N2ON+VkhF3FfUqYF9aYl/KdkzVT5EqfRw7PW+eMR3trBtKwsXeaeA0cnONUrLuLZl0NE5I/tIBWMtnzmXVmOG2qsQeSgrFkbWZUJnyrbwXV7cM1Jzj5PiOr6uUTIObtrYnKLjcrIyVMMHaKQeXs= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4yij/t28DLDLj6ZBrw67nJZjmJaqtCGzLeC7qyBIBDrzGvr2N/5b+0luUlWp26fGzvvb09LTCjm6yjNozRkm2zSkIxXg69w5SDXUE6Irl8xwCW2OD6tghquRH+HekYnALXWKVK7wuQrxeIWYMxc5XKBtXTe6cuncANon3oCmIk6HsJe/En/iP7dAdb0rUlqkqF9QrLBmpwGNxO4i8lTaUa+1pD0AlY0OjyTh7vJtIj2j7M52NVfefPCtk2Myg92ysG8dKTm78aqjO1zRinjyyS8G2RMqcniFXD/HLq6tDTVwi0rJvR5GeEorqmjlnOW22IltjePtUtH31YbTVGJHmDVzO9fn5xeRESMlVgTIBnZdn3Xhmbv5LF2AMT5Zq+3n8YcuaEIG4xglGqPhj5xNP8X5ghoYNe3XsGf3hW6OiVtTbPHO7iYH3CldLFmwGx/RrALjAbCmxROzQqA6yjZ8qj3KT7HHhwI+FQY9VEr5y/DKnnj25YtjYdafLOaPD+EWjdV3nxDxIB1eNbLEYSws1ybdp0I96wzt1iEDIEMNoVSDoVWIq3tsWWJD9UloSvyj5+9bYAa+EpYyzFCXOVixa7kQ6s4oRmOcH6O0UsAUIWu9PVEXdk3PQaiQK88i3Mp6AQLHej2jX/1lQXzNDqEimw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UM+JbhCnSsylNYoP1dcKjp/tL6t7RuFLvt0U6qylSvtLuvbxGt+bfwvSQThbCYM9Bn/EBktK+fwgb9EAOuw8CPBMW2WbU593czkpT492e0eqvlvER4N5et0COCCBPeszxjAOu2tpU19zTd8l1WX+vv/M8vdUIwsqDi4NHh9soFV3r0uLLl+zdVIL986OUX7YAGTOwSsfBWKl3rhZenx3Lpk2l1zincTVpE+Tdb3/xJ8uizPlAxc7NSi8cPGHf4sVVrCaOKGSbs6xZndXUIbQpbs8pQVZZq2aD4HFF+jxwA6s+hDfVBubbKr7qxw7C9qGBxopRIf3f1iunkO+ze1sGPHDIdQ2kytGcqHWnky3QqQIed9r/sR5GgrrkJh3VvZ8U9OU98mnXH3ik0pGr+znE4qXEFRHwyxSKV2pjbkDWZ3SpqSxoFsYYbK4cJ8EC2wI2KciNGWAWvOU/fZp+ZLkYeBRqU2cQPn1y7AZYZRkFC3Jll2s3ts7mAe/Jc3Hv6C4xQHth9UhnS9nI1meZhcwgOfTOGX2JvmzkT51HdJ4LfsVdlNQQn/g0DxtGJqIVDP8KNhDtbc8ZuDqaKXELAbOPYtMzm11OrF7LRNpNP6iyfMxRw0RYc/hv+/sFlzrfCn9798V08KhX/Bx/d0WOUzaTw6scXMJeVPL0mKdsJOtNfU8/YogtluFnyYijaAVe+Xwy/A0j3hK3zWsGBbkKGGDogUpya1tWb92/h/TrGBDQUi7o5flZvgKUyiu90c8u85PAQzWLlCb+v8GTV3jidt3eQkYE0RSLgv+F/k24LM6mG/AhPtm1NkC6qVRcasbGsIzvFP25D+m2DyDnbqaTup1v/hKa/L4PJTj32Kj3iUZ71bHUA0sRpQw3zrVWZGOj7etxb02qRV9iEviVa6/8Qx2paGmH7cKLRRKQF6mK5QLu2VSOvoEYdfD2+Ueixk0xV3Yy1qYS6oPOO5owSL0PkXtNOf4O7TqRxKXmS3cCSW6Y9rekVIiti7045eb5ce5zwTZuPEFtZFW2Curd73JMXiUbyy0R2Tj0Dx+Kzavo0B8e9xp28Rqxq8QdA046DGtZ7JCWg/0Pgxx6OY9nm28Zql29rrcEiYmTwKGrfNfVLGlC7O45KNX/PHTlmzwZIh/tFym82gUAaYV0yka3/dKVts50M9AeFmXsT+/acte1g93aeOXdRfqxVG6R0cZWhU0kkVCzJuHsAp40D0ogFAAv2v8h0MAzSq57PC2mGP3SjbxVwFo3GhGhprtzmD282AltPzceWFEg5M4ZjXL9gWzwyUi69yk0jWtcb9QrAjKVutbFkGUMu0BOAab+KbOoFT4AA2em9NwvHn1MnJXulwMEQEjJ6RFz1wFVaOjzo7KV4mujsLQPJTjHj7aot9iS56j2EwuyIX66eBgpnmo90Z9IGhZ9SM8gBlby/3s7H0F3Ndd9MYPhwmBQexLU58IfM5Tc5mFnweYSfymVlK3Z8TZOZ5x3w== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9cb9b73a-7b01-4278-619b-08da301cc7d9 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:59.9290 (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 07/44] avformat/utils: Move stream_options, avformat_new_stream to options.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: VUSKITu5fumV This is the appropriate place given that AVStream is about to become an AVOpt-enabled struct. Also move av_disposition_(to|from)_string, as these are tied to the disposition stream option. Signed-off-by: Andreas Rheinhardt --- libavformat/avidec.c | 2 +- libavformat/internal.h | 12 +++- libavformat/options.c | 151 ++++++++++++++++++++++++++++++++++++++ libavformat/rmdec.c | 2 +- libavformat/utils.c | 159 ++--------------------------------------- 5 files changed, 169 insertions(+), 157 deletions(-) diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 3c749aec14..21fc2b87ff 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -621,7 +621,7 @@ static int avi_read_header(AVFormatContext *s) ast = s->streams[0]->priv_data; st->priv_data = NULL; - ff_free_stream(s, st); + ff_remove_stream(s, st); avi->dv_demux = avpriv_dv_init_demux(s); if (!avi->dv_demux) { diff --git a/libavformat/internal.h b/libavformat/internal.h index a40a29c5c0..a3fdab03af 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -742,7 +742,17 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt); int ff_add_attached_pic(AVFormatContext *s, AVStream *st, AVIOContext *pb, AVBufferRef **buf, int size); -void ff_free_stream(AVFormatContext *s, AVStream *st); +/** + * Frees a stream without modifying the corresponding AVFormatContext. + * Must only be called if the latter doesn't matter or if the stream + * is not yet attached to an AVFormatContext. + */ +void ff_free_stream(AVStream **st); +/** + * Remove a stream from its AVFormatContext and free it. + * The stream must be the last stream of the AVFormatContext. + */ +void ff_remove_stream(AVFormatContext *s, AVStream *st); unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id); diff --git a/libavformat/options.c b/libavformat/options.c index 2d55d3ad6e..14ae55e3fd 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -21,8 +21,12 @@ #include "avio_internal.h" #include "internal.h" +#include "libavcodec/avcodec.h" +#include "libavcodec/codec_par.h" + #include "libavutil/avassert.h" #include "libavutil/internal.h" +#include "libavutil/intmath.h" #include "libavutil/opt.h" /** @@ -188,3 +192,150 @@ const AVClass *avformat_get_class(void) { return &av_format_context_class; } + +static const AVOption stream_options[] = { + { "disposition", NULL, offsetof(AVStream, disposition), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, + .flags = AV_OPT_FLAG_ENCODING_PARAM, .unit = "disposition" }, + { "default", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEFAULT }, .unit = "disposition" }, + { "dub", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DUB }, .unit = "disposition" }, + { "original", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ORIGINAL }, .unit = "disposition" }, + { "comment", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_COMMENT }, .unit = "disposition" }, + { "lyrics", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_LYRICS }, .unit = "disposition" }, + { "karaoke", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_KARAOKE }, .unit = "disposition" }, + { "forced", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_FORCED }, .unit = "disposition" }, + { "hearing_impaired", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_HEARING_IMPAIRED }, .unit = "disposition" }, + { "visual_impaired", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_VISUAL_IMPAIRED }, .unit = "disposition" }, + { "clean_effects", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CLEAN_EFFECTS }, .unit = "disposition" }, + { "attached_pic", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ATTACHED_PIC }, .unit = "disposition" }, + { "timed_thumbnails", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_TIMED_THUMBNAILS }, .unit = "disposition" }, + { "captions", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CAPTIONS }, .unit = "disposition" }, + { "descriptions", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DESCRIPTIONS }, .unit = "disposition" }, + { "metadata", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_METADATA }, .unit = "disposition" }, + { "dependent", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEPENDENT }, .unit = "disposition" }, + { "still_image", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_STILL_IMAGE }, .unit = "disposition" }, + { NULL } +}; + +static const AVClass stream_class = { + .class_name = "AVStream", + .item_name = av_default_item_name, + .version = LIBAVUTIL_VERSION_INT, + .option = stream_options, +}; + +const AVClass *av_stream_get_class(void) +{ + return &stream_class; +} + +AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c) +{ + FFFormatContext *const si = ffformatcontext(s); + FFStream *sti; + AVStream *st; + AVStream **streams; + + if (s->nb_streams >= s->max_streams) { + av_log(s, AV_LOG_ERROR, "Number of streams exceeds max_streams parameter" + " (%d), see the documentation if you wish to increase it\n", + s->max_streams); + return NULL; + } + streams = av_realloc_array(s->streams, s->nb_streams + 1, sizeof(*streams)); + if (!streams) + return NULL; + s->streams = streams; + + sti = av_mallocz(sizeof(*sti)); + if (!sti) + return NULL; + st = &sti->pub; + +#if FF_API_AVSTREAM_CLASS + st->av_class = &stream_class; +#endif + + st->codecpar = avcodec_parameters_alloc(); + if (!st->codecpar) + goto fail; + + sti->avctx = avcodec_alloc_context3(NULL); + if (!sti->avctx) + goto fail; + + if (s->iformat) { + sti->info = av_mallocz(sizeof(*sti->info)); + if (!sti->info) + goto fail; + +#if FF_API_R_FRAME_RATE + sti->info->last_dts = AV_NOPTS_VALUE; +#endif + sti->info->fps_first_dts = AV_NOPTS_VALUE; + sti->info->fps_last_dts = AV_NOPTS_VALUE; + + /* default pts setting is MPEG-like */ + avpriv_set_pts_info(st, 33, 1, 90000); + /* we set the current DTS to 0 so that formats without any timestamps + * but durations get some timestamps, formats with some unknown + * timestamps have their first few packets buffered and the + * timestamps corrected before they are returned to the user */ + sti->cur_dts = RELATIVE_TS_BASE; + } else { + sti->cur_dts = AV_NOPTS_VALUE; + } + + st->index = s->nb_streams; + st->start_time = AV_NOPTS_VALUE; + st->duration = AV_NOPTS_VALUE; + sti->first_dts = AV_NOPTS_VALUE; + sti->probe_packets = s->max_probe_packets; + sti->pts_wrap_reference = AV_NOPTS_VALUE; + sti->pts_wrap_behavior = AV_PTS_WRAP_IGNORE; + + sti->last_IP_pts = AV_NOPTS_VALUE; + sti->last_dts_for_order_check = AV_NOPTS_VALUE; + for (int i = 0; i < MAX_REORDER_DELAY + 1; i++) + sti->pts_buffer[i] = AV_NOPTS_VALUE; + + st->sample_aspect_ratio = (AVRational) { 0, 1 }; + + sti->inject_global_side_data = si->inject_global_side_data; + + sti->need_context_update = 1; + + s->streams[s->nb_streams++] = st; + return st; +fail: + ff_free_stream(&st); + return NULL; +} + +static int option_is_disposition(const AVOption *opt) +{ + return opt->type == AV_OPT_TYPE_CONST && + opt->unit && !strcmp(opt->unit, "disposition"); +} + +int av_disposition_from_string(const char *disp) +{ + for (const AVOption *opt = stream_options; opt->name; opt++) + if (option_is_disposition(opt) && !strcmp(disp, opt->name)) + return opt->default_val.i64; + return AVERROR(EINVAL); +} + +const char *av_disposition_to_string(int disposition) +{ + int val; + + if (disposition <= 0) + return NULL; + + val = 1 << ff_ctz(disposition); + for (const AVOption *opt = stream_options; opt->name; opt++) + if (option_is_disposition(opt) && opt->default_val.i64 == val) + return opt->name; + + return NULL; +} diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index b6b72e6ead..cb0ca31f40 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -349,7 +349,7 @@ int ff_rm_read_mdpr_codecdata(AVFormatContext *s, AVIOContext *pb, st->codecpar->codec_tag); } else if(mime && !strcmp(mime, "logical-fileinfo")){ int stream_count, rule_count, property_count, i; - ff_free_stream(s, st); + ff_remove_stream(s, st); if (avio_rb16(pb) != 0) { av_log(s, AV_LOG_WARNING, "Unsupported version\n"); goto skip; diff --git a/libavformat/utils.c b/libavformat/utils.c index fcee417c4e..f31dda9b44 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -28,7 +28,6 @@ #include "libavutil/bprint.h" #include "libavutil/dict.h" #include "libavutil/internal.h" -#include "libavutil/intmath.h" #include "libavutil/opt.h" #include "libavutil/parseutils.h" #include "libavutil/pixfmt.h" @@ -258,7 +257,7 @@ int ff_add_attached_pic(AVFormatContext *s, AVStream *st0, AVIOContext *pb, return 0; fail: if (!st0) - ff_free_stream(s, st); + ff_remove_stream(s, st); return ret; } @@ -621,7 +620,7 @@ int ff_stream_side_data_copy(AVStream *dst, const AVStream *src) return 0; } -static void free_stream(AVStream **pst) +void ff_free_stream(AVStream **pst) { AVStream *st = *pst; FFStream *const sti = ffstream(st); @@ -657,12 +656,12 @@ static void free_stream(AVStream **pst) av_freep(pst); } -void ff_free_stream(AVFormatContext *s, AVStream *st) +void ff_remove_stream(AVFormatContext *s, AVStream *st) { av_assert0(s->nb_streams>0); av_assert0(s->streams[ s->nb_streams - 1 ] == st); - free_stream(&s->streams[ --s->nb_streams ]); + ff_free_stream(&s->streams[ --s->nb_streams ]); } void avformat_free_context(AVFormatContext *s) @@ -683,7 +682,7 @@ void avformat_free_context(AVFormatContext *s) av_opt_free(s->priv_data); for (unsigned i = 0; i < s->nb_streams; i++) - free_stream(&s->streams[i]); + ff_free_stream(&s->streams[i]); s->nb_streams = 0; for (unsigned i = 0; i < s->nb_programs; i++) { @@ -710,125 +709,6 @@ void avformat_free_context(AVFormatContext *s) av_free(s); } -static const AVOption stream_options[] = { - { "disposition", NULL, offsetof(AVStream, disposition), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, - .flags = AV_OPT_FLAG_ENCODING_PARAM, .unit = "disposition" }, - { "default", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEFAULT }, .unit = "disposition" }, - { "dub", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DUB }, .unit = "disposition" }, - { "original", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ORIGINAL }, .unit = "disposition" }, - { "comment", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_COMMENT }, .unit = "disposition" }, - { "lyrics", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_LYRICS }, .unit = "disposition" }, - { "karaoke", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_KARAOKE }, .unit = "disposition" }, - { "forced", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_FORCED }, .unit = "disposition" }, - { "hearing_impaired", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_HEARING_IMPAIRED }, .unit = "disposition" }, - { "visual_impaired", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_VISUAL_IMPAIRED }, .unit = "disposition" }, - { "clean_effects", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CLEAN_EFFECTS }, .unit = "disposition" }, - { "attached_pic", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ATTACHED_PIC }, .unit = "disposition" }, - { "timed_thumbnails", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_TIMED_THUMBNAILS }, .unit = "disposition" }, - { "captions", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CAPTIONS }, .unit = "disposition" }, - { "descriptions", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DESCRIPTIONS }, .unit = "disposition" }, - { "metadata", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_METADATA }, .unit = "disposition" }, - { "dependent", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEPENDENT }, .unit = "disposition" }, - { "still_image", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_STILL_IMAGE }, .unit = "disposition" }, - { NULL } -}; - -static const AVClass stream_class = { - .class_name = "AVStream", - .item_name = av_default_item_name, - .version = LIBAVUTIL_VERSION_INT, - .option = stream_options, -}; - -const AVClass *av_stream_get_class(void) -{ - return &stream_class; -} - -AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c) -{ - FFFormatContext *const si = ffformatcontext(s); - FFStream *sti; - AVStream *st; - AVStream **streams; - - if (s->nb_streams >= s->max_streams) { - av_log(s, AV_LOG_ERROR, "Number of streams exceeds max_streams parameter" - " (%d), see the documentation if you wish to increase it\n", - s->max_streams); - return NULL; - } - streams = av_realloc_array(s->streams, s->nb_streams + 1, sizeof(*streams)); - if (!streams) - return NULL; - s->streams = streams; - - - sti = av_mallocz(sizeof(*sti)); - if (!sti) - return NULL; - st = &sti->pub; - -#if FF_API_AVSTREAM_CLASS - st->av_class = &stream_class; -#endif - - st->codecpar = avcodec_parameters_alloc(); - if (!st->codecpar) - goto fail; - - sti->avctx = avcodec_alloc_context3(NULL); - if (!sti->avctx) - goto fail; - - if (s->iformat) { - sti->info = av_mallocz(sizeof(*sti->info)); - if (!sti->info) - goto fail; - -#if FF_API_R_FRAME_RATE - sti->info->last_dts = AV_NOPTS_VALUE; -#endif - sti->info->fps_first_dts = AV_NOPTS_VALUE; - sti->info->fps_last_dts = AV_NOPTS_VALUE; - - /* default pts setting is MPEG-like */ - avpriv_set_pts_info(st, 33, 1, 90000); - /* we set the current DTS to 0 so that formats without any timestamps - * but durations get some timestamps, formats with some unknown - * timestamps have their first few packets buffered and the - * timestamps corrected before they are returned to the user */ - sti->cur_dts = RELATIVE_TS_BASE; - } else { - sti->cur_dts = AV_NOPTS_VALUE; - } - - st->index = s->nb_streams; - st->start_time = AV_NOPTS_VALUE; - st->duration = AV_NOPTS_VALUE; - sti->first_dts = AV_NOPTS_VALUE; - sti->probe_packets = s->max_probe_packets; - sti->pts_wrap_reference = AV_NOPTS_VALUE; - sti->pts_wrap_behavior = AV_PTS_WRAP_IGNORE; - - sti->last_IP_pts = AV_NOPTS_VALUE; - sti->last_dts_for_order_check = AV_NOPTS_VALUE; - for (int i = 0; i < MAX_REORDER_DELAY + 1; i++) - sti->pts_buffer[i] = AV_NOPTS_VALUE; - - st->sample_aspect_ratio = (AVRational) { 0, 1 }; - - sti->inject_global_side_data = si->inject_global_side_data; - - sti->need_context_update = 1; - - s->streams[s->nb_streams++] = st; - return st; -fail: - free_stream(&st); - return NULL; -} - AVProgram *av_new_program(AVFormatContext *ac, int id) { AVProgram *program = NULL; @@ -1953,35 +1833,6 @@ void ff_format_set_url(AVFormatContext *s, char *url) s->url = url; } -static int option_is_disposition(const AVOption *opt) -{ - return opt->type == AV_OPT_TYPE_CONST && - opt->unit && !strcmp(opt->unit, "disposition"); -} - -int av_disposition_from_string(const char *disp) -{ - for (const AVOption *opt = stream_options; opt->name; opt++) - if (option_is_disposition(opt) && !strcmp(disp, opt->name)) - return opt->default_val.i64; - return AVERROR(EINVAL); -} - -const char *av_disposition_to_string(int disposition) -{ - int val; - - if (disposition <= 0) - return NULL; - - val = 1 << ff_ctz(disposition); - for (const AVOption *opt = stream_options; opt->name; opt++) - if (option_is_disposition(opt) && opt->default_val.i64 == val) - return opt->name; - - return NULL; -} - int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size) { int ret; From patchwork Sat May 7 11:27:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35642 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121148pzb; Sat, 7 May 2022 04:29:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybvq5EsfhaZxpLB61QrC9MOzGPW8dFzoTaor36Iuo+gO4F9LJxEtF5J30eyUKKq0UFnenV X-Received: by 2002:a17:906:fccc:b0:6f3:7569:77fd with SMTP id qx12-20020a170906fccc00b006f3756977fdmr6981309ejb.266.1651922996119; Sat, 07 May 2022 04:29:56 -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 q17-20020a170906145100b006e8b4347a42si7651700ejc.440.2022.05.07.04.29.55; Sat, 07 May 2022 04:29:56 -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="qXRE/sMI"; 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 A3A1468B3F2; Sat, 7 May 2022 14:29:16 +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 DDB7268B3D7 for ; Sat, 7 May 2022 14:29:13 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HZrVbEZZeyzxbgtIguCILncFB/taYYFR2WWzNUGdE7l+/sSkJGXBNWsA5RAHZ8W8WnryktsqZVlsHHyaHr8S7MbyE91fpuCIZl69n9ba8wHkPm+zelyQcgo08+f//CsBrL3J0MjWrWDp6YAPAzLlPshH0sHI+kvBI2vuVq9Blnnl9CjDwWsVp7Mrsfif1SsvuHMItXf9xzAgr97pa2U8OIXLixMEooZ+5M28tDutsmrUfft9xguVmSW22l2IVX68VxZpz4GeZr85o65H5mIeaRDqznvVa2uFuzqJFzRBQN1b4izxnnWwal7er8XrtaON8d6pJiHoTpmgoduvTWkPcg== 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=42bQzuAPxChZ17ywoqudbFaomyMqZQvrjK0rknFnFnE=; b=TSVqIhPlvNTbzOa6EAd9WFEmLlgC9qQK48kp1mLn70nm4s8H6gAUNZPijDVLZGFunKDYWkUZdrp9YPJU8G5JefEKZ12PSa+drXUUmXG+/rOqwB8w5/YzjF7FnJZKkJFzzqly7namOdtc6xebghFI1QuFhpDste8WTtt9Zu7VGjxqKbRlY0XrcUKXL61GY7HOQTU5ZBYb9H/CjDToFsV1AN7zmak6yVb6CzfHwIH+lhRVsopFV8MjMH/W6BYeIKjN7isGCr680wRicPEgIdPjliDbWrwm8doMHwzJNYOMWP/t5IbQcXLj28gtwT4uUgOC3tkToe75VjnbaM4jN8usuA== 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=42bQzuAPxChZ17ywoqudbFaomyMqZQvrjK0rknFnFnE=; b=qXRE/sMIp+2O27/z5cC4X3U2+1rLY6sruZada3F8IndYCw/cix+9DYWDOyqEj0GFw3gr3BaP04wA8MQNZNYpSG21zRGqMa8nc/yjd89jFpPhn8zpg3tisLbsty8SwH8p7KFqfXsbbwH2IztEYtZg2nwXZ4SV/LpfgetySHhKLQNNZXLPFoyrSL6Iz5xc4uin5YsDg2Pi7TRdo2GHgLDuhR1SHKi9WO7GP/T4FO/FBdKqnxH9TlPKyZHTwZMIIB5C9j84A1i+lZlq9Jy5mjXIj6svExro2o3DRbLTdY/4cuaJ9RVlTP7ZIhoEsM6WBK/QdYfLf/SBZ0YtPQCk5RAPQg== 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:29:01 +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:29:01 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:54 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [hiq0DW6SM+WTM0V5bkFbAVE22xuAiZPj] 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-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d3171d6c-b5be-4a25-7e95-08da301cc89a X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwgPy7lSo2OA/mOavC1mNg9VfftA5ag6w0LH8MRGDa7/tnsCNUeUYAr0jiHetMP5TVUA4fBLYbFDMBSEiqWIo4DMCLfn497519Pv0mvhZYJeJMsXVIU+6YunfaRzP6Y9Ml9TFwfQKlPwM0ShpHzKA59zR6hvuNqxCnz5wuCFyrYwozG9zoQWzMKGerMQLvff6rbRAsGl/UHfXtBzY6b4gnVAX1KFdaAraNfK3vJ6UHXZzExgtMUcnZ26jkpJPsDhDHOaqGdT6Jt2cz3I6wC0WZ9rM/i79OpE4DPhwWOlw4xpimnlxycUhA69TTcHDu2JbTMFoK5P6ZxzXea1+k5To+KLk9eVTqL+B9KIZsAfTF74Iqs2Y6HewsndHCoTrHRIEBlDCdFhiZsUs2ewMmMwdigqzCMMN3n29/AydaKBU8IjYCefn76C+rD8BNXOjWbL6+odOZBQqBCOXYPSJk9o1CzncL5duKxr4OfVLQRdB2Inz9SBqkWkIy+fxAs4/n/3OyoLRwRphP1qKCB5pizv1sCu74Ks6+HXPPN2I72oBOXpsmbSxfzmY5/0ZfioE6g4o2P8jdFLVThGX5PaL++lCmaW8uYd+fHvR9Riq+htuZpBfP+hJnf8i4Fh78PBqOsDR/OFY9xCVwTMiehlyR/zGKLpNkhkkQRRDt2jJqUG7hHDOO45vD9xJL+oPfrfnyCuktnjw/7yfwIbR8ghjEJj1sPV07ejMqD0uOOy9sncUqf+I= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XCfN7eRd/v9/7YDYSpCCIkv7CcniNCipzI7luJKAK94IBBpz66eUvmPcJ1hkBfNWQK/NDqLWL6Uk3HNfA1oxWgJ2xSnVzlA81n9yhkAl1p5waQex3mav4ATcXoCCenDzftg05nYLNuz/UJZZwptrfiYSgrrOLg28QxArU8k4U/nu4XNEmNjm+Wm0FrUbmv4Q0JWyljYj8uZZxZ0PAMHcWKkneyN0gz630TFvox+x0zCFv2+8iq2bTDnEIkVrXlrGOctQIKWjPR1Ad8XH7WnUaG/b0PA3roXTWLIO9Lp+SPDjlEUAvvuyA+z/4PWch4BjgPdTAQZksO7gLGdlmonk0W88Fp4N9B/dH0tZ0/0r3Q4h/+P0MMMv+ztMlxKv5S6Z1GcW36DBGgbsD9WqurtgZUjAy5NBqrlSSlDIlsZ8kHnxUMXt+jwBp5YkkAyHSKCuXEGXc9v0gqrAHsdxrn/oo6fhl7dIwG2GaIQAiwqJjJ3Nm1J1bLTJQ/DOK+Mqj3C2HyfEC3F8JtdZYwU+0Rqj07lc84LUfSwy1Kmp6We3uHClzeNYPMrhxyqqQSJl4XnAX6RyklOpydvL/gIGggkCGGR1IyC2PX3yHT5H2EwGY+fM+a0DALVIs+xskzE+E7xrmoXc/yseYcaZwjv6O9kAFw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5lpCY4HHWjtJrlFImGua81IeVMLWedscfgZanBj6PSpyFWHR+CABHuWyHAsjy8nwQ/t41x+TNung1E6QNB8o7mzS3CcIxS5otCHLL5mPahHjAW1uHCf+OmjN7zU9/Ou3qvVgoG7+xLEop5GERz5h0GsgQc99uJPZZHXoJxRYrWLHkw9bSh8NAqy0ZHu8rVOHSgTV1cLthRJgZ3wOLBN4szXYknoMu5kKIL5pQbe529rwMHMecayqNk8q1iKl4vFWmjJooJ967v002Ai2viR+3NGZIZ4/87+9/eztIBRYxh9O6JJm4lUfc45YJdwzmEyZMrmmmJL1ZHbcBWAtZWON2/RtL+Va9hrKLJybL1bPUgGCs8TbvQRaf92yKv5kKAnppICmJGf3j4fMqgF4GAeNvl/HIDWAaDSBcWO+XzX9QYycYWiRlN9yV6Ewt77/+STi9CqcZmQL5Uj6EaY1xBmIzuPF6tDC006c1P78x7q256kJRO1Mcsr8PHUOegBRQ+8NcGnJ60xahIj9tABo8YhcpytN5X+4tqDucUh9EPSc6p56Tw7CheubP2yxxmaaenyxAiw3FzC7lBuD88DzSKzCqppsebeN88XRMvt0BIiSrvivNnHXBV+FU9V/DODC6FKW0UodNyY0YqcCFESYQca3r4uNu9dV5GcrpJGwsCXvAidL3JMjkdVIJZPjpIxQ/aJqISPn6WEVxNx1TgdM5zvkIQ2bTZkYwy5qd5HoSDuKzPBT8bIHAUF+DISq+JV5I20Y86LjWJntxhv7lS679qFnsvKxzCp1BQvqVVnMnkol4MWHtx/GXtJbaxPtXiRS24GBsQ2XLreS0ul8ABT+9QbhAUlBbkddf39Dw66iEaVQVGwYE2G/YfLOAmZ8lS3zNKgsZpOuOAW3Jo5GLrOhDESQniTrd9t7N5bgBx/yffSb+zTwMXW2Q3JnRGxmkg3OkYszulRduICeRxJso2FLwz+wIvzvGd9M7Kszk4sDeRFysS9hOSEHe/s66dpJh85n1vb2x8EcW/n+M1liGJYjj+jUZ8CJl5/M6WsmOr97/MXxlphMBlmdMxzPNAp0UpaSC+GYqxTJt5SvszHLGJcg8AL5TeZhgBINOKDCvk7VBtUHxkoRyY+61Q2v0VBDnlLqZNhQXSnI7hSx/5yeNTPjeukSPecD7YCzpAVPE1iwGe01xyMdZ6U/ojSruem99fH4rGOh8UcS7bqWlj8hxvjZJl060hNQyxDTQRuuH1h1gnJoLYSTbBVLSNhUGwIW/U8QVNYeU7k8Y0ZqanW3zPBaj2knduI+lfJSLqgV4wQGJx17sLmNZyqWbHB8cRoNj2jNdegjUZHdCEcAbgOJB66mrIdc19GbL/Ha2CQBJVPt4/mHclKQAsXhpO7oa5pGGwurW6i+HqEbJw//RSnQ28Nthfm+6MoApXvS6Fg7rNw40gSfTObXFU1wVUz/ruxA6wuUfCCss7o9og2X6NFNWR7sZfTVnQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3171d6c-b5be-4a25-7e95-08da301cc89a 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:29:01.1163 (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 08/44] avformat/mux_utils: Move ff_format_shift_data to new file for mux utils 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: 8u5SV0twHgHi It is only used by muxers. Given that it is not part of the core muxing code and given that mux.c is already big enough, it is moved to a new file for utility functions for muxing. Signed-off-by: Andreas Rheinhardt --- libavformat/Makefile | 1 + libavformat/internal.h | 7 ---- libavformat/mux.h | 7 ++++ libavformat/mux_utils.c | 81 +++++++++++++++++++++++++++++++++++++++ libavformat/segafilmenc.c | 2 +- libavformat/utils.c | 56 --------------------------- 6 files changed, 90 insertions(+), 64 deletions(-) create mode 100644 libavformat/mux_utils.c diff --git a/libavformat/Makefile b/libavformat/Makefile index 537f5a1124..52c53ea3db 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -17,6 +17,7 @@ OBJS = allformats.o \ isom_tags.o \ metadata.o \ mux.o \ + mux_utils.o \ options.o \ os_support.o \ protocols.o \ diff --git a/libavformat/internal.h b/libavformat/internal.h index a3fdab03af..eb18277cea 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -946,13 +946,6 @@ void ff_format_set_url(AVFormatContext *s, char *url); void avpriv_register_devices(const AVOutputFormat * const o[], const AVInputFormat * const i[]); -/** - * Make shift_size amount of space at read_start by shifting data in the output - * at read_start until the current IO position. The underlying IO context must - * be seekable. - */ -int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size); - /** * Rescales a timestamp and the endpoints of an interval to which the temstamp * belongs, from a timebase `tb_in` to a timebase `tb_out`. diff --git a/libavformat/mux.h b/libavformat/mux.h index 4f6e8a50e5..c220738942 100644 --- a/libavformat/mux.h +++ b/libavformat/mux.h @@ -96,4 +96,11 @@ enum AVWriteUncodedFrameFlags { }; +/** + * Make shift_size amount of space at read_start by shifting data in the output + * at read_start until the current IO position. The underlying IO context must + * be seekable. + */ +int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size); + #endif /* AVFORMAT_MUX_H */ diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c new file mode 100644 index 0000000000..7b79ffd1fb --- /dev/null +++ b/libavformat/mux_utils.c @@ -0,0 +1,81 @@ +/* + * Various muxing utility functions + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "avformat.h" +#include "avio.h" +#include "internal.h" +#include "mux.h" + +int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size) +{ + int ret; + int64_t pos, pos_end; + uint8_t *buf, *read_buf[2]; + int read_buf_id = 0; + int read_size[2]; + AVIOContext *read_pb; + + buf = av_malloc_array(shift_size, 2); + if (!buf) + return AVERROR(ENOMEM); + read_buf[0] = buf; + read_buf[1] = buf + shift_size; + + /* Shift the data: the AVIO context of the output can only be used for + * writing, so we re-open the same output, but for reading. It also avoids + * a read/seek/write/seek back and forth. */ + avio_flush(s->pb); + ret = s->io_open(s, &read_pb, s->url, AVIO_FLAG_READ, NULL); + if (ret < 0) { + av_log(s, AV_LOG_ERROR, "Unable to re-open %s output file for shifting data\n", s->url); + goto end; + } + + /* mark the end of the shift to up to the last data we wrote, and get ready + * for writing */ + pos_end = avio_tell(s->pb); + avio_seek(s->pb, read_start + shift_size, SEEK_SET); + + avio_seek(read_pb, read_start, SEEK_SET); + pos = avio_tell(read_pb); + +#define READ_BLOCK do { \ + read_size[read_buf_id] = avio_read(read_pb, read_buf[read_buf_id], shift_size); \ + read_buf_id ^= 1; \ +} while (0) + + /* shift data by chunk of at most shift_size */ + READ_BLOCK; + do { + int n; + READ_BLOCK; + n = read_size[read_buf_id]; + if (n <= 0) + break; + avio_write(s->pb, read_buf[read_buf_id], n); + pos += n; + } while (pos < pos_end); + ret = ff_format_io_close(s, &read_pb); + +end: + av_free(buf); + return ret; +} diff --git a/libavformat/segafilmenc.c b/libavformat/segafilmenc.c index 7a412fe9cc..42d56fccd6 100644 --- a/libavformat/segafilmenc.c +++ b/libavformat/segafilmenc.c @@ -33,8 +33,8 @@ #include "libavutil/intreadwrite.h" #include "libavcodec/bytestream.h" #include "avformat.h" -#include "internal.h" #include "avio_internal.h" +#include "mux.h" typedef struct FILMOutputContext { AVIOContext *header; diff --git a/libavformat/utils.c b/libavformat/utils.c index f31dda9b44..b53e2aff0c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1832,59 +1832,3 @@ void ff_format_set_url(AVFormatContext *s, char *url) av_freep(&s->url); s->url = url; } - -int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size) -{ - int ret; - int64_t pos, pos_end; - uint8_t *buf, *read_buf[2]; - int read_buf_id = 0; - int read_size[2]; - AVIOContext *read_pb; - - buf = av_malloc_array(shift_size, 2); - if (!buf) - return AVERROR(ENOMEM); - read_buf[0] = buf; - read_buf[1] = buf + shift_size; - - /* Shift the data: the AVIO context of the output can only be used for - * writing, so we re-open the same output, but for reading. It also avoids - * a read/seek/write/seek back and forth. */ - avio_flush(s->pb); - ret = s->io_open(s, &read_pb, s->url, AVIO_FLAG_READ, NULL); - if (ret < 0) { - av_log(s, AV_LOG_ERROR, "Unable to re-open %s output file for shifting data\n", s->url); - goto end; - } - - /* mark the end of the shift to up to the last data we wrote, and get ready - * for writing */ - pos_end = avio_tell(s->pb); - avio_seek(s->pb, read_start + shift_size, SEEK_SET); - - avio_seek(read_pb, read_start, SEEK_SET); - pos = avio_tell(read_pb); - -#define READ_BLOCK do { \ - read_size[read_buf_id] = avio_read(read_pb, read_buf[read_buf_id], shift_size); \ - read_buf_id ^= 1; \ -} while (0) - - /* shift data by chunk of at most shift_size */ - READ_BLOCK; - do { - int n; - READ_BLOCK; - n = read_size[read_buf_id]; - if (n <= 0) - break; - avio_write(s->pb, read_buf[read_buf_id], n); - pos += n; - } while (pos < pos_end); - ret = ff_format_io_close(s, &read_pb); - -end: - av_free(buf); - return ret; -} From patchwork Sat May 7 11:27:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35643 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121220pzb; Sat, 7 May 2022 04:30:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJytRV8nFR6o740GQnPu2FVkVy3DOHGRexqncrMJoLQH0IhtvwmQ3mlahredpXlKHhthsZRr X-Received: by 2002:a05:6402:3492:b0:427:ccda:1289 with SMTP id v18-20020a056402349200b00427ccda1289mr8214594edc.261.1651923005899; Sat, 07 May 2022 04:30:05 -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 hb41-20020a170907162900b006f515cf0327si5104781ejc.572.2022.05.07.04.30.05; Sat, 07 May 2022 04:30:05 -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=ZttHMPQ8; 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 6832768B3F4; Sat, 7 May 2022 14:29:17 +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 14F7268B3B4 for ; Sat, 7 May 2022 14:29:14 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QyMyTyGbv2aVCvXBU6iYjtRUCgyusxjY/W4f6HaDYA3dzfjWOQnCPt5hdi9d98iYtrSfaJnDJ9RB3N/G6Zd3dzgRsR+Is3/n9W/EBmZSecLnfZ1swmWJwncvuFsli0fakmf96M6OMDsn46FfJr9uo+RyuM6bVPB5T5qSLRt/Jh1HC/wynVOWRM3wh1uREjTmf1A1wHCOnL2allWwpl6slok+JXO0nhnty033P8LNIre8uHrRzyPlLtQeKkNP9jfQ/zKSmhxfoQMKsoKdi0DBukdVy9x7EfT6uXsU4xnBZkPY1b0Cxq4JfadWZvEX+pUo/jqcCYrwI7NdV4fR6qki2w== 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=V3ch0UyERBZTHrC2JXf0/WaxTkbV0fscDQMLDVy1jCk=; b=BwAOtZfxdWuOajlbD523drKfOK3/LYCD3ZL4pGw3hL96hiA7HILZG/fhcNW95KwoNq4kdvoZvW+n9rld986v6fVYKcl8nXVfXMJ1+IbRnxxq9l5fm7T1MC1PSGAJzWWLQVJXqkXLoj88lLb5oiQfKJyhy+VwQ/+2YO9/LOt1kF1K2bUJrdHNbGFBT7CWDf2nRduQfy6811YVdVCX6ylIOn4uQ24ZGfgDZw4dwH2UXUaRrzY5kiGgyh8X+qGamhmRCDbVwD5/N3VshsDiz1MSdc82bcqzW3cMi0gn2b157iNcmkEhAvUuVUqLGo/FhK0vb269rZp2vwGxQqncqKX2Hg== 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=V3ch0UyERBZTHrC2JXf0/WaxTkbV0fscDQMLDVy1jCk=; b=ZttHMPQ8L91adVK19702kkXRmji07HaMLKGADBQYzu54ckCqbxqFxA6zvFsWvk6tji/Vpe8ihlhDV2hYxQ9Cc8Xp0jv5OGZQ2tf9FHhKcoSHj4m7L68mcgiIcAQ9UykJmin1TPb7Wuk0cPgNJ2xAGagOUeKk9e0P5pDG/32m63IFSMoe1vCkCK31Gf0A7VUESqUzdUKYJjpd+DaupzgU8maV7B4rmvIpWezCBJq+Oq6Kn0Pakbigfn152jJOOHI+LctcOc0nRiB0bkj5z1Z+R8oVh3hQcqtykaQuSq757PmC0J4gmr6nfyGFyThw1hwDxEaiiIaQJ5RmQ+pAF72gGg== 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:29:08 +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:29:08 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:55 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [9CbqTGOX0XsclYn8gIHn5qsBiOw45iPm] 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-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ddb325bc-4dae-42dc-bb9a-08da301ccca8 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwr5ii/vgMvbz2dRhKgkeS+sfBTsH2gPH/BE0FLxrXTBXDpTqAMqE2qqY1JoLnFmf4jVfI/SRMDOzpgM6UIApM8/gLaChtTWNsOh1NyqRzBcWHzDPKHr2rPTjE6bIPzpyFdD8KvEndKnASotObjnPv5GCpkjGheadBAiIiW8jlzvG3nNFZQR4a/NbRqPnPgms6SZ1Uj5LC9I6sDV6p568p5edzkYao7cNCt82AxnytMcphZ2KqMiA/y92+Wql/KqdRJVHP3yK54scsHzoDLl9NRjSyLhNuFEnhlWIL/kRN3i9w58WnRtKiOm27TVbLifFczgCKe9JMHtUSTj26LXQg1NB+aTOhGKP8pdppt+rdsBQeryN4AwkUWtOx72C/ri1RSA/LUpooqmXb7TkKz/IB0Xu+nnuRGcYUNco0HVkUwa5xwCdIGWeFsubkjaYiyRaDIao63YAs5pGHVkWHrRAdCFefFtnM1YauB6ZMFlImLzdDZi6WxpNBHbI+kgWUjZYjJ1VYGD+y2qs5z0QEtpbfQbOYpCuUtvkcxw38KudPwVyqq4lOrzHItKk3GFPkrj9igWOSS+nmMQyKZBS1nXrlmCLKd6rct3DgQYbG6LbxEr0IudXDhgezooDaM7J57JjAbXHKymhvJBuLQpoFMJewLT5A9VVbxW6jxuT1aqD72LbTTCFmKiipTpTHhT06aEZjg+p+AI9S89QwxyUsi+pxar66eUHwWGzGGDWkVSi9O+4= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1lovh9BNCGcgv5EJvZfgWTlpfdvkzcE8/dJsBSn0GZ2eBYGcCQGOaTXFEGNPeTM5T9CsWmdwQ/kzTOiGGoy9BNaP1/4vLpBzNUBMNZSdEJ4/fBaRAkxHnYp0FWaA3+DWtHpZtlZJszZj2/XAWNVvBomrIOLUT/UKgIxOI9YTYCa/tRkOBhmFeFhTzTnlpv/yS12LwJfn470T/fi9vyodLG8ICbXuNUeJG0dbHvfQ3qn7T8ZoIqNFkSatn6aM+dXRg+OUcM+WeqdVZqSFfK+i4/KkmmGPxAde44szdQWQbr2cOFZ5XbeRvY0ZbNf5LXhPax8jxEBf691Rjfttjqq4RMLKtyF0RZhqLGok1hwiQ/u9VP0CXEuo8FzfkEfyYa2KEnZsnwnTE0e2PjDZuETk8h8T1GwgbbH6hK61rF1TSBtQYFcVj+TFMbT8sIFHAyeEJrVQqNS/NYO+W2L+8ZF9LdteE6BzpSwtVH9u1TF4U0D+4oI1z4v2sdurIL/F4Ye8eMdjFjT8EhKiqVGVSiWsg2mCGeTEwHI+4WkxPqzMe3tF90ZpcwOMpUa7wgEV2BbkOfg7eCQEg0Qr+OvPN+T4YEOTpCugln4lJSziURSScirzByL1YFfAB+6M3BvKN289 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YJOPUOXiyDFOHxfc/FJQysmg2eQgTCsosVxe5PKiAjgVAIix+cCnBO/6ZObU05tWSdhAatK/ad+lfWxEyr/Bs9qyJOfPUu43iwAOoLHaORTEWF3VrA2PG9gK9eutmmrMflOQitcF5r6gTPO2/u47X7JiV4QSz2E7aoJdSIEkxiEnL7IMO9FViHynyI6YX898VmocE0efFo3tYGgQPKFlpsMUkBBn7PGprBhTrGe9aRxF4ZVfz2y4UFg32TmAB/DyWfQjEist4FxynN3QpMelnr0iK3NM3XlyaUGHlFc4ppeEAc/JWjOeOOwwHHNV3A9b1VSng6MQ/zE7rGuV8jjxaf6e1q8oXjuq4E5ai/CpwnLKDJngRlLdigw6jQnwTB/NLIUSjX5JP83TCDziX7bJJDoTeSdUKajvbHnsyHhQsaaZOOISz5YwqUZpWF/yDGs1njF8v4AuCE/NSGPpnvCEv3N7J3X/+EisiV++v0bVYIdiRWBvJiTg2WAISdsXnKFfsHGhAUd/7im6583Zjrq6paQqD6fbbYQNk8dCskhyHmkEtaLbFein9gATXUMN04QSo6XAY5hJ62Z/ya2Wqi+vv39/XGzoxL2HRqlowHXybmF0FJeyWE+4bBnWslumGmPYZEJiNNgZpAnpXvO3Zt182b4M4QWunIhJKZFnny0WBK7NTvsTFZBQ1gvxag6sdTUfXy8OXSljvycHCIF1luq96TkmVPlihjPHCrv7anVD2FjsT9FGsTBFronRAdubEri0i4h/Ng6TBP77Tqevzu7SiJfbpRwkcipZNoVmfY/wtEtQFA1K5e5NtZ93ysAviCLg+GUienztDEKm9H1ut5iEUsuXuQLliz156+50r97VEDeFsGwvsucTVBlSApsKxmwGJfi0TmnFoDklS53TEHyld9L+0j2wIOksSAGFurmo6J+aYLkrKy8C6HQk0kqy8bMi8O8L9rBIIcSne9ZwlBkqpV6oLHIFB+geITRb70rCEMVtEiDBjBEWv+XQ/yYZE9yng8s2xW8+gZ/2mVYnjJuDuq8pOh59gh5q67pj6qa4G6joSdsgWvEWfsywME8cjYezF+R06iNbJikJ7WwUmHhKnycQJTlzY73cfZFOvoz6pmaLw//2V4Y1uypaRy7QOBSJZCkZI3/X1n/9+SsosPymVM58hGfnOhXghryD2yrAjxTSoxYznm0m5aFQ6Jps1f1N36dC7Cq10os7j0agY/tOJxTCsLTs1TDS8TwgKPcpVyaXfZkpRHBH0flx7sixcm1KR9DlbTEgLJ+lmDSp/APfPFnxcIqiHNqXJ2IdSfvhS582Qn851xiBCAhzJwmO1tCiW+h7upEZJAMoP/3vwhfGGNPPFBrJnok+C1KM42OdzGPLcTBcuPxymI447ykONBwY2fOp9/xfzWxKP2AY5xakBEWVvdFo5Cs9h2R0eD1BLjC0+SyseM0bV0JIGKkKBTB6jOmGTzcbRyIGMIdVNkPr9A== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ddb325bc-4dae-42dc-bb9a-08da301ccca8 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:29:07.9375 (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 09/44] avformat/utils: Move ff_get_packet_palette() to rawutils.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: NePTJet/HIlA ff_get_packet_palette() and ff_reshuffle_raw_rgb() belong together: E.g. the former takes the return value of the latter as argument. So move ff_get_packet_palette() to rawutils.c (which consists solely of ff_reshuffle_raw_rgb()). Also add a separate header for these two functions. Signed-off-by: Andreas Rheinhardt --- libavformat/avienc.c | 1 + libavformat/internal.h | 27 -------------------- libavformat/movenc.c | 1 + libavformat/rawutils.c | 28 ++++++++++++++++++++- libavformat/rawutils.h | 56 ++++++++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 24 ------------------ 6 files changed, 85 insertions(+), 52 deletions(-) create mode 100644 libavformat/rawutils.h diff --git a/libavformat/avienc.c b/libavformat/avienc.c index e36e88335f..2264241d57 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -28,6 +28,7 @@ #include "config_components.h" #include "riff.h" #include "mpegts.h" +#include "rawutils.h" #include "libavformat/avlanguage.h" #include "libavutil/avstring.h" #include "libavutil/avutil.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index eb18277cea..da9abde637 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -901,33 +901,6 @@ int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int */ int ff_standardize_creation_time(AVFormatContext *s); -#define CONTAINS_PAL 2 -/** - * Reshuffles the lines to use the user specified stride. - * - * @param ppkt input and output packet - * @return negative error code or - * 0 if no new packet was allocated - * non-zero if a new packet was allocated and ppkt has to be freed - * CONTAINS_PAL if in addition to a new packet the old contained a palette - */ -int ff_reshuffle_raw_rgb(AVFormatContext *s, AVPacket **ppkt, AVCodecParameters *par, int expected_stride); - -/** - * Retrieves the palette from a packet, either from side data, or - * appended to the video data in the packet itself (raw video only). - * It is commonly used after a call to ff_reshuffle_raw_rgb(). - * - * Use 0 for the ret parameter to check for side data only. - * - * @param pkt pointer to packet before calling ff_reshuffle_raw_rgb() - * @param ret return value from ff_reshuffle_raw_rgb(), or 0 - * @param palette pointer to palette buffer - * @return negative error code or - * 1 if the packet has a palette, else 0 - */ -int ff_get_packet_palette(AVFormatContext *s, AVPacket *pkt, int ret, uint32_t *palette); - struct AVBPrint; /** * Finalize buf into extradata and set its size appropriately. diff --git a/libavformat/movenc.c b/libavformat/movenc.c index d32328d40c..c720fd742d 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -62,6 +62,7 @@ #include "mov_chan.h" #include "movenc_ttml.h" #include "mux.h" +#include "rawutils.h" #include "ttmlenc.h" #include "version.h" #include "vpcc.h" diff --git a/libavformat/rawutils.c b/libavformat/rawutils.c index 996412adb9..e44c946d47 100644 --- a/libavformat/rawutils.c +++ b/libavformat/rawutils.c @@ -19,8 +19,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/intreadwrite.h" +#include "libavcodec/packet.h" #include "avformat.h" -#include "internal.h" +#include "rawutils.h" int ff_reshuffle_raw_rgb(AVFormatContext *s, AVPacket **ppkt, AVCodecParameters *par, int expected_stride) { @@ -65,3 +67,27 @@ fail: return ret; } + +int ff_get_packet_palette(AVFormatContext *s, AVPacket *pkt, int ret, uint32_t *palette) +{ + uint8_t *side_data; + size_t size; + + side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_PALETTE, &size); + if (side_data) { + if (size != AVPALETTE_SIZE) { + av_log(s, AV_LOG_ERROR, "Invalid palette side data\n"); + return AVERROR_INVALIDDATA; + } + memcpy(palette, side_data, AVPALETTE_SIZE); + return 1; + } + + if (ret == CONTAINS_PAL) { + for (int i = 0; i < AVPALETTE_COUNT; i++) + palette[i] = AV_RL32(pkt->data + pkt->size - AVPALETTE_SIZE + i*4); + return 1; + } + + return 0; +} diff --git a/libavformat/rawutils.h b/libavformat/rawutils.h new file mode 100644 index 0000000000..a91123412b --- /dev/null +++ b/libavformat/rawutils.h @@ -0,0 +1,56 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_RAWUTILS_H +#define AVFORMAT_RAWUTILS_H + +#include +#include "libavcodec/codec_par.h" +#include "libavcodec/packet.h" +#include "avformat.h" + +#define CONTAINS_PAL 2 +/** + * Reshuffles the lines to use the user specified stride. + * + * @param ppkt input and output packet + * @return negative error code or + * 0 if no new packet was allocated + * non-zero if a new packet was allocated and ppkt has to be freed + * CONTAINS_PAL if in addition to a new packet the old contained a palette + */ +int ff_reshuffle_raw_rgb(AVFormatContext *s, AVPacket **ppkt, AVCodecParameters *par, int expected_stride); + +/** + * Retrieves the palette from a packet, either from side data, or + * appended to the video data in the packet itself (raw video only). + * It is commonly used after a call to ff_reshuffle_raw_rgb(). + * + * Use 0 for the ret parameter to check for side data only. + * + * @param pkt pointer to packet before calling ff_reshuffle_raw_rgb() + * @param ret return value from ff_reshuffle_raw_rgb(), or 0 + * @param palette pointer to palette buffer + * @return negative error code or + * 1 if the packet has a palette, else 0 + */ +int ff_get_packet_palette(AVFormatContext *s, AVPacket *pkt, int ret, uint32_t *palette); + +#endif /* AVFORMAT_RAWUTILS_H */ diff --git a/libavformat/utils.c b/libavformat/utils.c index b53e2aff0c..cc5507a19e 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1715,30 +1715,6 @@ int ff_standardize_creation_time(AVFormatContext *s) return ret; } -int ff_get_packet_palette(AVFormatContext *s, AVPacket *pkt, int ret, uint32_t *palette) -{ - uint8_t *side_data; - size_t size; - - side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_PALETTE, &size); - if (side_data) { - if (size != AVPALETTE_SIZE) { - av_log(s, AV_LOG_ERROR, "Invalid palette side data\n"); - return AVERROR_INVALIDDATA; - } - memcpy(palette, side_data, AVPALETTE_SIZE); - return 1; - } - - if (ret == CONTAINS_PAL) { - for (int i = 0; i < AVPALETTE_COUNT; i++) - palette[i] = AV_RL32(pkt->data + pkt->size - AVPALETTE_SIZE + i*4); - return 1; - } - - return 0; -} - int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf) { int ret; From patchwork Sat May 7 11:27:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35644 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121272pzb; Sat, 7 May 2022 04:30:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJznCsoU43nrHhlbTJ4LGIpAr/sWqVe5tahJFboVAi54Od11uBa7RSnaZEXYXvwOEbJxjtq9 X-Received: by 2002:a17:907:1b15:b0:6d7:13bd:dd62 with SMTP id mp21-20020a1709071b1500b006d713bddd62mr6851574ejc.673.1651923015905; Sat, 07 May 2022 04:30:15 -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 s17-20020a1709066c9100b006f38c2a3d04si6658899ejr.310.2022.05.07.04.30.15; Sat, 07 May 2022 04:30:15 -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=RPSjHGcf; 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 427B068B409; Sat, 7 May 2022 14:29:18 +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 2ECBE68B3DE for ; Sat, 7 May 2022 14:29:14 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NKe59UstS4HIBja/bckWHlUWGOHf4rFOcfWPwlTw2wN+y5cVVHk1Rv0//ILQyOub5nQdQbB6jH9WXpUXQrTKsHmSAeXz4+Kz/V8CXiRBNswhzEckPD638gV71zXMsQcgw3/U1dmvoQ0RwluLEiC1ikeTT8ckjE8QNIuyN7uKS4G1yVASf2coYHEFQgO3FuwslHtJpvBf+zMJFAbm0ybrOMjWn7pBdua2eHGFFRrRTJvk32lxq12zOp9nZZcbHGJAgjze2vy5By6w9f3iwRHnod5QJ2YU/WO6ARzZesGLNFaoOpg8hy+ngf2GLzXj2IsFRboeqNQVA+mXB7ukWolbcw== 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=1/8ZvdPGLmb6ty/2DtMbTRVFkynTCu7bvM1ooINoQsE=; b=leIgG5HuMOoxBV622RP+mNzTym9ZBwIQlCjISlJWIggi9V74o/D9teZzUeUG4rrnVnfbLzsbC4vyZgHUJhWiNZ0SnyZggTOKXRKXOoB2Y2dOlE0isH4XXdjHvzOeIcYr+Ij1gWXtnS2zReyHydzX539gCc7rTEGJ6UiP2zTkyVKqc1eElp327GpC6kudJDIiqYkf3GesjIaDCMg/fByYnkDzqzermOfmkSpdQN367/tiS1+zrhYTbqgD+syzTJAbFgLOJQuI2aw9WZWUcB5U8YgIaWdv+6OeJ7kxcp/5amIw8hwMvYLnXxes17RcZNbL+KazDran3kxL8zqRKxBnSg== 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=1/8ZvdPGLmb6ty/2DtMbTRVFkynTCu7bvM1ooINoQsE=; b=RPSjHGcfdH1wALSGeVz57zW/3PPUksg7L0U1PnnEjDLARRgOIsIhOcOflij97SWnO/oGfV1X2sEeSYcYu71+AseRihFPeC1MPtBPHvBDyjv9ISYdGI4tQSFy56KOnOOLq/FHKxDVQlKL/kjn2QRUlmDvolGHJeZSgMUmfM9DTDpSMkCLj+G9o9cR9kBV+iqodqknSb3Y7I3GILP7QQeG5LpsPwtfx++vLk3If/oWd6a85rqnhoR/LKMqEpj8TLSYY7SZVZPwriG55Edn6xhHUQI2BjGY/kHC0q/WJp7txeHma/Rt4/PPY8gPfhbJtTUCL5SceYanMNETUYoPi8NFOQ== 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:29:12 +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:29:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:56 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [DUUfQFAlyshTy1zszSg+JDDlSbMUOFW5] 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-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 92acc2d0-a5cd-431b-6882-08da301cceb5 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwPQ3wEsJI1MZQ6lZkcIrfaJriUz4UB13uBfVZw/x73gUvB13ktRuz+y1otE5/bo54AUTvPdMxD3j2Ol6Pybjq1FWDbuhQrO8RK7dB0Gz0JbZX+/GgKiLDuNoqlznTNWwGwrEfjljSgD22WGQkImMbWLzVN2ujt2gQ+qlecqB7/bFaLGSZRoNSeAnpcTjnNx3V9ftH+SM8e0bBIjcO7wnZC5MPCsxOxub2cBwC24lAcyAX1nuEBOC4Yb5RP+lQpHBnKE84OGZOqfGN5qtGT5bIizIUSX/s0fK2shMFGKCiVFeuTpiobVKrPzXbzJ5LLnZ/zTs+OELKUTk7j4nz1Kqkikr3MCpzmuIB6qHhoIaew9lhIjQszpIo3a0KJgNRkThm+5WVLzco8bzZBej5dkspduw8TuUEfNVareTtCWvmMCUMWspW2m7mcaK3A9/AmYV9k0C3OnJL+enBNo7KCJrg1v2boaxnKWbyz4nhUkC4ubB8FETU5OLB//hLvf8U7/86flZjnbx8Dmh1QA8mmpS+ivOzVZcVxgKoGol3FnCBMI3ck0d8RFmuI0YdTIv2Eqa5XK/onrnWYEMRtEIDTEVwfNWT3fX7lMIGqRevyDFJs8kIX4zoSiA/Fnr+It4oksL7n4KwGuz7PmXBId6xIF970Htf5hYpPvjqiE2Un6Z4he2OX5gmuETJ7yhnTd5pWXhcXprl2oQReFI9/UYU7ZmMRSZumt+PaRJ02xL0b5qlqT0= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ya7HcVT/i5qBYyYueGgpM2rXBbt7cr738QcAjBhtXlDOwdgG0o8qrhEU78aQGDiEDdhibLeCG/VMCL/mXTp6GZ3zHtP3tDLlXwdUCQ7OiG0fiZQzxGtJAG6X3rIJchHf4j8DofxPXbtTeJdSJR5x6YEUiFT/uZLpauAUAgFnWqSe9aeI+Ef2yBReirqjf+9HJoneAWmxc1Ysv0Q57622+pmF9Fj98B3rqVkW843PdUVgLj4Nj+K6a3pAPWPjd6EYtJu/LD/fMPpeSBUmpYe9kul2iCumMFgwOdEsKQyw0xzQnHHJGhKMBIeGT1WtSaNSNQjyWsdPdZ5t+WgtYI1f2z2HmuoVtlnpMJEQPiCBNPs/72zoPbl9NGVvyExq3WC10fc4Qt8+HbfytCuTKnr5kABSy5Ie51EPb85AhPHTN1+W4xCEt12JR+BRpIpF0ih8gK93clLoWDRAMvNaN7Z7V1gj4LVQbsCyiPu1E83nGIA+jyuZ+3URAGSmShW5Q/L0nlel/LBIK1vWP4/HAcfx14A1Z04bZIqq951Ice6lJA6A+Up2FTV7CpxA07Neyifwa4KduJmgc33hbjEF+G0AjHvcykCcN5Wdf96fi9YRA3M4+IOYE2tMOXMIHxYtBpwx78ox+HgK+lq/P5X8H5QRlw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: VW0KlRoK3eSw0ziolhV5w0TQnJkA9ueRFF3glYf78brMJRRnLNLT382LQLC8qNnLD7tapASFrZjWMh36SrYtT2FFtbUo4QHtMMnuOmLkQituQX2ZUIqJm/+2Ff3kYxiJzRpFhxi8qGWfY0PKtBsLn2MASJk5nxd2YzrqH2kn7eIzom0b2xyAUGVyIv5X3Ku7wQln9SSVLekOIZA5eaS580npxlGVEEjA3405YHzzfB3lkbowWVEw/15o//itON3259rewNxcdteSAXmsfEJ1E8qm1qhGOlpmWuN9HAw9fM49Au+DsJue9h3b9YwO9PdYbErmPcBzuD068FKB8RcrWpM+wVGkH2rbMFZw9xKulBTX7puV5OLbgOcUt0cV465O/jCknjTf1EbiL0kFwVnV1VCrfDGtCEvWFdfJt5f7eb+NbunfgGqiZZsKM7d06VIyPHqAwVlBJNz7B/FEU3YgYAwdNCFU3F/6+0dHoPaitnsknYFPsDUnByvidSmHg6Q1iPF34HzZF033/wxFeSfs1PqEtzrifcpMNBF4Mv/ZGH5tLQaRagLG8CWZeahXnh9cy6690QjZXfxvvLfe96He9TMdAQComR7fH6ndPxTgzplcxih0ZA5rkiPuv77iUFzJJEnNd6Pr3OkmMuzwa6sTEr28tZpuRIfJbXd1EnABsI4tvu1yw1jg31rU+55/M44m9fC0dkMnF9sXn6LKjstjelDUMWSDAmBpYc0s+BUl/jMsLji2I8UFRKoavOjgBDiIpMk8KbPyVHwM8t1V0+jpFkyJBzndQI3mee9BxGLdtVatMec0FNjP/C22EZemvehlzWW70LYPo5IiO6X06gHkkNN5ieJP6ujXUpqXrMAJc6mQ96HNlfLPfrJoNPXD52Z2LLgXOhEjEvPCuMxYTg+YNkNZe2+z9HSvIew38KVmMRoPoH0S/LIrWDY1JgDM1irXFxToZyCXtm38q5EOUn7h8anI7UE9tYi7u6JktcN8gEUHi5UB7lAZprX5f5/8l5KJapSZyduicTfpaJxpPYGoMK3BJor8JQ5GFAmEpnLTr5PUo1ch7Ucuq8I2/NhrZRSgg0NcqXyWwFSGw2Gm+HhrqQqVmvB27Pz6XEw8xYfutyZBgvwqrD9vOdZP4aeSPNTlhdK4uqKmQfmAZiI+xt6gmlaOkL4n/J6j4l8yb/FLqeEZiPxIqWAouEPi4wWTg0r/c4Ux+wWSQOIq4hVpZYcDauc+j+j/Yo1Q+xyw937q21cLFModrDzgfUR281k4Ejdm+V/ccEqJtTQknaHObgOeFPC9l8TL/eJrwr2pzwEeDBGZP8AcYhjOQECUdJZcueEzrUKEbUMt2zZdk90n1T/b7C+hwvmPqL3VxwU0MFGb6XlwtO37FhBKBAd0Wc0XqXIt+5nfcjdLthFlB2+t4DvCEQYghWPlliI4cJKB8wItnnhvgyleoQSnixE7kbMk6JUZ X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 92acc2d0-a5cd-431b-6882-08da301cceb5 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:29:11.8589 (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 10/44] avformat/utils: Move creation-time functions to mux_utils 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: bqJSAnHrx9Wa Only used by muxers. Signed-off-by: Andreas Rheinhardt --- libavformat/apetag.c | 2 +- libavformat/asfenc.c | 1 + libavformat/cafenc.c | 1 + libavformat/dvenc.c | 3 +-- libavformat/id3v2enc.c | 1 + libavformat/internal.h | 20 -------------------- libavformat/lrcenc.c | 1 + libavformat/mux.h | 20 ++++++++++++++++++++ libavformat/mux_utils.c | 31 +++++++++++++++++++++++++++++++ libavformat/nutenc.c | 1 + libavformat/smjpegenc.c | 1 + libavformat/utils.c | 27 --------------------------- libavformat/wtvenc.c | 2 +- 13 files changed, 60 insertions(+), 51 deletions(-) diff --git a/libavformat/apetag.c b/libavformat/apetag.c index 6f82fbe202..cc6becc182 100644 --- a/libavformat/apetag.c +++ b/libavformat/apetag.c @@ -22,12 +22,12 @@ #include -#include "libavutil/intreadwrite.h" #include "libavutil/dict.h" #include "avformat.h" #include "avio_internal.h" #include "apetag.h" #include "internal.h" +#include "mux.h" #define APE_TAG_FLAG_CONTAINS_HEADER (1U << 31) #define APE_TAG_FLAG_LACKS_FOOTER (1 << 30) diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c index 5b34f98a2b..e1563b1da6 100644 --- a/libavformat/asfenc.c +++ b/libavformat/asfenc.c @@ -29,6 +29,7 @@ #include "avlanguage.h" #include "avio_internal.h" #include "internal.h" +#include "mux.h" #include "riff.h" #include "asf.h" diff --git a/libavformat/cafenc.c b/libavformat/cafenc.c index 396e946ceb..fedb430b17 100644 --- a/libavformat/cafenc.c +++ b/libavformat/cafenc.c @@ -23,6 +23,7 @@ #include "caf.h" #include "isom.h" #include "avio_internal.h" +#include "mux.h" #include "libavutil/intfloat.h" #include "libavutil/dict.h" diff --git a/libavformat/dvenc.c b/libavformat/dvenc.c index 23b99062c7..1917c00694 100644 --- a/libavformat/dvenc.c +++ b/libavformat/dvenc.c @@ -31,15 +31,14 @@ #include "libavutil/time_internal.h" #include "avformat.h" -#include "internal.h" #include "libavcodec/dv_profile.h" #include "libavcodec/dv.h" #include "dv.h" +#include "mux.h" #include "libavutil/avassert.h" #include "libavutil/fifo.h" #include "libavutil/mathematics.h" #include "libavutil/intreadwrite.h" -#include "libavutil/opt.h" #include "libavutil/timecode.h" #define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32-bit audio diff --git a/libavformat/id3v2enc.c b/libavformat/id3v2enc.c index 5d821ea4db..515d2efd7d 100644 --- a/libavformat/id3v2enc.c +++ b/libavformat/id3v2enc.c @@ -28,6 +28,7 @@ #include "avio.h" #include "avio_internal.h" #include "id3v2.h" +#include "mux.h" static void id3v2_put_size(AVIOContext *pb, int size) { diff --git a/libavformat/internal.h b/libavformat/internal.h index da9abde637..03b9bb8e37 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -881,26 +881,6 @@ void ff_format_io_close_default(AVFormatContext *s, AVIOContext *pb); */ int ff_is_http_proto(const char *filename); -/** - * Parse creation_time in AVFormatContext metadata if exists and warn if the - * parsing fails. - * - * @param s AVFormatContext - * @param timestamp parsed timestamp in microseconds, only set on successful parsing - * @param return_seconds set this to get the number of seconds in timestamp instead of microseconds - * @return 1 if OK, 0 if the metadata was not present, AVERROR(EINVAL) on parse error - */ -int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int return_seconds); - -/** - * Standardize creation_time metadata in AVFormatContext to an ISO-8601 - * timestamp string. - * - * @param s AVFormatContext - * @return <0 on error - */ -int ff_standardize_creation_time(AVFormatContext *s); - struct AVBPrint; /** * Finalize buf into extradata and set its size appropriately. diff --git a/libavformat/lrcenc.c b/libavformat/lrcenc.c index 5703a95180..cdf94e6cd2 100644 --- a/libavformat/lrcenc.c +++ b/libavformat/lrcenc.c @@ -27,6 +27,7 @@ #include "internal.h" #include "lrc.h" #include "metadata.h" +#include "mux.h" #include "version.h" #include "libavutil/dict.h" #include "libavutil/log.h" diff --git a/libavformat/mux.h b/libavformat/mux.h index c220738942..246101f0c8 100644 --- a/libavformat/mux.h +++ b/libavformat/mux.h @@ -103,4 +103,24 @@ enum AVWriteUncodedFrameFlags { */ int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size); +/** + * Parse creation_time in AVFormatContext metadata if exists and warn if the + * parsing fails. + * + * @param s AVFormatContext + * @param timestamp parsed timestamp in microseconds, only set on successful parsing + * @param return_seconds set this to get the number of seconds in timestamp instead of microseconds + * @return 1 if OK, 0 if the metadata was not present, AVERROR(EINVAL) on parse error + */ +int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int return_seconds); + +/** + * Standardize creation_time metadata in AVFormatContext to an ISO-8601 + * timestamp string. + * + * @param s AVFormatContext + * @return <0 on error + */ +int ff_standardize_creation_time(AVFormatContext *s); + #endif /* AVFORMAT_MUX_H */ diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c index 7b79ffd1fb..df264fc6a0 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -19,6 +19,11 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/dict.h" +#include "libavutil/internal.h" +#include "libavutil/log.h" +#include "libavutil/mem.h" +#include "libavutil/parseutils.h" #include "avformat.h" #include "avio.h" #include "internal.h" @@ -79,3 +84,29 @@ end: av_free(buf); return ret; } + +int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int return_seconds) +{ + AVDictionaryEntry *entry; + int64_t parsed_timestamp; + int ret; + if ((entry = av_dict_get(s->metadata, "creation_time", NULL, 0))) { + if ((ret = av_parse_time(&parsed_timestamp, entry->value, 0)) >= 0) { + *timestamp = return_seconds ? parsed_timestamp / 1000000 : parsed_timestamp; + return 1; + } else { + av_log(s, AV_LOG_WARNING, "Failed to parse creation_time %s\n", entry->value); + return ret; + } + } + return 0; +} + +int ff_standardize_creation_time(AVFormatContext *s) +{ + int64_t timestamp; + int ret = ff_parse_creation_time_metadata(s, ×tamp, 0); + if (ret == 1) + return avpriv_dict_set_timestamp(&s->metadata, "creation_time", timestamp); + return ret; +} diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c index 0cea1fabb3..1afdeeb8ab 100644 --- a/libavformat/nutenc.c +++ b/libavformat/nutenc.c @@ -30,6 +30,7 @@ #include "libavutil/opt.h" #include "libavcodec/bytestream.h" #include "libavcodec/mpegaudiodata.h" +#include "mux.h" #include "nut.h" #include "internal.h" #include "avio_internal.h" diff --git a/libavformat/smjpegenc.c b/libavformat/smjpegenc.c index 8b40c09329..888ece2f7c 100644 --- a/libavformat/smjpegenc.c +++ b/libavformat/smjpegenc.c @@ -26,6 +26,7 @@ #include "avformat.h" #include "internal.h" +#include "mux.h" #include "smjpeg.h" typedef struct SMJPEGMuxContext { diff --git a/libavformat/utils.c b/libavformat/utils.c index cc5507a19e..a695f19b03 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -29,7 +29,6 @@ #include "libavutil/dict.h" #include "libavutil/internal.h" #include "libavutil/opt.h" -#include "libavutil/parseutils.h" #include "libavutil/pixfmt.h" #include "libavutil/thread.h" #include "libavutil/time.h" @@ -1689,32 +1688,6 @@ int ff_is_http_proto(const char *filename) { return proto ? (!av_strcasecmp(proto, "http") || !av_strcasecmp(proto, "https")) : 0; } -int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int return_seconds) -{ - AVDictionaryEntry *entry; - int64_t parsed_timestamp; - int ret; - if ((entry = av_dict_get(s->metadata, "creation_time", NULL, 0))) { - if ((ret = av_parse_time(&parsed_timestamp, entry->value, 0)) >= 0) { - *timestamp = return_seconds ? parsed_timestamp / 1000000 : parsed_timestamp; - return 1; - } else { - av_log(s, AV_LOG_WARNING, "Failed to parse creation_time %s\n", entry->value); - return ret; - } - } - return 0; -} - -int ff_standardize_creation_time(AVFormatContext *s) -{ - int64_t timestamp; - int ret = ff_parse_creation_time_metadata(s, ×tamp, 0); - if (ret == 1) - return avpriv_dict_set_timestamp(&s->metadata, "creation_time", timestamp); - return ret; -} - int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf) { int ret; diff --git a/libavformat/wtvenc.c b/libavformat/wtvenc.c index 9c67a6d3e8..7e28b2082e 100644 --- a/libavformat/wtvenc.c +++ b/libavformat/wtvenc.c @@ -25,12 +25,12 @@ * @author Zhentan Feng */ -#include "libavutil/intreadwrite.h" #include "libavutil/avassert.h" #include "avformat.h" #include "avio_internal.h" #include "internal.h" #include "mpegts.h" +#include "mux.h" #include "wtv.h" #define WTV_BIGSECTOR_SIZE (1 << WTV_BIGSECTOR_BITS) From patchwork Sat May 7 11:27:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35645 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121324pzb; Sat, 7 May 2022 04:30:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzjqh06D1k2Fnmf/porZeACcn8h9iUTN5vBXI24FTMoe3LwX9klKJHEziLFDPmP9daj22OT X-Received: by 2002:a05:6402:2214:b0:425:d6ed:de5d with SMTP id cq20-20020a056402221400b00425d6edde5dmr7972192edb.383.1651923025868; Sat, 07 May 2022 04:30:25 -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 c27-20020a170906155b00b006f3c442e22fsi7642846ejd.361.2022.05.07.04.30.25; Sat, 07 May 2022 04:30:25 -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=qNqwPTVs; 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 463B468B3F5; Sat, 7 May 2022 14:29:21 +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-am6eur05olkn2058.outbound.protection.outlook.com [40.92.91.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5DCD068B410 for ; Sat, 7 May 2022 14:29:15 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ojz0T59UstzD7O3toKsQ+UtAINzXLUfCZkmff0MZjbiZyVvP+M7f/Gtvt8JyLvII7lHc1u4bgGX17nBGDiXFcd3e0HGxVXl/zBK706KhFVxN6RmUQuXylOcE9Y7UnJiofah6VyA7w3kQebgh+jzgf8/hyJUr2+e/f2/z9XtcZ7xZ2grjMHvZhnhi0d49kwNeQJcNVQZk/1H00N3cGHIJa812Us+W8n4YAChOniKXgaPWVG/4PRvcbweqQGtizWm93COES3HM4xVMeTUxHUU7Xpx+SlnCUIlSRoInxN8IDUi1iSKkuv+CZCXl5AaxPlzIJclvHJD3tOVqNzanGjlYjA== 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=6o3W+v8CZGmQpa2gp9NgQ/egRDILezQtKGqOi4ODyys=; b=c94L7/QEKodaswCS9Wdez/UiOJq2lWR2gVu3LEu6nhwvu1rCPkl00+sxoRRlUhpbaH1qmYIMl8h3102J31RTa9E68C4RPDawE0ViD3n3xPJVFQVZCFMeH5sq9k39pbPM3XBlStNd11lo9KojZfmqTDIDgAe0oLC0ia05ECCgCVhBkMhIxEAGHX7twkR1uLyA7EYFWKkaeYjCQKKyXdyZ5TO3PrYfqvUAnzmHIyxbyKwOotdKyC05XHgvVp3BoJf8GF2vvIlPZxgvimqrrZ4qeCTNa5HWxOflJ/OGwcqnFtpMPEhhAky8zpGmKNCtyeuMkjOBI/ZmaJBvKK1cyrbOwA== 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=6o3W+v8CZGmQpa2gp9NgQ/egRDILezQtKGqOi4ODyys=; b=qNqwPTVsm8p/cimAYacUMzrH6FR0CDmwPJEBrOjHRV64nwT3d5PVTjifjUWjZ9eQfIFU5rSuY8FpkA0vXOMCz7cyHf+UAH5S838vtqVGITBXXxvc93T6+C4xYPbctchDxWtTnmAKzfxH4YIcyA7dVdktPu53FPKXbHZ8x++FbArJ2iS2WL91rY56GW+lXc5oFB650M1zZNK0hMkFNEHgtJXGIh2ILYYs4repmemv7UkMh0q/oBMoI4PU6Jk6nAf01Hf8rcis92fuLhf3d3iAApvX5D7ZZdBUg2xBFcKV+6ivss+zdaPNnrL1v9uWqwlNwdXgAqjb6j+iHfCCsOIWcA== 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:29:14 +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:29:14 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:57 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [x7Iue5vez49la/6h/Wvs5hjqERtzYH9c] 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-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e5b7b76b-c9a8-4834-ab0a-08da301cd029 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwNjzVrrzKW/rrYSwJfpWV5tv314JRPBhehSBMh3jk56O+k6YM8wv+kz2Pq5Q8cfCATzB2ZWueP7NxzjE7xpi8/yLmo346a7F3odofnjBFCpu4UBTvqAU9v99EfcJ7UMaHUFDlcEH4LE6DpznNhgbk9v1kY3x2RwYn8LCX3XfoEcsPG9mHKuPvj/novft7mkOdkglkmMdq2NGA2XrJgo5ddAaJGL4inVEboLkJAsZMLjtT2c0o4jrTTGx9SZUURVOJU46yPIJCBp1uR4Euk9ng3ondjWhrTevXtHJpx/PA14l5lIF2/9bT80WrnYZfb+Q/zXIE4YytO5eWj1fu8WG/83Ew5j8y4Mr5gL0zIsrrVkc9PEEFVT/2uQuZaBBgOP68mtK3Xtcz24XmtMbFWlnb8uYwJmKHa23X7GZSqBtsc9rcbvcy13sGtPUednYTOqOGZRKmPwEQ3Kk9YQebfJNLPNFk8d1R5kk2+0s6T/hIJQDGA5jvEqyJvJytkXAkuOwv7tDtVk9o84aRZhaPT2F7Lj9p9vYEZZCwz2pFIo5PYn3iqha1px5ZJJlveFCk1IWXJmZUtaf9AUFQ02tkzRvilANWjrhCrpD4LCluamL0WTkx3zAKEDH1uFBAwsEX54VZZ3KjiwhWvSYDRhTDPCxzu9YT3CBE4KnXwAmG5gte5e5Da2ty9jKaEKvbq1v1VQZJf8KAAAWvYtD54hfVwY3+/2RAGVhJy7Jvbfvb5vVyPAs= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lTY+NCVq+dnSq/TGTpiI5qX/3Mq5y2KC1+fm+OyvRoMjcNrlXzj2NCN61MQcJ92vHEeyNpwfL/7bh/DP363NxKMw4DtmpQuCw+/tfc9/r4fGkyA+WzboXQUUlMawD7f6s7vIiUGul+7SEQS09T9xfxC0+ISUh4i71JJHnr5TOt38i9zKwG/3bSRcLN8bGrFd/cIlTbQc/JMDQlLuauOsV9MOuFUMFbe/2CBZM5D0ck/nmE3cvD8nvi1bjm7xJguUIgjRLdz75JDGlhWUK3+BzGAfu3vYXh7mfz3MQjS+aNvMnBukaS+e3bAFKv5qzzXj035WKJAzCci26ah4szMHEEE0XMtHiuOLm/G+twdCqfCulN7kw6c1FYiPJbmchIvstTpwcXr1Gs6CEhGSEd8dbixgnb3Ww8rFw3Kh5Pnarao7FA+3rSndZrKIoUhgsqTgUzpZX4dETmR8hNRQZJaODybLU9PSHzcoY8/CsnDmZzCZ1wLASWjtAQ6fD1LUneZe8c++6CGHeAms4+8NZicTY1Tb+ZDUC7e0M1lM+J0Zl91qqlKFjRxlpepe+kaWKvc+/3qjguOjw8NHpeMlGlWP1IVEo7Iw6tr8+78aM5rCQm0u35qvuc6NRvd5sISpwv0t X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: x+xMIAJVq5wbcXf6dxhzJWAKu6aPB7z6q4WO0sT59GeklC6vRVGdPZFI3zvM/TwYrdmyltrS2sucX53UntV4SoJD02QL8kehD4N/BPWV+qg36BAneg7tkwgcnkMhxRC01vChIckfMSUjm4whsbWWKEY9c0TQbB63V6wcMak5Y8Nh+Cl8faLwXO06MTv8eJB/tN6IJHyye6XPx3VPIwNg8yqCqLt8fZ+w5BhYutzs6Wk2n1CV0Aq+gPGovnQvljC2/EpNJ8ogkl+++zpg5olS1KSOD0WEp7V/lZSYw9k//2oQyw/YAi8KLn7DEkELLy+qjQKkhg6qyvn6FXUCWa69AOd0z7q9S3+qYynTee8UwiuhGRlo4+b89DiiiCHkS5b82HfhjByBH5z/1Zr05/DJWgjEP0iu1URDuvmmjhyiK58EnCmjBXVQDa5+iDJXB6gMG/5XRTRjfClY8aJm87xlKR+gv9oHFH4WwxS7cEUlHLs4WQisVQKB9uad99C63U4baoMDhp3owUYiTJxW+tAcMx3iKzPz/x4j1OjWUuGUNcltnMj3tB8yBrXxgB+h7e+9mXsvlWwFonFKq4N2Lna8QoCD114dQrDrGUE6XoXzLv9dp+3xtxFctr/itgN3HNJtOjRh/N9FXz0m3I9fNLJdnWcn2D52bTLpRCijC2a5z1e7es2px0Vmu8I8dCB6HOuSR/OUVJJpbp4H6Y/ewIm235dkZa0a8mZ/HKbNANw1MSr6EjC+dLuLtDQ35Qlut5VwN+6DH/tQ5dWKn1WU5CU2osTcmxB8qBP7w7CZIvixT0X/I4+GEzyIRmKZPDXD265HYPHUAMBsRFfkaJ7sxKiPL2Yx2eSDVv25Ih97d5T6pj8bMHkKAuH1DmP8GzxtYW3qR7ZH/wWSimXLc8CC/sCN0fRgyk/1JxNfA25rJ0tAN5Xr2ye/NyEx5t4XO3jwFmPtSZKbr1cXG9QJ/Hlwsz+khWW8VN9RIxsoCahPpnQUG35xBT4a/ziEcaGgUG/JsBe1fSitqIpC3U7hXz/uMlHZ2dcVKs6TCFF0nFJ8kpFJ2AsOj2wfAdk6RXFjA1P3IeBoc/uBhTnp/AAEbtScTq3PR7W7ZFwmI/vMyJ34KHLNqbnyv/VItKoZ0SjX/ydtNdTNtJyk6oIUEIZ9X+bpFAdeaua3BvbwNReNlCkHe3xvcZoYhczOb/LtW+jkc4hRI26VyARntbKr1mT4lP7wVluneI2yBpV+3L04bDTuPwkuaE5Q1WFDE81NgaVKvCCU4gaUmfCA8M72tpSjKTXMSA8p/hMiQnd/Bwfy39oJw8pi2O+Oxby7AXgkA+cbfVPoZola6M66Cv4xRrSQUrAlGi8CG49TX0H5wuUwI6R82XW4c24W9vFWs+jnbj/VKm/8Y9Bpc8MWeQLomaW1EWDiUTuURDV1SaWvrbEGeJV9FKr8YQx/jOllXEdT5CmpxNOChHSx X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5b7b76b-c9a8-4834-ab0a-08da301cd029 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:29:14.0657 (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 11/44] avformat/utils: Move ff_format_output_open() to mux_utils.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: Qdh8VItwRsG6 It is obviously a muxing-only function. Signed-off-by: Andreas Rheinhardt --- libavformat/fifo.c | 1 + libavformat/internal.h | 10 ---------- libavformat/mux.h | 10 ++++++++++ libavformat/mux_utils.c | 10 ++++++++++ libavformat/tee.c | 2 +- libavformat/utils.c | 10 ---------- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/libavformat/fifo.c b/libavformat/fifo.c index 86e5d369b5..ead2bdc5cf 100644 --- a/libavformat/fifo.c +++ b/libavformat/fifo.c @@ -28,6 +28,7 @@ #include "libavutil/threadmessage.h" #include "avformat.h" #include "internal.h" +#include "mux.h" #define FIFO_DEFAULT_QUEUE_SIZE 60 #define FIFO_DEFAULT_MAX_RECOVERY_ATTEMPTS 0 diff --git a/libavformat/internal.h b/libavformat/internal.h index 03b9bb8e37..51deb1c49f 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -849,16 +849,6 @@ int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src); */ #define FFERROR_REDO FFERRTAG('R','E','D','O') -/** - * Utility function to open IO stream of output format. - * - * @param s AVFormatContext - * @param url URL or file name to open for writing - * @options optional options which will be passed to io_open callback - * @return >=0 on success, negative AVERROR in case of failure - */ -int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options); - /* * A wrapper around AVFormatContext.io_close that should be used * instead of calling the pointer directly. diff --git a/libavformat/mux.h b/libavformat/mux.h index 246101f0c8..1bfcaf795f 100644 --- a/libavformat/mux.h +++ b/libavformat/mux.h @@ -103,6 +103,16 @@ enum AVWriteUncodedFrameFlags { */ int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size); +/** + * Utility function to open IO stream of output format. + * + * @param s AVFormatContext + * @param url URL or file name to open for writing + * @options optional options which will be passed to io_open callback + * @return >=0 on success, negative AVERROR in case of failure + */ +int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options); + /** * 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 df264fc6a0..83c1482540 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -85,6 +85,16 @@ end: return ret; } +int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options) +{ + if (!s->oformat) + return AVERROR(EINVAL); + + if (!(s->oformat->flags & AVFMT_NOFILE)) + return s->io_open(s, &s->pb, url, AVIO_FLAG_WRITE, options); + return 0; +} + int ff_parse_creation_time_metadata(AVFormatContext *s, int64_t *timestamp, int return_seconds) { AVDictionaryEntry *entry; diff --git a/libavformat/tee.c b/libavformat/tee.c index b3bcd70b9f..f1f2a9d2a5 100644 --- a/libavformat/tee.c +++ b/libavformat/tee.c @@ -26,7 +26,7 @@ #include "libavcodec/bsf.h" #include "internal.h" #include "avformat.h" -#include "avio_internal.h" +#include "mux.h" #include "tee_common.h" typedef enum { diff --git a/libavformat/utils.c b/libavformat/utils.c index a695f19b03..58d2524457 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1655,16 +1655,6 @@ uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type, return data; } -int ff_format_output_open(AVFormatContext *s, const char *url, AVDictionary **options) -{ - if (!s->oformat) - return AVERROR(EINVAL); - - if (!(s->oformat->flags & AVFMT_NOFILE)) - return s->io_open(s, &s->pb, url, AVIO_FLAG_WRITE, options); - return 0; -} - void ff_format_io_close_default(AVFormatContext *s, AVIOContext *pb) { avio_close(pb); From patchwork Sat May 7 11:27:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35646 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121397pzb; Sat, 7 May 2022 04:30:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUZ0NAvBtggObzY4lgWcI4SQQQaVWdkqJDIIpSpRMNng4sywWt5n5wvrMnNEo7r0eWZqQz X-Received: by 2002:a17:906:3087:b0:6f4:2901:608a with SMTP id 7-20020a170906308700b006f42901608amr7228729ejv.646.1651923036674; Sat, 07 May 2022 04:30:36 -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 ne41-20020a1709077ba900b006f3b3d81aa8si6223367ejc.216.2022.05.07.04.30.36; Sat, 07 May 2022 04:30:36 -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=FC7MtO5m; 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 5404468B41C; Sat, 7 May 2022 14:29:22 +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-am6eur05olkn2058.outbound.protection.outlook.com [40.92.91.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8AC4A68B410 for ; Sat, 7 May 2022 14:29:20 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NiArWo/h9+lKcsZigggnRElDIoxnf1de043+aLOTUCtaDXnITDwBiCFGC7L59t6XFB7qRiHBa03UoQvAN7x8Anxyrk1sej+pTNDhgFRUCPemzNilAypgJedz9EIv69GVLAn+TAUpn4bzzQWtiExNQgjs2Dgo/1vnThYfmooAgATmcTm1AOanp/yqirtg4/J1LEEi7QNuSniWlD1yX09eCdmQV5yHv9j9B6H9waBugSDzbHjBvvKPaMro3g2ZYh5BqHcgtXq4Rp79qrijIBnHbjv91iYlkYB4Ri8nLdM7BA8q/OA2xdfwhCSDF5wE+oGgE2e+KRivP4v9SkJrLKNicA== 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=2/iO+Ai+8AGFbM3Q6Bippok1BuDgE4oHTU6FHYJ10R0=; b=bUOsidM2aVSr6gMj+kLfRRMT5mLaONnYg8/RfAbw2Qg8zrC+e51Ym1WNki6vvKGEsANfEKWJpurtr6HdfOnazK+qjZ0ZsX7eJqapeSz/MHzjrtKT5uy/FUn1p4tr2BmTSj+HWurAg3/dM0NbtYHovTAi0GAOTFw/VNeS+r97jDdFbWDhZEqneM+k3NZbbCfB/dHOD7R8nYIANlX63xVXTJWUvUU0yV5Uzbignt47uYBBA3QhMcTRSmENfgQ9IPfFUL6dKmFjrqSjUyAmVJRdRHU64BkkZZFwTWLDvf1TwBMzDR4a4JYAEkvyDsKiRIdtErsnuyHMt4CA2AiPGrxuuw== 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=2/iO+Ai+8AGFbM3Q6Bippok1BuDgE4oHTU6FHYJ10R0=; b=FC7MtO5mxDlje8q2epNbCaSDjsa8OMymRVxFyXWLZ4oUujt/m6Nh/bGkBjUQ2OOKTuAmAVOFJv6V3Qh1WAIctknqtHvD/olvAE7Ud2jPmFWwN0oPjziRbmURAyPavEF+hHN/ZEr2cMOUP0RGFxnuEX5EN3LrgAf/br2Rs00JK2RYSQvyHqoXsLqOOA2SDCLLJU75E5eEyxTZfU4w8MY9+8zb7eD5ZvD8HIEblKc45PSMZUlxV+/lpC0kDi1OtbVKxKMGMSUpme0YmBQG6hQZVQJHuREwtA7j5UXZ0h3CAQemQEQuDVBPFzOZtorXRWNCHAj/hjyzLr2n+wOGjhs5zQ== 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:29:17 +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:29:17 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:58 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [szDwf/tjw3y0BAJPTI6f6tzfKqAAcGi8] 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-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 32767479-9d5b-47e2-9fba-08da301cd1f3 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwWbkmEG+U8jYOFKaS49V9aMRFQEIt/Iawo/EHuF5qOtcTUH6qu2PrPrIa8oGHYFmFNkgv8eTl5JWv7Vt0M10OewH/sNt8izUAWQcM+pwuQBk4iS/KnlQDS4y7n30iAiqQarpKUishAzq8IGcHYVNmSmzlQXWsOjUws/eqFqxnARv2IQ5N4qbQcggpwTzGkPRzVAa8edsIGcByoCxL91xWLaruqRnPhohMB6GTBWpApa61LB4diDP1c6gD7CuoeTyIIDJQm9FbYBXrsVNjgDKnPOwKrCcsIvYiB7QPQAaNO9IxXGUIETdMesdcclBRfEDP076d3HbSKJAHzhu0x6YLyH/2vVIS5tp3/EVzMuW3dnDyfDAiD1P0oxAs0ix0zYcDJ9NGE3jJzUJUO1VzRJ+OmXogOk5ejeMlfmDxOFTJY2JeMBgh3G6oYD+xNLzudwaPEQhXZfK2UDRitJkL6agBOtmxbFKdsMecW/VsVHGVhW+FZbBz7erCplULiHPhi5zv4DvoXOq6tDh6j7vsmvSS6d4mScVNJpWD9XgLLb69lSW876Eil5f5k95nIt3jCL9rREv9aQ1jpIYA8AcpLMOujOzNS8ckG1rINTVYchZ8wXxUvw8LrhcThU8ZrXL6HDM/1yZTyWS3kh6YXzRhMja82BEsNDNwOB86z7loBN6DkLN2ikZ3oHw8Gy1NdxPsAyrGQiFqNfcjXO0UpRwU67iYy1itz/QYkPv79ZO2XoPU2F8= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BuNbwcTaE4DB1x8r2S2CxLESoG2/M2mmYylZkTz/ylXJ8eR3dQ5oG/Cfb1/IhqXLk13A6Z2F1okBoBfCJcVsXbjVvUmE8OxD8FzTqKOX6QPi4PcyBZ+9/4icgeU9LM/dAW3vY2uHrDN/eG9wMCq/OuPKEcDS81geGtlWyfpi34URH3Rhuc19wcMQmyahtShwHaYSrhDJjU48D5n5tEEKG7kqgyblPoAJ+A8qbMDvNnXj7jxuzL96/HF0uzfGdzTfMiz4xymnI/6Ngku8gkcYei+NF3oqDL1VLGoh9oiBgxInyU6HaD4vST0eAAwsG39XkDauzUzYDBENzhBvt9i0L+cwxcJ/UPKTCG44kruMIVUgCDbAFwzKghgzNk8ttHicrpjaHRNmd6a4PgI7BdEZPfS43X9/2obZvhOqWrPchzpuWPkXBF3+jfdsahpvoeuf37yWdBAJzkyNKbF4oEK8AhiTxZtaWpgn2BXfQ95/o7i0B2CJ4FsWNFRh34Z53jsYQpuWRNn7op8rmJyhgoYdI6QwfFx/Y8YWunGfaBs+guNLZ5rKuwBX0K8Z2pnGhVLIxX6IFdx0SC/VPwiORiHDe9LW8sDjGna9XCfzmB5uQ6f19EcrLtjfcTNWTMPyfjJ1 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KMJVRP1LFmiA99nIpAoAiQCrmjFcSdumjpBJZNOEZYQIzcO0WhVtUtxX4peTsyjSmQxXAQfHkuCqYNFzYVwrhtnpC68WJJKLcS/Axua0X7MaLkvw/zG2KBOy2CFPUBWByrfWnftBB/ntbn3I2m/pUWXR/M92PAbYkIDc0KoIFHF/RGxmjGSpMLzYf/zuyUZwuOZl9FwhieBXUd0M5OPFd0UORto6dq2PoSh+L7/18dnx9MWOJCEROJxAFNBAR2Kg2tFTcgUx2w/49sD9SnIkuwmremkaVz6tQv3zsyZ0Bx7I6Fuxy500zgvQQ+YtTH4hP+OBVxchTyN7XiyIpPx4Xvk0mn4N3Vp8Ww4rVghFOuW/srpP4fcjDSlTEO7RLZdtzbWXlonCNodTS7NOXZwGdc/CgYc+feAiV7pU1AmU6h+n1OloltENP41zWwvXWNeXJ71eWqPt6czIgKleckP9giQhxpYyYXQjSQRWXcqpTtJZmEuK0a4/UYPd3DKv43URrJ0neFuPpZkWkNWvcPnOyEY1v1+/zHqQFdyrCuJtCq3juFAeKISnrVB49+pKdWbgC5Lgi2rE2HfB1HRqki5sNAVLI3KHcB7zwcW1R2KT0vzPUZyuA/meez3y3OPWO44Sw6CaH+F/8gU3z+NB8PwN2fFZRwB3j799806TUpTKZdJC2yHxGsnmhsBG2XeE8o660JS31aOYS/XKaEY2ETYmObAqx3ArYRYxli8Tq65wC02ig7Z+TtlKTvjwA/YvDAcx4ww+KBR+2ovTjsnl/T6xHJq0tlOxcshiy7KN9/tB4x61auS9AAlJWv0mGyE1i2WPdrSGBy0KdkyPGHvAQ+pHWnKIR7UjzSK3lWz2XnpDE/a9z2Aa1QhtING1s+WK34wXwuAXdZ8bN1pPX+u61o3XM8R62A0TWeUnhx9QEb4uUpBZCBshhLMBfPmGr/PdL8NNh3IFWuwBLtUKgUtC5hBr/LeCELQe30P56OCiR/nne3uTBuJ6rvz/1nP8LMRV4a0Ex/Uk/8JdTEUmxBE2T1p8HSenCc4u2Eg0XpXseB4vGVEjYsEELng++tQ2Cr5P8bPbOH2lT/tJQDv2ncGRiFAGGMTHfNecfNtDIdMeUacMg1gDjvySr3nkrA5KLRi1pjIpZXeUf4K+SPpY0/A5PlaSHIVvE3X2x6uwIiIGxJT1bNZ1WYmT0gRX+1gi5gsNvW5fHQf2OmhJnmROIKXwzRg/vtJNhfQLs61CwUKoeQLi0qO4/Ccp41ZJL/neiJS5997LCvJ0lGI7KUjYqGOBGTZ35SfQOP2xqlmKVhGPVgwIIQLvpnLuikFHoCoKq2uC5sbndb9jRCbzi6dlV3Zxuw/m3MTSAybt5gH+mAwMMtTzeXT8hX0y/4e9S4nBoquHBluE0YLF7Ko0EqVQ2Y0BDandzP+RQQeqxFj3WO3/JyqA7WN+CmBZ6G99vTIMeD4Jt7xN X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32767479-9d5b-47e2-9fba-08da301cd1f3 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:29:17.0186 (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 12/44] avformat/utils: Move avformat_query_codec() to mux_utils.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: FsC7zvBQQDPS It is obviously muxer-only. Signed-off-by: Andreas Rheinhardt --- libavformat/mux_utils.c | 18 ++++++++++++++++++ libavformat/utils.c | 18 ------------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c index 83c1482540..5930a7911a 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -29,6 +29,24 @@ #include "internal.h" #include "mux.h" +int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, + int std_compliance) +{ + if (ofmt) { + unsigned int codec_tag; + if (ofmt->query_codec) + return ofmt->query_codec(codec_id, std_compliance); + else if (ofmt->codec_tag) + return !!av_codec_get_tag2(ofmt->codec_tag, codec_id, &codec_tag); + else if (codec_id == ofmt->video_codec || + codec_id == ofmt->audio_codec || + codec_id == ofmt->subtitle_codec || + codec_id == ofmt->data_codec) + return 1; + } + return AVERROR_PATCHWELCOME; +} + int ff_format_shift_data(AVFormatContext *s, int64_t read_start, int shift_size) { int ret; diff --git a/libavformat/utils.c b/libavformat/utils.c index 58d2524457..640ce57f82 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1140,24 +1140,6 @@ int ff_find_stream_index(const AVFormatContext *s, int id) return -1; } -int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, - int std_compliance) -{ - if (ofmt) { - unsigned int codec_tag; - if (ofmt->query_codec) - return ofmt->query_codec(codec_id, std_compliance); - else if (ofmt->codec_tag) - return !!av_codec_get_tag2(ofmt->codec_tag, codec_id, &codec_tag); - else if (codec_id == ofmt->video_codec || - codec_id == ofmt->audio_codec || - codec_id == ofmt->subtitle_codec || - codec_id == ofmt->data_codec) - return 1; - } - return AVERROR_PATCHWELCOME; -} - int avformat_network_init(void) { #if CONFIG_NETWORK From patchwork Sat May 7 11:27:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35647 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121459pzb; Sat, 7 May 2022 04:30:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwfioKWnlfvLWkYkKGs5FyYbX0P1zbtLDJFZsGFEDJ0dKsVst3B+deTiBceeEANiMqtsBwf X-Received: by 2002:a17:907:e91:b0:6f4:d1e7:417d with SMTP id ho17-20020a1709070e9100b006f4d1e7417dmr6943510ejc.123.1651923047087; Sat, 07 May 2022 04:30:47 -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 dz22-20020a0564021d5600b0042600135621si9507059edb.546.2022.05.07.04.30.46; Sat, 07 May 2022 04:30:47 -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=S6B1V4Og; 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 7224168B427; Sat, 7 May 2022 14:29:23 +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-am6eur05olkn2058.outbound.protection.outlook.com [40.92.91.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A587668B413 for ; Sat, 7 May 2022 14:29:20 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZHVL6RSk9FdLM16YiABYJO9MFXUosjbmHifiCrHYBawj03w9ezm9skLuApQaoEp3vh2QOwL0QIvMhUitmfn9+e3TB1PjP26h3KWGDox2Fx4rLf/elhvf5An2nBH1OcHa02VGREifv+SMO6vIvPRTv1wUVkB/Lsd4AFgxWfbV2/hYOlF2VCD4WIKgSBOsROrrS5IVKxnoUJ9blhs4pSJUur98uIrDDGq4kSNWYsCltmqouuEPRzILC9Xp6b/Kwn3eO5MZqKWHtPO1AwKkHppssjYHxySMcBNBjiQzbRkxD5Qo/jdxYbytT91REmMBdRoMZfpBt4+/QpyKgPBaEUftuQ== 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=XPIAoYRXr3aQu8cRamV750+30mGeT8EnnEohWmuyLCQ=; b=VQaM9Oqy6fJ1nuFLOJLAwCvetPvG2Ztl2IMrwzK8bumLwOqDWby417K5rB0VQrp7JlOY35Y2RmGaVey3ORXIG4i1Do4UWn6QeH/tfhFX+rTQnwrZgePbdycz5h0jIphgiem/AimOplBs3m0g6gMCNZET+vXtO2cGFmhru/6U00sj/J5I6Lj4z4D6F8TBhjm8VCyYso3szuvFHCz8X4+zv1bViFRGDUGbclvTTkjbkVuRBntHOf6u2yz1vh4xyNncCQTshHCiTWMgGox2+WgcDTYGjZPKgbj6Djep1cOR22B7R1TGzBPH0946Xes9RfdJC24stlI8lvv4Cm9zhHFdXA== 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=XPIAoYRXr3aQu8cRamV750+30mGeT8EnnEohWmuyLCQ=; b=S6B1V4OgscJuhApnvcRh1n/79IH01aGEiNVt/01hBYZNBsL2+5lg7SDCYsFDhvz8UlTge0TDZskiXZ0vnnk/A5OGFVa76vD0jVhkIf0ZNtYVycMDMqMdQt1CQGcNkqw0YVgwt4UTlM7pXjUtNmylHmU9kENG/z+vO+hDw3I4fifjKlWXVlzcUKZoCucg/jOoD7lD/a4qBPjPuH4jGEeMCCxQk43D83gFYEmbRegsAOwYHTTQaW0fVil7KA0AJmQeQxOkD1tYljuXXXkWif3gd5m4fqR/59upKC3v2xDy+nWwvnFTPu+NDTLTAoVoE0nz40SDUv0lAXHR53Denaqzxg== 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:29:18 +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:29:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:27:59 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [qTpoEWO1CO9YIoIyGCXeI4RglpDCLNeo] 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-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9df1f583-5840-48d7-58f4-08da301cd308 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwvvk6DDt2i15llpQiBWE4cn4N7LnXPL87PNm996OXK7DoUJ98XXzDazZaCf9bKJn31KGVWpTxIgujVN7cCnwecZ8PKmXZ0bzbw/TGD6yDMl3whoa/myaCUm1mWVCzxwlcjwVyG+vNDBl86LuvkWVKULsGGMj8SV+uPxT3oUUQsNvfKI20blS8CBKYX7pCWPWSkQxkXnzK15MYVXleavWb4wbdWHf54mngQTuiBvWzqlMS5aF4VJNtOxAEpov0m1TtVlqCqqcn+rdRhA0CHwDY36y6SPb7eBc/AepDAKwNMB8jB2C0QCKDSuqlM79K1sevtgrsqzDILZtCtcjBBv0XknEziIqcdz8eXCRPAHUteAaYPqeUYk3GRjwyGXdUXmikBHWONZG2Ja0HUIsdfL9Gg02GYksYld9b8U6nyKVBXXNm/Rpqbo7mY88yr7x5oM6cYUf2FNDzi3ZFc86rKURoah3cXz6vMAt6KAqqACIPyPxjOpNxB5zBbvmJ9v7XsGmoVzx5AXUO33H1GKRFScEoKAaPuwIw0qfQzXCUXNEJC2SNiWbcchs0yb1eUT5iuQR37cMtKoyHhqnahLPr8AX89xyzAg65PNtDEzuHzaKkkSV3DZJnpPpXlod0TSh5wb3xtOKEJ5EM3RcdsHaBWTdVlOdfJZkFXnJDlS++GsVyPxBF6u/M96Kqvhpm1McZ7XlRl/YBGfo+iGYIC4soTnwk6OfG/zbdzgZYUc/z8mouZ3w= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WvmqfoyXBL3mT9n1zftDu7BaOAbh9/VyZ3/u/wgG8l8Kk0TxK0Eb/9bh8Uy4usAiQN2W/lGVpHIdQiKRRFEm2SWsSUmGR90+gJU/lLd4+gaqmZlWB99spMMEKPAkueCZBHD+HZrVt5vKCo89uASddfQcHvFRj1BDQKDDNfYKuqo9F/+MHUwfE7R3DiSr07t89p3p9yppaQdP/lQC+3T8sRoBOoFbl2sKaG4J7hUaeFkNS7cQ0bdWXn1o8cGzRRp3MwE8JH6unX1ks8vB2FobajnUmooL99yuTneJ0xA0vB1opVUkNhQAPKq3XranKZ0/Q/sFcBQqg5F1WIe/YT3Tu/s1YDKMn1pliIpFGoOrdpnDNomzQBHqMHEfxZ6eUKu+yUhsWoN7/PBVVOUOZlclIiZirqM3KG5DWA9TBizP7RBeHfiqhVXmipvs5GZmCmMby7OlVY+SzSZLoO6qqu4ylzdCUODX0gGyQKj6M9cF2ugImfwbEFztAVAqzJdJT5XMozriHPq8E0thqkKrVtt5ZSKqTmv7tqee82CQR8fJcCzOSY+OfksUFKTNXoAywHBpIEpdrU6mcNJp0YqKS0tnBtOpISviqss70MohmF6443KMLzFper4YZJCT6coEEstl X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: D7U82T7HDPcdW3TU4w51XI+B9LtY1mwPwzRv1GeEqONdZHlAv2i1de7UYF3IbLdiHCKEZ+22REQLXtec0pzQtNCpmK4ZIqhTq8SKljUBJd6Ny8Umn1rCk9jpSKCZr2Pe7ZXk41Il4V4cCa+DqKoKjwHX5O7+Oppf5YbFA2q4OD146eCHHOEsjyzNlZEGD9AMrsvXN/Kz382C6Yaih7D9LN5rauF0ZXPq0axPE1UXw17k1r0t6b9N9RpGNWmo9jg8QG0vibSmVMdjwNuOTAymL4wio5D3l8j6IkDIeS7sboQrW+wpsvefTiBbgTczwJakcXcsscw5s6pztSjBHLLgMwcnwZqinnGx5c3CR1HplPqV9FwLvp8K/VYqeROUPBDk7AC2Liwk6O1NditJmufgIkJenDAWpFblJRw0PPP69dK4R+dcxPJ0yfrV3/hSF0lmaA6moR8syGn59iZQzSY4rWmTWnExF9+qn1MKRbEJ0YF8PoZVssXt+borODWPfAsPqEWvlV/I92/u0jcb8ohaEsDKfStZMml04ThlY9fnWFnUsBj89n0D1FCdUnPeFXuyOUz/5fmpUhplww/xLsh5/+fm22PiYOZ0TG3X2/KkzT/7CfhInR33lQOpnagYKd5X4B7NIuE2jEVMsbmJ65ZIPiqFOq7kLQf0o3ddJjT2opwh44fc3M0nfWkcxecfm0l4JimyNQkLebv5nCHfT9Q+ubgh30mPObQwWOO6MO+cqN13Qzmt9Mryd8R/vxKdbbljSYOThNviA7HuHQfjPVKwCRAMBPCeUC7RjJvndlmVUKfh4HvZIPXlCfFvydKRfxH/WVDPV6K6zhLNhKcvcd9qR2tw7cv/zUI/VoUACA/8bMRyyDqMw/U66jDh1pb3yUSCAlrktL1P/NZ86e7CbkYP6asetVvgQbcwZEgb/T4yQJL3FwXGNAQ6EFfDMEueXWT/3bquEoygZQmi1BZJzCAVuYFpLwM6xNv9P2XJl3PL+fkUPwP2I7GbY+w1u+/+MHM43Bda3LTmy6L9TyHAMWwcznK92gHHvoQnXkKb14M1qswiYHFGShXgFOkCrwVHj81uogPC7FvEKNHoi8ViaYHdKzamajB96wbxA9OI+IJhCRhTXvXi+0F6kbliDZATFZa2OI8/0vwVrpizsDYBITn5s0PPBv+cGivqqhv1MqA20LQ3nyRowDeOXdTPWDbgG8dLsKWkNVKXa7dW6/MuR41nlo1K8m/ijUtr+wReO7xEH7t/Y2QBP1F833ZZgMPjRZzVYr208aKmB9havLn7qLUFb6bWt9aqgwVZG1LgtA5mQFIXW1/+HQQzPYa5jdxvo1NwIXtYY9gghaE8zGOXg3fGTh+WZgZRAcGVP4psrWckSWDJ9x/VDXpKSPwGPtjGwUlv+CSIyiGir6rjV3wbWsihicTVubUXf+cPgUAqEvmn0NWrJemK1SncAbL1sbVaa371 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9df1f583-5840-48d7-58f4-08da301cd308 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:29:18.7696 (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 13/44] avformat/utils: Move av_stream_get_end_pts() to mux_utils.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: 783TIYjE4+hF It is only to be used with muxers. Signed-off-by: Andreas Rheinhardt --- libavformat/mux_utils.c | 8 ++++++++ libavformat/utils.c | 8 -------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c index 5930a7911a..2fa2ab5b0f 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -29,6 +29,14 @@ #include "internal.h" #include "mux.h" +int64_t av_stream_get_end_pts(const AVStream *st) +{ + if (cffstream(st)->priv_pts) { + return cffstream(st)->priv_pts->val; + } else + return AV_NOPTS_VALUE; +} + int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance) { diff --git a/libavformat/utils.c b/libavformat/utils.c index 640ce57f82..44ceeecac6 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -62,14 +62,6 @@ int ff_unlock_avformat(void) return ff_mutex_unlock(&avformat_mutex) ? -1 : 0; } -int64_t av_stream_get_end_pts(const AVStream *st) -{ - if (cffstream(st)->priv_pts) { - return cffstream(st)->priv_pts->val; - } else - return AV_NOPTS_VALUE; -} - struct AVCodecParserContext *av_stream_get_parser(const AVStream *st) { return cffstream(st)->parser; From patchwork Sat May 7 11:28:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35648 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121511pzb; Sat, 7 May 2022 04:30:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZF1NGE1Oati+Fp0j+0m80pGBRg+z0yoPuv3Q8GGLwxVkeT6CEBESxBaYVHaD/Ov41HI4M X-Received: by 2002:a05:6402:3552:b0:427:e36a:e839 with SMTP id f18-20020a056402355200b00427e36ae839mr8066049edd.351.1651923057864; Sat, 07 May 2022 04:30:57 -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 gf24-20020a170906e21800b006f383388773si6677201ejb.889.2022.05.07.04.30.57; Sat, 07 May 2022 04:30:57 -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=q46Dn+sO; 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 0891968B425; Sat, 7 May 2022 14:29:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073071.outbound.protection.outlook.com [40.92.73.71]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CFB9A68B3D2 for ; Sat, 7 May 2022 14:29:21 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nwbp/k4Sc9vhNG8XtWtsCSwKxCEjBnJuYnAmDSuCjPv90XCLq1akDX7lYvRmyi1ZGJSjn4vUoi6+zzzt2dnfmdJYpHSUB7R81FnVNv0npoWk6FmkxA2zLJncix+854IA1wmMtu5Gz7iEn/w1pe0rR3LwJiGwK+a8tMC6kQ3h1zJmdppWGQYtDFrgUCVN9HZuZC/s3df0aztjaOd+FiJIdhpvJHV+2Rdcxu1ibwYMoSy7Tqgk5vAnYp1zP+oIUD0BGcJp3hCG7xAHH54fdvJZjaCutf9ijzWv49c/HZm/gtOjte3xycGX+qlIeAJJd4JrAoloBrKeSqrjI+gtkMz8xA== 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=kxLF9bD9h3YuPVrSbZxYS+qIqctqAzLmkkerfC7tEs8=; b=g1jtosnQeGefPu+t4RzSE6Sw0/KQfDpNwtKcxb30478ZewXZpdPwx0VU8N3RpT3mGoxnveDOJnnKcgfEtrTaRxbpRv+BQLNqRQNPG7pEtvyGHkM5orKw6k+CTHHj/IWPLyDOqzAFrrm2YNHGCFUm2bU8BG6zB53Kt1KENSLVycmubQhngmYp1f012uDolkBPKc2C7+woQS0WI2SDPoVrPGSMxyM9k7HcElp2UqVjOM8/C7HSbG+5w/CWMRfUIXFGaZwgzIlnlUq+ly164gigP/7eVgFEftOm/tRfvyaILaSFEP9sfDid9O8EHjVG9y53DvB5OCH5bcN3BEfNxFvObA== 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=kxLF9bD9h3YuPVrSbZxYS+qIqctqAzLmkkerfC7tEs8=; b=q46Dn+sO+W+GhVxuYJ625BTwukb7jH95c9rROzmZNRKiepgyQEdwo3XS23GvfPjCjMtaneCGzPNzkpPLRNA4fjZQQ/SWFDY3lIHYG7v7AZhibp+ZLYTvNmNv9BKmEligZ41YJExBeBw6vWmrqMfm8l24RA/CowOXvdxIKGpBiA+Bic65w5Ly+CuStPHklLXZ/isdccpoBzwImeSUCsxH82GjCaC0j2/Iyke6dJsv9Q5r1JGC2RN2Dq5efdjjGLSmtLxCfS68UUOMLYVzDWIUhYl3TO4JoZXGxuPGLdS4yAgQ5xkrnYtatP6FP1QqiMHlLGY+reR7g5zfS66Asz/u0w== 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:29:20 +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:29:20 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:00 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [3UiL5nawnky/e9BpNTxXtNVDUMKbuOII] 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-13-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4db35362-b595-457a-5a63-08da301cd3dc X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwnbYBPdB8kijbBgQ80YpasMWky3pmgJqQ8/90p4J8hTA4n+PAG53dqSNLkbeQ5wM9y3HQyzoMxfYguTUUKF1VnMbiA4qx+/GfIjqs4Vo/vEfMrdXj4wYdSBRC1NI3YGGyZGT8KOQszqIegWfMzgZ5pFtLlPsq1PYhHkxxKjYNG9f184Rt+s9sw3CJtidfnQIYU8wzy5+p92LY6VQ9jJH1D1CrK4QMKx/wgOLA+CNTnC8P+5RkwV+Ziv5QuBvMfS1AuLU7Gsht2lbiKVtenl7J9aSz5H05WlOqL7Dx8d4Sk9q3NAN0UfbUxLgfA42Yf2pkG13zsy9fySU28ppmyrb/nNYzzmKoYO0LD7jU0VjWbW1jl+5M/q83wycqoVPQFi37qqrJWUaJWJcutdj6BbY5RsYOqQTbXUZ0x+GOy8ZCS1ka9e3y9sjFa+7MLNrLDIm2blQ4Wft7VUvntiCXDTCHAcarUkWja3qGhPoq4d8O5WZHtyXSfp7zJ3r5YiRcju35YoeiyFOD8FugC+pewWW0DJABvQBMZ0zmlqqw3qYQqTyV5m9xAg9WgJkicagglAa1nRU6L1QKI2tFguqL8cEyRs719mqNVn3EAn6jLchjQSPlsWW0ZL5tp5xcO5ZoLXem1mTEVx4ecPGtUDI67D6FEsrvW/qI8SLjihZqddBFu0SaDV1IMvrNWJKxmooKlLbgvTttQl7Itz2xnowmOVhj70sra2KYXCZyCCzvydFWvio= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KxQfJEMAyB8lI2shX34BQh48rWu+lrTcKFqz7vZXPT3Mo5F1aFfrHr5caLp3iIeBOUl3neHNsc56cgDt6gWklonDo2xmxK76pGnDtVdwtusjYVb5GLa6rBEV5nEWozuj3kmB1WnEEgNKWq5OtZcmydSZnXN34RrxMjJ1iy+OOmKaPazpzyCGKXU3JwCRdwKBDAaXwNDaq6auypZtFp84P5otQe/Cpq7WNXnpx34rD/3n37jqDc7a3+PkuIJo+wnit2d9gbaLcTyfjvzYRQisRuctOaklgJxb7P3FFU+zQH+wYRaSGAUjkH/9CPqRoWtIOFPFq3628uVy+aG0Vhabozjp33D6gN5/9sn3J6bmMNFp17jWl2/uoyZBoR2wzOYn9jYLX7qsOqkvzeywnGmo4LHGCF4gBqeVRKeNTGDwAteczRn5ttCgpWA77Hv7LLh0bIdYKhrP59ECZW6ACIuwAfX0MzSAzlTStIbHzu+QWGarWObEEEhmi2sN8V1CfWMmfNAhL5M2oNKXpWPOkMMzsaNE+IMiWx2uubTkE9gkJ0FsUHGnIdYVi+4GnzKAowsAmK9wC9dMA+9xD1hf7dknJBhS2SpjE7bRASDnSCDuZRuS7t7B4m9G1uE0ACav9RZB X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4QNVb8IKaiyEWgE4LuHKPDRbXzN7kQ6PwAOpygU68ChVMCLN0ldVaBC2MV3bW5bLnMw4vXJVL5KjWeZXIB9Eme4tUA/Mx7Cy8ElKc9cMdOJRBG8Ev8FIahLBAivA+Ols6bWXjed2jG9kQDBpzG+mvPPpaqD64WdBOxQi80q+yVLZhbGLyFfjDHst8DTdidatNW5Zz5JwcTcV0yGcF9T51ympyrojc582b1wSJvxxtCONjYs9Q9AkNAo5weXpGOE2Cj5XQRWYt+6GJMbVOh6Y9zcWmFm0OF9A+KoByCpRRmUBff4cFyIDyvJA6INODuUgD017U4IHMy5n5IRh5epW51QHBDL4mK//WPqT1iLvwmsfxgJgLJ2M7SILwR4Fnrjt3oZWGZRl4fxUNPV3C0sdeCcqu6L05WKMO7cDWp2Aw2vPw+IWmQDXppvPbbyGPGEPY0UDQdVszqcnlUHRoOZfZM+vRRkwy8DvfzxZQNjTtRhGGydXLQraOdIzcnjDhF97j6qfou7lRTyaAo0AtVtHXKy+eVYGaDKSOxVMGYhzhYbQ56P2SeaB/kEKm68dwLfVI/3lbbgXeXCdI0Xs9BqyC/8J17+CdW8ezPeh99/3Pm8KiJb2Rfkz8pwX0nAVFbdQWSq72PvCx7g5Zr5OgHc6cqeY+r1f6B9M4wAmaQxLjfxpP4xfiCJ8Ym1tlJyp0wVI8pFM6r0rS2zwcPWftdWW6PLcpU8xcriB+Yv9q9cCZX4IfPuhkxeYFasTyfA4rAaMXuo08jKUByLTH2XZDmZ/Rq9IEsCaPcLoEuWeqG4Ij6SdUWWxFe+ejyq3t9wKUOmGVQ9qLoBKjI8Q2wTXAhKy5mcBefixQ/vsxQqD13wX6U7LF/Os/vYWYH1QMUAQSCJqRMdn7QMXsolt2JIMY8tD7b83KxLmi2JoI/h+KTD/Vle3VKcMz7mtg4/kMFH7/fVxCNMbSJlXM5zOsnkxbvcgfm6OT+ScSISiT1W1rZwD7lE1rWECZprB7vGuCasQ3k7BHFW3vb0OZMzgriJG2G1wVnQy5yhV9xE2BE6Oh/xAkA5F3ffaLpKycRoo7KhUE/bK+ODhK9lPKs7sYZna74ottGJCsZI8g3kJRRGp+doJ92zQvXxCTnRbTI1yVaTHxOfj6/aq3V/O4OUvdICHDbWZcGXq2Cs7gRge8MCxUzRdx4XAApAHN7/J14z4aQS29DgsaqE24TxGqdu8VRWMeFev9DbCiCdvk3b2LiCnHlXBcV+kxjXPFhGObch6Bug5NWnmOzVXOVX/bkr4DKayr9oqr9sDuTOj7bMu4YpZksj6oVtaDTdPrh2wk5J9Ubw1rQmt+eYpGfQoJ7uIQZcrVaklTtPHBv0+Jt1HI3YGnufdzQTiGA08534fkeJoAYt+L6Q7wHbMK2RLJlcvMhjHiIpkx8zW02AOZv49gnueOLiCNKteN32b8WfbV19svbMbxtmV X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4db35362-b595-457a-5a63-08da301cd3dc 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:29:20.0511 (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 14/44] avformat/utils: Move ff_stream_encode_params_copy() to mux_utils.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: 6yM4ykv6Kjcv Only used by muxers. Signed-off-by: Andreas Rheinhardt --- libavformat/internal.h | 9 --------- libavformat/mux.h | 9 +++++++++ libavformat/mux_utils.c | 28 ++++++++++++++++++++++++++++ libavformat/utils.c | 28 ---------------------------- libavformat/webm_chunk.c | 1 + 5 files changed, 38 insertions(+), 37 deletions(-) diff --git a/libavformat/internal.h b/libavformat/internal.h index 51deb1c49f..16f84374f7 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -781,15 +781,6 @@ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags); */ int ff_generate_avci_extradata(AVStream *st); -/** - * 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); - /** * Copy side data from source to destination stream * diff --git a/libavformat/mux.h b/libavformat/mux.h index 1bfcaf795f..c01da82194 100644 --- a/libavformat/mux.h +++ b/libavformat/mux.h @@ -113,6 +113,15 @@ 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 2fa2ab5b0f..eb8ea3d560 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -121,6 +121,34 @@ 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/utils.c b/libavformat/utils.c index 44ceeecac6..5bda45d124 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -553,34 +553,6 @@ int av_read_pause(AVFormatContext *s) return AVERROR(ENOSYS); } -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_stream_side_data_copy(AVStream *dst, const AVStream *src) { /* Free existing side data*/ diff --git a/libavformat/webm_chunk.c b/libavformat/webm_chunk.c index 9348e6680a..d69db3a004 100644 --- a/libavformat/webm_chunk.c +++ b/libavformat/webm_chunk.c @@ -28,6 +28,7 @@ #include "avio.h" #include "avio_internal.h" #include "internal.h" +#include "mux.h" #include "libavutil/log.h" #include "libavutil/opt.h" From patchwork Sat May 7 11:28:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35649 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121579pzb; Sat, 7 May 2022 04:31:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzJVK9Vhq+oLinzDjMhTFOXLVv2I7BQmRSRUy/cOnxy7cyci9ek4XUuMexdLF3AVnIaH1LS X-Received: by 2002:a17:906:58ca:b0:6f4:444f:31ef with SMTP id e10-20020a17090658ca00b006f4444f31efmr6815898ejs.135.1651923068642; Sat, 07 May 2022 04:31:08 -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 ne27-20020a1709077b9b00b006f744dbd535si3522781ejc.232.2022.05.07.04.31.08; Sat, 07 May 2022 04:31:08 -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=urj8i4km; 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 0995968B423; Sat, 7 May 2022 14:29:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073010.outbound.protection.outlook.com [40.92.73.10]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BDC4968B278 for ; Sat, 7 May 2022 14:29:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z+fP8IkE44BW43Hrs9F+P1XM9g9lerE/qq+mObTZxgyhdYs6s1PpPGa14mZ9Lo7wahFZ7kywcgs3yfcOAQc2rFmbYZhb9eDOqxJmiDngyoRc8ZUSRVEzQe409dw4YWHJYRuHoLRjCYUgI+CDtvzLBVMICm/M/hN3X8EIdWYfOL9n/Y5CEwdMCbZDAyIEI23uJCAD8v5pK12VWUo+h+z0ejUUyqLc/MMVo5pXbMie/EbAZf/KGg2q1FqRKEGlHVKUZACHPYeCtG/hs8FuK/EWkoBvjPhK6yuKhJaWXk/qAHGqe5jZLzD80kA5yGITAeygfTap5x+JUO1Zowk4ZhQcCA== 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=MWtKvORSao19r4ks8A4eZGnHTGL6J2weF/I59VgHPgc=; b=BO6WNT3nR3ClVEURKUCa1cHSZqvNgNyAhkBqrlbxdGPc7tyj8EIcDExh/4fWStOC2srqQrCYQvrhATq7+h4vjKLxKoc69bVTbnRff8ETZvAAfav9zXyREL8c/YFcJLvS+7Y91TacCOZkixRHIXwNlAlXZJ2JNuz6TlyQ9wagithOCsE051wxQzk88L6GR5cFIkjuYDELwPNTyWo/dVVkHoAdL9gYdOcBLsm7d20E5aVA26t9ranIZSovBhA2Ssu8mo1lvof+n0UGjW+vF4IGFlWNYQtieC7qiabVvDChGZZNanoSxj2wDxp2Mty1lASaZeIKYBmpe7yigsSv4nKU7w== 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=MWtKvORSao19r4ks8A4eZGnHTGL6J2weF/I59VgHPgc=; b=urj8i4kmqcUqkFEALzOMgkchk8FVFoSL8R26Bu11/ccnNkf8ZvfXlL6McCP3c7NXZxxrR4grLc7xpUJXXmnYQFK4WwIbAcnasyOCXnTiZor7mk+QHHJdWezj9S2UQp1msXMoPiUPiGwWWxRR48/ZyoIgJpsmIiqmFpP6fLhKTU9acyfEEHBGN/jRcinCImWczkDaDX7+izqjjNoNPf5Q8hy4F1Yhs3e/KZ2OCKe0XX6Lj/JSr5pPa1oirC8BkBv80jJByCWxQZ/42Dj9VSdywdWa3ww1GyPNOaul5YP4XQcSsKqYEET4d0QdYw4mkQ3Lhzfez/Kj7NxmsdakpSK6qQ== 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:29:31 +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:29:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:01 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [XkG47/U56BcnXCOL0zi3ZUn6KtIxu1LD] 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-14-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c92ff568-2039-4a1c-3199-08da301cda43 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8T1BJLRPzp5DB0BtZ8Kkd0jkdC4Sk7THqetLOlAwSgbKn3XGDdAzTa3xIxmFzl3Zcw2Fw9Va/2FG+mAA+q0XyDqtM6Rhc6HQBbmHsaUV/HYRr5o4vTwZHHK+J10ASXzIq09097UOLbNDUSDfbTZ8Rmv4k861az1o36qHcFgv9vvT3d4bzl82CAo04R+2A8QsTn6bcCv7MPeGmXCSh/IwlMv4hYMNJmquPgtB5PBnfZY8A5WA3ZEddp1LiorVc4yLLuLD00ATqBagWNdparzJWpGyDFkBHGuZ536yY/Va6nNzxCALtg3cWXEsN4K833hb9/HgcrzxJxH3kw43/MxDzKeSscjMsZgcspIa6zsjAk3LsgF5UGyZ66ShDJy6xZX0FT/+0wYMbh6w7GWCm6qFHXWgiXdQNviLHNDUgRvku0fxUy0WrTuK3qpvHZ/oNQ3t31n2b93/dyNF0fwgBDiGc8mz10/2O2+1t3kjtpaAyLqDMpXt91dOWcqYkAK4YinF69rVvkUnH4Rx/tuau3MsiqIFMvNanlkwfbLZqAMtMUmiJn3L3sKi75Aca0RX8qw7i5pW6tUB7fR6cQELUOaJCgJEY6JSzI/XtS1gxMbuqPYgrHpZ/S7XJufU4avgXo7RZaEyskYfBW7gH0opXjqGwWP851GfEQdtQUdDmI8Yik/1nEFZjCjtcHSSCY5Hj8cpzuya1OWCQExk= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z10GzvJZzNASoND6K9MHFKkhxWX2QuUHhNfKugrhf41LB7xvqMCw5Sl1fDS15EEumJqPR2KLWIGe+sKUoeSObKye4n8CTOlWVrPS3tQ0BzF0xsTvbbI8w24pZ/GN5YcZURu8OJFaxjk7U7C4XCv1JmpleQ6xPUDrySUFj3Ertrle6v9AwWhTEZlyxkdeFMrJLdDBXif9rAwdxJeaEorQIBr5GJry9i21F4gvJXj8Ns3wgP39NpkHePnubzRAVwIRhJ6ShOpReT2YSTyyp97jcWPQEVlvH3jXJ4EVlwHuqrXKmDkawqdduDzoGMcX1NUicCXgVbeIsrdUhZj6ftj4X2rz6I6xMy6V/oRWihaEElHdoBFPqFtLJOt8Ajf1z793Em6GNrITCi/fUCC8B8gxACEAJryNkqQTMTYnf2J4RpQmZGB5TlOnOvRy4yZHAIXUDXghkBHoRbYYJvQgO4FJZFlg3q2hLtmEBdaag1SdMlgNbC1cPpput1WI8+YSSBTzltqoVDgfQHoRpQVHNsWqBJd29H7k9DZY25wRnUd1HI7S0HhcNB90i564eS5ad7jrOJYn0jKbcH37YwYzdyRHE7FUfUw2MENtyeulvlvXFlVw2pShaQbI5HQ/dgJh5+Zr X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /zY+igfBo4v7bO83qloEUorUDVgV38bsp5V6Pfl122uHomzNs/a9ZOT9QNADk0f0XKu7jVx4k/A7657vnrjr+DjoD/57+06+j3Qz8tRulqY19dDJNg813z1r47gyoHuKaH4K+0U0/KPrzbc7wpCyPfQRT1Od+zvfMfLU7kTB7bqhBCaGV3m44r+Gwu0TP7DPBmQrxYfgrIERe8gub4aXFniDcRcceMCutqONK+1tgtOnwmIJ88HDW9OePXyHUXZEbRnbnG2NWiPSiMKMagkzzcY8rQ3F5o8t+L5GjNHdbXErDBMmQFJonQsSwbPl33ArKb94LGkpdsPvymA3QgK9Fek/FfdvhaTkRimCg+s8UNF3IjsWI/dlg9O/baB8ftS3Nkau5jJrXFhjvcKtfWH+zjQuvV9apq35AUlIzB0HZJdcNO2Dxbep7hXBKem3EEMbCU2GxEq7Ve9A8MGZGEHup159Jl+091opALnAjuhvmp7WSsthO3M7G9wLcgpcd5ybu2GpB/DOq4AHxdwR00n5zyalSBomL+c9iH4PHR3FkmrIyZddai7bFat1aJAuK552Cr44MXhojbcv/0DE1nYvsPUgRCUNsjN37Nxf8Vx1zeB50/WzwdPUgik0lKwuZnX4+YIO51WqsyKRgI2C1yVASVL5EQ6pZgdYCQQEFWjnLeSokCClwFXJq4QsOR8Ju8z/iWtd3Nu61XdgzC7d6P2Z34tG4FgZf65stv0JFSg6GV+Qf6jJp8E/bh1zmdnhMdT52G82BNKYoZGbiGLl020sf86U6O9sPenyiTa+Nk5YAAIvkwkDjpTqUFKUfaXxwWesXZyclvd472wAmGOBzdeMwBNPBdeY0nZdf+tuunrTSK8ZXO4nXvvSvUmGnQx5KbS0JBycXB46rGKlRcH69zrFiz82UbXXX8UJLrbbdQ+mAduwhUA1F1hpT+lqSXHdkF70QKDAJbWVuIH8MK7I8iod3KLl+iRusa1ZeKxexM7W6zrijd2xXok2jx2+oEnpKQZ+ca9UkkuifTFIxjcj8a+IAwc5OuksifPqIHQn1Hgk+o3JKZQrwUpAsKPAbx38IdAEj4XB5bQreQmWn/+9sWxGN0QcgYr7KC8QH/qVgeVOvzmLpMgFjZxEXjwimEa6g1rvy+B6np4RkOAwy0JQ0P26pmpkFv5LID3+tqnH6BGq4NBzWOVa/RBOIaAftkBKvvhxUZ+jRarlpT0zlrZ23wa1hJ3czlg32MdDowPLGq2fWTj1zD392dBSK8ucXNIis9BFvwvIyUX8oi1JxazE63nM/8x2RfJDZnyfCPG0N85KJB5cWlh8q0PX7dH6IXZTsc20e2gNI0yiQJ+6bj/FakqyO3wyJlKg1Mlr0RSSn7I8rPv/IWkBxhDc5VfPtpAW8RapIbNEeiSqSy3DAF35uWah19/lTOP6FYyjUe2/5u6aKCefWzmuFfI7R3rLVTD7+Z8w X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c92ff568-2039-4a1c-3199-08da301cda43 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:29:31.6961 (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 15/44] avformat/demux: Add new demux.h header 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: zKR9gr3eLd3K And move those stuff already in demuxer-only files to it. Signed-off-by: Andreas Rheinhardt --- libavdevice/libcdio.c | 1 + libavformat/aadec.c | 1 + libavformat/asfdec_f.c | 1 + libavformat/asfdec_o.c | 2 +- libavformat/avidec.c | 1 + libavformat/brstm.c | 1 + libavformat/concatdec.c | 1 + libavformat/dashdec.c | 1 + libavformat/demux.c | 2 +- libavformat/demux.h | 145 +++++++++++++++++++++++++++++++++ libavformat/hls.c | 1 + libavformat/idcin.c | 1 + libavformat/imfdec.c | 1 + libavformat/internal.h | 114 -------------------------- libavformat/matroskadec.c | 1 + libavformat/mca.c | 1 + libavformat/mlvdec.c | 3 +- libavformat/mov.c | 4 +- libavformat/mp3dec.c | 3 +- libavformat/mpc8.c | 1 + libavformat/mpeg.c | 1 + libavformat/mpegts.c | 1 + libavformat/mxfdec.c | 1 + libavformat/nutdec.c | 1 + libavformat/oggdec.c | 2 +- libavformat/oggdec.h | 1 - libavformat/options.c | 1 + libavformat/rmdec.c | 2 +- libavformat/rtpdec_asf.c | 2 +- libavformat/seek.c | 1 + libavformat/tests/seek_utils.c | 2 +- libavformat/vpk.c | 1 + libavformat/wtvdec.c | 1 + 33 files changed, 175 insertions(+), 128 deletions(-) create mode 100644 libavformat/demux.h diff --git a/libavdevice/libcdio.c b/libavdevice/libcdio.c index 4417523c57..28c339564f 100644 --- a/libavdevice/libcdio.c +++ b/libavdevice/libcdio.c @@ -37,6 +37,7 @@ #include "libavutil/opt.h" #include "libavformat/avformat.h" +#include "libavformat/demux.h" #include "libavformat/internal.h" typedef struct CDIOContext { diff --git a/libavformat/aadec.c b/libavformat/aadec.c index 19aa26e099..e7b048b1f9 100644 --- a/libavformat/aadec.c +++ b/libavformat/aadec.c @@ -24,6 +24,7 @@ */ #include "avformat.h" +#include "demux.h" #include "internal.h" #include "libavutil/avstring.h" #include "libavutil/dict.h" diff --git a/libavformat/asfdec_f.c b/libavformat/asfdec_f.c index a8f36ed286..fb8b48ed11 100644 --- a/libavformat/asfdec_f.c +++ b/libavformat/asfdec_f.c @@ -33,6 +33,7 @@ #include "avformat.h" #include "avio_internal.h" #include "avlanguage.h" +#include "demux.h" #include "internal.h" #include "riff.h" #include "asf.h" diff --git a/libavformat/asfdec_o.c b/libavformat/asfdec_o.c index fb614d42de..907be6de04 100644 --- a/libavformat/asfdec_o.c +++ b/libavformat/asfdec_o.c @@ -27,8 +27,8 @@ #include "libavutil/time_internal.h" #include "avformat.h" -#include "avio_internal.h" #include "avlanguage.h" +#include "demux.h" #include "internal.h" #include "riff.h" #include "asf.h" diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 21fc2b87ff..937d9e6ffb 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -32,6 +32,7 @@ #include "libavutil/mathematics.h" #include "avformat.h" #include "avi.h" +#include "demux.h" #include "dv.h" #include "internal.h" #include "isom.h" diff --git a/libavformat/brstm.c b/libavformat/brstm.c index 4fb7920d7c..628c556e66 100644 --- a/libavformat/brstm.c +++ b/libavformat/brstm.c @@ -22,6 +22,7 @@ #include "libavutil/intreadwrite.h" #include "libavcodec/bytestream.h" #include "avformat.h" +#include "demux.h" #include "internal.h" typedef struct BRSTMCoeffOffset { diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index cfe1329105..e57da59e04 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -28,6 +28,7 @@ #include "libavcodec/bsf.h" #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" #include "url.h" diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c index 211d77fd02..6888132801 100644 --- a/libavformat/dashdec.c +++ b/libavformat/dashdec.c @@ -28,6 +28,7 @@ #include "internal.h" #include "avio_internal.h" #include "dash.h" +#include "demux.h" #define INITIAL_BUFFER_SIZE 32768 diff --git a/libavformat/demux.c b/libavformat/demux.c index ad7b5dbf83..5d83d81665 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -21,7 +21,6 @@ #include -#include "config.h" #include "config_components.h" #include "libavutil/avassert.h" @@ -42,6 +41,7 @@ #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "id3v2.h" #include "internal.h" #include "url.h" diff --git a/libavformat/demux.h b/libavformat/demux.h new file mode 100644 index 0000000000..f003d81f52 --- /dev/null +++ b/libavformat/demux.h @@ -0,0 +1,145 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_DEMUX_H +#define AVFORMAT_DEMUX_H + +#include +#include "libavutil/rational.h" +#include "libavcodec/packet.h" +#include "avformat.h" + +#define RELATIVE_TS_BASE (INT64_MAX - (1LL << 48)) + +static av_always_inline int is_relative(int64_t ts) +{ + return ts > (RELATIVE_TS_BASE - (1LL << 48)); +} + +/** + * Wrap a given time stamp, if there is an indication for an overflow + * + * @param st stream + * @param timestamp the time stamp to wrap + * @return resulting time stamp + */ +int64_t ff_wrap_timestamp(const AVStream *st, int64_t timestamp); + +/** + * Read a transport packet from a media file. + * + * @param s media file handle + * @param pkt is filled + * @return 0 if OK, AVERROR_xxx on error + */ +int ff_read_packet(AVFormatContext *s, AVPacket *pkt); + +void ff_read_frame_flush(AVFormatContext *s); + +/** + * Perform a binary search using av_index_search_timestamp() and + * AVInputFormat.read_timestamp(). + * + * @param target_ts target timestamp in the time base of the given stream + * @param stream_index stream number + */ +int ff_seek_frame_binary(AVFormatContext *s, int stream_index, + int64_t target_ts, int flags); + +/** + * Update cur_dts of all streams based on the given timestamp and AVStream. + * + * Stream ref_st unchanged, others set cur_dts in their native time base. + * Only needed for timestamp wrapping or if (dts not set and pts!=dts). + * @param timestamp new dts expressed in time_base of param ref_st + * @param ref_st reference stream giving time_base of param timestamp + */ +void avpriv_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp); + +int ff_find_last_ts(AVFormatContext *s, int stream_index, int64_t *ts, int64_t *pos, + int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t )); + +/** + * Perform a binary search using read_timestamp(). + * + * @param target_ts target timestamp in the time base of the given stream + * @param stream_index stream number + */ +int64_t ff_gen_search(AVFormatContext *s, int stream_index, + int64_t target_ts, int64_t pos_min, + int64_t pos_max, int64_t pos_limit, + int64_t ts_min, int64_t ts_max, + int flags, int64_t *ts_ret, + int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t )); + +/** + * Internal version of av_index_search_timestamp + */ +int ff_index_search_timestamp(const AVIndexEntry *entries, int nb_entries, + int64_t wanted_timestamp, int flags); + +/** + * Internal version of av_add_index_entry + */ +int ff_add_index_entry(AVIndexEntry **index_entries, + int *nb_index_entries, + unsigned int *index_entries_allocated_size, + int64_t pos, int64_t timestamp, int size, int distance, int flags); + +void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance); + +/** + * Ensure the index uses less memory than the maximum specified in + * AVFormatContext.max_index_size by discarding entries if it grows + * too large. + */ +void ff_reduce_index(AVFormatContext *s, int stream_index); + +/** + * add frame for rfps calculation. + * + * @param dts timestamp of the i-th frame + * @return 0 if OK, AVERROR_xxx on error + */ +int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t dts); + +void ff_rfps_calculate(AVFormatContext *ic); + +/** + * Rescales a timestamp and the endpoints of an interval to which the temstamp + * belongs, from a timebase `tb_in` to a timebase `tb_out`. + * + * The upper (lower) bound of the output interval is rounded up (down) such that + * the output interval always falls within the intput interval. The timestamp is + * rounded to the nearest integer and halfway cases away from zero, and can + * therefore fall outside of the output interval. + * + * Useful to simplify the rescaling of the arguments of AVInputFormat::read_seek2() + * + * @param[in] tb_in Timebase of the input `min_ts`, `ts` and `max_ts` + * @param[in] tb_out Timebase of the ouput `min_ts`, `ts` and `max_ts` + * @param[in,out] min_ts Lower bound of the interval + * @param[in,out] ts Timestamp + * @param[in,out] max_ts Upper bound of the interval + */ +void ff_rescale_interval(AVRational tb_in, AVRational tb_out, + int64_t *min_ts, int64_t *ts, int64_t *max_ts); + +#endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/hls.c b/libavformat/hls.c index 83ff4cc607..38eb346405 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -39,6 +39,7 @@ #include "libavutil/dict.h" #include "libavutil/time.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #include "avio_internal.h" #include "id3v2.h" diff --git a/libavformat/idcin.c b/libavformat/idcin.c index c92ed2c237..1560d58e39 100644 --- a/libavformat/idcin.c +++ b/libavformat/idcin.c @@ -72,6 +72,7 @@ #include "libavutil/imgutils.h" #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #define HUFFMAN_TABLE_SIZE (64 * 1024) diff --git a/libavformat/imfdec.c b/libavformat/imfdec.c index 2fe79dfbad..73baa9739c 100644 --- a/libavformat/imfdec.c +++ b/libavformat/imfdec.c @@ -63,6 +63,7 @@ */ #include "avio_internal.h" +#include "demux.h" #include "imf.h" #include "internal.h" #include "libavcodec/packet.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index 16f84374f7..c123c8d1ae 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -460,21 +460,6 @@ do {\ } while(0) #endif -#define RELATIVE_TS_BASE (INT64_MAX - (1LL << 48)) - -static av_always_inline int is_relative(int64_t ts) -{ - return ts > (RELATIVE_TS_BASE - (1LL << 48)); -} - -/** - * Wrap a given time stamp, if there is an indication for an overflow - * - * @param st stream - * @param timestamp the time stamp to wrap - * @return resulting time stamp - */ -int64_t ff_wrap_timestamp(const AVStream *st, int64_t timestamp); void ff_flush_packet_queue(AVFormatContext *s); @@ -509,8 +494,6 @@ char *ff_data_to_hex(char *buf, const uint8_t *src, int size, int lowercase); */ int ff_hex_to_data(uint8_t *data, const char *p); -void ff_read_frame_flush(AVFormatContext *s); - #define NTP_OFFSET 2208988800ULL #define NTP_OFFSET_US (NTP_OFFSET * 1000000ULL) @@ -611,22 +594,6 @@ void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf, */ int ff_find_stream_index(const AVFormatContext *s, int id); -/** - * Internal version of av_index_search_timestamp - */ -int ff_index_search_timestamp(const AVIndexEntry *entries, int nb_entries, - int64_t wanted_timestamp, int flags); - -/** - * Internal version of av_add_index_entry - */ -int ff_add_index_entry(AVIndexEntry **index_entries, - int *nb_index_entries, - unsigned int *index_entries_allocated_size, - int64_t pos, int64_t timestamp, int size, int distance, int flags); - -void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance); - /** * Add a new chapter. * @@ -641,52 +608,10 @@ void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance); AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base, int64_t start, int64_t end, const char *title); -/** - * Ensure the index uses less memory than the maximum specified in - * AVFormatContext.max_index_size by discarding entries if it grows - * too large. - */ -void ff_reduce_index(AVFormatContext *s, int stream_index); - enum AVCodecID ff_guess_image2_codec(const char *filename); const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, enum AVCodecID codec_id); -/** - * Perform a binary search using av_index_search_timestamp() and - * AVInputFormat.read_timestamp(). - * - * @param target_ts target timestamp in the time base of the given stream - * @param stream_index stream number - */ -int ff_seek_frame_binary(AVFormatContext *s, int stream_index, - int64_t target_ts, int flags); - -/** - * Update cur_dts of all streams based on the given timestamp and AVStream. - * - * Stream ref_st unchanged, others set cur_dts in their native time base. - * Only needed for timestamp wrapping or if (dts not set and pts!=dts). - * @param timestamp new dts expressed in time_base of param ref_st - * @param ref_st reference stream giving time_base of param timestamp - */ -void avpriv_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp); - -int ff_find_last_ts(AVFormatContext *s, int stream_index, int64_t *ts, int64_t *pos, - int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t )); - -/** - * Perform a binary search using read_timestamp(). - * - * @param target_ts target timestamp in the time base of the given stream - * @param stream_index stream number - */ -int64_t ff_gen_search(AVFormatContext *s, int stream_index, - int64_t target_ts, int64_t pos_min, - int64_t pos_max, int64_t pos_limit, - int64_t ts_min, int64_t ts_max, - int flags, int64_t *ts_ret, - int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t )); /** * Set the time base and wrapping info for a given stream. This will be used @@ -717,15 +642,6 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels, */ int ff_framehash_write_header(AVFormatContext *s); -/** - * Read a transport packet from a media file. - * - * @param s media file handle - * @param pkt is filled - * @return 0 if OK, AVERROR_xxx on error - */ -int ff_read_packet(AVFormatContext *s, AVPacket *pkt); - /** * Add an attached pic to an AVStream. * @@ -819,16 +735,6 @@ int ff_alloc_extradata(AVCodecParameters *par, int size); */ int ff_get_extradata(AVFormatContext *s, AVCodecParameters *par, AVIOContext *pb, int size); -/** - * add frame for rfps calculation. - * - * @param dts timestamp of the i-th frame - * @return 0 if OK, AVERROR_xxx on error - */ -int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t dts); - -void ff_rfps_calculate(AVFormatContext *ic); - /** * Copies the whilelists from one context to the other */ @@ -880,24 +786,4 @@ void ff_format_set_url(AVFormatContext *s, char *url); void avpriv_register_devices(const AVOutputFormat * const o[], const AVInputFormat * const i[]); -/** - * Rescales a timestamp and the endpoints of an interval to which the temstamp - * belongs, from a timebase `tb_in` to a timebase `tb_out`. - * - * The upper (lower) bound of the output interval is rounded up (down) such that - * the output interval always falls within the intput interval. The timestamp is - * rounded to the nearest integer and halfway cases away from zero, and can - * therefore fall outside of the output interval. - * - * Useful to simplify the rescaling of the arguments of AVInputFormat::read_seek2() - * - * @param[in] tb_in Timebase of the input `min_ts`, `ts` and `max_ts` - * @param[in] tb_out Timebase of the ouput `min_ts`, `ts` and `max_ts` - * @param[in,out] min_ts Lower bound of the interval - * @param[in,out] ts Timestamp - * @param[in,out] max_ts Upper bound of the interval - */ -void ff_rescale_interval(AVRational tb_in, AVRational tb_out, - int64_t *min_ts, int64_t *ts, int64_t *max_ts); - #endif /* AVFORMAT_INTERNAL_H */ diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index d97fc33d44..4715f1b7d4 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -55,6 +55,7 @@ #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "dovi_isom.h" #include "internal.h" #include "isom.h" diff --git a/libavformat/mca.c b/libavformat/mca.c index d8278ebe72..74654c3b39 100644 --- a/libavformat/mca.c +++ b/libavformat/mca.c @@ -22,6 +22,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" typedef struct MCADemuxContext { diff --git a/libavformat/mlvdec.c b/libavformat/mlvdec.c index a02b190620..db3b77bb9b 100644 --- a/libavformat/mlvdec.c +++ b/libavformat/mlvdec.c @@ -24,12 +24,11 @@ * Magic Lantern Video (MLV) demuxer */ -#include "libavutil/eval.h" #include "libavutil/imgutils.h" #include "libavutil/intreadwrite.h" #include "libavutil/rational.h" #include "avformat.h" -#include "avio_internal.h" +#include "demux.h" #include "internal.h" #include "riff.h" diff --git a/libavformat/mov.c b/libavformat/mov.c index 24cce47884..c59a474b7c 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -36,11 +36,9 @@ #include "libavutil/intreadwrite.h" #include "libavutil/intfloat.h" #include "libavutil/mathematics.h" -#include "libavutil/time_internal.h" #include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/dict.h" -#include "libavutil/display.h" #include "libavutil/opt.h" #include "libavutil/aes.h" #include "libavutil/aes_ctr.h" @@ -49,7 +47,6 @@ #include "libavutil/spherical.h" #include "libavutil/stereo3d.h" #include "libavutil/timecode.h" -#include "libavutil/dovi_meta.h" #include "libavcodec/ac3tab.h" #include "libavcodec/flac.h" #include "libavcodec/hevc.h" @@ -58,6 +55,7 @@ #include "avformat.h" #include "internal.h" #include "avio_internal.h" +#include "demux.h" #include "dovi_isom.h" #include "riff.h" #include "isom.h" diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c index f617348b2e..458d6dbd03 100644 --- a/libavformat/mp3dec.c +++ b/libavformat/mp3dec.c @@ -20,14 +20,13 @@ */ #include "libavutil/opt.h" -#include "libavutil/avstring.h" #include "libavutil/intreadwrite.h" -#include "libavutil/crc.h" #include "libavutil/dict.h" #include "libavutil/mathematics.h" #include "avformat.h" #include "internal.h" #include "avio_internal.h" +#include "demux.h" #include "id3v2.h" #include "id3v1.h" #include "replaygain.h" diff --git a/libavformat/mpc8.c b/libavformat/mpc8.c index 03c67907b9..2822a08b55 100644 --- a/libavformat/mpc8.c +++ b/libavformat/mpc8.c @@ -23,6 +23,7 @@ #include "libavcodec/unary.h" #include "apetag.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #include "avio_internal.h" diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c index d696183a73..864b08d8f8 100644 --- a/libavformat/mpeg.c +++ b/libavformat/mpeg.c @@ -24,6 +24,7 @@ #include "libavutil/channel_layout.h" #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" #include "mpeg.h" diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 49f7735123..6e761c07f1 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -39,6 +39,7 @@ #include "mpegts.h" #include "internal.h" #include "avio_internal.h" +#include "demux.h" #include "mpeg.h" #include "isom.h" #if CONFIG_ICONV diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 30dd40749c..6a22c33995 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -59,6 +59,7 @@ #include "libavutil/opt.h" #include "avformat.h" #include "avlanguage.h" +#include "demux.h" #include "internal.h" #include "mxf.h" diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index 6611fbc1d7..0db3d03f6c 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -29,6 +29,7 @@ #include "libavutil/tree.h" #include "libavcodec/bytestream.h" #include "avio_internal.h" +#include "demux.h" #include "isom.h" #include "nut.h" #include "riff.h" diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c index 87f178bb7b..3b19e0bd89 100644 --- a/libavformat/oggdec.c +++ b/libavformat/oggdec.c @@ -32,10 +32,10 @@ #include "libavutil/avassert.h" #include "libavutil/intreadwrite.h" #include "avio_internal.h" +#include "demux.h" #include "oggdec.h" #include "avformat.h" #include "internal.h" -#include "vorbiscomment.h" #define MAX_PAGE_SIZE 65307 #define DECODER_BUFFER_SIZE MAX_PAGE_SIZE diff --git a/libavformat/oggdec.h b/libavformat/oggdec.h index 1d28e50aa8..43df23f4cb 100644 --- a/libavformat/oggdec.h +++ b/libavformat/oggdec.h @@ -26,7 +26,6 @@ #define AVFORMAT_OGGDEC_H #include "avformat.h" -#include "metadata.h" struct ogg_codec { const int8_t *magic; diff --git a/libavformat/options.c b/libavformat/options.c index 14ae55e3fd..d306c86c63 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -19,6 +19,7 @@ */ #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" #include "libavcodec/avcodec.h" diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index cb0ca31f40..881d7002ad 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -22,13 +22,13 @@ #include #include "libavutil/avassert.h" -#include "libavutil/avstring.h" #include "libavutil/channel_layout.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/dict.h" #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" #include "rmsipr.h" #include "rm.h" diff --git a/libavformat/rtpdec_asf.c b/libavformat/rtpdec_asf.c index eb19e85351..72ead6975a 100644 --- a/libavformat/rtpdec_asf.c +++ b/libavformat/rtpdec_asf.c @@ -28,11 +28,11 @@ #include "libavutil/base64.h" #include "libavutil/avstring.h" #include "libavutil/intreadwrite.h" -#include "rtp.h" #include "rtpdec_formats.h" #include "rtsp.h" #include "asf.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" /** diff --git a/libavformat/seek.c b/libavformat/seek.c index 890aea7f8a..3b1c75f1b1 100644 --- a/libavformat/seek.c +++ b/libavformat/seek.c @@ -27,6 +27,7 @@ #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" void avpriv_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp) diff --git a/libavformat/tests/seek_utils.c b/libavformat/tests/seek_utils.c index cc679dca05..4cb94ad685 100644 --- a/libavformat/tests/seek_utils.c +++ b/libavformat/tests/seek_utils.c @@ -18,7 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavformat/internal.h" +#include "libavformat/demux.h" int main(void) { diff --git a/libavformat/vpk.c b/libavformat/vpk.c index 10c4cf0ebe..bfd49c6307 100644 --- a/libavformat/vpk.c +++ b/libavformat/vpk.c @@ -21,6 +21,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" typedef struct VPKDemuxContext { diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c index 087b44273e..98128b7201 100644 --- a/libavformat/wtvdec.c +++ b/libavformat/wtvdec.c @@ -32,6 +32,7 @@ #include "libavutil/intfloat.h" #include "libavutil/time_internal.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #include "wtv.h" #include "mpegts.h" From patchwork Sat May 7 11:28:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35650 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121680pzb; Sat, 7 May 2022 04:31:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwR06BHfoU+OQiIsaD2vHavQRrE3hA5+IVlNU1HaZ5D9RaCaiPn3ikWK6XLqgIbEXj6Fnl2 X-Received: by 2002:aa7:ce87:0:b0:425:d88c:bc92 with SMTP id y7-20020aa7ce87000000b00425d88cbc92mr8298593edv.147.1651923080245; Sat, 07 May 2022 04:31:20 -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 qf18-20020a1709077f1200b006f51c67b74dsi4630023ejc.851.2022.05.07.04.31.19; Sat, 07 May 2022 04:31:20 -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="DPLHhug/"; 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 0BD4768B446; Sat, 7 May 2022 14:29:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073010.outbound.protection.outlook.com [40.92.73.10]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1649A68B278 for ; Sat, 7 May 2022 14:29:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TQdnRLFL0d7it9h45SafswTm5RWG60UGez0yion+YC+vev5YU/yh3BvWSQaq+7u2nxxZzU9uPpOVUia6PXQYiI5ssnP6m87wYKO16kP+T2wPKNy8JqyBhjnj53Uhdzv5lDt8clLKoKWO/t5oSGToGXfBGE7LCmuZRW/nsbOb4SzYgPzO/zNOgvajvjgf/9mJ6zIu1yWiUxr8KDNkwGvMqMQf+4XZ8ymLJyrNCwMHEgu3metgzZ4g2bilAoUeByYmcXPrNF6+se3b32LSSdvxxh4hOOy+hasBm5wtYbvSg/LG+RrHyy/u/SBUD+Uf5MI2GM6tjy7Yk5pzaiEAZVMYJQ== 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=45OAZDjzxBPdEtp3jVp5c8/rzxVATULFhSA/Kr5j09o=; b=abWvVtUp8iVQvJaxtDwxjj4iHXi44auUO9tfiGPPN1ZMhJ+t35rHwfY5oNiXCr/04LE+spopkw6fqUnhcA4Yc8GQdirqNc9U/QWoNpURiZCGNOkO3xHICMUdTnrwAxncLaXCrqya806oDN93z5u0K6VrJUE8MHoUyYrMgsp5VdRlggirViflKvhed8/usiw2W9rYVszL41q8B5idc7stZjR0mN0V4Am1Fy42YuYKkMbW0Z2Au1Y2MFHY1oCqyS15nOnQ5iYn2y7FBbgxaYGqzVTlKxpl9VgjZZCkmmlG5gZcJMMs18USQ1m5YgteCjYg5R1q+yCejjIMqAEyko+zbg== 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=45OAZDjzxBPdEtp3jVp5c8/rzxVATULFhSA/Kr5j09o=; b=DPLHhug/dJNJPtaNmrq7EfkH8V79UWFDiNdPmVhbsC9nr2JDI9hi/a5O98UXTNRMTX2E0FEMZfi3xikq25rYpxjl1RZ0zyl53u9FYpId2xGqlWgOiWMb4kdJd0fRUnmvMU7rpi9hGt1Qn6ocpIX7NGtbVBUUrgywRbjZc/++o7NqnUDXFHMHaajgxetf88eMMGxXEY6JpQqQDiiHuc5NoCvbuxlSIXrVORHcmGB34kXn4qA+xYlje0iVof3PV6aOiEbi8Ebl8GRT4Go8m30TR43UPGV8EFCdPSMxFdmgeMKWGL0IsgpIGuV4aKWxME5zXMu3+zNhe5xGTnUW5/vHMg== 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:29:34 +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:29:34 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:02 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [8jph9hl/afl5UDQgVl6w6encNSvMlKdx] 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-15-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4c2634d4-3660-43db-ae34-08da301cdbd1 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwz8FNp4PLGShweW2Iwd6Rpk8u29bcbar+MpGKV79BrhGag/MHNfgFlhQapESHRDuht4wmqvYrJDdh7dhM/OZhEcdTKNmWVY5UjZkeGeBFpMxh6Jq7xsmh+EOSABhP43452oVIchSmAEptP8Gt4bSZURGo9NA0wApuejkyZenrHoq+T1M27KkTyItXfWtbCXtnIOgwn44b0sbWoRGRY/2MtXUymXWCgZINmRHUeIrUEv/StuFxts99qZ9NM/fXgHUBzfZXtjB/fCUkAAdENKFpOha1IrdDN1lNUDIq4gq85oo87lrzZKFn90iTVnSM7n8tvYvh5fb2WgiLGJW6C5OvPub5UldkTgaXFkabGlo2tAfgRybi8QmOfPheWEakBLIvK5SEVKwcuLKxLLqwu+Hx2EwqMYRruacsA4/c7TPY/JRRNt6gloSRJGOspreaHcvhCreopb/ODnLji/ULZrE2J+NxC8TEPqWovwi5yJeJoHlr3fQCVjBB0iBYtvhW+oVX+EqydIsWVTyUznNliuEDTODzkeAz3/q+aFaq5eKopTRD2cGGI0voFzQ7akTkikkyep1xIiI6IFv7Pr8/MTFItqEa7OKUCNjU1XOJbUU/tQE3L/f6od+u4vm6U/fu3Pv3xJrbVemcjPduKHbXAUTC/D+mZiRpYaw34VVor7Gux3V9ZK7ciWQKK87zfkMr/lbxs7U8gxiEMPvyE/oKcR06SvgPsXl1buhz+W+DG9olCJc= X-MS-TrafficTypeDiagnostic: DB6PR0102MB2663:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hYI6g/RMyYpo1Og9FwRASnqzbGKajbULIm+P+YyrzDEdI6cmhHPRURP3oyxurepM9DhG6bDZ65a1VDSLnXuBhyMpO/+mMqwcZxg6TceudRGRgSCRrecZmJH0yFIKRuXG9UOWqly0hjS6oj5T4kiq64Qw7QuIXyMqGYn6N/EUqVphuj9WS3qLWd/Swv9Y3TTJJy3AJuDKYAuLWaL1+L6SdslXjGOHUwU7ZxPMcQJMrHbS+q9Sx8xmJCZ0Bq+9DwNoVnzJClJuiyWLeLPZnSHsZcEyRsxWZsc9YilC6I+ZR0OaGQWAD5wt8QX7X96QSwgt0qIEsb/iY4MLZimKfA36eQ9PqV0dVUdUEDuA4N4bbLTCHYU800RkLKoUmgKmjCoUSMEVyZsRMINnZac8pcOwuF4bQJOXiz4LHi0O5qMDNJTPWE41XrtvNvfV75T4px/oC/ocVW1EcoRxPKCx7FeQZ3mfjdeZAJbbxlwpNC5OCze4/rlu9zt33TfbkDVnT0I2z5EUl3tSAT7LhW/d+9QqpEykk6Ll8lRtVi8gspwGZfE572El0reNVznlGPgrn4QtKkv/4rzjgKHWmtbhkEaLcinKgxWJWiaYU4Obtk2lMANvxm3AMu+gosa60RaMc45/ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tM0zfG8WFO5h4eM6GTrK9aBfX/DOw3IFB5tMxxO25yNghaXw4ryPakTMy91fMYE4ss4ysMLc9vbXamWskN9jlDuxXeS9zrQ+7CTOmEvMMhehNzd+tetsp3giusgAjTTLrEoONijwRsVp791f+fZRQwyaK6yuIpniKq16skzJD8I2yNB0ue9j+cpRpz5RtxZUJa9vbQRoB//DKwNXGc8L3jaTo2lsb3R4Oz8M9jkmJhoodBgdmzWWjqT67/lzzmwnqJ7rBJxYVXmXAIgQa3mV/BpERm5RgUxUxefLIGhHEpTFGLfMTdB4mcJ4SOdXMAB1FB5+xyz2wPg4tRha+y+DK68KbvqjGEgylEQmYAKFS5080tG9vxjIFxCC0PtWsndRedeirvxEUOJ15yKeK/29T9pbNE7Q4DXfKdFwOSV5irjg9KdDZeOc4rFdPtAfx9GhGvfsyniNqgKEwZjzG2Are4rJ3wvQju6Ucuu2MzKn5aRj26fnaH2heApsAEkt4qVSAohhqeV+Vr4YpJfig+KYMMxW0jm/oCzNEm/CjWGPCH6nCP7iZCCkOYlPiNrGY7ImSxoXYCKZy4nCIZxfkrM9vD/fZ8wcvWAw8Vh7TJeGCqLrw4r1gXujyG0QCE7v9CNX/rfpoCXnWeIlhRaHvGbMiucn5ibgUZTfdP+mCMfL1U9WKs9Y84t9JiOhJd7il/li5d1fRfsuVoZREDoqlzWw/SYr0QdLTkcVcA16rJeMefqRRQ6lAD68MbrxAwESVZnpw7uFPbEQhoSN/fXfzryIvv2CVV6BMzxOm47bkEcbZtb3r6qh0CibH7Fho/xNQs7J3aX4ZPG/OM2P5agU2EF17Ym3/gUa4IbgN9K+yk8OyHY1PKcIsoq2Xk5St+GgQ2kJwxzc+L8I3JuchP7ntcdI3Syl2GeBeXZyUBFUn99+dIbRJM5z5Bq08OkGjBUPBoAQRFqOPNvt8GeUNiGH4dXNPpUkole1PO3HfXG+RrUhiMEVANQktg9DT70WWRjaR20l6Ol1NSofe2ktZkmmWBaKcFJTthjLMJhwHqn5OcIaIpyquul8+TidYoe5+g4cp885ZszRjCOBCzZnAVSOsxxdhRB0/AkOa/ScUDigKWfn5n4ixDEtF54mcFdvQvU5cG+i2UEV6USuT9nBEWMVa5KBN/FWLsHIsNMG25Ku9ptMrmakhOAiXuV4bP6QssVYY1fF5ZrOk+fEMhW6MOKpgncc1c6LyJW6nRHRmd/7N3gtr40AyYrqOgpoxBhdPd+DdZfujEI3r+oPtgcv0F+WZ2gu1vICFdifge9gfJTcXh2ZMi7DHd8z95H/dGDZtDrBMkUBYJoXRc033S8oHj8zpzQraTZ7jQBbSgC6O8+6zeLuZFucjFMK1umSNhels1BOQC3n8KaofbG1btOaq1X4XtzfJ4K+p9578a19ODGlIwJNTlv01Mj+6MB0+2E18z4l6buO X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c2634d4-3660-43db-ae34-08da301cdbd1 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:29:34.1531 (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 16/44] avformat/internal: Move definition of FFStream->info to demux.h 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: xXRMblPVaJVk It is only used by avformat_find_stream_info(). Signed-off-by: Andreas Rheinhardt --- libavformat/demux.c | 45 +++++++++++++++++++++--------------------- libavformat/demux.h | 29 +++++++++++++++++++++++++++ libavformat/internal.h | 30 +--------------------------- libavformat/utils.c | 1 + 4 files changed, 54 insertions(+), 51 deletions(-) diff --git a/libavformat/demux.c b/libavformat/demux.c index 5d83d81665..1620716716 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -2173,59 +2173,60 @@ static int tb_unreliable(AVCodecContext *c) int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t ts) { FFStream *const sti = ffstream(st); - int64_t last = sti->info->last_dts; + FFStreamInfo *info = sti->info; + int64_t last = info->last_dts; if ( ts != AV_NOPTS_VALUE && last != AV_NOPTS_VALUE && ts > last && ts - (uint64_t)last < INT64_MAX) { double dts = (is_relative(ts) ? ts - RELATIVE_TS_BASE : ts) * av_q2d(st->time_base); int64_t duration = ts - last; - if (!sti->info->duration_error) - sti->info->duration_error = av_mallocz(sizeof(sti->info->duration_error[0])*2); - if (!sti->info->duration_error) + if (!info->duration_error) + info->duration_error = av_mallocz(sizeof(info->duration_error[0])*2); + if (!info->duration_error) return AVERROR(ENOMEM); // if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) // av_log(NULL, AV_LOG_ERROR, "%f\n", dts); for (int i = 0; i < MAX_STD_TIMEBASES; i++) { - if (sti->info->duration_error[0][1][i] < 1e10) { + if (info->duration_error[0][1][i] < 1e10) { int framerate = get_std_framerate(i); double sdts = dts*framerate/(1001*12); for (int j = 0; j < 2; j++) { int64_t ticks = llrint(sdts+j*0.5); double error = sdts - ticks + j*0.5; - sti->info->duration_error[j][0][i] += error; - sti->info->duration_error[j][1][i] += error*error; + info->duration_error[j][0][i] += error; + info->duration_error[j][1][i] += error*error; } } } - if (sti->info->rfps_duration_sum <= INT64_MAX - duration) { - sti->info->duration_count++; - sti->info->rfps_duration_sum += duration; + if (info->rfps_duration_sum <= INT64_MAX - duration) { + info->duration_count++; + info->rfps_duration_sum += duration; } - if (sti->info->duration_count % 10 == 0) { - int n = sti->info->duration_count; + if (info->duration_count % 10 == 0) { + int n = info->duration_count; for (int i = 0; i < MAX_STD_TIMEBASES; i++) { - if (sti->info->duration_error[0][1][i] < 1e10) { - double a0 = sti->info->duration_error[0][0][i] / n; - double error0 = sti->info->duration_error[0][1][i] / n - a0*a0; - double a1 = sti->info->duration_error[1][0][i] / n; - double error1 = sti->info->duration_error[1][1][i] / n - a1*a1; + if (info->duration_error[0][1][i] < 1e10) { + double a0 = info->duration_error[0][0][i] / n; + double error0 = info->duration_error[0][1][i] / n - a0*a0; + double a1 = info->duration_error[1][0][i] / n; + double error1 = info->duration_error[1][1][i] / n - a1*a1; if (error0 > 0.04 && error1 > 0.04) { - sti->info->duration_error[0][1][i] = 2e10; - sti->info->duration_error[1][1][i] = 2e10; + info->duration_error[0][1][i] = 2e10; + info->duration_error[1][1][i] = 2e10; } } } } // ignore the first 4 values, they might have some random jitter - if (sti->info->duration_count > 3 && is_relative(ts) == is_relative(last)) - sti->info->duration_gcd = av_gcd(sti->info->duration_gcd, duration); + if (info->duration_count > 3 && is_relative(ts) == is_relative(last)) + info->duration_gcd = av_gcd(info->duration_gcd, duration); } if (ts != AV_NOPTS_VALUE) - sti->info->last_dts = ts; + info->last_dts = ts; return 0; } diff --git a/libavformat/demux.h b/libavformat/demux.h index f003d81f52..c667f304a5 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -26,6 +26,35 @@ #include "libavcodec/packet.h" #include "avformat.h" +#define MAX_STD_TIMEBASES (30*12+30+3+6) +typedef struct FFStreamInfo { + int64_t last_dts; + int64_t duration_gcd; + int duration_count; + int64_t rfps_duration_sum; + double (*duration_error)[2][MAX_STD_TIMEBASES]; + int64_t codec_info_duration; + int64_t codec_info_duration_fields; + int frame_delay_evidence; + + /** + * 0 -> decoder has not been searched for yet. + * >0 -> decoder found + * <0 -> decoder with codec_id == -found_decoder has not been found + */ + int found_decoder; + + int64_t last_duration; + + /** + * Those are used for average framerate estimation. + */ + int64_t fps_first_dts; + int fps_first_dts_idx; + int64_t fps_last_dts; + int fps_last_dts_idx; +} FFStreamInfo; + #define RELATIVE_TS_BASE (INT64_MAX - (1LL << 48)) static av_always_inline int is_relative(int64_t ts) diff --git a/libavformat/internal.h b/libavformat/internal.h index c123c8d1ae..b72c051afe 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -245,38 +245,10 @@ typedef struct FFStream { FFFrac *priv_pts; -#define MAX_STD_TIMEBASES (30*12+30+3+6) /** * Stream information used internally by avformat_find_stream_info() */ - struct { - int64_t last_dts; - int64_t duration_gcd; - int duration_count; - int64_t rfps_duration_sum; - double (*duration_error)[2][MAX_STD_TIMEBASES]; - int64_t codec_info_duration; - int64_t codec_info_duration_fields; - int frame_delay_evidence; - - /** - * 0 -> decoder has not been searched for yet. - * >0 -> decoder found - * <0 -> decoder with codec_id == -found_decoder has not been found - */ - int found_decoder; - - int64_t last_duration; - - /** - * Those are used for average framerate estimation. - */ - int64_t fps_first_dts; - int fps_first_dts_idx; - int64_t fps_last_dts; - int fps_last_dts_idx; - - } *info; + struct FFStreamInfo *info; AVIndexEntry *index_entries; /**< Only used if the format does not support seeking natively. */ diff --git a/libavformat/utils.c b/libavformat/utils.c index 5bda45d124..175f9caf8a 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -40,6 +40,7 @@ #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" #if CONFIG_NETWORK #include "network.h" From patchwork Sat May 7 11:28:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35651 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121767pzb; Sat, 7 May 2022 04:31:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy7OxpmD2WlZjZJq9RNBNv1TgwKsJlbxPoVZ1o3gb3nIB8v++WV+n+y5LKbLiokhh4lDw2q X-Received: by 2002:a05:6402:28b1:b0:425:c39e:b773 with SMTP id eg49-20020a05640228b100b00425c39eb773mr8005427edb.237.1651923092393; Sat, 07 May 2022 04:31:32 -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 p11-20020a170907910b00b006e89ea10769si6721787ejq.861.2022.05.07.04.31.32; Sat, 07 May 2022 04:31:32 -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=IJUgvUVe; 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 E178568B418; Sat, 7 May 2022 14:29:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073108.outbound.protection.outlook.com [40.92.73.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 86B9768B428 for ; Sat, 7 May 2022 14:29:37 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cTAE4pelS1EQ1lkePm+qYlRrCYSjFu6RrukC41SIac3nokmDZjfknndmt4C6bQtO0XAsDY87w17CqYulLU0zPQyhwRCDUlgrdZFocbAI6YpfByXZ+yBXD9IQtB56zxqnvcJf5I+oy0PfUrPjjPD6LdCSRRZV9UFB6dXE+ZdJqSy3EG7kKPZylDxJqYlXLbKupcZ/jds8SdlO2oERby4/D3racSkPhtaKAIyWekozX/lAk+FfvkXHaa52X90j+O4Aq3TSL5rybqRUh/L34ZSreFzPvqyoO9mSB6T/ezy8GhZLEHbHaOQt4lnWjRg5ooPrS/zCDWAf+DohlCcPkWvmuA== 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=c0hzfJTh0u47zAJ0EhcudYe/M9wIclGElMqkcYxojJE=; b=PSyw7NH6Zpb2ziwB6psz4l0fE8ZGya1XPp38hwYY69bxnw4gz7aNlfJNUBJ/TgQkf8KojQybRevQmsDKy+h3tPI3xZB1S1RYZZ47bUx4XcGP1koc6hliqj3u7dypKn8jwveSUp4PxnJWa+FoaPZRLtMVocQHZKBelEx7t6LaNEaFlKEi67BHFiVUnxaZc+zq4cZHWqwj1fejbTtjIXfRj8Fr7t5tgEUoadzo+xzhXvB8upx5QuXicJY6LHFvbaKyeVcDwsXmRhCUeHO3Q3WDIHlAhA6qb+M+KNqmRqQ2aTCsjOu6IVZHIdMgrE005Eb98osCEGlYQxqBnd8td4N1Ow== 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=c0hzfJTh0u47zAJ0EhcudYe/M9wIclGElMqkcYxojJE=; b=IJUgvUVeKeJRfo7pCAbAVq5gXEPuIWjTrZWEoarXR5G6oPfKSdWU3Yxz3w7k51OgwSYxmKxc/+4Zingv1/Oe6PyJjZw8XFco6Dp0RF+jApW+YWrgkMMO/3Hsa8QEeuQX8oMUbwvDadIL6vhhSJRH83CeOLSWzPM5b/Pjg+uUUpz7nCivSdGBIm3db0a+lZ9Ns9GovQo8os4O79Oz3caDSZZjniSDZ/Dvji7o3G32T+jCdD5W4rZ+LGG0qZdZQmKMOwwAsuPzq1m+FOIowhe3mKtelJ1+B3vmcSyiyBKgbZ5KgI+rF7UktK8S4B037XTFi6HsjYM1sTjg5f6imRA/5g== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:29:36 +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:29:35 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:03 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [9d8zw/xj+rF9VULANcpy1jIcJdlL1L9I] 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-16-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5294c190-1a9a-4098-61dc-08da301cdd4a X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8xoRGLGy7eMqnpfwbdrxdfR8cH2iuWr3dkOrGYnejUAf78zfhxkT3XsnvweYI8V0kqIL7bp+2MS0wH7f8uL8qxa/3arHxfigf/I5RlIJ1Wzzl8nCY6FyK20LFtFHV3PYg4L/97J2schfKn9QNAdASP4fLQqZdaWRmzHJbCdE347R09VoKK7hFYPTVTAWfxadqoSYHjr1p7O4IylqqTr/AlUTMGMclstaK93/Wn6cYuuCvhycyFDMrjNmHswo9RIVeTnzfzGiechpQyClz4ILxDhIv0+NFlbdNk7lE2v6hA10PBt+sRAzoZ66uW1qkomDm5bVnbTyJtgd4axxRFBeMcmDmCCgbIREtSe2Am3KXcf6BO3yzXux1S1pFBPF/huxNiTOFolC6fGyNBplXVudqbgRkXSRkixD1VKR20KURT62tF6elJrERyZeeTV3jVlWWrYmh+7G9W8lFUbn0h60C+Ug7ONtxXheG6Tcve/XJMqxhTJu9JsFvc1bgYZxu6+NGiJdasPRMCEf4+baN9hJKbZuPZ8OTT+dRzZFGhdcoPFHhM8y2BkuLG8GGLKjeQJ2lZdDXgDmsuTio9s8qf6xV4UOFpAMqTqsuXOzAaVbfM0hIgWUCd0mczyy7DA/9cFmdY1DufptspV4wUyrYODViwxg9XfUL5xBHiEidpwmm2Aj4kbphrcRYOm/97q7D2M7G0siTuOwlgww= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PTr3KsGv7tUa6ku/whk6HyAjq1DcQCbOHjN5Yv22gzZbLHuCDXQI0aV/YQ4PHOhMBRHrAX6fma+NZTfaa7F9kPWMx1hXV9ltNOCUQUa/UD00HScObnmK/FaHLMKz08xWAYF+N3OVwHJq1QbcYdS7PpmANOLnBM6Ooe19+WAUMQsDJbs6rq24YxeUG4yobX0HBgGPkvErYxJrMJAJbarMI01G7MLt5uzOQpbJs+IquaG5Hx6yCfBLHYo4RwEUEv736gNt+ut/b/omS+Qd0Df/Yce4IEE3hAEAzvaAjomgZ+gaofFFr9KP9ZwL7qIlr4C62f3FjFUvCFeRgkOb/OR1N+Fyvsir0AJo3gj8egrsmf5ABXzwS7AFhZQpa2BWAz/XrgXoLwDwgVWvqngDoYBNVhLI7gzJuP4089Ytqde+FpLCF7F991Gz+QpIW9kchEGMUyHB+fxgMBiFASsKPMvivvmdyKoOsE0UQ8CMHBjsspZk8KOMUOSXDZAnUQiZAs76pm+CsFqj1KYMp7C4TJdCTsjZ1n2hE/7HVVcqKXnW/kwtWZcQdt/S5/iIYvFKF/eKOtEsmyLY2bXhQTtiiEzJJBH5HfzjqiaxaUjs8/uo9blCerdpWhH85sWP0GFpxwVd X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BjPXDt38+g15KWa3NDi+5FdsHXQxs3RxJpBLYpBidDxHFxkLQYoTDEupWpDp/egl3C9+hjOt5VGsgVxeDru1zMtBlhW928Cv+uzc/vcJ2VVOKzWGEh+158e4TfsfmrGsSeALGX9GHQedq1+zyUICjKO6hCFtDtXG4n8WBg5rmqiBIf6a9OB9OsHotNsuRji7kvsWIPO6JuQutWgTuBaMmXgjXcQkqHYhH7V63/wOm8gHG2eZfR0FaTAP0Xwb/S27rl/Dba27kg0BxQms1ITY1emyIu1fxB+cqn4XK4tO0STJ+Ssyi4TIjT6qMvgPs0PLthy+C4Mpkfq7xv/CHqbblCNuJYwUi3FQInqU1TNAXfPpJwx5Hj80Vk5Jehj2UB/CJWxf5kB9V5UgzjtboyqqoCfebVms9i+YaL6oSJGRYKJxYXkG5tqi245PK3P5lxwBgPzBuUChAzZyobpsfVv1OtNrLjWQXr21i81TnR08JuJQN70Hxs/I3vbyFG/vcTdZ1AXBZp9qwkxDOL1pnzAtKGYTt09Z/rJWQiY8gUuTm0/2jjD2Q3Uac6ZJSJDI9cM69YFPg+PH1EUzMYpqoZa85nL/dpsRg0LoMV6lyipQJBZgFcdBJs8dQBziPMRoRk0cJocjcWqmJdwh+HZxBCaLaLuNnRNq4oscfmegR1wzYMD9dBXg1g9itYxw3fmYH/oud1749VoiLs7eYnNMq7bz/RjWflON9T4mbE5QG0AhDLiLRZQvU9KXxXPy0g7JFCKw7TlUpH4Pku8wQj/lRtbZWgdg8qcsdoH3GCdM/t6QeqVpszsmuUm4WfztNdsq3ADK1wIJkm/jeIYl40Zhv2VPOncWYJQuhhpitSP89IL4E3YbI6J349MWTJGadLE1x4qC/k5v9Ge7jdgQuUexdyMD507KCg3emizNHhHfpeh5fOafVPXXeOaHfPqVPe1ERMegyLD/TTuoZcsTwVlWb6/mB8byKwdg6hcrLmBp0H0kdXL0CbHT6KB7HK/7A9BPf0t1BwPzpdtcT3Y9TPsonZ0L9eF7Nw9GIVChORo+Hhwyo5ew/5if+nZ5mfJ25coDcml3FSp/y8Hcji6kg3uYKnsfTv4M3b2KW10Wh2JqPqosBJUsX8lhB2cRb6Fr33BMxIXKd4DbrSpxZlrjQ7nAnVZOtSDVGVxYRchX/s9abJrYJeRthoEESaiSMB5bXKtXNOJRrmDHKqIgEA8tViRnKMIShsSOHVQeBC/umuGxjVxbq+F//No8T6OwnCI70vpC4tTjsqIWHWQOqHn4qaou1Nk35NmGKv7gWy8D9iXyhna8YNtAmn8ojI+E7E6Ty9cDkkHJBZzFajS4qSaVSRxr8Pz3m1J9Bu8ird6reDY1RXIUX8uEZC+jAuzeisY6NfAXkbrTwFTClzRLR5A9u3cjGvgbD4qvnOo3u/SgH9Q6TDukEcrKTYHxL6CCRCQdDXfOat7P X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5294c190-1a9a-4098-61dc-08da301cdd4a 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:29:35.8078 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 17/44] avformat/utils: Move parser functions to a new file, demux_utils.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: z0Qe2++il0mz This file is both for the various public APIs that are demuxer-only as well as for the demuxer-only internal functions. Signed-off-by: Andreas Rheinhardt --- libavdevice/v4l2.c | 1 + libavformat/Makefile | 1 + libavformat/demux.h | 2 ++ libavformat/demux_utils.c | 34 ++++++++++++++++++++++++++++++++++ libavformat/internal.h | 2 -- libavformat/utils.c | 10 ---------- 6 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 libavformat/demux_utils.c diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index 2ecfb9fae7..1f009af4de 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -34,6 +34,7 @@ #include "libavutil/avassert.h" #include "libavutil/avstring.h" +#include "libavformat/demux.h" #include "v4l2-common.h" #include diff --git a/libavformat/Makefile b/libavformat/Makefile index 52c53ea3db..a03fd7f256 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -10,6 +10,7 @@ OBJS = allformats.o \ avio.o \ aviobuf.o \ demux.o \ + demux_utils.o \ dump.o \ format.o \ id3v1.o \ diff --git a/libavformat/demux.h b/libavformat/demux.h index c667f304a5..ff8d998d56 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -171,4 +171,6 @@ void ff_rfps_calculate(AVFormatContext *ic); void ff_rescale_interval(AVRational tb_in, AVRational tb_out, int64_t *min_ts, int64_t *ts, int64_t *max_ts); +void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type); + #endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c new file mode 100644 index 0000000000..10ae887359 --- /dev/null +++ b/libavformat/demux_utils.c @@ -0,0 +1,34 @@ +/* + * Various utility demuxing functions + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "avformat.h" +#include "demux.h" +#include "internal.h" + +struct AVCodecParserContext *av_stream_get_parser(const AVStream *st) +{ + return cffstream(st)->parser; +} + +void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type) +{ + ffstream(st)->need_parsing = type; +} diff --git a/libavformat/internal.h b/libavformat/internal.h index b72c051afe..cbd8b2170d 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -415,8 +415,6 @@ static av_always_inline const FFStream *cffstream(const AVStream *st) return (FFStream*)st; } -void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type); - #ifdef __GNUC__ #define dynarray_add(tab, nb_ptr, elem)\ do {\ diff --git a/libavformat/utils.c b/libavformat/utils.c index 175f9caf8a..2d5ee8f7bc 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -63,16 +63,6 @@ int ff_unlock_avformat(void) return ff_mutex_unlock(&avformat_mutex) ? -1 : 0; } -struct AVCodecParserContext *av_stream_get_parser(const AVStream *st) -{ - return cffstream(st)->parser; -} - -void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type) -{ - ffstream(st)->need_parsing = type; -} - void av_format_inject_global_side_data(AVFormatContext *s) { FFFormatContext *const si = ffformatcontext(s); From patchwork Sat May 7 11:28:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35652 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121818pzb; Sat, 7 May 2022 04:31:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw9ETZM2SDDhrF6QwQEzFDeAr3o1AtP8N8Q6nQ2f84v+0JGzP3XWs5QUdI//fOdHKdFaKdt X-Received: by 2002:a17:906:c113:b0:6f8:faee:2f22 with SMTP id do19-20020a170906c11300b006f8faee2f22mr375296ejc.447.1651923103495; Sat, 07 May 2022 04:31:43 -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 l8-20020a50cbc8000000b0042600959715si6340557edi.204.2022.05.07.04.31.43; Sat, 07 May 2022 04:31:43 -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=ukn6Blpc; 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 DFBF768B249; Sat, 7 May 2022 14:29:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073108.outbound.protection.outlook.com [40.92.73.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C6A5A68B428 for ; Sat, 7 May 2022 14:29:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ua+gjrQQ2wDbt1o3LcHovhC0ixh+SRu/x65a3YO6vguYSItMxSjAsf4Y6AZIV22mkZlfvlo6RbNOOnfb6JfhwwIIlcPonI1YImpUwbdi+T1mFer+myKMNITPf9ev9eX60B2dt8ftxPRgbH3e+EVvtcSsljqtp77omMJ9CiVC1IJVA5yXIIn/JSQ3E7OwP/UcM1NrNEvV+xGIOBd2anpMLEj5P5Ya4pSMQfWz1rCidl91EjM63bl00Cb9o3B41WZk8DtoiIBqQ/+QfotjctQGxHX9s6KNVco8b7m86EMWMLSTiVD53BK1x6Dxg/Lq2BC7sNwmGmMx/5CUADJr3dB02w== 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=ew8fieL7SOJ1Bm83lvCi9E2MGxrFWciuix/HwbManck=; b=UEb/97tjyBrrRteJwcW7fZN2lPeYRV3M6QuGuIttktVEL2ic9EhKH2WyJBda8G9d8UCQ9x8YMdgcI8IhB9aEyDBZ3y5MJMiONGEVqI2nrNO0LJ2WWaE0S1//D0wM1dDNfNA73XzhOIY5dzTDg20iSXMuvnb3a1TVfNjPKjJ9e594LKKnNHMMvEfMGHSZtj4jQqMyLb2Mj+TGscUSbAPuk5PwF+SP+E5f87XtbYhILzG4HmWh/pt0SpN6teSimuN2dRGZTkY8WpqUlTsznVMXkE8/qL0zTVine7xV/RWMQditTqMSVC2wZrcAPqgmpvU10Kgxzuwm2QJZQKqUK8s12g== 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=ew8fieL7SOJ1Bm83lvCi9E2MGxrFWciuix/HwbManck=; b=ukn6Blpcyn7NaxeR27CMo21IyUhSrDhDt4XOs8oT+DAKJ7He3NgoUyzOkcgzQyCd1Ujn6WsRHs3KPoIuF914vxYH02I16UqSfvMebkhi1nhD/2q/nvHOfJQ4AEfEpuTPn81uI3qxboH0DTmOoo/NbGF1dBGzCfAS1gRzfNZe6BzlPHOwrV4Xs36XSz2EEI+kii3qDld/y+A+UqGspuxAmOKIkmNUoWin9ZHj1IH8qcYDEf8m14SzcUtD4TEV+KwTIZYcY8mhGogAtDRqu4RtAFXiHx7r63/E1Bmk/5hdtEBGxSkaa2iAGxM7Da3rulaV1AFlHcu3fc0d/EbA6gIDmw== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:29:37 +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:29:37 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:04 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [vEcyqaO9JG4IgyCGgVENp1Dr34+Q/Y2N] 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-17-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ca43ed2e-2eca-4d75-c063-08da301cde1e X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8gVcpBvxSnA/xFDzdMzvHG34qVugy3VIrV2oHE0OqxlaNO65qLAp60KW64RB/H2VG38Zk3iqq+QTFm1lP3NKz5CDbFw3obKK31N+49/LNveGuQsjbr60yPXYumNxoL7fESJFfAxvm3Qnc4LeyT6XGRrW+MWpSdhcyGsQ49LFxNd/P3PlekJLKtrP4Z8BgR2xH19qfePy8JPcvAn3B46Mbc15F1ni3blttLFTgO6+KA7b3e2hx4OlaCsb+IQIJo8GF+bE8Pu9+aDH2v96bES9FylPVq8+xfHLLvmaJhbETSgh+OsJ6AXrCvC0yl8Af1qbNHValNQ+kH9HvzqV7vS+nuIsjZMh1KpTWJ/xA8BejHlZ875SYLblCjfRRZgSQ4YHkKH6g7cOa/h+5TD+thyKgBZhvoODqvYIGmc2ulRDgsQc0fola5lnpwDsWuAYLo0K2peNKSnlUy9l3yDZ9ODVev4XTAWKk+Bx47zx0/lngbDg50twt3QjgZMIIHgSERd6w49eG0hiLNCHp37Fqp9FxquUBrwwpEaeoyaiAcqJeI/mQB0xpBwpzQ9hW+JPYw2TMxhkjalZXQx03am2iK65r6YT6m00htL3Fwy7YHzc1iAvZxaH4O27nHwnqeGGT9Pp+Kpc9iCVSpNGVG6GSIcSGzcLLnd5P/A1bQ/Vhq5TihpFQCNo7iC3wcYq1GOA/EImWHogyHC95bPs= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WksgnMsEgou6XMKoWahO9G+3lrvm1MBe6KPAjFG9TwcRNY0yJJbNPTkSCi9JK2uDVgt/HYTroqOAnsOv0FDZhh7YoLU74yVX6fSYVRB/ko8MTJSdPv/BjbzlmvzYYIGon34VAchtf4ugK1DrHplEwsOSjvQXy/iJZXtdjeEwow255+nShuK0UANTm/N37xlraccjuq2+k+UIvw4p1QXe0iZ6FCYMTshl8hS/1y0jgguTU1Xni9pSV2tCugFxDC+gKErQ9QVWpOz4IjLLTzEYnLVMH82WZ/6/Lus7dX4zuxBWlo+scp4OnhIYemYHx2tNIDpXTi7YCADSClLr+qdB3YNBu7XabYFbvTT3W1GlW6/r5O/gIb+Gz5+fjielHROURFbF52Zl7wwXQiY77b0I6q3x8VX8X6gweJHC8HpHAtiMlgaKCau4l0K+5vXzclSkofoLBOxFRf4mGlMRRx7bYdg8H+03fMmvJD3eu6v6k2bfd4fWWmrYTLUQXNMlt5TvlV78RPXGzGP044Hk/mos0zJHRs79aVqV9fNKoxUie7QexvnkesoIznYNSbLQU/gJ/uNwTKw0YCIubBkvfF9+Xodhd2lMENqEimzmg1PkUo0CXJMDHSRGj6g82imZPKdd X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FQnLOI4HyN1i99OJbAUplQZZnZsSM1giguRnTDc1h2vwCHzyLhiQGUMlUgTgEcq/0zh69bBiP/vEu3NPvwWUcQWdGfR5rYeutTNRVQA5XWAzC5I9NIRNyytannp9v69pG5pC9T/Veo+lZPwg2DelfrzzTECMipKCN4g5leK+3dRW4XoEH83nwmjXjrz7uEu/pHO41MB4TtPm4tYf3GeQFZwIxAABUeIM8J4+gKKUw+l8Gp5LWt6jVplbLdI+VDyHYma9gh+0fdRJD389wmvUlDHVAJ/wdW9mnwCuKh+Ge5l/azG8ogtjGVJkMNXeAeGUyvg7gS+T+aTHzWcbPX9ieXU5gDPMi0ZnyB3VLzZXV0pKaQO5ioJIfXo1Ug2s4ZJSqtwmzdbv9xjDeEjM9U6l2KhhtlPZp87O3NSpRyRwIp82Oc5xFTrAy5IyTZ+wVJsn4FQa9YdhX4ss8wevFt0bE6R4CU2Qlhy3BW/Gs91n/7uUnmjGlHTtMwZu60MmboyQTxeIFwSCI/t/KqoN3nkK+66qSU8F3dv1dgplbdk7e5A8ACJ05jahsaKiS7KQnpo19rpkTS2AQKkDfHtSxJeMFBPfoHR21uhgUusUuJjpneGKKc+ucok3B/e874D+TLmzDBDF9W/8ebckTROOp0dmOAyDcm6HSXRq94zFa+oAlaNxpLBXMiyoCHphUy/2NP64m+xUlrxDEr3FFwbZ9QmPkV3z31S+WDm/3M8OvDxKsGvOXu4drNCiJv3S477RYxUlqx4IqzKDQhM6B9fq4LGrV4lAtrrMhDkxjtLowOdDznh4stlzrdURbuhc+3rwkqZ2u28xjkgH5GWkLEfSJ85xAbdUqVdyquDzJECk/b0EhEm+kvKKOiroRxB2SHV4IPzQdHqQgU8wW+8sWn7DRqryLbi2zCSNwKwtM3cVa8kr8OlYbxg7BM30zIktP/0pzev/+ZeAqpBtEMdvi+cFR+HXB9vzXEWOj9bhtLoKQkQ/ABp4uO1mfsoRFlc0A7inMRmX+4d14YrMb+Y46muLRoxyMvHUqczy5XvN8tSSEKFElEEBkx9rKOUDQ6yDazQzt9H/644fwYJHrzexA+bl2vvS7Dx7xysR/PJ1Gs7a4cMdznH9ePc3Koe8ma7wzo9QFYhfQ+LP/kx3eMOzgsL80m4pGK59kupZuqK9RxiaUyMp7WP2T9J3CWCHgMCqJSH9UJSD8yyv3QcZEm9j09qIDCXSR00MKfEa4EmmIKO7wd+Pq6kVZEA/jUVu7ZH2ZRP07+40UGUvCQrIp7JgquE0baNYPWnfBTW33a8z0+Um+kvXXjAzc8GXMqWfS7G9zU3XfLEO8eQTpWJ0WWX+zf3c54k41LlIYt2P0unksg1sAWvCzK5scqh4pSCytbI5qpudE3Be4gGjiDKzbHbyye3t5BRBjCHOvtbzC/ikZKYPrLbudcm014Pu36uaSg6TQM0dezGm X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ca43ed2e-2eca-4d75-c063-08da301cde1e 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:29:37.1996 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 18/44] avdevice/v4l2*: Improve included headers 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: 39cvxXrjddId Signed-off-by: Andreas Rheinhardt --- libavdevice/v4l2-common.h | 13 +++---------- libavdevice/v4l2.c | 8 ++++++++ libavdevice/v4l2enc.c | 4 +++- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/libavdevice/v4l2-common.h b/libavdevice/v4l2-common.h index c7bed3e3b4..4fbd15d28c 100644 --- a/libavdevice/v4l2-common.h +++ b/libavdevice/v4l2-common.h @@ -21,7 +21,7 @@ #undef __STRICT_ANSI__ //workaround due to broken kernel headers #include "config.h" -#include "libavformat/internal.h" +#include #include #include #include @@ -35,15 +35,8 @@ #endif #include #endif -#include "libavutil/imgutils.h" -#include "libavutil/log.h" -#include "libavutil/opt.h" -#include "avdevice.h" -#include "timefilter.h" -#include "libavutil/parseutils.h" -#include "libavutil/pixdesc.h" -#include "libavutil/time.h" -#include "libavutil/avstring.h" +#include "libavutil/pixfmt.h" +#include "libavcodec/codec_id.h" struct fmt_map { enum AVPixelFormat ff_fmt; diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index 1f009af4de..5340382d57 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -34,7 +34,15 @@ #include "libavutil/avassert.h" #include "libavutil/avstring.h" +#include "libavutil/imgutils.h" +#include "libavutil/parseutils.h" +#include "libavutil/pixdesc.h" +#include "libavutil/time.h" +#include "libavcodec/codec_desc.h" #include "libavformat/demux.h" +#include "libavformat/internal.h" +#include "avdevice.h" +#include "timefilter.h" #include "v4l2-common.h" #include diff --git a/libavdevice/v4l2enc.c b/libavdevice/v4l2enc.c index 787fe53547..b1006461b7 100644 --- a/libavdevice/v4l2enc.c +++ b/libavdevice/v4l2enc.c @@ -18,8 +18,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/imgutils.h" +#include "libavutil/pixdesc.h" +#include "libavformat/avformat.h" #include "v4l2-common.h" -#include "avdevice.h" typedef struct { AVClass *class; From patchwork Sat May 7 11:28:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35653 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121864pzb; Sat, 7 May 2022 04:31:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwyU4jzaCcStRObN2FvdN81zvPsg4KT9gGuDpfaxnRFK18NJV21oRsl81t6CVtJRGji6hO+ X-Received: by 2002:a17:907:9722:b0:6f4:6989:9bc2 with SMTP id jg34-20020a170907972200b006f469899bc2mr6979723ejc.601.1651923114133; Sat, 07 May 2022 04:31:54 -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 t12-20020a170906064c00b006f3a9502509si7478935ejb.121.2022.05.07.04.31.53; Sat, 07 May 2022 04:31:54 -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=jLegBKEm; 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 D827268B44E; Sat, 7 May 2022 14:29:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068102.outbound.protection.outlook.com [40.92.68.102]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E0AEB68B3A5 for ; Sat, 7 May 2022 14:29:52 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=at5fclV1iOM5pA5PNEZdpUbF/Va9WdCbjQ8pAfqzLyE30CXF0fRe6RfcFUEo/0BDO2g24CfUbjRKS6+U6xr+sdsHG6vSJI3V4QugpVThuF7KhI/HhNpo6FKoRrf4sdBxk7Hyba1qGR+jYBCu739sgoPP/PQjJwiKk3HA3wG+8iXpQEPkQVSmWBzbuOq/WgrhcLj5xCGL138s8OD0q/cut63k0cB8qUxDHUpU6JrvnxjKyJwlN+EUjmLuaGgQ8kZiZAFCK2gnBi7SfNDtHk5qKs86PVcCYdSCWjuA7wdT5KYBKzDW+FwNkFHjCO2p/hcuc6qlwdWCrISczvfyQ9txeA== 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=M6QthpuJM7bMeMLtk9rGqAyGhZZqkyv7e/HGuRiFsfk=; b=Xbox4hLMEWjTUoEevGGzB52ioee1nXzjBAMvg65TAhHungn6cWIZm7sQaOqcDbM6sCJCQwJ+6L0bYEMLXptpXjQVjAne7eNXGmhyTaQOg9jHasoBaH5xA+hhcPHS8I4wbhY8mCoDE1ZlAx+fK7mFMGzGoI4iHaAsxPVatluL/c73s5nnlkAtI1GYkXpoVNSnhWNyJMYt2EMmfSoBTlr49zrRKEEsUneCtvJMtuXBUgdvzBYNeeaQJmfn//SV+Y9+o4XXTRtD/sDfZAxaKrJWYBxcWJJTnl8IgvBSoGl+PVjGq/jhreTzeqfZzCp1LsAKPxrvxMv4vuZfgVqcVOWG3g== 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=M6QthpuJM7bMeMLtk9rGqAyGhZZqkyv7e/HGuRiFsfk=; b=jLegBKEm0z2sVRIb5hAE2Oky63I1rz5wm4wHB0LvA+cFkgaY++liD7KLgCf8/06Vk/6bZDcJcy7wANiE9cWwMIhRRRkG80w7rd3Yx6J3+sFYrJJh6CgJyCBXgTf+Umg1EfkkfRmzbhv+U364xKPrQ2OuuBQRh/WJu2zL9cFBHoY3M65Sf+E1t3HLP2cl3Akzb9fdzpof3NaLnTKdFKkouxBZvGWMWdOmEMpqXFIZVzvcNJ2cJW3YIiLPrZKhF/fyR68cOejgG7Kd1iREVabsbyOLSF8Q8qrXSm/sziFm6YeIWhON0C6L5zbdqT08C4OOiODLq9iG5uskdoARJfmVsQ== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:29:49 +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:29:49 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:05 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [zdQOHIQUCgRSi655qpWWmDaAQw3qy8oe] 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-18-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dca4c98c-1714-47c9-15e4-08da301ce531 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8bNjjfziqVv63TEz2mWkbio6iT1cVbZqisOjyCkZaDcllmcwHRCegrQIRIJY7HOGgXDwYZ+TBvZFJuCd0ts7mZmQyr8OY/5pDxHCsAi+CcguKMSG/rSjxte/+BGWlfbkIRnaaF3G/ly4f3S6k/rJ9z0dlbhKKFe/MPOvMbwIyOr/Bnc32WgYmS9T1SW/k5+/QcBLxE7aCtob+W3WoRoiHPlUQDzla0cyY7VwTcUsFYdE3KWl3xKMi0/Z3DoD5KtW6IJ03PtGKB8sCcZK6+6TYiFRTvlkjWN9Ju8EtaIzR3O7NBuFYdCgXbxSEdf7+lDr7W6su/XrfdtAtnqkNvDhUcjrtQ3SBQlXfswQfwVjR8SV6Jadr1nHWBVNJMrS368QJopF+4gngfgL2noYjDoNjbsnVwBaY+ZP6hTGpGpWjrtnLwh0ACPoWCjvYYHf4hcbkI2j8TU7vKqO1CuoX36ASpRI3vN0zXn+H+FTvE463XWYVuoJpkmsYNpPc7uYpqkZj+T1GALxdaUWkiZNToWbqHmpuiXeJhM0xMEGcpPaFuu0g+2Swre1bnOsakZ26NJnALE6E1oIrk7B7ZoPwDX/pX6L4pn/ec3gnMvFUjElGro36ZL+GQHdIOZ2/IWSfO//iprJrb74OxXV/TUToBLRK6XCFFnrGC+0Jz3nt5XSOjbnqHjjXk0SLIlW3xam5ds6Qyv15VQIAMe4= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SX18RXKDZNEieDNh4GqG+objLwM+xsL6EbFeIh9cZSOAHD+XIGahpfkArsNYilQzTx6WGk1SQZ77E6OYSYW4t/VgVJIjgAsbQJl+m56KzZ2a+TdAZukeD55cXH0APhWdRinzPOWMOqhEnZNZfKzzX6o6ggwv4AN1pOGbEZeeEOcchfu/4Rs4i/lDDo6j1npqCZzDbNWYz1xRJ9/kMp9DOTAiMxCSctGGe9aAy2Todp1h+PhtTLen1HE2AfxNW7fjz7DO0i6VSbuv0iqLIdGZZ1M8HHjiUq30udbyjcyeC/3ljiwF2pLKISFoyzVj5CQRRpZcDzylHjfr4BcpgEExdmz0CdAXu+k5lmV11iaOsUeVduLYmnpCSqNKAGVguV8FBOsK7t0wlagehFKAkXAwr6nLpTg7V7ji/91YpYj3GAVToS5WccHrNgk/o74U/xNhYW2ZjkI9j1B8tvPWMg1dVDmtVEU6BTHxy+YDjNhdC3wzvz2/sq0YFiAFhRoAs4At0D1mqsWmSMCEkfJC8TsBhEAzdwD8UnOh8MPYpG9SM5QQ14SL30gXqOLHi/wNWgSRffssUwmTqjoaKqG30sja4cDR8Xo1SOmZv0m6OYZ04+9JZidZMVNrdZAViJd+03mp X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qSrAk+ZLru8QaNRAguXHG6otnPmJ/S6cGc67x6OjldtA55e/Vhvtd7zPI28uMrGVJnPWfaxqpfjk1UKEzBz3GvTVwuTAK08HM2VKzl/jjaiZ/Dy7Yxenl61oTsgmcLV/i3KCUAhvE9uCe6oFLmxy/c6918/ZgMSEAbfP33Tc1+TMhSAc4WXDWez81jyjNJEXqZEvv+Ac5rKnS47088DVYfyjw1+CNtl8rhRsZcTgGMZrVM/9dZqx27y2lgSNbRXpAP3d40SA7kGChI9kEmMxnHTa5h/qXTHdBhIxJuYsQ7xJuXI/f+qRiMiY7aet4fGaHTn8Sr9zzZCvHIqfjbB4a7kDtl8D0KPvlIBPneZjhQaL9ze84KyEJW3KAxM76Y6fOZCjnFRstWzKvxRrsy2zgdPhSEHMSIQeh3VwI8AyuKHNCPaFZvltu8YIN/n0XxCOsx3iCEvXdqhVuIzLFuHXKN5O1nZaoYB4YlCdhNAqo2ZfrZ1YZPOVS190soeLrE58hDjR6qPykV+5XYbr+Fwo1xqRyrT6+Zs4nYQmONKqmgEFXS2ce3+oUoKyXgSl22IMgg4c+xxv3n/FMdUaVLDg0CIUXF5WRpwKpB9tv7o3HtC+6cHE+7jpxgT7KB67QDeD7ATqXw/+t9+uuMtEVX0HomHj5C+LD8UWtlziAiDX60hDKf1H+CTQGnPSPp55jKq3rLLLP5W0pKVXwY/9hPoedg3hU1GmtP+VYMkFtCMeSFyWeZ5F0lpT09rhrMMNADL/sC0X84KRx6UnXPeuJ+WQWGEnsQ3HOzodj8tiEXK541xxrtIC4gE2IgMGiNzW4YJvb2AHyfi2IP6IQWMWvX++xNgkXl4QsJU2HyTLVbjhulKWOcuLFtgJlrXJAFe35hX2MZDe9JMPTLZk9qEYQWGpk9KCJ1XlusPCSYu2ELgb5UcolWPLcyYhj6QTAypFf/tLm6b3ggH0Sb6g7CI9eSOU6gdRiaKMEu+tmEhLUZKuHsUYswr3xT5Y84FY+pR+ukgbG7e3obKsJ4hKw0/KOL0tIvt8WApYbdjwXW/wtlMakyqWRNAkmQA/kFjjrkRAlZWKdmD6TqPLf1gE/MdXkj+JbEeWu2e4tGJIFPhWrqbr7QLZUjbsuWQYIK1fqDJ4BBlzAWHYXuH/E1FSaqr6AlUd1QXmYL3fZm6EFKgV9vvWqzJOc6KccCG75qAfZrX1SXChwupgUQUbx4wPbuK7E4tA2zClszE/MwWGLcOteROgZgaelybPD4xIt17b23wcgime1FTRBsvv5xXG+n9RVGOlXTzVWIlwTFilzpx2JfqsmD5SMn18nca+yl4bS2AZ5SkMz0JDFOyh8oJyVkkm9PGzU4DJrqZ3yYsyqOMZLQHOjvJG7Ky0FI229NUJVC9wicaWRDXdHnoUFp8dDrPgbsr6i8lGFd75Z5nmUPA/541koF2On4KEGWBFU5ZpeqzEZLQE X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dca4c98c-1714-47c9-15e4-08da301ce531 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:29:49.1732 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 19/44] avformat/utils: Move avpriv_new_chapter to demux_utils.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: E8Dx3BC+aC94 It is demuxer-only: Muxers deal only with chapters given to them; they don't create any of their own. Signed-off-by: Andreas Rheinhardt --- libavformat/demux.h | 14 ++++++++++++ libavformat/demux_utils.c | 41 ++++++++++++++++++++++++++++++++++++ libavformat/ffmetadec.c | 2 +- libavformat/flacdec.c | 1 + libavformat/id3v2.c | 2 +- libavformat/internal.h | 14 ------------ libavformat/oggparsevorbis.c | 1 + libavformat/utils.c | 41 ------------------------------------ libavformat/wavdec.c | 1 + 9 files changed, 60 insertions(+), 57 deletions(-) diff --git a/libavformat/demux.h b/libavformat/demux.h index ff8d998d56..d857e4dafb 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -173,4 +173,18 @@ void ff_rescale_interval(AVRational tb_in, AVRational tb_out, void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type); +/** + * Add a new chapter. + * + * @param s media file handle + * @param id unique ID for this chapter + * @param start chapter start time in time_base units + * @param end chapter end time in time_base units + * @param title chapter title + * + * @return AVChapter or NULL on error + */ +AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base, + int64_t start, int64_t end, const char *title); + #endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index 10ae887359..cfd6084d54 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -32,3 +32,44 @@ void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type) { ffstream(st)->need_parsing = type; } + +AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base, + int64_t start, int64_t end, const char *title) +{ + FFFormatContext *const si = ffformatcontext(s); + AVChapter *chapter = NULL; + int ret; + + if (end != AV_NOPTS_VALUE && start > end) { + av_log(s, AV_LOG_ERROR, "Chapter end time %"PRId64" before start %"PRId64"\n", end, start); + return NULL; + } + + if (!s->nb_chapters) { + si->chapter_ids_monotonic = 1; + } else if (!si->chapter_ids_monotonic || s->chapters[s->nb_chapters-1]->id >= id) { + for (unsigned i = 0; i < s->nb_chapters; i++) + if (s->chapters[i]->id == id) + chapter = s->chapters[i]; + if (!chapter) + si->chapter_ids_monotonic = 0; + } + + if (!chapter) { + chapter = av_mallocz(sizeof(*chapter)); + if (!chapter) + return NULL; + ret = av_dynarray_add_nofree(&s->chapters, &s->nb_chapters, chapter); + if (ret < 0) { + av_free(chapter); + return NULL; + } + } + av_dict_set(&chapter->metadata, "title", title, 0); + chapter->id = id; + chapter->time_base = time_base; + chapter->start = start; + chapter->end = end; + + return chapter; +} diff --git a/libavformat/ffmetadec.c b/libavformat/ffmetadec.c index 93ec6f5899..90f2e2b861 100644 --- a/libavformat/ffmetadec.c +++ b/libavformat/ffmetadec.c @@ -22,8 +22,8 @@ #include "libavutil/bprint.h" #include "libavutil/mathematics.h" #include "avformat.h" +#include "demux.h" #include "ffmeta.h" -#include "internal.h" #include "libavutil/dict.h" static int probe(const AVProbeData *p) diff --git a/libavformat/flacdec.c b/libavformat/flacdec.c index bfae5a2af1..12328f03de 100644 --- a/libavformat/flacdec.c +++ b/libavformat/flacdec.c @@ -22,6 +22,7 @@ #include "libavutil/channel_layout.h" #include "libavcodec/flac.h" #include "avformat.h" +#include "demux.h" #include "flac_picture.h" #include "internal.h" #include "rawdec.h" diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index 0f9bedea02..191a305ffb 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -38,7 +38,7 @@ #include "libavutil/intreadwrite.h" #include "libavcodec/png.h" #include "avio_internal.h" -#include "internal.h" +#include "demux.h" #include "id3v1.h" #include "id3v2.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index cbd8b2170d..1a51c0dc97 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -564,20 +564,6 @@ void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf, */ int ff_find_stream_index(const AVFormatContext *s, int id); -/** - * Add a new chapter. - * - * @param s media file handle - * @param id unique ID for this chapter - * @param start chapter start time in time_base units - * @param end chapter end time in time_base units - * @param title chapter title - * - * @return AVChapter or NULL on error - */ -AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base, - int64_t start, int64_t end, const char *title); - enum AVCodecID ff_guess_image2_codec(const char *filename); const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c index 289900f7cf..ddf3a7b82e 100644 --- a/libavformat/oggparsevorbis.c +++ b/libavformat/oggparsevorbis.c @@ -33,6 +33,7 @@ #include "libavcodec/vorbis_parser.h" #include "avformat.h" +#include "demux.h" #include "flac_picture.h" #include "internal.h" #include "oggdec.h" diff --git a/libavformat/utils.c b/libavformat/utils.c index 2d5ee8f7bc..1235315986 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -694,47 +694,6 @@ AVProgram *av_new_program(AVFormatContext *ac, int id) return program; } -AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base, - int64_t start, int64_t end, const char *title) -{ - FFFormatContext *const si = ffformatcontext(s); - AVChapter *chapter = NULL; - int ret; - - if (end != AV_NOPTS_VALUE && start > end) { - av_log(s, AV_LOG_ERROR, "Chapter end time %"PRId64" before start %"PRId64"\n", end, start); - return NULL; - } - - if (!s->nb_chapters) { - si->chapter_ids_monotonic = 1; - } else if (!si->chapter_ids_monotonic || s->chapters[s->nb_chapters-1]->id >= id) { - for (unsigned i = 0; i < s->nb_chapters; i++) - if (s->chapters[i]->id == id) - chapter = s->chapters[i]; - if (!chapter) - si->chapter_ids_monotonic = 0; - } - - if (!chapter) { - chapter = av_mallocz(sizeof(AVChapter)); - if (!chapter) - return NULL; - ret = av_dynarray_add_nofree(&s->chapters, &s->nb_chapters, chapter); - if (ret < 0) { - av_free(chapter); - return NULL; - } - } - av_dict_set(&chapter->metadata, "title", title, 0); - chapter->id = id; - chapter->time_base = time_base; - chapter->start = start; - chapter->end = end; - - return chapter; -} - void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned idx) { AVProgram *program = NULL; diff --git a/libavformat/wavdec.c b/libavformat/wavdec.c index 51216bfbe6..ee72746b4c 100644 --- a/libavformat/wavdec.c +++ b/libavformat/wavdec.c @@ -38,6 +38,7 @@ #include "avformat.h" #include "avio.h" #include "avio_internal.h" +#include "demux.h" #include "id3v2.h" #include "internal.h" #include "metadata.h" From patchwork Sat May 7 11:28:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35654 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121925pzb; Sat, 7 May 2022 04:32:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzVp3pProkbMCDIt6GcW1O1xdqjrN7a3TSc/hLFwJrLJr5E94CRK4fmmPpSlaRp4bMLUzyV X-Received: by 2002:a17:907:9494:b0:6f4:6af7:fb8f with SMTP id dm20-20020a170907949400b006f46af7fb8fmr6965920ejc.598.1651923124706; Sat, 07 May 2022 04:32:04 -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-20020a170907948800b006f39944bd6fsi6731071ejc.329.2022.05.07.04.32.04; Sat, 07 May 2022 04:32:04 -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=HV9kL8iT; 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 E066368B42F; Sat, 7 May 2022 14:29:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068076.outbound.protection.outlook.com [40.92.68.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 58D2368B455 for ; Sat, 7 May 2022 14:29:54 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PyEIkxP8ko6hmJbnbSfcuQhQVquFzlWn0AP94txL+k8drMnIffVpyr9vJkFyDZZ328lf33Mbj2B8Fy5i16gIN7rwamIK5cUosOqyUWfw6u/XpxgOvU0Fx/hpwLOyzMzaOEl6p/7p70Xy5o/SHmY0kWLh2LtM3cGlre8wLEptafIgVSttMzRtYmWBuKbBFfYHkonJ1UUkKRcC3w5OLyKTN+kK7xOOKuhe5Szwcr8G7ev3eWy8i0/00ZQCbAA5PXteEL5hAcWNZ/rEG7b4RwU706BHV6lPn0dhHCy269rernA7AntAmRqz9jOj/dVNMbUEAm2MooCjEGT8cr4pdUqgvw== 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=mbInTQ+ksAhRhm/gnrOOhFwLqy66ehD8B1OWS634jCI=; b=nApDPrX6gfKTKsajmaz+dsGeb6pMmQqaxeo5VHzUZF/6GTWrCfDf8hgpZ+dUUuSWTiUzIVfFXg/zPzUGIUczm+3+W0Bk+Kop2zf/1iiG6GHcDlsMJtTZtpR+FcUxU8hYstsj4Dry9ddfy1e1dDVGem65ALVe2WPM6XVEad4sUzXozOlFIVbdCgLUh3JIlta50bclKFmgAvHGUTmdVY5/oDQ+llhywUrLDJJKPXayQ+majiHK7VKz+Df4NbAcYR2B+jyvFIzKlMMbLyRcUf1Xp6LoX4aplDh1/Tnn12sbhr7KgswGqGJ/4M5PXMoT/151g8lyY/G1t2EWv00n53pBMQ== 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=mbInTQ+ksAhRhm/gnrOOhFwLqy66ehD8B1OWS634jCI=; b=HV9kL8iTWMH2DmuESRA/trGo5z+Fxci8Pl7hlnnJ75WiHlwCCSXmOWadaRSoK931FnUk+ul1syPyfQ8xLYlHcc850PrcBLsYVTnaZx3YVBdy/HDGTljcDNQk01mRz+kukm9ERaUy9le19IG/zKbMjFLVCLI2iizjzTpVRmOHw/oeY/sFsaahjsG5Vs5CIr5oB8CCLfDT4uuIQ1W4SmKngn1YKr3kVVF7qmlHKl6WJRytt97XPwHH3Etyu4tMY0RiVsS8YA+WgAiYN8/k85jb/79cigGAlJpbibnys4G6/PFhaPZrnWynZ1hF0Oi+xBAThmOosS5C68g1P02USpu3CA== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:29: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:29:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:06 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [B7E6dsQQsmCVm4bgmKE+aM9ZwCjoqR3R] 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-19-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fa8fe9e6-3db5-466d-d685-08da301ce750 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8r/bwmWSP8g5fjZYYyyi1HFGqhIgWF22Ps2zV8wpgnfiHpVlfmxzss4Fwr4KbNTKA2ESOmadxspn8/q3RF/EzfCNFxzipjnsMDmYAk5/SklQuRhcB4GH83CcN9H6+SI/AVx+h+GVjHdwlJJVzzpwPH1Y4aNmdHo9SktAL6ib7d+mybnNu9aHjy+VzMj+GoNI9AmaHWHb6ImXCDt2B0uSyIXTjsPOFRfGYkEqAlAgWnLhgXEuqU5OFfTjQhVXUyZcDjbj0+AGjw2zsciccfQwNhuXuV2AyW3KR2UHw/gB4p5PoJhMK8+rAv6eFE9RF4KixFeGKtaIk/FqNF52hB9moVbi26/rk49AAn0+oBaAGeuGzjd4aZzjsxU7lT1bD3UOAoASthjMgVrIjEqhCfGSW4XW0Pn0sjTojup79R9MsE+1d4a1oU1SWvzz2Nf9pnqpt6PG2/e0VhWHqhBMmrbpmgeTUVxD7IH7m4/6KPYUSOgfZ30DoW5bmajwb47VTglOa/ZX1zVxLV2QHzjq9NpE/deP+JXl5Zg6c229/yZWY5puoW3K4dVzQoj+qNrdf7aQYqLmGj2mbE3AooZVC6hyxbHTtPAJ266lvytlxxRP/3Hiw71rHSvmkXHv9PqCsWc3xlzZB4hxcPlEZm/9TQ8lNd0zRCO5lAmEovyZiOh1XYu97KkH7P81Re4/hkLibe7WgmXcIyKbajQc= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T9YfUoQodWJBKLZ75i1Z6aAQNZmtTGSSpqRWYxrLEZmDJP3N9/HNN0vxalJC25pH5dsZTXnOSW18LB3TGQKdGn9vKz+ojv4Jfh/Q8Dcx2brcvK8aurExUbJ1Uh+/mwvMcCCD7SP6pqH7e+026w7asmZLr/PCSrYPdICdRpZqXGH8gbGM6+4G3cWV3X+PGRjHLvIA/+6H1a4YqKIFhNHvMa8TBqRVTHbxgQ2jLEh/anoHIsH+bTgfdDfHH/XOE4Sk8kdkeFLu82Q0IOixk4Y9xVbsVS7DQSzGyExHOIIeP1xPOL82MoKB8KrF6kZCQ2+S4ps0lK70Pir4PXZfgYux7ui5PORsBlagtMqjeFpdkiDbfJ+bActrw+nmNwRdt6OuBUCBOfa8/rFTQUcFmCepVJCZlXCFp9d2FJPaEKy+pPbalxpX7umyrC+lfZIyL33lNbYQiuqJoaOAfXuTo11s8138z67QktkbhUkyWFBhE6tVJgnhgA3FhXm69DYFDtzou+WMnsK05uMWQsTFcPkgsyF9BJZvjl1V1k684GvvPbGpkEz3ecwRsOYKKNmwjvSJBkjQz6c4pI25LE7833Opp7irsCC9WuPM4WdhikVy44fe+B4u6z4KCqvIYLmh8eFS X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: feLTaFsSnd81PFRFOCDi0QnibC56H2e+BWcd/nF6queJ5O9AUZZpVqQ/eCdgov1DMkgORG8ndqGWlTQNQf2aNULlwIblqlxrOvjYWjAkDQkmZo2lDMOXH0rWtWyVohzws9mv30h4BSU0im8RuC+bjB1jBM026ctdVZqRdX8n9yg2QxKT1vRA/2bVrbleS5rl9C8tV/1C7nQ7FQ9Koftu51dYWqYkMfpa38gvE8TIQrYv5hxyXmOjLkE+hu62chi+3aG3C0m+JER7c0N4kwovrnBJKd0RlZjA02DCOY2bIL7IDktSnzDzk6n5tvN9ylqiXiHmQSut7e+1zIFjpf7x6VwiakqEYENLdRcaiGaUUxJwKqwXpQNaTyRn2A/woKPx1OgOIpYzLu2coxLhh49SsGQ+RpUdCZvQz/caN/IzkiR5UE5wwvhFebfTaskzWJAzhvulRNgG4kBsv01MNRQHzDGXakyAiiqqaoFbV3qWF7JKQpmviaLwUbFfx0kyEJzBe72mnPndtjUmhb/lpU8xU/EqitdCPDJSUxEs8NcuGpfrjs82b6qeexqNjPd4PWWQjey2KAn7cgTyU+vj0d1Z6CZACfi+lYU1dIX9guNmTdqGKp3XbI+1d/2RdenLtZB27X57oNABHp9vhS26jZSKt/n8CeksxjqED8ebpcNQMtNcglyvB/6CC+3sF+fEIhtk+hpQhQ/9X1a47buznLHET8wzvr+65bdP3KnRbz0t9g3CS4bsJ9ZgvjTGEErb81zLZgY6HMXM8+cfU6TxJA86qTYDtnyPhA+EyJmL5+GzP4x1md7cqq7kcHV+H3GxsKTXMN+HpD+gf1y2NjsAtNfGBgbiy7jXnDftxeg3UjbVuAdnl1dzit2vcfq1gR0E5ScUg5A6HYwI0o57i5rtYVg+kM6KRiIoDyBIOozAgfe54JNb0UVeZti7gSvd/5gwNRSexLwVi5SEKHTDc8omWrijGGExqqTMathguYv2If5fU4Un848IHomQlDYH43t5eJ9uPCm8XtXBiSnIbCltjgXQLNSXsbFDkfKYn1LSQ/XeJV7dbljdx0v+coRuo7YiNPuwPoaFXFCWGOBXKtTxK2OM69MCI3TGnoQnM7FpMnVBCTU6Jc9WCLrtyNpQ6GA0avGj+72OT9p+R7DusjpCeqgdrUy+9kAn9Lm+e64mrDEqaCnwEqIVkGMauH9nIgYHL7Dq/3wyIG/SVJy/Tow/YaQWVpdo3AQowJa/yFvr4UVZ0sNgiiEYMWSDQjHK1uwQ0BONBQL1hz8cxRYOch3vGeaEmr/2Th7T2/OCyvbsY3AVDJ+3Hwe96hWX8EFmwG7fkY2+m892ynSddvu6bmpUbp5i5B3cbGorc0e4ae6F1IXDl7CcvDriIffnO0sT0xbOoLxKozJee3yGa+Y6lYE/i3/e1pWniHsR9x79QhoYKW/Fdvf+RCUT1skMQf8VxpmDCrHq X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fa8fe9e6-3db5-466d-d685-08da301ce750 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:29:52.5804 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 20/44] avformat/utils: Move av_format_inject_global_side_data to demux_utils.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: W1zurizqfEXb This function is only intended for demuxers (as calling it doesn't have any observable effect for a muxer). Signed-off-by: Andreas Rheinhardt --- libavformat/demux_utils.c | 10 ++++++++++ libavformat/utils.c | 10 ---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index cfd6084d54..0ec9f3b2fa 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -73,3 +73,13 @@ AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_ba return chapter; } + +void av_format_inject_global_side_data(AVFormatContext *s) +{ + FFFormatContext *const si = ffformatcontext(s); + si->inject_global_side_data = 1; + for (unsigned i = 0; i < s->nb_streams; i++) { + AVStream *st = s->streams[i]; + ffstream(st)->inject_global_side_data = 1; + } +} diff --git a/libavformat/utils.c b/libavformat/utils.c index 1235315986..b20dad2458 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -63,16 +63,6 @@ int ff_unlock_avformat(void) return ff_mutex_unlock(&avformat_mutex) ? -1 : 0; } -void av_format_inject_global_side_data(AVFormatContext *s) -{ - FFFormatContext *const si = ffformatcontext(s); - si->inject_global_side_data = 1; - for (unsigned i = 0; i < s->nb_streams; i++) { - AVStream *st = s->streams[i]; - ffstream(st)->inject_global_side_data = 1; - } -} - int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src) { av_assert0(!dst->codec_whitelist && From patchwork Sat May 7 11:28:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35655 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2121969pzb; Sat, 7 May 2022 04:32:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwcp6viGZd7D+FiMkP92nCmR37O5POcqhiyNPuiGW8R/VxHCaKikoEi6aiqcTCTbd/HZf/X X-Received: by 2002:a17:907:d16:b0:6f8:c054:29ac with SMTP id gn22-20020a1709070d1600b006f8c05429acmr711288ejc.96.1651923135103; Sat, 07 May 2022 04:32:15 -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 m5-20020a056402430500b0041d983f82b8si8427198edc.44.2022.05.07.04.32.14; Sat, 07 May 2022 04:32:15 -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=pYQ1QPKG; 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 BFF8D68B452; Sat, 7 May 2022 14:30:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068094.outbound.protection.outlook.com [40.92.68.94]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 167F468B452 for ; Sat, 7 May 2022 14:29:58 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iYMMik4gek6wkg0N94088h72L+us6Z+bwjT8YDq5fPbeRzsxcSdpuF7GcTTEZpWfTbp6Xo5lN16McKsn7nWwDoKUzkNB6Hlc8oJMeCMFel7YUPDQb6vxVvlbfYRhSn9FWhqlxQcDwqA0usC0os6jmBH0h8bjK3fSZq/LA00Fq/m+clMdwMB3O1Ll819DSwMWMtZgP/MG4aGtvx3maT6WRUIag2GqZ1RWrD4Tw79rVt91kdIKi43ookUrvrF5JZX1dZXJsikJsy6j+VJJT2v6v1svwBiT0MWCcdj50iOoncC4EA8MV+6PNx8MmkJFP/kc38RU9/8W2krNIABZB8c9Iw== 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=XMIA9ObIbYkUpmp81yEbjy1x+K/JH/A8hGtbmUc6vYg=; b=FPmMlST/rx8V6UnsUhkPw/tTPVaIGB2xAUSdt/N3qaCarxKfQKMNy2UXLKXxvsf5sCuooEkiQkVX8TyRLFYnr+IYeyWY4ZvAU1GnjrsNQpbJleEmlXl87/l0O/l3H/tbrrmekStOCWO6kRE1K5HSN1LqEZM2wLZgjNx9tExmRTPQ8sTYDdB/AnlHlMWVzmr5utIkVHGVPWtq2goX1SvRvc2KAQzH/L6nPuWpf0iJEA2DLvCaDNJ6ch1KlrZNeLmwMGn2skzLQGExFfO9l0CBU9mO/Efqpf8zsREM81pDNIqt9ETuW+2/ICX7k+CvugzW/BHtDBxQ31f064G/M+xqMQ== 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=XMIA9ObIbYkUpmp81yEbjy1x+K/JH/A8hGtbmUc6vYg=; b=pYQ1QPKGfmjNpEbvQ+kF5e48ojlcB8T6KOURRYUWhmp1ZRG8QW+wAXwDUStGGCVpOyehkQdxAh9660TbcrD+qP4Oj7F2rQqvEJwUMfZblwfuFXyScptAaRwYjeMMHZfM2e3kNFQAhRSJAd+YsIlAYlpFwGLZZq+oyB4OgmjW+sVHHk3ABE124U9B8+VkDjfJT9s5fkM3QXypM+G8YSmOwi1X3h3Eo2LvM/eSb34R2DhBsXZAcIvRv1U4F90O7iOdSey8JmcxOJo2jK7spj7jZG3g3vCgnHUIrLtsbnxr/pijTkcEpY1lTo784Ox7neMm+mRbWkXLIA71bdpOnQHZ1w== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:29:57 +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:29:57 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:07 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [+1DT0YNfNwhkEeiJxntLNxaqa9uXLprJ] 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-20-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5866570d-facc-47b6-8e4b-08da301cea2a X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwfhliS6Qrd3myL6M/B3M9ccQiWdPlXDo6B/1O9TwWTBDh0eMCvDUNwRFH9ILM7xKx1JRVNyl+YXSBfQMn1Yk45OaetXY8w8sfwrxteUk1Z+fjWJSbnvSsv7xvMfB9C68nQZVcKZ/XYHdkPN1G16N78c9neJkdPN3e6zoTcR7aNiXCntYqpuSulBlpRRy+LHQDk5QPcxjsAfpmE5UnJwalFu1elr9RDsboqO0tu7T7X5bjjlWgYfxkRVKiX1osdG4htUCHD8sPEc4D3FNxddeIgrkhnJXo/lvqhGs+Idvy0rg0wS/CH+oJ8foKwxPmidcISEOsxu7lFc4S7CIcE7Dtp+Wy73KqJ8eJ3FwHOdlgZwl0bSoIRXtoMCR8NKFtPMqTXoPZvVsC+IAP+UzIjb5y4e0yQ8C91XTtT63MHLdG5wYQZcevGH23w0+Bl4vJOEsjA34enEJLRt+QjpAKR/MgaO8ru4pMfX4eXLdtrb/ZlS2hOyq0PJk9vMxcmt8U7IZ7RBLNuSS9yNdId38a/bFenMPLh0nj/k29kH3AMnqENQzO/wwiYseDhPyIhOWg26gsdXnhsrN5JDJ8fLS3n+2ovc77DiETkRXWE3BhRXrIqkZF1Mbrqb/Bf6bpFda6OIe7/zsfYxjVzguVbILn3BWgqW7F87+D6Wo9W3OjaBlHSt4Ql2F85g5rMoLBzg7Ee+WbMapTQG4gq4tFh0S9bCUk5qVNGyfs8mPouVa4RwGAwm8= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zUe+7JM6Eu4R77NKQQuYzCzvUQd5fRdBQRcvmRZZCFLu85V/dqaSvNXbBQjuqF62Olr6ziv2H9e6bflYdypE9UHqQJxjRDPKSSWhDddakh+ONhERUgo0mkefEZvdEJBVyJaoRm+SmSPj38HNUjBOr7MM0Ii2YgV4XB1w7oFvr0hKfm8+05QKlDQyrjQUlmIXTAVjnUCK4IFn9tTuXv9gJ62D3H34Se5nutJ6dq0wrTvwQpxs/iiKz/QOTSqXJQTCB5PPQAPnenftY8z6GiQcgMeWmXf/clff5iV0fxahxACrmYPANVxds1wMFTOUP4nh3427OnDaiGsFujUIuXbXzyidFZJid7s0LryFQi0hmckrPVdIWhEzXXuPARyEhsbGXGMRgDU9ZGVkdbsdeUFNk+ARn/TnnJlxiJtGF2S0yapioZIu1OSXEIFHTow0symQ4vpyA8fNhXkEztbrUhJ8MIXLwBZKbwvKhG7w1Y2INZnNzWLstlzVSDJ7exC+0Bd+kluAXFnzigGw/NIN1pEhld2SuGc5AAVlkNoulL6jsNRx/Yfyz1LDeo8/J38lUgZl1MsQha0TWd50hkfL3qjSd7cUrV40szfd0hvdO5auc5HKclJJsFCUR369aS9lGwpK X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: j+YhVoQ4w59f2VQLYGTP6zIDjkvIFFIwhxSDLUbhfArf3RJHRAtGF+f0sL32kBtXqCqU11EACjYe0x3girc7VdrxowI4zk4RqL+wfhCL1Jsg1yrqNZ5lHh0fb7hCcfPhANCNOsNWgdjLsUOjOMf1jtebwzkZXGS4+nSXCpMHW07U9/wTmiqhilY+oXQg7uxiTutL9sUmdZT+A5fwbBC0/oRsP9D9LhMXHj1KGIing+L8L9TFJxjQ41Fv90J8uZEoD0c0/Pspb1BUm1X/hIl0LoiCuSdPX1A11x2EbTfmZsmMVmk7GG71nJ1eu6aPTHPeHNmX27YvKx+pHH8ebz7n7h+zOYmO7KqKWvAn82EcpZ4tOnZfW1lQd5dO5C5rv9CXuAsn+emA2w7sDG1zWR0Fh9UemX3BLGd4ycSzenftlOo0mCDtipQH6NA7DeXtLbdcSKg6aD+pw7z3HkuwvwVeERhJ7IOuRLnNyTSY7CscPUzM0ON0mQD9lp0ap9x76sxgPlxH9JavNdQ/WUB2vaHkR2NhuMgHq5YuJ5j+hXGfP+nt1njcj5AGPGJfff8KfAx6Em/tJmgr2R1w5f83t5RTuPhTz039yTU83jl44YSVhBccaJ+UyEQCO0pQnebDnGDaHRhmT9fwaCmjivyihJLrZhnvrg5bB0l2mGXBg4JE9KriP+EzG6qXE+y1apTqqytznv7hH/SJuNiaf5XIyu7hz9ADGoyBnMAPPP27GoU/rCO0asfhIHuGLOAIfGFNZCf1aCE4+W7CNkbm3OJ/ZlFC/QkE5KKqs/ASEiEzfKZ2Rtff8z4ftamukFzzCghwxQ78SbJneQS+pJ3YkZ+cpXLrXGLmSKsIvJbohdMz+zOFSc0pqa/xN1m5sagiV5DfCYoj/kmp/cRVPmgPIZevuXBzCfcAm1QupPNvLxNSYCFsDoxEUFDzuo6pI1VqIOgd+vvVnj1bljiBKF3JLWh+ftIhH2UM2T0hgfs90KT7q4Ho3IrKIsboTsYDZJ6NXIhh+S/XDPnYFMEp6qHF61JucmUKHHBKef2CZHf8+HMgqiDy6tA2pBgwjI+R/+j4b6FNfjx2ffIfLlF5xeKJ57EvE34lCjyCqSNzCTcoPF2oEeHNSH2wQXUJ8XPJWy9HiCExNKO6LyWuFWzv9stJZg8Y36l4xG32ZLYHt0k8MMs6eP2Q6WKxyhUa8SpHU0n9972HLRPVkiiHXd1/t6OzTPt3u2DWmgusZt87S9BiZ85+D5tTKqYlFDPyY2MdBWaF/EDlB0Rc3WCuFTJWD+m7ukEvuGva+cUSrpb+6yDuuVxzXK5ywMuIJKVtBtbV1sURIe2r78OmiCXA3SEQdDKtPoV2yT/ZXrb2r5FlNji8WSpnXXIxgHy9KNQv4tImBBq4jriaDlplnubMpmGpJyfDeCElgTidSeQKFe8+g2ntt2PyUDxblDVn5IwoVv3YUeQq6eiwGsw0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5866570d-facc-47b6-8e4b-08da301cea2a 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:29:57.3939 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 21/44] avformat/utils: Move avformat_queue_attached_pictures to demux_utils.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: tkXFskgW8E0X AVStream.attached_pic is only used for demuxers. Signed-off-by: Andreas Rheinhardt --- libavformat/demux_utils.c | 24 ++++++++++++++++++++++++ libavformat/utils.c | 23 ----------------------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index 0ec9f3b2fa..ca5750d1ef 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavcodec/packet_internal.h" #include "avformat.h" #include "demux.h" #include "internal.h" @@ -83,3 +84,26 @@ void av_format_inject_global_side_data(AVFormatContext *s) ffstream(st)->inject_global_side_data = 1; } } + +int avformat_queue_attached_pictures(AVFormatContext *s) +{ + FFFormatContext *const si = ffformatcontext(s); + int ret; + for (unsigned i = 0; i < s->nb_streams; i++) + if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC && + s->streams[i]->discard < AVDISCARD_ALL) { + if (s->streams[i]->attached_pic.size <= 0) { + av_log(s, AV_LOG_WARNING, + "Attached picture on stream %d has invalid size, " + "ignoring\n", i); + continue; + } + + ret = avpriv_packet_list_put(&si->raw_packet_buffer, + &s->streams[i]->attached_pic, + av_packet_ref, 0); + if (ret < 0) + return ret; + } + return 0; +} diff --git a/libavformat/utils.c b/libavformat/utils.c index b20dad2458..492fca000a 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -175,29 +175,6 @@ int av_filename_number_test(const char *filename) (av_get_frame_filename(buf, sizeof(buf), filename, 1) >= 0); } -int avformat_queue_attached_pictures(AVFormatContext *s) -{ - FFFormatContext *const si = ffformatcontext(s); - int ret; - for (unsigned i = 0; i < s->nb_streams; i++) - if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC && - s->streams[i]->discard < AVDISCARD_ALL) { - if (s->streams[i]->attached_pic.size <= 0) { - av_log(s, AV_LOG_WARNING, - "Attached picture on stream %d has invalid size, " - "ignoring\n", i); - continue; - } - - ret = avpriv_packet_list_put(&si->raw_packet_buffer, - &s->streams[i]->attached_pic, - av_packet_ref, 0); - if (ret < 0) - return ret; - } - return 0; -} - int ff_add_attached_pic(AVFormatContext *s, AVStream *st0, AVIOContext *pb, AVBufferRef **buf, int size) { From patchwork Sat May 7 11:28:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35656 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122045pzb; Sat, 7 May 2022 04:32:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx99PFSbIJdIbB6sKGgdjElSEomFHBisjKASkJ/rRt1ArYLayk6LFB7b822YeIBictgRGSm X-Received: by 2002:a17:907:9694:b0:6f4:92a4:7484 with SMTP id hd20-20020a170907969400b006f492a47484mr6949421ejc.603.1651923146473; Sat, 07 May 2022 04:32:26 -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 w6-20020a50c446000000b00423f2d8e1a3si7363985edf.436.2022.05.07.04.32.26; Sat, 07 May 2022 04:32:26 -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=VnkktRG+; 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 C27A068B475; Sat, 7 May 2022 14:30:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068058.outbound.protection.outlook.com [40.92.68.58]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CDEDF68B47C for ; Sat, 7 May 2022 14:30:00 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SD+aCUvouQRDoDWbq7vpR0ZArhaZz+bbLeO0LpFsJ/+IJjMBR1Z1xSVUuzOqm/z8QFMfbI/kNFf39jDxDCGFxwbu9j9OBwct1ukajG/zImbv73cygGE7O/uV6uH+xTYMhEV2OmTd+HRW/C9wzcl41yL8vs5xZN+LYvceprvu7vOtbV3h/R9i1fAHnKlEDt8C0am4CUPv+YmNxouyVEoBkX6P+H9gFWvTe/9LbYh/9yPPkqoNc3y/svC+ez2vmiyX+x9IOGlpvhQyLIQiLLAlet3VCxOQ1rpwx2YlUFOgmasGae4oc2bJQ1B/cLTFTxm/qlQ4ESG3nZSM13vyZcrU7A== 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=8NE/vxUr+9IEQUVzKumqTumCLeGt1/P9Z0YyfxNQ+54=; b=SGo/4Cmx0mH6Awm5q0FS67VxrKRzDUg+KJd4BoPktoFmtRpcagoKfG2sGFAMz01N6GOUeVIuOMwcyqze4fjyK9ZCHZ2ZDza2bG8GqTNqy0Z4qqKuUZjiXybvkx9Nlt/Mq85757tkfzRTpaIVj/XlVE49PK3bDuTzophWfoqvsFgC0/UzeEIolTFN2AuY9W2UJ9Ks+lyXu8zLAjMiutG/DySqH4gy0GQIOp7hM0GSeq2CuDeGMYmnsva5uGPNRbAF7uyLA1Nz8rpD3p+Vwm+7lNH9wJC7Y+XFt2JpErufTHxebwGsntPW/mYCL0DwB+PxhItFPSIbsr0O0kFYkywfzw== 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=8NE/vxUr+9IEQUVzKumqTumCLeGt1/P9Z0YyfxNQ+54=; b=VnkktRG+h/XccgY1Ty7RkLVOF5ZtjewC0LmFgFEq/98DloyekPq1TvHwAF+jW8DlqsTnG5UFzoRAQ8SUMUGVlfpZmqET6wVccgvGRxBvW0C2uxFoZmCV3Qa7xIQ4ZimvRt1WbmOcPHoT0d1qIvJ9DBED6sys5f+qNrF43AtGYgmCj79eYIvYfhPGaqAoJXe9f9Mz+oMfnjJIPQHGL4DYiq/xtc431k5s4T7vUvOY4HgKNZPiZiJpqpLn3ZSfAH2FcapG4WfpSO16WuAJq7fUXzL0A3nEteD/1UdAXPtrZoRhSXw3BU0FNATkk1cTPSyMxdbUM3dMc/8ly4Q+13rcQw== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:29:59 +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:29:59 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:08 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [4RzGNeSSc1iiXFCbnbcDHjg8qFHv+9gM] 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-21-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ff1e0e9c-abc9-4919-f903-08da301ceb11 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwKYiNJ2RXwfk5TCAWbMgqfiHGcGgTSpqZ6eBiqceiFuMSWUhWtIjHTjJwlAKYRQ5JFU1ld0ebFfoQo+t0jcJZC7bnoj34vKovorlUuUMvz6grp0z37iIPZVYbdMnYb9JdNaTJlIIprNVF8MscNwEVe9g7dvBcX2Ppl/65yeoHC9J3lAv1BFYTxeLHsJGS2AwTK2Wpz4A6I+Bn2iUL/if7aakeaYh37BVJrBQcgvW8Dk/tWNWgjr43VvhBDDhRP6fTvP+csN/vYW9uIPmocfpnl1yYwam7Q0WDRLaTYS5hKgsyOqsBOMlkl+8QKTH7VZUpFyPXW9lNsUOmzk2ebf+LppgVtv1GPGtwsv4gIX5baBa65qCrgoT0HhPitZNY5SfXvu0y6cW5elGRu/U8Gv8E303IU1qlGI4N4knksqL93fWZRNuDxabyNnuJJyuqR20vXZ1jO50A7hhJDophzbwKBzDPsoXyINUgZCqFK3t4DukYuzHOeu+3AHrS6ai0gR0WYmStYpQ1j5KLkmxQqzr4d0jkfp64wexiRmfjd7anGnWFpd5nwU1aNHcZLCyTEp45QAsD4uDmUw/f8qd6usLcvFi44BdULfFxMRjO24QqkigiLrxtkkzGptKxOAQkzJRHTIyCHrFti1z0ksiC9ON8LmpAgb/DBpfI9M+V766Lfb5QjpXmebhYVfxP6XRdJpkQTLtvXH/QrYiDJqS1w3hDNmhIp8U/9m25MMzD3EMGHsE= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nlwu9nVamQ01E/My1IaQbaAU1oGT1u2Pcb3PrpO4/s2KAL5STvZTPAhaLYV5MAEWcZpjzFkvdpFE1r65EbUblt+GcnV7sqZG8uRlxSU6qiafgHLWpCYe3x6XW7Segj3Thi5J5WHxsUbhrEkrE3XFxQshBApm9n1Qe2XEGMkW05G5S5EhhuIGiLbv7N/2G3rtp4nWYbFN+5aw6gfOcKABm8ZMAVgkMPn+galOETLtkve7lwJI6giLm2+shDhg+yG6IHsav5PHQKJkSryLyQwNH1RJfukQ6DT5Hj37Fv+uhqW7LKxMqFX8diR9Upj4oEbGMkDdf5md/7AsfZW86wPWK4anJ7TgVyBwsYcWUDrHEc7WUjAThATRQ031rPZmNWnl7J7pLrP9B3Eria9CLw7/Hi5YMjtyclFZFtxTrJGAoKXCBBcG2/7n70NDp4LBEAD1RClzCYJ+BZ3EeOtUFx2/1tq9guKezqS3AS2wu0V4Hm4ZI32BSFfibHD4YrT3WRX64KdTj2tG9O8A51oDvlCtZivSNe4/tcTDz1DVyBIk8BZyTk4uNNpny5u6ThMBR0WZnvG9Lgnv1dBYQ7AnIm/YqHhCd42u7sZ20ewd+wdbH5x4GwxDDIx7q+Mn2s9waN+2 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: j0z1bDp0FIwpAVYUjWxytQeJaDM4FDiSuaHzcAA/dI4p2W1fuLMldTor30anqSjhoK0nvqKx/AALYXj0Efy0V2GJfwVY0E36y9zTICWwrq+x8Y5rroTkzI0PIonC7kfiwlk13aolo/MFjpXOdKDlvlkcvbON7jiidNUVjoxFrTaYzCpGYSe6/X0CODT1DCroW0LQOGvV9efX4ZQg8Ifw6K7C83g3yZVQLdb+K1/W37EyZvGthBA/NpwPG9/ZjvNV5q5naIqZI7h6z4EXB8YTI0CeUIsmp7teIYHsaS1d05TgQljuJlYR0sSWo7Va98f0q5FvrP4zrDcTSe+Gi2MJW4NJl0DoMOaIPwH1rrgPBs7p3QKR1o6lT4NaSoFKWZNPHUDrfQ81AIr4MOYwWYqvQvWdCSDcNTGZXpANCULToyN2l1MGCdu0YjxyfjAw+7lMXkIEiWTJ9oj/A8jXk59oKsh/G4Qz3WZ03LR4SchW0VRV0P+lQelP9fa5iZ03WDcUUbNIKB5v393lETcTj165x1p5H9HsSBBN6mzNkC+rWT1cO0SUJl4W2TFrVTy2OR2EeM9L7U5f9xD/rYTQdUTE1Zwk59rqFDvmxdXRgSTe5Z6gXqeORApkQiDKE9dJbF4IukY+m2/U94Phv/W3l1vUlFN/MPkGnPchLf9g/0B8VZocFAgd3Uf5lhY27HHYtgiVQ73rTm/m0iYk1WinMI2ZpUgHW492m8Cjk7Ya4RQbkOVum9AyOQ9Mtw9BkXChy0swcBVNyv/cSOn4Uqa5oYasFv/BhRv8bZkQ0gerdBSCO1wsaSRjOASJBb/nTpW4RZAvUNT0nx9wbN38u1yANczVPfm2BTs/uy6am8V+yxDIAFnqvTPl1zcfLYO/5UWaIg8jfKLRbvEDyboWXXPHL5nsgCl6eIo/7EPcgvtW/CMa02mocauTa94djeH5+nICnxrhhWT1Ehuy9GHbeMQLd7QaJ1KemtjU5owBMJauyOXAnTbQIqezx7vTJU/gYM5pCugRZu9noGVxWfXtNceCv8bOlx5tQlY9UX9NkrARuohxusqxZn5DDSfi2314vUv4xwo5st7uLwKK71zfvrkEu5qr/nbcIC2RgOanJjp9DP+AVIVNotkm2FbLrNjgObUoxGUq5L+azSlIgRzfrMmEumV6IDR/QK8gk+xqVdq+fKFHckihc9eiyHDkkiD6VIQzIOktK3siIrHm5mS4W4x/mDu8BHGYV4Q/WMMYkMXvufWs4G/2WIGKNyy1pwvnP+5qdwzjbDni0ZZag/fTsuQPcYnqNMqMBoRnSQ6DGlKRmrQUi7nR7LhGJ1oOZmlv5A30VhraKTN7cHOq7zMzYa1i13Lw1CDTBCzbDVZs9ijNg0WHy2TRh8NiRBPofDz9JfULC4bSXwIc6w+S1iLe/QETFQcS09DPX658fMCDT5x/FVRb8Fxt1ck36vmPwO3+QzVOXkBT X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ff1e0e9c-abc9-4919-f903-08da301ceb11 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:29:59.0199 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 22/44] avformat/utils: Move ff_add_attached_pic to demux_utils.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: 3J8Xj74rgJV0 It is demuxer-only: It potentially adds an AVStream and it sets AVStream.attached_pic. Signed-off-by: Andreas Rheinhardt --- libavformat/apetag.c | 1 + libavformat/asf.c | 1 + libavformat/demux.h | 16 ++++++++++++++++ libavformat/demux_utils.c | 36 ++++++++++++++++++++++++++++++++++++ libavformat/flac_picture.c | 1 + libavformat/internal.h | 16 ---------------- libavformat/utils.c | 35 ----------------------------------- 7 files changed, 55 insertions(+), 51 deletions(-) diff --git a/libavformat/apetag.c b/libavformat/apetag.c index cc6becc182..e861aac0f8 100644 --- a/libavformat/apetag.c +++ b/libavformat/apetag.c @@ -26,6 +26,7 @@ #include "avformat.h" #include "avio_internal.h" #include "apetag.h" +#include "demux.h" #include "internal.h" #include "mux.h" diff --git a/libavformat/asf.c b/libavformat/asf.c index 1ac8b5f078..6e3854eceb 100644 --- a/libavformat/asf.c +++ b/libavformat/asf.c @@ -19,6 +19,7 @@ */ #include "asf.h" +#include "demux.h" #include "id3v2.h" #include "internal.h" diff --git a/libavformat/demux.h b/libavformat/demux.h index d857e4dafb..546569ae6a 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -187,4 +187,20 @@ void avpriv_stream_set_need_parsing(AVStream *st, enum AVStreamParseType type); AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base, int64_t start, int64_t end, const char *title); +/** + * Add an attached pic to an AVStream. + * + * @param st if set, the stream to add the attached pic to; + * if unset, a new stream will be added to s. + * @param pb AVIOContext to read data from if buf is unset. + * @param buf if set, it contains the data and size information to be used + * for the attached pic; if unset, data is read from pb. + * @param size the size of the data to read if buf is unset. + * + * @return 0 on success, < 0 on error. On error, this function removes + * the stream it has added (if any). + */ +int ff_add_attached_pic(AVFormatContext *s, AVStream *st, AVIOContext *pb, + AVBufferRef **buf, int size); + #endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index ca5750d1ef..1fd634d1a2 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/avassert.h" #include "libavcodec/packet_internal.h" #include "avformat.h" #include "demux.h" @@ -107,3 +108,38 @@ int avformat_queue_attached_pictures(AVFormatContext *s) } return 0; } + +int ff_add_attached_pic(AVFormatContext *s, AVStream *st0, AVIOContext *pb, + AVBufferRef **buf, int size) +{ + AVStream *st = st0; + AVPacket *pkt; + int ret; + + if (!st && !(st = avformat_new_stream(s, NULL))) + return AVERROR(ENOMEM); + pkt = &st->attached_pic; + if (buf) { + av_assert1(*buf); + av_packet_unref(pkt); + pkt->buf = *buf; + pkt->data = (*buf)->data; + pkt->size = (*buf)->size - AV_INPUT_BUFFER_PADDING_SIZE; + *buf = NULL; + } else { + ret = av_get_packet(pb, pkt, size); + if (ret < 0) + goto fail; + } + st->disposition |= AV_DISPOSITION_ATTACHED_PIC; + st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; + + pkt->stream_index = st->index; + pkt->flags |= AV_PKT_FLAG_KEY; + + return 0; +fail: + if (!st0) + ff_remove_stream(s, st); + return ret; +} diff --git a/libavformat/flac_picture.c b/libavformat/flac_picture.c index 0effbf04f6..b33fee75b4 100644 --- a/libavformat/flac_picture.c +++ b/libavformat/flac_picture.c @@ -23,6 +23,7 @@ #include "libavcodec/bytestream.h" #include "libavcodec/png.h" #include "avformat.h" +#include "demux.h" #include "flac_picture.h" #include "id3v2.h" #include "internal.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index 1a51c0dc97..4d80501eac 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -598,22 +598,6 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels, */ int ff_framehash_write_header(AVFormatContext *s); -/** - * Add an attached pic to an AVStream. - * - * @param st if set, the stream to add the attached pic to; - * if unset, a new stream will be added to s. - * @param pb AVIOContext to read data from if buf is unset. - * @param buf if set, it contains the data and size information to be used - * for the attached pic; if unset, data is read from pb. - * @param size the size of the data to read if buf is unset. - * - * @return 0 on success, < 0 on error. On error, this function removes - * the stream it has added (if any). - */ -int ff_add_attached_pic(AVFormatContext *s, AVStream *st, AVIOContext *pb, - AVBufferRef **buf, int size); - /** * Frees a stream without modifying the corresponding AVFormatContext. * Must only be called if the latter doesn't matter or if the stream diff --git a/libavformat/utils.c b/libavformat/utils.c index 492fca000a..9e2e3335ac 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -175,41 +175,6 @@ int av_filename_number_test(const char *filename) (av_get_frame_filename(buf, sizeof(buf), filename, 1) >= 0); } -int ff_add_attached_pic(AVFormatContext *s, AVStream *st0, AVIOContext *pb, - AVBufferRef **buf, int size) -{ - AVStream *st = st0; - AVPacket *pkt; - int ret; - - if (!st && !(st = avformat_new_stream(s, NULL))) - return AVERROR(ENOMEM); - pkt = &st->attached_pic; - if (buf) { - av_assert1(*buf); - av_packet_unref(pkt); - pkt->buf = *buf; - pkt->data = (*buf)->data; - pkt->size = (*buf)->size - AV_INPUT_BUFFER_PADDING_SIZE; - *buf = NULL; - } else { - ret = av_get_packet(pb, pkt, size); - if (ret < 0) - goto fail; - } - st->disposition |= AV_DISPOSITION_ATTACHED_PIC; - st->codecpar->codec_type = AVMEDIA_TYPE_VIDEO; - - pkt->stream_index = st->index; - pkt->flags |= AV_PKT_FLAG_KEY; - - return 0; -fail: - if (!st0) - ff_remove_stream(s, st); - return ret; -} - /**********************************************************/ int ff_is_intra_only(enum AVCodecID id) From patchwork Sat May 7 11:28:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35657 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122130pzb; Sat, 7 May 2022 04:32:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyto3xVCBV//JcMLfJRJhTC31rkMrojNiA3DojnmiCBpzaI2Y1O7qYqv/SV6flxvB6Cewta X-Received: by 2002:a05:6402:278a:b0:427:d0e1:599e with SMTP id b10-20020a056402278a00b00427d0e1599emr8214070ede.58.1651923157669; Sat, 07 May 2022 04:32:37 -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 b3-20020a170906490300b006e8bf5ed3e9si7337579ejq.928.2022.05.07.04.32.37; Sat, 07 May 2022 04:32:37 -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=rZbDfOvV; 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 D7D6168B485; Sat, 7 May 2022 14:30:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068045.outbound.protection.outlook.com [40.92.68.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9BC3668B3F7 for ; Sat, 7 May 2022 14:30:02 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W4J8Feuz/1ZCliypj0RkxBzV/KQ2R4Y9DH0Bh0NNlEzhmsUNGhFbfXgSLrli9taYdKPm5+YO3XvZ0t+Q63J9k6G8Pqw+8xQOGbO98hybwVOGbOSLiwjWnVBv53UPUMwXNVkMdUW4wPJotQbzX4UiGQKlTuu27vIvw2If6kA1QgyTJRCoyxFzY4+LTekMt4tJ2NJxavEmJ1pEweA53kJs3hZALBqnzL7Symdzu1+1lRxTNRvfRxbZWr49rAG9x/r6ApW6iWV84kENSxJSA/wrSrCSua4RXeT0yV2tZTD82Wt87LkwK62g5VA3NFGJFABTNNJDhh5rxsGRjK3yLs0c7w== 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=RtRe9y58qCSGNj8k2OxYZPcyvpcIBDW+cT8oL026q5s=; b=N93gLQfrP+U9sW/YpMhWI8efOQdzlFFjrmRsAAx0Dwil29wxMEsdZbd5EHEyDkAkQI/od3xFfob5KaJHX4VriT520pY89UlWEkzxSC8IpjrOnR75xdi+BJnob06uazZRtD2H3ht2FbDlu30L7DrC0khXf6tpk2BTIkjhmqnu6PPf7iuafFyzJLwR9PgAqAxlk1JnzavQXPXjvpIU6nheBg99YE/mE7KDYsLNZhhc6j4bWvkBo1HKWptP1FL6OuMDilfZU0osJAH/beNfjgl4TYNXCPWBmYnb/CbC/zqeew8x5BcmojuHJbEHXDu74z1Wbjd20gNkSv5rxrP2/eyn0g== 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=RtRe9y58qCSGNj8k2OxYZPcyvpcIBDW+cT8oL026q5s=; b=rZbDfOvVcKAE9COkCS/WVojdMmln4VvS/CjmBfAhOcreNZ2bJJnhr4hn4Cy0fVF31oOngNLX7+s05rs8sqU83zPBZ2yx6r0kpVILXuHQr1ZbkYQImI1FgowmEdy7QKsag+BeRFYVleGTdcbU32nbzwKp7cB8wn+vA2jFIl4vue3Y88UhR+9a55M4MUM34aGNJc1Vgbo8tOSBV1L2oiIetT/tGsLTHMvlo6w0/L7Xx+zAeGq+3Z38LCYNPuNAqR2/UcXzVuBApKaXENwhg3yeJy3Uj0HIv/wgP3vO52MaufZSKejxfGUGX28Ol4M5L3CsqMTV/+n6+DIstAqFBIIcoA== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:01 +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:01 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:09 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [LJbskQm9hO4HELvbSkANkWeMeZZeMMQl] 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-22-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 97b85fb2-203e-4f4d-970a-08da301cec58 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwKYiNJ2RXwflyl3Ya0Bcti225QD7gsIZZO6CtLmsDMuA4wy4Fv7IUk0/ENE0tZebQuS6g1+ZbKFh1YqUShktWXpd2mwsqhcCXr0K6R1vgKmtGX2QFQsg9BBAdL6ZxsQW0QyCyJc3KPJewwEn1z/+sZCJTv4QajsQ4gmMkfGpRDF4CHuuzuglX3KailIzakswAf82H6b6nx4AoEmSIetzzq9b6PedN4M1ufU0Eda/ts/Ve/BQyVNqHwapJHZcTfNSwaPGnqE711TGrCHK4Jg5ouQ3N2N2yCsBxl7bsSLO0ck4qnxkZ8ZEcZGq09H2qYWrJZjfUGzeYqdd7y17wWEWZr62G956fp1Y1xax3uqbgBdKbBU7f0jYBcteBGavjmCTirzivwDuSHzCNxAfCYcYk8YOBOBVPCcufDscNVRNIXy8Xr5N1enQkL0tnzlBXLjJjgw+qiWwapOyjlGy2zTaHpkL45vGd+gRvUY0N+KicHBU6mp2MnyblvJkTwegKI7ZwroCm/3fg5ZWqkpAqxVMstX+Cyn/sReyswsSqbVEouMk+DREgFsFyUGQhRwKcnlF+djYBn1EV2TyV3CBNyW/+2BspMeJFt+wR5yGItbuDQbU0i9cp1r1jeiVpumBt1du8Na2Jh3fzFkEt7oyPZB82TQ/OimyLfb4/hFav/uYAJln85EuCLmS+7xzyquuZmZfJTziamRp5CGZ8D5vopztxNb/jTSUrc1h9aWL5IrMPiH4= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TAIE7VoitvKaTgs8a1NtOCcp5JjKuu1XuZuhDQL/sa1q8Q2C/n8A4jY2nILAr3q9JvWkla6OG2kOuNbh4VIbS0V98MyQnAxNtjF0cr7cWzAoEL3sxGTCHiR0u8/sbSpGsUnapBAHLRzo/O1KknPQQn3en0HHKCDoOZGoYVOL7bklDD25/3YETLV4spDYWILxRpWqEVBDC47c78dLEVxskVDAE8J/Ru/EmrWlUfOUrkdzhXc4YKlSoxjyWS1fHfcqjSZZIfNiSHKgtAjyYGDyqA/ZB5iMkW2Cm14DJmETWeJehuYLFjpgWoQlnulf88xx9ce1nJeU/ArDiJEhiwDJMSOvSHdwAxNWhBMiNIYYUksQLSap0YUmH6gdGDc/LasP7h8Dsof4w9Y9mANSzNnAqeULJYD/FXwWhfciaP8r5Qsbmy1UG0KR2fcE5ZEcgKBGmxqlzwjKuDLoHA9RtBNPe9zoM0VjIapAjA0y4IslPNPfrUinV/aac7q5GwUmJwnUtg+lAGopZesKdyiTbBeu3I29vt8Dyu6iM6O1OihZvhFcUSgUAECI1uu6agOcDtpiBu8Ma8O6QwhCKohxpr2hOnDIZlTpCEOxHY+/l01zQ+QnYmT1Axv1a0rxJDuUahRM X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fXbfURfdieQshpnSmwcqWxQcZe/qwxpDa4nYGblTe5gHmWiyLMDK0z5N0y1NDqkyWpsMUIBtpanEZ9dhSBF5bHpfAOaXi1fg2NA1rgulkfQL4gZkAGVGkPtQFp1+rYHdhkaem6VMHbepnSbPJpM+sBfHZ4pt2RduNK90Pp+sLT1Nm9oCOmj2lFonFPY/FrxVSOv3yzK0071waO5SVgwxjTWeKoq11sTEajZ1zYXmaR0ndVwcJ99G8JaITfaDvzmg+N+rmnt3emtwX+WMdF5/dG/sNZV0lNksLX2oradYPk6LXZTF7PohG6ALS3qeN2jYWoV3OW1jfkwlbNNCBi/ttQTgC4X/IkUPyGObJ/5QFSRXNZcRVGkHYlwh1Jz4CsilzEWsbsqAbv7LTjqZyG6N5FVKqSxoxTPuJPoboYKWdddjExBwdSm7ZB7GDYTXFnztTEIXoKQ0lHeUuLU5yYOpSCe8SG0Eb/6i+JnLzd0CYE3id7iGkfR/WenrortpdfiU9kAMv71CYWnQaq79l76hZY5X6YyC5qvF0gvIXZooMbe8IZkavNWrJfj0zBbL+j7czLrw0RkQ5JZn8o/8Y50xAl1uQmHAHnfL8oZGahgd5PpQkgLYk3amSFxnJSbp/GnyDNY/X9I/EaXJyDrYAme+5vTr6eJPNdwNpcrygc8ctF6cSFmVnvbn/XeZSiEoSdP2v8S3qhDtjKBmPdy7fLhLiLDFDmJD+Mi2V2aNiHIPhp3mYPezyljWr1FOeXB8ukzBSyz0Q9EsknFlCqunSSnKLnzDtp5WLMmFygf76+sHn2craUz1ZPXg6Cusiv9zC78+bTGpSA6x3z9T1UWmRSJRJfwo/EygKLz8q6rHzaF33emmRtH7vMzegTI/1NwJvYgPZk0uXpyBX3hDkVIonq/xYqJv04zmrGRTMF2Gbmuy1dXT+bLHM3plgVQy1uxM3PtERsI3qIqL/lSwKeTbxEihzYxLm2wddEUdOTLm+qU8GQneZp8Aj1tB5RhmmMgpj8BiYwopZmihIE227FkTjvRDmM/3tbTot+5vP62qzplIUiztTmbOvOUehSo6dtn//ClPChKu0Ut48C5/5QzI6UnZaxkM8R9eE5ohq1VUlVfFPgkAUjs5qqj9jbeW/3BJntjap8oLgmiJhtthfY43jNw9HKa5pw4WmPITKU1sYQbpgHCR9HUleZYGa6eaq1ebl2XRE5Tm5jIG8N93/7RuvpHSUCJjhE+YXUezdlO+OzYSfoWLcWG+c7SFtkAd5fHosJ1XERL9lLL+7jYzl++O0BYx9WrugVba3BQrCdM61G05tesS/NHQ4oL78j6Yo8HOwaE3NPYJxFxeIyobjEDbTbiqmS0zl5wbF4pKyJ+Jel0ApujFYh7ujsEXXKBVdN9uHpJgL+WKetodVVwEhEVyKE1tNHNzZLJdrOLVQ7LCAhL9J0YIpeoNBZI2TCloZMEQ0o5D X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97b85fb2-203e-4f4d-970a-08da301cec58 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:01.0823 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 23/44] avformat/utils: Move ff_add_param_change to demux_utils.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: s5TSAgqFdazE Only demuxers have a need to add side-data to a packet. Signed-off-by: Andreas Rheinhardt --- libavformat/demux.h | 8 ++++++ libavformat/demux_utils.c | 54 +++++++++++++++++++++++++++++++++++++++ libavformat/flvdec.c | 1 + libavformat/internal.h | 8 ------ libavformat/ipmovie.c | 1 + libavformat/swfdec.c | 1 + libavformat/utils.c | 53 +------------------------------------- 7 files changed, 66 insertions(+), 60 deletions(-) diff --git a/libavformat/demux.h b/libavformat/demux.h index 546569ae6a..03f7c22bdd 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -203,4 +203,12 @@ AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_ba int ff_add_attached_pic(AVFormatContext *s, AVStream *st, AVIOContext *pb, AVBufferRef **buf, int size); +/** + * Add side data to a packet for changing parameters to the given values. + * Parameters set to 0 aren't included in the change. + */ +int ff_add_param_change(AVPacket *pkt, int32_t channels, + uint64_t channel_layout, int32_t sample_rate, + int32_t width, int32_t height); + #endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index 1fd634d1a2..ee8a05a54f 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -19,7 +19,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavcodec/version_major.h" + #include "libavutil/avassert.h" +#include "libavcodec/bytestream.h" #include "libavcodec/packet_internal.h" #include "avformat.h" #include "demux.h" @@ -143,3 +146,54 @@ fail: ff_remove_stream(s, st); return ret; } + +int ff_add_param_change(AVPacket *pkt, int32_t channels, + uint64_t channel_layout, int32_t sample_rate, + int32_t width, int32_t height) +{ + uint32_t flags = 0; + int size = 4; + uint8_t *data; + if (!pkt) + return AVERROR(EINVAL); + +#if FF_API_OLD_CHANNEL_LAYOUT +FF_DISABLE_DEPRECATION_WARNINGS + if (channels) { + size += 4; + flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT; + } + if (channel_layout) { + size += 8; + flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT; + } +FF_ENABLE_DEPRECATION_WARNINGS +#endif + if (sample_rate) { + size += 4; + flags |= AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE; + } + if (width || height) { + size += 8; + flags |= AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS; + } + data = av_packet_new_side_data(pkt, AV_PKT_DATA_PARAM_CHANGE, size); + if (!data) + return AVERROR(ENOMEM); + bytestream_put_le32(&data, flags); +#if FF_API_OLD_CHANNEL_LAYOUT +FF_DISABLE_DEPRECATION_WARNINGS + if (channels) + bytestream_put_le32(&data, channels); + if (channel_layout) + bytestream_put_le64(&data, channel_layout); +FF_ENABLE_DEPRECATION_WARNINGS +#endif + if (sample_rate) + bytestream_put_le32(&data, sample_rate); + if (width || height) { + bytestream_put_le32(&data, width); + bytestream_put_le32(&data, height); + } + return 0; +} diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index 0c90748422..c5d3c63bd0 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -34,6 +34,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #include "flv.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index 4d80501eac..cd6240b0a3 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -584,14 +584,6 @@ const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, void avpriv_set_pts_info(AVStream *st, int pts_wrap_bits, unsigned int pts_num, unsigned int pts_den); -/** - * Add side data to a packet for changing parameters to the given values. - * Parameters set to 0 aren't included in the change. - */ -int ff_add_param_change(AVPacket *pkt, int32_t channels, - uint64_t channel_layout, int32_t sample_rate, - int32_t width, int32_t height); - /** * Set the timebase for each stream from the corresponding codec timebase and * print it. diff --git a/libavformat/ipmovie.c b/libavformat/ipmovie.c index 793f1f6fee..4f5c164d3f 100644 --- a/libavformat/ipmovie.c +++ b/libavformat/ipmovie.c @@ -35,6 +35,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #define CHUNK_PREAMBLE_SIZE 4 diff --git a/libavformat/swfdec.c b/libavformat/swfdec.c index 52c5e5c480..716c95a743 100644 --- a/libavformat/swfdec.c +++ b/libavformat/swfdec.c @@ -32,6 +32,7 @@ #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavcodec/get_bits.h" +#include "demux.h" #include "swf.h" #include "flv.h" diff --git a/libavformat/utils.c b/libavformat/utils.c index 9e2e3335ac..5249607745 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -28,13 +28,13 @@ #include "libavutil/bprint.h" #include "libavutil/dict.h" #include "libavutil/internal.h" +#include "libavutil/intreadwrite.h" #include "libavutil/opt.h" #include "libavutil/pixfmt.h" #include "libavutil/thread.h" #include "libavutil/time.h" #include "libavcodec/bsf.h" -#include "libavcodec/bytestream.h" #include "libavcodec/internal.h" #include "libavcodec/packet_internal.h" @@ -1007,57 +1007,6 @@ int avformat_network_deinit(void) return 0; } -int ff_add_param_change(AVPacket *pkt, int32_t channels, - uint64_t channel_layout, int32_t sample_rate, - int32_t width, int32_t height) -{ - uint32_t flags = 0; - int size = 4; - uint8_t *data; - if (!pkt) - return AVERROR(EINVAL); - -#if FF_API_OLD_CHANNEL_LAYOUT -FF_DISABLE_DEPRECATION_WARNINGS - if (channels) { - size += 4; - flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT; - } - if (channel_layout) { - size += 8; - flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT; - } -FF_ENABLE_DEPRECATION_WARNINGS -#endif - if (sample_rate) { - size += 4; - flags |= AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE; - } - if (width || height) { - size += 8; - flags |= AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS; - } - data = av_packet_new_side_data(pkt, AV_PKT_DATA_PARAM_CHANGE, size); - if (!data) - return AVERROR(ENOMEM); - bytestream_put_le32(&data, flags); -#if FF_API_OLD_CHANNEL_LAYOUT -FF_DISABLE_DEPRECATION_WARNINGS - if (channels) - bytestream_put_le32(&data, channels); - if (channel_layout) - bytestream_put_le64(&data, channel_layout); -FF_ENABLE_DEPRECATION_WARNINGS -#endif - if (sample_rate) - bytestream_put_le32(&data, sample_rate); - if (width || height) { - bytestream_put_le32(&data, width); - bytestream_put_le32(&data, height); - } - return 0; -} - AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame) { AVRational undef = {0, 1}; From patchwork Sat May 7 11:28:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35658 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122193pzb; Sat, 7 May 2022 04:32:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxmdZ8mZGC35GsHOI6ZHlyjlHPIWrHq0EBVQUCUP/iyREvMRj4jmBp5gFiw1iq0AaOQY/jH X-Received: by 2002:a05:6402:2713:b0:427:d414:3bf6 with SMTP id y19-20020a056402271300b00427d4143bf6mr8230809edd.180.1651923167657; Sat, 07 May 2022 04:32:47 -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 b23-20020a170906709700b006e81dd29c00si7271291ejk.569.2022.05.07.04.32.47; Sat, 07 May 2022 04:32:47 -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=sxzvfZSq; 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 EE50F68B3A8; Sat, 7 May 2022 14:30:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074057.outbound.protection.outlook.com [40.92.74.57]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9086068B48C for ; Sat, 7 May 2022 14:30:16 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JhAxHRt64Ju+k65YfPYZ3VYX55D0atgEaLztgySVpr3FnSWYi/okynp/p+DBzu9SADpHBjqiAfK9Di/Lue8pRBj6ykTtZZYls1GfbyHj6P6NiRGuGyQ2VLG9eKUqKBHo94XdSk9VsBNK67v9BnHXBMQtAzEt73pLABC5EdXe+zGNdzswRFquP9Z4apcjvlaFgOe6n4lXH050LpjZvSSRQV30GMzb+mb4TPBJ6r3o1GxwOqL8f4DskCTXHvljEwr8Yv7ocEnWvm1OyffMGV0ExqOE/McgwB2+K5GUpIXFcEazgOKRoCiomcL70cSkVUVTc3j7u3OMZOS401vcUYX+Iw== 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=eEN5kLkvDAcKmQulqxaZUBTHvCaHtigNL9lSJCxqVVA=; b=FgvadUX4WXGGAuJlmPBAAMWZorm67Tf/9KmsRSNfp4oiCcCcQxJbfBRxpIz/vPXCpORuU7G1Rf1MGXYtyS9hGtO8+ObTeuIQqCyhQMSL2PHZ5mZToWKcxmsmhLws4Qu4X4rJiYHLvzUYiW4bVzKOi0wvDYTsIdRb38HucvAVKbfadw+t+VJBBPbphGHLAcVa07Hbgdpuo1YDzhpqBZXRhhzoBbTHd07CxshnGQOvJ6zZ2u1RdTFGW9HAXSWgoy9LhqY2g4F8Vp1I4tytfbNv5ssFhVDaORhw6hzXJuuP0+q3WtXqjQUUf5N2CCZtwhxgzQ5OtW6k2h0QR10XpejXCw== 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=eEN5kLkvDAcKmQulqxaZUBTHvCaHtigNL9lSJCxqVVA=; b=sxzvfZSqc5z62hczP9QTwcy3C4zpY2cCY6F1Xb4VRDZ+1apfDKjDYMNGCKDShAy8VE5+TWr5cvrJn3qsfT1MCdsRoQJOSYn8dIL9YlhiHJTMZ82CQXGuOpeGzyDCn8xpPrERfVSTRDKgM7oFS/5Pzj76/QuaINcT4ZUQpYTz02WZbx+uBXWuHQW22KGZMldd1BuJ/KbSuTUNU61YVqNHtCvwzV2rIVaf8uQJ//6vuZaBtkb59J0fvNdCI4PmuOCWEDFKSIwC1297re7yxqhSK/xIfYrviGfTAyxwvKFJMDblGlLYdm1Ghdj2pgfZ7IPLS0KmI8kvalpqpc5+fa1k9Q== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:14 +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:14 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:10 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [0hmiLSoo7xy3t7bUds4iGzScXnIptoK3] 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-23-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ecf799d9-527a-4bdf-c823-08da301cf43a X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8QTrC4DbkSasPGpmR04WtI+tTODY2J8DByD5njwg8cfoDmcHJH49XN5/KLiwd5g9CiaTpQgKaeSVoG9fDTlSdEy+HuAOiuv9w9bNKcJGfGbS1fPu8j5FCM4d/aX5Twe3dAdZaibGfVdAiTBa8M/bnGbXzoSoi9yzOmGISmqR0I2ICgJJS717I702iOosZgwxLb07ySKdgBRKFUZshRRfmqBSXG/vcWz7sN2wy6u8VLwt8Zpv1B2UUdHrFY3IpuwfaYWdzQiTCsyfb2o1KwltJnMNaKTaLv6TMkQ4F+iLTAvU319qxGOAxUyd3gZYB0o7MT9reme9DG4fsmX5kZYlflVWycKKLtX2r+xsA0brM92YFgzy3RRu085nQBe0l053VUHFxwlorBj3BHV+HMDIInZg6+/7xEaA61TxFufAOEg7WQv9MuEw1x1NE1zUskm8XQzdgG18OxKIfyDZtlCo3TzquymCmvNAN2syRVdCifttiowX81NKGsrEqJhhoUxs+QRq8w8Qw0M/gu/HkRLxlWfoUpJCZYJ+d4TdrCQi/dJt0czfnO8zF4MyWQ/j6XzuLq5DdIN8KLjYQfneXbdvD2rHzP3G1gxGqoHqFXFbLCG5SmMXSnKOwjjeIBPp6hhUg9rSmk9GLH+XqaK29/zCntnyWTeznhP4hChG6kUSTu8H8aghXMx9/rHvA+58mpzz8QkyPpYf8K1s= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w5WDNenvHR36KHRZObiJa8YMittx94Q4295RrsDA6w0uMFm/r3cmnbKiZAyNIBHXYFNwfy6mjPLyFnKCkVOXOf8WhxHsb/xmTSvXE+MTyi6d6nDAUAq/rQ5waKYwN/YS1gBE6UvVL8FPlQvoAvODRvQA94IRc4iiNyVCEF9NS6y9eXXf3vpuownVjPV4fGlj0l5zBcSKgdpMPIzKM023rW8zbET5bj+kCZjH1Ko5Gnddo/c6Uh0U2LnYNHoePY0S0Gitdf1nRZFeQ3EPD/3RZ5Z4xJgqXNXuoysZMwQe7Kz33objH6MMZFxBtWfEiI+6z88x2vkAZ12UwIJmgzrz3sB8K/7PuPvRQWLHoYkj47LC2oGmYgZkL3EH3plHbxF8Rv6SEUxK2Tsqzx3hF3FgtpABzZ2exv2Y/Gj1PSJojiMU4zrfCA4wmDbEmFSCS+4kDtLnFgQScfCvsiQWVZQ3VUIz2NgrL+xI267phdTIJRxpa+6AmqyQUmoprpVEiPBmsd6fM8FrZISv/acAs42t1Ix40oxoWFPOz4RpjgoiLNDQld18wtfNronzUhOlumBigCF4Rps58V3Pyl94xz9eQ7dgvmt03Bd+WCkogswSwLIuqU13vQzUg/wmnB4XBk7E X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dfs5K3nEXLZ+c7A55yPEPgG0nIPWHI0sIGkE+APN3R+2y/8EUyiUOC/xZTx3OKqRQug4TDEfWfw+p2vi1BrF0zJcbmfGhTQgF5rpl2H7h+U4ED0IxBA3w0jcCoyg6kRqksRwzMW6ujnztCAC/But4RV0sfiZannDH4bsmbTtrE+DSvqWyZ4RgJRBr+OvzZQUovAB3t80r+m+86YfDXR80jYbL4qVQkYCzw/AJAS3xXBF4CH3t6Sk4Z1oMppi7j6uEedEyKHbHi3OI2MongFNF40MEh45/sJ77AvWwszD4xSdGlBTfGhuI8Xb3UWDQkIn7XlNslodBPkf4wbyYDSfiMSzynoKEiBEx0NxqTMcTLjwie7kqjCD3wgvYYBWaJbuebx9Iy9PzP+0IcGdFX1OB6hQuf5iS6r7A0t524dwN9/CVyEgLmMconvNXd7EOm/LM315dhYjIQcyX8hkHIK7w261Y6aTPIQKs+xxOu6sVFrJNCFw9DtaCSSxe1nNaE5I+TAUiViMaTW8WywBSSMnpnjIRXleTIy+LWL6TEVSpIC3C9S9fXmY1xXwhKvAEW/2sz8lNd25VlXlftjXrVdqJ0JLLtz28JJSyOSEZc23glMdQBBjMnWwAtVpU6FHORD9kF8GeFbzXQmIIt16/z0+zEtBEAmtsi19JlwC8jayhyGQjrBgKvZyF9jBZurN0zKBW8KUzMBtlo6QXUQiF3xk9WuMdRkqhXLbpc6a9sFfltD5J+R7BAHp8I2RrSPIQbrpQwrVySrdcgCTbEZmk6IESTEaS0rmkCwg04U5ybatjm4o6LCx0dTWlvGCwNiENsUpulQ2po/JxK+auwYC1fIOHJJk16CyyUUvengADkN0UkY5xCTDUNguka04GskXEi2uSnaF4Wg9MX0jQ8LvHiTIBR1gUcpzwtbg76TvNsrcxhNSCbvFSwYugrrewyYG+A153dSIsjNyHuMR2ZafzOUi88C7Cg3kJPS7M7dW/e5SL634a7lUq6cL2HlQ4ptZ8HbkZpT/XMMWgvsf11l0V1PBjoinjiQ/U1qOxOt+qNqRUOmLzkFktbR9S1Dz3F19szAi1bGPs+JEqTt0lnxTmRgsWGd2rFkhctlux8k6GeqQHaCxoXzbkX5xREkkKnv+6gNouHNn9HW/ke1HuacqQ0Lrh88rnSNjVoJmeqV4xmgqf6pdfOlw7dNIOTWZqVTSnE6qm9D97Gysv7dnDaSyPhVbDdIT1OVoaih876iQsAQYWWxtPrrhPXTiLu85W6T8rHa0CzNfeusSMC/tx59HC/XS1a/ag0d2Ab990SsdJ7jHjMlAXVIBdeUPhch1mtNLc3vkC98/6seoC5TMUc7FYMJZ0xZQLFAIAeKY9gYNrGPTtD7W03wy47u3OnZE2E2zpzh+x9XReVGsAIez1e9BYNSNx6b5ZNa9G1Es712cjTfZKYynzEi2ODnRURhUlJw0xK8F X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ecf799d9-527a-4bdf-c823-08da301cf43a 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:14.2775 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 24/44] avformat/utils: Move av_read_(play|pause) to demux_utils.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: rHn5eKsX6KFp These functions are for demuxers only. Signed-off-by: Andreas Rheinhardt --- libavformat/demux_utils.c | 18 ++++++++++++++++++ libavformat/utils.c | 18 ------------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index ee8a05a54f..93c6b0fe68 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -197,3 +197,21 @@ FF_ENABLE_DEPRECATION_WARNINGS } return 0; } + +int av_read_play(AVFormatContext *s) +{ + if (s->iformat->read_play) + return s->iformat->read_play(s); + if (s->pb) + return avio_pause(s->pb, 0); + return AVERROR(ENOSYS); +} + +int av_read_pause(AVFormatContext *s) +{ + if (s->iformat->read_pause) + return s->iformat->read_pause(s); + if (s->pb) + return avio_pause(s->pb, 1); + return AVERROR(ENOSYS); +} diff --git a/libavformat/utils.c b/libavformat/utils.c index 5249607745..50e8298241 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -458,24 +458,6 @@ int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type, /*******************************************************/ -int av_read_play(AVFormatContext *s) -{ - if (s->iformat->read_play) - return s->iformat->read_play(s); - if (s->pb) - return avio_pause(s->pb, 0); - return AVERROR(ENOSYS); -} - -int av_read_pause(AVFormatContext *s) -{ - if (s->iformat->read_pause) - return s->iformat->read_pause(s); - if (s->pb) - return avio_pause(s->pb, 1); - return AVERROR(ENOSYS); -} - int ff_stream_side_data_copy(AVStream *dst, const AVStream *src) { /* Free existing side data*/ From patchwork Sat May 7 11:28:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35659 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122248pzb; Sat, 7 May 2022 04:32:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyatFJW9sGm6T4VFPxzOd2mDs8QbPuaUiaBRCPVED2Vn4JavBYXrrNGKllkTi1O/EidS17B X-Received: by 2002:a17:906:d54e:b0:6f6:3ea:8e7b with SMTP id cr14-20020a170906d54e00b006f603ea8e7bmr4693908ejc.292.1651923177907; Sat, 07 May 2022 04:32:57 -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 q3-20020a170906388300b006e0f2761f3bsi7143673ejd.840.2022.05.07.04.32.57; Sat, 07 May 2022 04:32:57 -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=fayW9BtR; 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 0F58868B37A; Sat, 7 May 2022 14:30:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068102.outbound.protection.outlook.com [40.92.68.102]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C182B68B37A for ; Sat, 7 May 2022 14:30:19 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EyATFh6tQVCEskd7DijxmXcStWF7OyB1fTU9ih0JtSJoftX7mXqAe/kh/VYU4++RNgVfBrW36EJMIgLICI4HiT/lDnmrPNZNe7Ay0A+OhQ/+yN4OIQlMtRfPqB4fhlIYPB816PCCRybxkCJmzbxIKTzAH9jM2IhOChLL6VfIyoFPV4RRld1EFv7sGHXAHNfntI4aRlwQZJGyXwExQ4zvdIyTwIZZvb9sBRyZ14WJN+dyo1Wft+VsomNs+2xtwKIgA058nxht12OShvxMzacAJ60738DAUy7d8Rw7uYbY4L/uixhLiCHzUjbXs4BVfIjSwQtmplriW9YKEKqMD7I95w== 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=/nB+vP5AEJ8cLFg09pv7Xggw62mglFmM3SU4VSTo3yE=; b=F65gaOTHFE6Qsx1x44pLLZqQ2HM9cHy/nCnAEPzS3qXcxTwYoT9ETUoN99JTLBLkrlqg9e2OcZmMhli+L37k8nNY9eWDnxqbbh8rpU653omGnBM/sCDaAV3ljMqoNETVZfLGMVFZRA4IpLPebORfZVbrmalXDjsYHiAu3PnuCD9bfvJxMG23D+2sDmlYm+FzND/EjK+uGljpJQ7Le1Lnus0X5rFL1iyEOe1aXYiVBsi4k4MrqjtGTsEDxydTkspKXnWQ1L6NfgE/GYwDP/xHGQ/tYAYADO8Z2pFeUHzr9GHV/BjU9b3BD67XvoejvPDam0ky5UwdijL5WN1nA0t/lw== 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=/nB+vP5AEJ8cLFg09pv7Xggw62mglFmM3SU4VSTo3yE=; b=fayW9BtRQMjkDs5q5NBcDW2kK35ksKrqFZoDNkqW/RTpEd/sgH/WXeYMhsKYqzRP+4W2pD7A9+678ZMTn0N+m549coyH0pz1rb/C0frudxYEmN0ET42ESJVFPOoHkGKV6zvgYj1rzUVJGPlNMymuni7UJ7Y4Ar3TKEcZgcvtFOdmQ2NDFc2h7cdWTafyX1OxEaN3edgy6Z64kSD88o8Ebw160r4lC2i7DsjbbQCFsJmd0gIFEArAq2E0gPyj+NM3r+CRYpRq9ZoEKZs+ueSe9lMn4PskpyPiw1CBEfJjkp2NejfKxwb4S4KLhlFB5u+yXrqISEakimFf+31H2aml+A== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:18 +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:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:11 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [AOHc2jVrqMzBdkKz0FmbWGn2VMncU5yg] 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-24-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b5c8791f-be23-43e3-78e9-08da301cf6b7 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwS8FE+2BQf20ckMWOD5ksPaFrmYOzSZLxTRVo0MW4KDPFEHZCRPavz8hM1eVbjrKvNbxkbSm9ZQTws9uiLZelu9i/hS4xSLTZkpaeJeuOUSRGcorvAsT4btHrKpH6HPo7bpFiIpL9m3Xv0xkacGdvCgl4MkhPWhnr4FnIOfjUByCoAMD41YiQpaa3qugMcLhgBxvKcW/vTyZiuJlI/n4QHbHmR7Lw9JahDs0g2nNL6w1PdpJbC4PRqA+mxpRZt7p1m9HNR2o2ia5Zw1Y7PSCeWfUyHbAhgXRHZJjOalsA/U+NOQaB/AI5Goonbgx5RWqgWz8uWE4Tg5aIB41FSmJN87ycmzEx8ajV2NRKWZvVX8KTqA8IJi9jqvn2guMkKjTl//GbPlW6LP0ZqG2Ao/NhwQsZl51zBRG9/1gGVpOZOKaUu1YBKGYo1ePGeyZX0j2MhuDNeMe0mIKs9ytpVe0KoeLvTvZdHGA0PgH/XKDLNVIDh0GOYsu/zn+ZHtsVr7jxT72tTDFOt+X+we1rdX3USHUGvBwT/Bt2OPaQnSIHBEqHlrDD0kXdXdEUKBov5N8DWfIlhgXQuBYtQDZEmSTo8CwckltFQ5jLBfuuy1kgkiR7SnMAqPKz82B0PqLnQ2luLebdMH/jS3Muz/9lEh8VVjfNw9t9HRpTkQTbEnM5X/PaG3G11t1iRhN98JUcDa9tbH6FGxQ+F9pu8MLC3uUQxWs7w3D78lUT0B7oo3kZRqw= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sTvmQlgYgVPXhwYmdbZKshqPuPYMC5pFNj7P2l7tfxv0eqiJAXpg9yp4oFyaKGGHQGyLa4S0QtvhpNl0T9RtQLwQwJTiFYMzsXJwIKjtS0Mca2CvDizU3cBZDjJuxOsPX2lWyYwbX1Op/bkbnInWs3ygHi0ZEqQqgS7knAmjdV41hZn5dqRJMxStfxj1pnS1I4BFcNRHuZ86wcS1UuAdEgi9wQME/Z0noAkzfqs9DZyTzRqGoUOucgvlzw56RFjHdfkY9w1omYazazHk5Hhuy2EoE0H5+OdtXoa6ZKDTnoRCFdoNa3RmR9r9HIVUCvduOqZVgItdLNLjwetBx9Rrx4GbR0lL2MmySf1jSmGiZoKSfg3r8PVz37JXJuus9ZvyY40UOAYY5pBUXLgixg/vBVyHUpojrrKilZVbqnW1yRKqPic//5fK4nHhGBeRqPK2mcWnKc4eB8kPbKEiqdo+zi/SdlBULMo7QohMdR1wpF53K9al36Rib2t7eqieNltIJAybi7kHYdWzfrEp8N1QQn7OBGD/TwC0xBKQYAC5SvVCY9w4tblB47b3fAGoKfrIcVS1RJWTytvnWOAPSKVhd6fQtQIXypz8JnJBwxip6Ofww+EyBUBOuXuiM3goZBfT X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NPkDD+fyNHe2FK9/9fOm0vlRjqC8CIWv8e8AA7gNlenaiSA7NH6Oq4dGuHqN6cEu0cpzD6GdKyGPELb5zr6OaNxc4nNkyvEpFf7EjPxbb9NEYYYZCLde/Ax/7ZNwcaTX8w/vAOtBhnxsGD+wNJ/kt95VnVBWdhVy0dAN0ndwg+MNbL3uSOD8/HyWutl07D/IqV0VAOK+A3DZijVCJnhGs7ogAX2phVo6R3u00TpvPRuBpcUqCGNcVHYgI+cISwXNCUEcF9ziJ2pniVHYCac2N2coble7yFVExSp3H929kiNQmnDzAgpY5EbNybgHZiQsa8bZr2ctIHc3OGoT5BOUVogmaHcRri8PR0yINS+O9OGyJbno7jDu+NexMrZ85f38Ujm9Dr4kOv5VOOmLeqOP23f36DC0vS7PCgschAXTwpH0hikPzzlsO8Pa1TfS76d1rFAlqqg59RWYcMWmDuJsewM0Ci3B+I0TeFgHVCcCOCHRhOwdBUsX0uiVg7tiH5sqAqKnXdE7KAlA8LXQBvTS9mttIBNm6m1qFDuo0zmUqYpMsCAqUCqKMWoifvDfRbq7kxX9uJfje13kJf5XQ7I9rvLr/P6bFQV1z36Lh+jixcVYyB4mQNv2y76YIRX1CnfjhpJxrNkqyKqXcfeTFN7pcaZvcbdBHBKdvIuNTUY11Y/cRvYNNjWZhmiIeeuP9CDkvAFaDKgrRs35sLIySu7EIR3Ry3mYqdD8HRTfXdEHCfHOZLflSg0bEsKVinh0MXMPfoFKtLCwvh1RKALQvRMQ962hv2PdjhGba4neJv7Z/gQnqeUscbTbgHvS0EFQG09skjrLc3HaCgeXvZLWZQBwZPrd9Q4224wBiiSwlEBiUVi+Kwg7Mw4m/fI6jI+018nKpve9lj+Ls0EsmIQO/cR+0n5LASe43MM09pytrU8zSmbQqjXWDXmgM34PGIqnH/vFcM9mffduT33LxFDXmTz/2ApSdevuHufD4wgdTrYbn8VXE2BerZ3O/gY9Cbi5eFdohz+kSmsDDjeeOt4ieAx0fDMR3jKs/A6+5QCUmHGDpfojDnv9aGl/OI9GMTqQsPRG9POg+7vxZCmZhIIffBrPCtFiM3r3o+kodIs4M3EI5XXBJ+XsGJh20DY4SP8lCtxx1Fwtk+HeyClsYrIyvvEtOBu0MhsL/TZvLYTESS7j3BX99xIHLMTZIA8P5F3XGtdiDHa3CZ2wnoC2XtU6OI4QfWxXQ2OB3T1iAZWfMxY9zIxeNOpJmGc+oy3Gfpwt4KELaGfmb31C+j4Wec9IgVM+54dpdp/kBNCcF9wkKGVszQ11Wjv+qQ15oGNJ6fyrUp6g0hbhumT3AKLzhRuhOJJJfLTiRs6Z/3I3pwKQ+xOGFz5T4Lf1T45h2Rd4K4eSVLgnSaUGmSw3Qo+3gXUOhjPvzj5sUHz4bpwEHHBu1CzDq/LoqJC6uFHDXtzu8uPIQ7jq X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5c8791f-be23-43e3-78e9-08da301cf6b7 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:18.4970 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 25/44] avformat/utils: Move ff_generate_avci_extradata to demux_utils.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: armyuTiYKKtk Only used by demuxers. Signed-off-by: Andreas Rheinhardt --- libavformat/demux.h | 6 ++ libavformat/demux_utils.c | 135 ++++++++++++++++++++++++++++++++++++++ libavformat/internal.h | 6 -- libavformat/utils.c | 135 -------------------------------------- 4 files changed, 141 insertions(+), 141 deletions(-) diff --git a/libavformat/demux.h b/libavformat/demux.h index 03f7c22bdd..64adaff07d 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -211,4 +211,10 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels, uint64_t channel_layout, int32_t sample_rate, int32_t width, int32_t height); +/** + * Generate standard extradata for AVC-Intra based on width/height and field + * order. + */ +int ff_generate_avci_extradata(AVStream *st); + #endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index 93c6b0fe68..e42d2f3525 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -215,3 +215,138 @@ int av_read_pause(AVFormatContext *s) return avio_pause(s->pb, 1); return AVERROR(ENOSYS); } + +int ff_generate_avci_extradata(AVStream *st) +{ + static const uint8_t avci100_1080p_extradata[] = { + // SPS + 0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29, + 0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63, + 0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19, + 0x18, 0x21, 0x02, 0x56, 0xb9, 0x3d, 0x7d, 0x7e, + 0x4f, 0xe3, 0x3f, 0x11, 0xf1, 0x9e, 0x08, 0xb8, + 0x8c, 0x54, 0x43, 0xc0, 0x78, 0x02, 0x27, 0xe2, + 0x70, 0x1e, 0x30, 0x10, 0x10, 0x14, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0xca, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + // PPS + 0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48, + 0xd0 + }; + static const uint8_t avci100_1080i_extradata[] = { + // SPS + 0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29, + 0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63, + 0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19, + 0x18, 0x21, 0x03, 0x3a, 0x46, 0x65, 0x6a, 0x65, + 0x24, 0xad, 0xe9, 0x12, 0x32, 0x14, 0x1a, 0x26, + 0x34, 0xad, 0xa4, 0x41, 0x82, 0x23, 0x01, 0x50, + 0x2b, 0x1a, 0x24, 0x69, 0x48, 0x30, 0x40, 0x2e, + 0x11, 0x12, 0x08, 0xc6, 0x8c, 0x04, 0x41, 0x28, + 0x4c, 0x34, 0xf0, 0x1e, 0x01, 0x13, 0xf2, 0xe0, + 0x3c, 0x60, 0x20, 0x20, 0x28, 0x00, 0x00, 0x03, + 0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x94, 0x20, + // PPS + 0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48, + 0xd0 + }; + static const uint8_t avci50_1080p_extradata[] = { + // SPS + 0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28, + 0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18, + 0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c, + 0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37, + 0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde, + 0x6e, 0x6c, 0xd3, 0x3c, 0x05, 0xa0, 0x22, 0x7e, + 0x5f, 0xfc, 0x00, 0x0c, 0x00, 0x13, 0x8c, 0x04, + 0x04, 0x05, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x03, 0x00, 0x32, 0x84, 0x00, 0x00, 0x00, + // PPS + 0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12, + 0x11 + }; + static const uint8_t avci50_1080i_extradata[] = { + // SPS + 0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28, + 0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18, + 0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c, + 0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6e, 0x61, + 0x87, 0x3e, 0x73, 0x4d, 0x98, 0x0c, 0x03, 0x06, + 0x9c, 0x0b, 0x73, 0xe6, 0xc0, 0xb5, 0x18, 0x63, + 0x0d, 0x39, 0xe0, 0x5b, 0x02, 0xd4, 0xc6, 0x19, + 0x1a, 0x79, 0x8c, 0x32, 0x34, 0x24, 0xf0, 0x16, + 0x81, 0x13, 0xf7, 0xff, 0x80, 0x02, 0x00, 0x01, + 0xf1, 0x80, 0x80, 0x80, 0xa0, 0x00, 0x00, 0x03, + 0x00, 0x20, 0x00, 0x00, 0x06, 0x50, 0x80, 0x00, + // PPS + 0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12, + 0x11 + }; + static const uint8_t avci100_720p_extradata[] = { + // SPS + 0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29, + 0xb6, 0xd4, 0x20, 0x2a, 0x33, 0x1d, 0xc7, 0x62, + 0xa1, 0x08, 0x40, 0x54, 0x66, 0x3b, 0x8e, 0xc5, + 0x42, 0x02, 0x10, 0x25, 0x64, 0x2c, 0x89, 0xe8, + 0x85, 0xe4, 0x21, 0x4b, 0x90, 0x83, 0x06, 0x95, + 0xd1, 0x06, 0x46, 0x97, 0x20, 0xc8, 0xd7, 0x43, + 0x08, 0x11, 0xc2, 0x1e, 0x4c, 0x91, 0x0f, 0x01, + 0x40, 0x16, 0xec, 0x07, 0x8c, 0x04, 0x04, 0x05, + 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x03, + 0x00, 0x64, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + // PPS + 0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x31, 0x12, + 0x11 + }; + static const uint8_t avci50_720p_extradata[] = { + // SPS + 0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x20, + 0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18, + 0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c, + 0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37, + 0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde, + 0x6e, 0x6c, 0xd3, 0x3c, 0x0f, 0x01, 0x6e, 0xff, + 0xc0, 0x00, 0xc0, 0x01, 0x38, 0xc0, 0x40, 0x40, + 0x50, 0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, + 0x06, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + // PPS + 0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12, + 0x11 + }; + + const uint8_t *data = NULL; + int ret, size = 0; + + if (st->codecpar->width == 1920) { + if (st->codecpar->field_order == AV_FIELD_PROGRESSIVE) { + data = avci100_1080p_extradata; + size = sizeof(avci100_1080p_extradata); + } else { + data = avci100_1080i_extradata; + size = sizeof(avci100_1080i_extradata); + } + } else if (st->codecpar->width == 1440) { + if (st->codecpar->field_order == AV_FIELD_PROGRESSIVE) { + data = avci50_1080p_extradata; + size = sizeof(avci50_1080p_extradata); + } else { + data = avci50_1080i_extradata; + size = sizeof(avci50_1080i_extradata); + } + } else if (st->codecpar->width == 1280) { + data = avci100_720p_extradata; + size = sizeof(avci100_720p_extradata); + } else if (st->codecpar->width == 960) { + data = avci50_720p_extradata; + size = sizeof(avci50_720p_extradata); + } + + if (!size) + return 0; + + if ((ret = ff_alloc_extradata(st->codecpar, size)) < 0) + return ret; + memcpy(st->codecpar->extradata, data, size); + + return 0; +} diff --git a/libavformat/internal.h b/libavformat/internal.h index cd6240b0a3..4392f17d71 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -623,12 +623,6 @@ int ff_is_intra_only(enum AVCodecID id); */ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags); -/** - * Generate standard extradata for AVC-Intra based on width/height and field - * order. - */ -int ff_generate_avci_extradata(AVStream *st); - /** * Copy side data from source to destination stream * diff --git a/libavformat/utils.c b/libavformat/utils.c index 50e8298241..98113086bd 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1211,141 +1211,6 @@ error: return ret; } -int ff_generate_avci_extradata(AVStream *st) -{ - static const uint8_t avci100_1080p_extradata[] = { - // SPS - 0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29, - 0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63, - 0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19, - 0x18, 0x21, 0x02, 0x56, 0xb9, 0x3d, 0x7d, 0x7e, - 0x4f, 0xe3, 0x3f, 0x11, 0xf1, 0x9e, 0x08, 0xb8, - 0x8c, 0x54, 0x43, 0xc0, 0x78, 0x02, 0x27, 0xe2, - 0x70, 0x1e, 0x30, 0x10, 0x10, 0x14, 0x00, 0x00, - 0x03, 0x00, 0x04, 0x00, 0x00, 0x03, 0x00, 0xca, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // PPS - 0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48, - 0xd0 - }; - static const uint8_t avci100_1080i_extradata[] = { - // SPS - 0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29, - 0xb6, 0xd4, 0x20, 0x22, 0x33, 0x19, 0xc6, 0x63, - 0x23, 0x21, 0x01, 0x11, 0x98, 0xce, 0x33, 0x19, - 0x18, 0x21, 0x03, 0x3a, 0x46, 0x65, 0x6a, 0x65, - 0x24, 0xad, 0xe9, 0x12, 0x32, 0x14, 0x1a, 0x26, - 0x34, 0xad, 0xa4, 0x41, 0x82, 0x23, 0x01, 0x50, - 0x2b, 0x1a, 0x24, 0x69, 0x48, 0x30, 0x40, 0x2e, - 0x11, 0x12, 0x08, 0xc6, 0x8c, 0x04, 0x41, 0x28, - 0x4c, 0x34, 0xf0, 0x1e, 0x01, 0x13, 0xf2, 0xe0, - 0x3c, 0x60, 0x20, 0x20, 0x28, 0x00, 0x00, 0x03, - 0x00, 0x08, 0x00, 0x00, 0x03, 0x01, 0x94, 0x20, - // PPS - 0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x33, 0x48, - 0xd0 - }; - static const uint8_t avci50_1080p_extradata[] = { - // SPS - 0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28, - 0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18, - 0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c, - 0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37, - 0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde, - 0x6e, 0x6c, 0xd3, 0x3c, 0x05, 0xa0, 0x22, 0x7e, - 0x5f, 0xfc, 0x00, 0x0c, 0x00, 0x13, 0x8c, 0x04, - 0x04, 0x05, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, - 0x00, 0x03, 0x00, 0x32, 0x84, 0x00, 0x00, 0x00, - // PPS - 0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12, - 0x11 - }; - static const uint8_t avci50_1080i_extradata[] = { - // SPS - 0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x28, - 0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18, - 0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c, - 0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6e, 0x61, - 0x87, 0x3e, 0x73, 0x4d, 0x98, 0x0c, 0x03, 0x06, - 0x9c, 0x0b, 0x73, 0xe6, 0xc0, 0xb5, 0x18, 0x63, - 0x0d, 0x39, 0xe0, 0x5b, 0x02, 0xd4, 0xc6, 0x19, - 0x1a, 0x79, 0x8c, 0x32, 0x34, 0x24, 0xf0, 0x16, - 0x81, 0x13, 0xf7, 0xff, 0x80, 0x02, 0x00, 0x01, - 0xf1, 0x80, 0x80, 0x80, 0xa0, 0x00, 0x00, 0x03, - 0x00, 0x20, 0x00, 0x00, 0x06, 0x50, 0x80, 0x00, - // PPS - 0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12, - 0x11 - }; - static const uint8_t avci100_720p_extradata[] = { - // SPS - 0x00, 0x00, 0x00, 0x01, 0x67, 0x7a, 0x10, 0x29, - 0xb6, 0xd4, 0x20, 0x2a, 0x33, 0x1d, 0xc7, 0x62, - 0xa1, 0x08, 0x40, 0x54, 0x66, 0x3b, 0x8e, 0xc5, - 0x42, 0x02, 0x10, 0x25, 0x64, 0x2c, 0x89, 0xe8, - 0x85, 0xe4, 0x21, 0x4b, 0x90, 0x83, 0x06, 0x95, - 0xd1, 0x06, 0x46, 0x97, 0x20, 0xc8, 0xd7, 0x43, - 0x08, 0x11, 0xc2, 0x1e, 0x4c, 0x91, 0x0f, 0x01, - 0x40, 0x16, 0xec, 0x07, 0x8c, 0x04, 0x04, 0x05, - 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x03, - 0x00, 0x64, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, - // PPS - 0x00, 0x00, 0x00, 0x01, 0x68, 0xce, 0x31, 0x12, - 0x11 - }; - static const uint8_t avci50_720p_extradata[] = { - // SPS - 0x00, 0x00, 0x00, 0x01, 0x67, 0x6e, 0x10, 0x20, - 0xa6, 0xd4, 0x20, 0x32, 0x33, 0x0c, 0x71, 0x18, - 0x88, 0x62, 0x10, 0x19, 0x19, 0x86, 0x38, 0x8c, - 0x44, 0x30, 0x21, 0x02, 0x56, 0x4e, 0x6f, 0x37, - 0xcd, 0xf9, 0xbf, 0x81, 0x6b, 0xf3, 0x7c, 0xde, - 0x6e, 0x6c, 0xd3, 0x3c, 0x0f, 0x01, 0x6e, 0xff, - 0xc0, 0x00, 0xc0, 0x01, 0x38, 0xc0, 0x40, 0x40, - 0x50, 0x00, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, - 0x06, 0x48, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - // PPS - 0x00, 0x00, 0x00, 0x01, 0x68, 0xee, 0x31, 0x12, - 0x11 - }; - - const uint8_t *data = NULL; - int ret, size = 0; - - if (st->codecpar->width == 1920) { - if (st->codecpar->field_order == AV_FIELD_PROGRESSIVE) { - data = avci100_1080p_extradata; - size = sizeof(avci100_1080p_extradata); - } else { - data = avci100_1080i_extradata; - size = sizeof(avci100_1080i_extradata); - } - } else if (st->codecpar->width == 1440) { - if (st->codecpar->field_order == AV_FIELD_PROGRESSIVE) { - data = avci50_1080p_extradata; - size = sizeof(avci50_1080p_extradata); - } else { - data = avci50_1080i_extradata; - size = sizeof(avci50_1080i_extradata); - } - } else if (st->codecpar->width == 1280) { - data = avci100_720p_extradata; - size = sizeof(avci100_720p_extradata); - } else if (st->codecpar->width == 960) { - data = avci50_720p_extradata; - size = sizeof(avci50_720p_extradata); - } - - if (!size) - return 0; - - if ((ret = ff_alloc_extradata(st->codecpar, size)) < 0) - return ret; - memcpy(st->codecpar->extradata, data, size); - - return 0; -} - uint8_t *av_stream_get_side_data(const AVStream *st, enum AVPacketSideDataType type, size_t *size) { From patchwork Sat May 7 11:28:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35660 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122316pzb; Sat, 7 May 2022 04:33:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy30Gq55XQtLO4WRwtpJDDK5d9qnD/BOQ4Q7sSYbc87awfQ8xAk8w7Qlx5VmemgwCWFthRq X-Received: by 2002:a05:6402:d52:b0:425:dda4:b676 with SMTP id ec18-20020a0564020d5200b00425dda4b676mr8021959edb.277.1651923187697; Sat, 07 May 2022 04:33:07 -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 mp41-20020a1709071b2900b006e844990dcdsi7701035ejc.334.2022.05.07.04.33.07; Sat, 07 May 2022 04:33:07 -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=qJwdoYwP; 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 197F868B49A; Sat, 7 May 2022 14:30:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068076.outbound.protection.outlook.com [40.92.68.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A10268B3D5 for ; Sat, 7 May 2022 14:30:21 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ocQijmXqh6azth0kIR1EjCvchOzCtgQvcscT6/6bw4yBaL5tj2Kn2P+ADLOSrb5rvGd28ggmuU9MPBy144r6lbsC4jMpsU4AGsZBAnzRXdzt+wjIekiqhxpwWAFzupUb49HWvLZtii/7b1PPUgPEsJ3btZ/hI2K/sJkm4Q0eDLmYHCHc7L0FekmstFccCKC9RBpDOzVv5do8jICpWcCj7GjAiFB5NT+GZtd2ivC4lo8gyANnZMceYHKqz7tGCKtEQljbumv2yyozcxfMrUvaM6xjAlrJwtJvcGbJSYU60dLc9dXEu1XGuzmTKc+wxyKxoVsEvanKUvjwUZUEHeJFGA== 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=XiGYhsYCD+qqDXI9iCMhZLT+RF6Y8DW/VYbwsthoS7I=; b=ofhMGcUiAniWVfM8k9Ceb2X97aVnpMfcvqqgOnhBzHm6Iv9sRBotjCxfmC1GvVKox23Gr6Gt41yo/qCa+cZ+BNNEWO43wnoY5v6ip9c3YfUnUiuqOf+T1IiuGtickqY0B+jprGcc6+ceFRdCR6ZIqG2QDoDqQnqMrnyR5LlRForV3yIyHeoTUe53C2nHZGkqY/H/aWyDJeW0nCu0w5irODe7iXYbfJ/hWuR/wg/O2OwRhRFZCimNUFxe29hYvPTm4ArKZbMAu5wkcVKA+nSoZR2haiB3rwxjeFBh+MbbpOJtOoGaEipRvnFr0rTR4M9hC0INUriebclDYoV6UFJIKw== 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=XiGYhsYCD+qqDXI9iCMhZLT+RF6Y8DW/VYbwsthoS7I=; b=qJwdoYwPGmVUWSb1dNrE45b8GPou2EvbH5ZEP6I3SV85hfq2oL3hzzEkxTUH1W4Ezq3HCCP/D0ns9jqyn+rxuPykmu0WK9W6nuyhKijrajoKbJToN6UcWq+Z1VwsnePXB7M+LHPvoe7DvwydVNMnGCTrYVI2EW7SPNR5KOXV7Tod+jxAVNvKBqAyp89r9vR7cUOusCNzt5i+blqQTPx8ZdtCM2/pKyshgarR9Nhi/l7GWLnSA4Ci11epSGO6JTRC0sLzbzhg1ncctv/D88rayoOB3vC2gL1Mvtmuk0SOIk5kLmdJMHnN3emvSDZFqAz1KD29RfiabYNvyXH/nYk+BA== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:20 +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:20 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:12 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [StmNMTifC+fm1qMOanEK4MIwdXZcyosb] 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-25-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 07589bfa-159b-4dc0-71d1-08da301cf7aa X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEvwPxT+mwCURHm2qGG32agMihYrekW/6IEUmDO8b6Jp8nGjKU+gdNuG6itHeSYLasl9No20N0yJVaI4hKcDz44jQynwruXZdGsYmy1Li8Ej/LOl3o8S86psK33yqJTVZYP2yvGifEnSeVdOU3jx9aWfKOB/K7CO01TCv8AXCAGqzm4w3pLpz1XySq7ZMHcmV8YTj8A52mpSFQo+5d2C7E8qdu2MmOQc7xD1jdh6NzyGYBktb4Et6xoOsTGgV28DGURwF12RdQ/Gfi12LDqCeSGYCosJQUnYuqnV3Y2EaFGcdGNys0JUrFOeQhHca/9KMo8uJgQGmB0ypyqb/r/0E6GJzJKJ7KfL7MPUPGT87W0ftY8anhvz6HPr8GEWd5FgsJwBX5QY0SW1qVeM8xUnsLaVbHL/Dq1li4Ae8C1iMirXc68U1bsAz03GZIEJBLKF9ypAqbCH79YASVNGOnMY2xeUPv818oMHQ1o6pvExol48hqRtVSJl1nh0Ga3ZaFo3HvMkhdE6QiSznxM2V39/3iXIle3BFipxwF435tE/2g0xINFIAX1c4JMOwgkAb+3A2ZTnOdgZJwOE+VYSQYBVTqwoPcvNfcXUDikyOAKEbaXS29EXXRBnjltcQjpTyshhNqxdE7XCIwCctfL2BOQeydVAomB5/zehuOQVYNhUO+QtO8T2S3lMWiQgCQIhK/ZI9ev3TySn6hUL5Zr2R85AKyhZPq4jQK6ay85d+IP5iAfqxCvv3Na2/3au1AEeiawKrGmlr1BO0r4tzeU9veq50SUN X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2gOc+tVrrJ7A7nNteXuI5BvjEl9BA8qZBhbzKMrSYaoS3VtTNoOxvz7Bm1mV0P8U9usHgCROrG/nLb9TsTOWdD70EESlkqIxkohu/QWftSB0/feAOEL/X4Z5KwHp5ASOlvswydIZ/NKgRN2UBxcpb5p1tzZuTamHfJe0so/6dvSgJ+uF6DRTIVLLvH+/sJWEceHucizF9B0KNAjj5PiXz+kOjE4/ldR0fXBn+iJYs9VAPEaDIWcsdcstkspdhGwoQzspQX/XmubCkj5Ek+Q5u2hCipX3mn1TniYwAmj/G1X489cYeorNOm3Qe2/RvBhYFcJE4nkTBzQkdVkEUs1wLhxF6C2Bqs9WD6crWoesQAx0tY9F0hgYRyNX+TFfIEzs/E+4hRifPePsY1BSFsO8C7r+l4ISXcELn97E8N4gzlS0H6v1wb5Nqspyzln69UsemEO1wdykbwoapw+lmLLv5rif8KBMZxcsA18UK2Zdy1fkr2VFTsljM3F8CzwlauhWzIBXcwNGvkAQb2xR/caH/BchFoiVQTzx/alsXtj/oDlTHIh6oznIv/1t1yMYlneQtkJj51W1FA9S+MWplYsL82G/fKiJis+ersv2O0MSKhvnaws2EFKjjkHypnKzBNDd X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7VFupnajEpZivgfrnHqzsTcQtuti53eJwZiq9ETpDRob3jFzPV0Pw/09AVrJ6yHCUn6sjLQ8QAM2m/fPTf9wEozcodkfSdjP3ATXes6hcrX4W3UlPozeHN9huXCu3q9stX3kBDpygzO3jmBeGNFIotEuvQ4x8Fd3B+oNNAoFaWQtjQY037RN9vUoA3cK/yJaejX71Lai2Myo85bj7VOpIWCBCN9OPPBNjY/8j3FLePi169yvAjVT933tbfh072oMClO2VZiqX9mkPC3UIB8dav44uq2ezzY0GA8/PwGkbmIOIiBcVS/hO8vOt4Rj73z1EixNh1siEQuVKOA67DKPGHOdg6N9A3NnzmmIolPtZrxT7lD/1jQuyMTA2UDfA2Ucle/7QoE5wq7lVumOMqZFjMTTuSPUb8bUFIutKrEoX/odr6pW/w0TrM7Li7VhOJCffcFCL9Y9oOUouu4qAuZnIiB91sYfx1b6nTsR/V/7HWpR5KP81t1QJ6BbQ3WwQKbnqn6hCn887FRTgSdPZZFlL40ABtpeGL37bcypT2NqFgwhFliu1vbC0zdixQtKS1SAIBm/RdOiYYZ9smlcr8x04sD4GSPLLrSidxRL0Dau5U98sJ1j8kzEL1kCvoIbYzoWBndGobhi4FFu+/U3vymGmDAx8hTu6+m71ljegvXxVQhfIaIlaCnRZbd8J1TjirUEX5jj7eGhgZiUXsTlj/9PLvRy3GM3amkR+qHq7MH21lmfudVFtT7+afvYGGSJDwiAzOGFO3hbxt5LmgPLPyO3Ae97wKrQlTKzH9/RRNVhR00L08qcOieEDKBiSyOYsediIM0cw4gSeRTJ4VAu/MYMVRfD4k7K4KKi0T7tYZyaBdPvUAB/54Va4NmGbcKRS/rwtjgQ6d7mH3t1NngXIJPMQXCHag1D4xqdxKIWTJVliAc7XUdueG0cGIE31tjNrtYsn9hQ8xfx/1ln7PDi0F3eXKoRUoenkwnmSdRRDdC7p9pLHqLLruJazoIEVV4KWES0VlRe6Lcn6pRQDrdnrXsuzn7cQnsDnHESRky4TY6Bn/H/JtAZbBZMggRFCp+rrecCtC7jrJxOWfe5YkC2M++tnsMfW0mqLv602Z+P0OIKfrvklpQDJeW2sXVtl1K8nMb2dG0b5HPSdXea6fJuDDCEyICJEQK8Xa/o6KyaRIV6JA1COKF6cAlRaCoHz1ae7zeXo2GHnrUDJPoid4lxyEHBM+APCpjGmpwjAYcFmMcYrg8JUnP5me63o8S15Ea/InC9HLtMUMUdgBjIiGtw4OLKizhq+hjODXSXkehDdqpnsXYG6tto2AkGd6uBBeX6UPFsoO3jl4fwAzuP4WnK7+Tznw+MvDo8hECmaLBOADNvoRmXS3dVaF+z1PHgrs49VsKgFWTIFwQosjCzwZ6ZWagzmxtsreo1FxeI/NDMfoQE68bOuM7LuadC/t7YruCRJ7nY X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 07589bfa-159b-4dc0-71d1-08da301cf7aa 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:20.0581 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 26/44] avformat/internal: Make AVFormatContext* a logctx in ff_get_extradata 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: LyuFLkSuHbTE I.e. use void* instead of AVFormatContext*, because it is only used for logging. Signed-off-by: Andreas Rheinhardt --- libavformat/internal.h | 2 +- libavformat/utils.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libavformat/internal.h b/libavformat/internal.h index 4392f17d71..d46368228c 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -659,7 +659,7 @@ int ff_alloc_extradata(AVCodecParameters *par, int size); * @param size size of extradata * @return >= 0 if OK, AVERROR_xxx on error */ -int ff_get_extradata(AVFormatContext *s, AVCodecParameters *par, AVIOContext *pb, int size); +int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size); /** * Copies the whilelists from one context to the other diff --git a/libavformat/utils.c b/libavformat/utils.c index 98113086bd..00c0751195 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -359,7 +359,7 @@ int ff_alloc_extradata(AVCodecParameters *par, int size) return 0; } -int ff_get_extradata(AVFormatContext *s, AVCodecParameters *par, AVIOContext *pb, int size) +int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size) { int ret = ff_alloc_extradata(par, size); if (ret < 0) @@ -368,7 +368,7 @@ int ff_get_extradata(AVFormatContext *s, AVCodecParameters *par, AVIOContext *pb if (ret < 0) { av_freep(&par->extradata); par->extradata_size = 0; - av_log(s, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size); + av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size); return ret; } From patchwork Sat May 7 11:28:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35661 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122386pzb; Sat, 7 May 2022 04:33:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz2OPiGMXl7AvodMxCa2vjoHLbcz80zv3Rh0Gw1JKmrQnr3DOoQKuyJ3nRCsSoDxV2e5F3y X-Received: by 2002:a05:6402:1913:b0:427:ba16:179d with SMTP id e19-20020a056402191300b00427ba16179dmr8121088edz.174.1651923197385; Sat, 07 May 2022 04:33:17 -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 qb34-20020a1709077ea200b006f518a02306si5210149ejc.642.2022.05.07.04.33.17; Sat, 07 May 2022 04:33:17 -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=DtVis6VG; 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 0493768B39A; Sat, 7 May 2022 14:30:30 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073102.outbound.protection.outlook.com [40.92.73.102]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E2CB368B48D for ; Sat, 7 May 2022 14:30:23 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NCXx2kLrwa4ARTfxEedB+yTQSvsnk8oH/ddM4Ehw7O5gOof6e12nKcMUCGb8dGS91EQdBhXNOwKWCF/lEGCRAQ+xgxXPJ5+nPQ6MZNtPSPMBOnFe2yGnYu2ukcV8CIABHUSw90Pq6peD0ZiNdRSTFT0B+zCLP5WJREgZR564dPjfw6m8H/qGitf8neQIGK/HlMjF7Apr04RI6PC2XuYKuJcfVNgQPxQu3RwtInLAF7sa4invvtOmSM0OIquyymzGcB14mtfIDsIFYkoilrMv7azYiGobcj88sS4kp+qJ9+Y1LLzveO9SlZLm1TamDJxpymuGRRYW1XKM+kGvSYcbMQ== 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=Uz9ZGuxgconxbK8WPdCYcMGADefxK0N6Y2Gbsk/27lk=; b=b04PtYxN7cUpKR+CY0nSWiAuTH1PNcEaHz8JDOd+Duk7g/BEXvhhry8BCf4c4lIvn7UndzJfIzX4zQy3wDkK/JuvNbx2ljkG94r/0h/8utUh+VVpWLFhf3+SQcAA06etVyRKYlwfP/T20ov3aGZFyGJuGmydEWujH3lA5a0F5iH6fLVIZg6ixd9yGK60aIFbRhoT5CWd+U63uJg61+D6roaq+2fpcMHoCtVBZNI0IudVjgp9UVcuiZM5iiF6thg2LJGZuiYd2mshw/hMeaMZPhhgt/EF+KnsOGHNQ6WAl7lbeK+DyKKIq4ul0rw/ev+r50XpQiWdjOujGn2fJdsU0Q== 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=Uz9ZGuxgconxbK8WPdCYcMGADefxK0N6Y2Gbsk/27lk=; b=DtVis6VG2IzK35sLy3Com14cxfNLF5g403XFiWbeZxc6G+x2cezwmKNWWTf3SkXrOAUf14/AfkFg3ilz4NusfBQoZfk5szU+E7BBob3YcmL53JeEF34B2M5PyI1MUCzxDAZl+P7THu426egl9ElT8to9y5l9BE1ZoYqkeupWbU+ammsBsjgYgwM/1nZkih9WsA2Yz+3LlqxxVtARNjXBsHvHsnB0ccL8DyGCsEcHaR3pFgmrB0FBBEFk766Cxtrtbp2O2hXFAWjwgctIegESrY44CqpEaQS5o0gkKuAXZhmD6YBbrk+CIKDNUG89anWwHXg9HyY8YWD8YHOhaY4CGw== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:22 +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:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:13 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [Z5INAQ92VHFSQ4+Jb2x2yErF25oY0YSl] 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-26-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f5d6a825-0abd-4942-a74b-08da301cf858 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwK1ZQTqdVaaFuhc/uHE1Ca7SF8R1jQidxrhqUn/5oWanV3u46ZUZiaLR2I4NxutfwRSzmz2HwtmtfNcCRaCuvHUTJsuVmzY87rH+QoCGl7HtItx3qDfruhPjVqb0Z6IQyDgS2uRYU7O7Jt0pug3ptLmrcR8RN40ZGibFlKDnFjInk7nYP9SOqkImXApFuFgMh+qkGWrfwXDRp0tmVSHUJWapH9+UFRa5/LiEgW2IjfgTXpgUFn0pQQYfv75PoEDnQhF9cPZtvYz/Xu2X9edf9DhRyhPDfVWWXnwvEiZMRmJed9brMw36Cm7ypTQeG2KTtFg8a6bUiTpIitTj96zJgWl0wuZXY5DeBdyKYOiwt7jzKQT8iSU6NovqgwOhJg7JOdaI+Ilo/qSZVRQ290XO3youxiTVAkcnUB1mQDfr2oYycU+AK/W48IZFSYUvyEDyiMAjgkjHI0ajjD/Z6v7eCnvujmdgeGyAd3Tn17JDRT+8g1g6IO6BW2PHH2iInDJMJfiB99KrNDTLY1D1rhJGr7POc/LGxw6uq0JRwDyS46Z3k/OG18slKoBRv93S4MaXPUfh363m7WMQCdkh5D7AOv+GJxIhZqlSfq+LTGUvNygGHdahj1auIud/qsimKAwnGGnIICZpzUWZjrFqvtXTO42p85VvxlBCSJYPsCZrYraer989WnnCA0B3wq8zX4aWtaTM75+Wp2gR9ePzpHMR5pdOGGcRVv4aYA/VQ40nwG4M= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ia3TanEZag3BcwpbTVm0fL2YEFTRt2mOFzC9g80PGhgWpgF1hFhIs42qaEb4DE5Jyv4NGeSD3IUYQbqWDqVylJ9jhFA7UUq5p9WBkjYUofaLMI2MOM3MRdbnVA2DEeSLoryNwdb8ymFTNSsOI6lQv+/jstI9bqaSPpGEJFSubfaq1RJ+NF6dCCkR61W5QGSe+YVmO8atXiH5b5JHPA+LO+HyZT7gr00oxP7OGN/BYn7s/rmNJ7V9g3niefNBHXwtm3ny2jN934C9vSSVeom7EIGNI4MuRvDCD6aM/n5Ju2KLAGkJ2Ji/QgT1uhaTRccTy9yCqpV6DzMMJXvWsJmQIBZY7iV/VDyNx/mHLvRtDQ1IIPODITleSJztvgng6aauhcjkMK1ZuXI5pN3Q+S3OSlTB64i1sxU3NLNOZU09aQocwxSUrb6673siOJ960NAmfGm8i/NrPdx4I0SI1/0FRersXX/XGr4DrGGDZV9J7t2buk8+HIA9Ps5FFm2hxVEjDJW3XAGRP9rwMMk3+9QK0hdJQ2f40jm185rqqNfYJBq3KsQ7cgrsp5jVv8XO+ozQFYdX9NHoGeUTPHo485eWfA6sKTA2miU6ohnHHn/ZMdg8V5ZCYOByOEEy7G3oVKgv X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: m6hmvtuGoU/akCM6QyG+Orxl/fcTznsbrYaasvfKQwr2N4V/LCqcZ/mAh2KTO4g+tCc3ilfQCwl/ERgMTtKTckD44/YZ8mZ27Vkdp8XguNzREP+YZgFKHpJnot3wTIAwMzTja99ZaypjuOwZm/MakSNN0DqrHspwGkekluuYGeadWlLMT8ccQi9wvazjLsBgMSTzB5dYxfDsgprr6nQa8QXDYyUblHsvEVRLuzxx8zXs0AJkww4mz38BH7MLSKKWlwJ4YseCrcNt1lMLu9r/8uIU4vWJkxt7FW7OmCGZxaDwi725In2tGGDInW3Xn9qusvhMrwmLbkAQ7CisHb45eF7Huz6VEE+6tfjlmc9FbMefJ+e1PsP1NFj1FJFHy//8qMWcyWE65jVWovvThYfKNKTZHFQmhx5lU9Aqm4XcHuhZrbE3/LiNIgRSdDl+qj7r2cJ+7GypREFPPx1WGRLzT3KEW7LiilJ7DNRuEarFvwAlxtlsQQI0e+FTivCdmDex/TUlldKi/ZBuFpVJpwU4Ul8m3h19kwSDniM+nXKExoI0Z8LekDiV/zn8NTgNojfkdGNET/mS6jVXuoLWx1jvWoDrEFTil2WBjImkglXWaQwNobJjhzsib8GcMfKkl3gUiBWElEsIwxv1iaqmTU5V431sf3jAWvBPSmu4DyIHwaz3BkOL3SMC0LfTG5XLi9Hf6AJxhtB4u5pjxqdqOHKnv1HOw5hejt/lxrxYzDNABg95XILZUSZj53sVSJzJclmcAuXgfsk97nJn2uV9+WA3mty8fwBvtqAqchwbbhFacs0RUAHWNo7FvIfCSUZ2DtEouh5Xsk3/Pyg9EGX0Z/xjx+L7AQ0gcUSVKP6cblvngCEGRkB9wtCmDPAm3C7BxHh56p2sOTdzrIqa32kT3gwmHFT4kFhpMN7hM6MQ0DUlD0KefsvnqW+ZEJ7d5EWyD1FBA89IwiCMMG7ae0v63TeWW2rFL7n/qTdG3j4fy2AbuyH/EVSwI0/DPOYfJjRZcFo08PiKVjp+7lMaVmIVpjWz/oUHq9hLRD/qIaRhEYtPiMjNC4/IPcTKhlHm+Su/uTURc76iiWwpO3/89LnUVwDJJP8lAEjQveBVST7URjuCUIfz5G18NWl/dXGo3oby2ZGAEcTJ3o+cLCZatpNivQi7Z/kMW+0WtBNDe5ENc5WTjRiJ21sZf3Q1JYn2VHdbnKLAuzMYfz2n2y7lN4E8WT839eHC7hNUEW3cIHxv7g0E51FYXTAAerMEJcagkSjwPZ1xT8Svvd3d3NVOIGETIPGENFpjAtx7GNrUmfWq7W+PuwRmGrjSPu65exqHiPKBN9h0NH2Dv8Tkn4RVd6meKTK+ZhuFV/Y2+EiuSfJtSrOGuo4G7y/bqy8k+TriECSA328yClShApJChhlbPT1hILOupq6r5H4GRYXeZC78IuorYctg5+fIV3SUSIZkGIKhCTf2 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5d6a825-0abd-4942-a74b-08da301cf858 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:21.2310 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 27/44] avformat/utils: Move ff_get_extradata to demux_utils.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: CafauJ/uFYFA It is only used by demuxers (although it is hypothetically possible that some day e.g. a protocol might need it, but that is unlikely given that they don't deal with AVCodecParameters). Signed-off-by: Andreas Rheinhardt --- libavformat/aaxdec.c | 1 + libavformat/acm.c | 1 + libavformat/adxdec.c | 1 + libavformat/aiffdec.c | 1 + libavformat/aixdec.c | 1 + libavformat/anm.c | 1 + libavformat/apc.c | 2 +- libavformat/bfi.c | 1 + libavformat/bink.c | 1 + libavformat/cafdec.c | 1 + libavformat/demux.h | 9 +++++++++ libavformat/demux_utils.c | 17 +++++++++++++++++ libavformat/internal.h | 9 --------- libavformat/isom.c | 1 + libavformat/mpc.c | 1 + libavformat/nuv.c | 1 + libavformat/riffdec.c | 1 + libavformat/rl2.c | 1 + libavformat/rsd.c | 1 + libavformat/utils.c | 16 ---------------- libavformat/vc1test.c | 1 + libavformat/westwood_vqa.c | 1 + libavformat/yop.c | 1 + 23 files changed, 45 insertions(+), 26 deletions(-) diff --git a/libavformat/aaxdec.c b/libavformat/aaxdec.c index 0ae4057a53..e47ab3ad73 100644 --- a/libavformat/aaxdec.c +++ b/libavformat/aaxdec.c @@ -22,6 +22,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" typedef struct AAXColumn { diff --git a/libavformat/acm.c b/libavformat/acm.c index c88152d525..28a040330f 100644 --- a/libavformat/acm.c +++ b/libavformat/acm.c @@ -21,6 +21,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "rawdec.h" #include "internal.h" diff --git a/libavformat/adxdec.c b/libavformat/adxdec.c index 31eda4e8b8..982e825426 100644 --- a/libavformat/adxdec.c +++ b/libavformat/adxdec.c @@ -25,6 +25,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #define BLOCK_SIZE 18 diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c index 3634bb4960..a70899d765 100644 --- a/libavformat/aiffdec.c +++ b/libavformat/aiffdec.c @@ -22,6 +22,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/dict.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #include "pcm.h" #include "aiff.h" diff --git a/libavformat/aixdec.c b/libavformat/aixdec.c index 7cee80eb33..f7d8e17acd 100644 --- a/libavformat/aixdec.c +++ b/libavformat/aixdec.c @@ -21,6 +21,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" static int aix_probe(const AVProbeData *p) diff --git a/libavformat/anm.c b/libavformat/anm.c index 1c29bbca29..7feba4ed1e 100644 --- a/libavformat/anm.c +++ b/libavformat/anm.c @@ -26,6 +26,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" typedef struct Page { diff --git a/libavformat/apc.c b/libavformat/apc.c index 1bd5ccf710..b8b18c966c 100644 --- a/libavformat/apc.c +++ b/libavformat/apc.c @@ -23,7 +23,7 @@ #include "libavutil/channel_layout.h" #include "avformat.h" -#include "internal.h" +#include "demux.h" static int apc_probe(const AVProbeData *p) { diff --git a/libavformat/bfi.c b/libavformat/bfi.c index a42b78b8c0..6c449a80eb 100644 --- a/libavformat/bfi.c +++ b/libavformat/bfi.c @@ -29,6 +29,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" typedef struct BFIContext { diff --git a/libavformat/bink.c b/libavformat/bink.c index 4f413bd986..f4079dfb1d 100644 --- a/libavformat/bink.c +++ b/libavformat/bink.c @@ -33,6 +33,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" enum BinkAudFlags { diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c index f6c84e0dae..168f69f20b 100644 --- a/libavformat/cafdec.c +++ b/libavformat/cafdec.c @@ -28,6 +28,7 @@ #include #include "avformat.h" +#include "demux.h" #include "internal.h" #include "isom.h" #include "mov_chan.h" diff --git a/libavformat/demux.h b/libavformat/demux.h index 64adaff07d..209cd813ab 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -217,4 +217,13 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels, */ int ff_generate_avci_extradata(AVStream *st); +/** + * Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end + * which is always set to 0 and fill it from pb. + * + * @param size size of extradata + * @return >= 0 if OK, AVERROR_xxx on error + */ +int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size); + #endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index e42d2f3525..6e894ae28a 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -25,6 +25,7 @@ #include "libavcodec/bytestream.h" #include "libavcodec/packet_internal.h" #include "avformat.h" +#include "avio_internal.h" #include "demux.h" #include "internal.h" @@ -350,3 +351,19 @@ int ff_generate_avci_extradata(AVStream *st) return 0; } + +int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size) +{ + int ret = ff_alloc_extradata(par, size); + if (ret < 0) + return ret; + ret = ffio_read_size(pb, par->extradata, size); + if (ret < 0) { + av_freep(&par->extradata); + par->extradata_size = 0; + av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size); + return ret; + } + + return ret; +} diff --git a/libavformat/internal.h b/libavformat/internal.h index d46368228c..acda79821a 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -652,15 +652,6 @@ int ff_rename(const char *url_src, const char *url_dst, void *logctx); */ int ff_alloc_extradata(AVCodecParameters *par, int size); -/** - * Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end - * which is always set to 0 and fill it from pb. - * - * @param size size of extradata - * @return >= 0 if OK, AVERROR_xxx on error - */ -int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size); - /** * Copies the whilelists from one context to the other */ diff --git a/libavformat/isom.c b/libavformat/isom.c index e6569dfb68..38f2f4f2b1 100644 --- a/libavformat/isom.c +++ b/libavformat/isom.c @@ -22,6 +22,7 @@ */ #include "avformat.h" +#include "demux.h" #include "internal.h" #include "isom.h" #include "libavcodec/mpeg4audio.h" diff --git a/libavformat/mpc.c b/libavformat/mpc.c index f36768b5ff..ef16237ab6 100644 --- a/libavformat/mpc.c +++ b/libavformat/mpc.c @@ -22,6 +22,7 @@ #include "libavutil/channel_layout.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #include "apetag.h" #include "id3v1.h" diff --git a/libavformat/nuv.c b/libavformat/nuv.c index 942ad525d5..12c6c691ee 100644 --- a/libavformat/nuv.c +++ b/libavformat/nuv.c @@ -25,6 +25,7 @@ #include "libavutil/intfloat.h" #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" #include "riff.h" diff --git a/libavformat/riffdec.c b/libavformat/riffdec.c index 8cff699a8c..3946ecb72f 100644 --- a/libavformat/riffdec.c +++ b/libavformat/riffdec.c @@ -26,6 +26,7 @@ #include "libavutil/log.h" #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "riff.h" int ff_get_guid(AVIOContext *s, ff_asf_guid *g) diff --git a/libavformat/rl2.c b/libavformat/rl2.c index b8f0523325..669cb0400b 100644 --- a/libavformat/rl2.c +++ b/libavformat/rl2.c @@ -37,6 +37,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #define EXTRADATA1_SIZE (6 + 256 * 3) ///< video base, clr, palette diff --git a/libavformat/rsd.c b/libavformat/rsd.c index c3b570da22..33aa0e2c0d 100644 --- a/libavformat/rsd.c +++ b/libavformat/rsd.c @@ -22,6 +22,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" #include "avio.h" +#include "demux.h" #include "internal.h" static const AVCodecTag rsd_tags[] = { diff --git a/libavformat/utils.c b/libavformat/utils.c index 00c0751195..06401b767c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -359,22 +359,6 @@ int ff_alloc_extradata(AVCodecParameters *par, int size) return 0; } -int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size) -{ - int ret = ff_alloc_extradata(par, size); - if (ret < 0) - return ret; - ret = ffio_read_size(pb, par->extradata, size); - if (ret < 0) { - av_freep(&par->extradata); - par->extradata_size = 0; - av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size); - return ret; - } - - return ret; -} - AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s) { for (unsigned i = 0; i < ic->nb_programs; i++) { diff --git a/libavformat/vc1test.c b/libavformat/vc1test.c index 90ea729e0b..67edc699c5 100644 --- a/libavformat/vc1test.c +++ b/libavformat/vc1test.c @@ -28,6 +28,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #define VC1_EXTRADATA_SIZE 4 diff --git a/libavformat/westwood_vqa.c b/libavformat/westwood_vqa.c index ed5c1a3416..e3d2e2668c 100644 --- a/libavformat/westwood_vqa.c +++ b/libavformat/westwood_vqa.c @@ -32,6 +32,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" #include "avio_internal.h" +#include "demux.h" #include "internal.h" #define FORM_TAG MKBETAG('F', 'O', 'R', 'M') diff --git a/libavformat/yop.c b/libavformat/yop.c index b0aa0bb64b..8fdad6899b 100644 --- a/libavformat/yop.c +++ b/libavformat/yop.c @@ -25,6 +25,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "demux.h" #include "internal.h" typedef struct yop_dec_context { From patchwork Sat May 7 11:28:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35662 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122454pzb; Sat, 7 May 2022 04:33:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy1MuJL2Y35lELx3sVv+qWR+i6Yb+i7Q7ZJs63M7h23aBl7o3HeqeZ85eTHXC7RtYEvT4ev X-Received: by 2002:a05:6402:d0a:b0:425:d455:452 with SMTP id eb10-20020a0564020d0a00b00425d4550452mr8176023edb.259.1651923207356; Sat, 07 May 2022 04:33:27 -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 gs40-20020a1709072d2800b006e8c13b56e5si6572333ejc.804.2022.05.07.04.33.26; Sat, 07 May 2022 04:33:27 -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=Zcg+JGpm; 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 1891B68B3D5; Sat, 7 May 2022 14:30:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073102.outbound.protection.outlook.com [40.92.73.102]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4196368B3D5 for ; Sat, 7 May 2022 14:30:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bWGZX91WAlsQtl6Sd2+HvZh7YQTU6/pAuLQn9oD5rQ09bOj5jGblYG9fq+l0+dBGo64WfCStjTyu5I6V0nWyzw9SoWLxn4oHQOTdQnjgnMVZ1xTXeVxqT/podWrN7bAEfaYR5MsAufG9Sai9Y2zBL/fdbHcrnRkBAiUCarHabCRJChG2wiq1vy2+chZx9R/7pkBq0LzhMhTXYCsr4cgvl6E3kvqRtMQQ1zRNVpMNvvgqkk5GHUminmChyDXZir8L1kS1qx+6v5fJW9UX8V4+F5sCBfuBce87BBBcU87ipqOgiAW90/rYHrApHMOsPVerCNMju+F3/VMiZkcfsmCo3w== 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=JY8/CHGv8Wzkj9V+EVkPcoHFhpsGI+nKNtek1BLxOXI=; b=NLooF/h6/+JOtaMd3UOeZLk8AnAoMZbQINYXu4zqH9svArRHDYEGXfOXcvL4RaJVqA6L8EAnHMKzt6LIu4gYkzyVvrbnZLAJHzTVfIagejk08WAus0kODzn7ePwVl61EoyY6YrWvHGb3Ih9YIay7OCMo2NCOL3MiAJuM/JXyNZvkuBA+LBhaI3eXi0oZI3whUenHU3w5hxghsAym/1G3Gz1z3kSd3tnvpOA9JMIgLY2ae3O7pUdZ4P8B4CVe7D7TDzQRqOmn8WmLHzlJYEC6jjf1XRAWUy6lUkOkMYQ/rLTK4zqfWY9sWzMyBF8sBa4WvWKBm0Amaiut8mvd6OgKsQ== 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=JY8/CHGv8Wzkj9V+EVkPcoHFhpsGI+nKNtek1BLxOXI=; b=Zcg+JGpmvIEwAYHshWskxZHHhm2SF+LDKhemt/jm+/WyABF9f5Gq1akdrGevaYnfJPYFQKS3+BnbuGZ7s55KjylmTMoa29MGSuK3kInI/r0FIiAcoBECp4YcHT38DFi2CHTwu5H2E+HAzKCYRTUOujq7a/giYlCyfrCg5T4kU1NrRXFpTeWTJ0r+pi1X6z4j6hO/7ccQCO6pRlYM3TLz6H/uzVGfzId2uibwW09+67adpYIEUyQfzPOAQL8O9qGypN2ku5dirdlXknwAtliu+4TqsvqAk+78vpWLgsR/bDxqmExnrb8TqbEvz3ZxS7MOdanmViTy+s1X0sTNtfuvDg== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:27 +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:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:14 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [S58AJ3fUjFShe2oMTU5TpE3DCJLMEb9n] 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-27-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 973457bf-284c-4e95-b62a-08da301cfbcd X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEvwPxT+mwCURHm2qGG32agMMbTKXHPACmNKK8SMRlx6LjXOabTvaPTxqaKhdQfKqZ8/x7FYv71qdcy+eIvh6OlW92lZPSMFaKpbXryeWcYKhw/hf3vsbfYSIKpt4A6Vf6bIvjF2udXFIJK3tm6zwGXZZJ4WClEagqzMXJyJtEmeZ9AGveF138/8G1zO1e6FSUuPr8mfgAiGaeYk76NxqOH3Pp4EyG2P/rSzYQrl0lVQsxFOisQmV/qHAzEd8eerMl+nEQwH1ir/mk8fmYWC67NqJBz20F3mO14VdGKzZ9j2lcUHBWtMTcNN5XG+q6sAThZFuDmm5yGEpt2usKsTFbjNFS1apFMv6MpIE1Ynda0e/kkBidfWboEWfdMDR9R3yFkKCH90xbvjC97M8k07KbsmZ0OIgK29lEUxEF/BlGqDrIh/GWAA/MImJsNLeJFBpLHdfKpXSUtFWLke0r1V3R90/OFeX8qdMO0g+XTeyzBqykrBaLv0YKU+k1WxUoGaUKpFXIT2670+GLeOs07w9vwcXWnGuDtOxiGkjQ9eordPuMN9DDzCzP1vojqPUl3YAafOaJLIoOtB1QKZ4ocEi8dMuLWUZ3uSGovYLziyHmQgJbUD6KJimjTYFlSnLID3ZD+72OqZoPHXxNcDCiFMm4x4h7F3uALFRGg9FqJlKDu48+0dQDNzjoM9hD5MtxPnjOALBII6cLk+o6zkyU2UICy6MlMNj5sn5rLu105mCPtsVQsEKMRjMpic6lVUGvdt3x4juG+2mMr8aydgwpYgB7ax X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6u6rgjCIxM7S5LQ26l3qcoV6bojNxTRiU+O35ltwTlZ0J2OUOWXylnFG5aCznVSxzDooT3L2ZKoO0eOy3JcjRe59hk0hEmw6YqixmT0H9FX6vyS4FYd0wU5bOV+0F6Jckq6WM7niT8dqJhe/KX7mNPIXusBwwhv3aw/b66k2iOohbToX/vC2dJCJBB+RruJvWW1bfOPi9IeRnVgbQJh3pnoKrIGxbzlcDzE+h/PZ3gsZ0wZ1z6o3I7Ds7hdIWev1q9SDIz15yN2v4OtxOKlxycl2WfoajiC1kAaKmG6vUrosRLBedBFmrN5zJkiXKpTtrvWWuC73D/IaCKBKUalaxHx/6o+zjECJBs3AyS5kgw2GbB4CIG1FDLrF3GEoEq4fkgPBKENw5buz0AydEgrHYGiHgRxD+EaDwpujigDCyNLrTCMIUij3FZdSoG0hhbdQ/RJG5o/ypDFX/1WE1SHCXcJGdINAXa9aDs2VhWF6H9PJZj5qn04l8NEh2jHFrPSCkn0JLVkFM46k2eutmCvdApJP8DzgDf3zv3r8oam8So8gpex+PNunkR+RBlUJYkP7yGHsiNtvEOI6voxlfmECOZn6MQNm5+GnWcQ8bFRSR/AeD1yLgLQh+u4INHG/E5gW X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: o6dKaBvzUpIX4CZssrYQk6jGgYjyb/jzAGdT1q1TK8A2Ek59Y7xtj2XwPYf3eThWkS263/c43D0eN/hVqECazivhfQV+8aR+L/1dmK5ecFVcHcDStplaQOb8bLJrxkAsifptpX76DvScaT59z4n08feVp45arRr6zs2w7smUKuforiaGIWYFXVwr8gJKX6jBnBM7h1EXVk9J04oVt5El9L98epC/44EyeY8GrAkusU/u8yxTdKTvEAqiooIsCsa/uTMkR9iRbxjlDWLH9Kp3CJd+81n/MkVL4W5t9lxtYxAbIIxkyny02JfnVBup0opDdbtuhaM1dxvh1YSZH3ttGCrRJ9JrSDHbHd6A9POuOz5WC3ETa1mDbHohH4+8WKlnVQJdV68E1wnh75wYw/N2E2IaWPD3HrUB97Y+FFxwp3+GOqx4JV2lwJnK5N+ZoZdbCOcs9cdc+qxy28Cyp5+XNmLuJg3WUOthEOd92542C/wv+4fsLzeGoUwTjE95fbfrlGY5RmVbKAXcHYJlkrnvTPuakn+UPWEZGD14KvQ1H658bfYygI2FghzComx7y3/fzeJ1YLy1jV8/Fa3b42siKytIDa2JVO+5SNq5d7dbgf7MX1lRSAlJSQhRhBh3KgCMvMZYwBsXrmK19tz8rQa33x2MCHEUqO6mIdhZvos2mfcrco/0HkccgDjd7Uj2BQqQmFOKoX+OWML2ypXk2vo3wh6I6h7taqxrgBxkyt544mzyGZ8T0I5ktLTMSU6Pp0kX14PAWGLXO3COIhAl2K44fAJq8qQ586sX7e8ueVgqY9aJpywhjPhj9S/QvTa83DvkyMjovKHgK6f2jGQXISq9Ttk+mJgGXACu6/h4ZxbHs7VqZSJZgA1imwKLy83kVjx5Y+Y/6zQyg4AtaAcfbmp3vHdHi7Ff7y/RpCR7eHzYuCIShWdYlLYs6GeM07i2Vmy3AqI/lOsIkIQFJj33y5NgqtyYLkuKbVBRCWy616+g/f7PDOuNz1OPMp1GficbmUXQCjeYtCJzBnxsSzsyiTlnaG/L7oj052C7+0If6sUhbmTDrKq3/k/gYn75N1KWR71D6aCwpHv/2B77GD4GG9uXnr1GJ2mm9R7D38KsFHhgdg7qKtxsh5aW0CWHRz6c3rdt7JNRcM+9J1jbsRjkw+lVKumuNlfNc++8it+3y9LSnIzCPpJhheXuci3J7VfvEPAZuMP71NG5zwvC+j/NRoStDLFXRxonIjCfnHpHj92fujRUFpoBx8g08qAnmcXFSKmNFkkgcPO0MzoxiGeD2v1ARrBPHTgj81mSQXhvpYTtjo7i9CiZh3vficlMcHZuqTccvQkfQ4WCqyhruXrN06CURBYFFtO+BR4tOa8SPO20OwN1DkYQfgM5eTfswija9EWP43a/tyyiYnQIugMtRVDNiqM3mz55GlYW5Fd1WXFXncMWu/Ae4e2FLTT0ARudga2g X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 973457bf-284c-4e95-b62a-08da301cfbcd 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:27.0001 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 28/44] avformat/utils: Move freeing AVFormatContext to a new file 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: jqZX4mxjzNBr This file will contain the AVFormatContext-specific parts that are used by both demuxers and muxers. Signed-off-by: Andreas Rheinhardt --- libavformat/Makefile | 1 + libavformat/avformat.c | 130 +++++++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 104 --------------------------------- 3 files changed, 131 insertions(+), 104 deletions(-) create mode 100644 libavformat/avformat.c diff --git a/libavformat/Makefile b/libavformat/Makefile index a03fd7f256..7fd6d099b9 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -7,6 +7,7 @@ HEADERS = avformat.h \ version_major.h \ OBJS = allformats.o \ + avformat.o \ avio.o \ aviobuf.o \ demux.o \ diff --git a/libavformat/avformat.c b/libavformat/avformat.c new file mode 100644 index 0000000000..88acae018e --- /dev/null +++ b/libavformat/avformat.c @@ -0,0 +1,130 @@ +/* + * Various functions used by both muxers and demuxers + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/avassert.h" +#include "libavutil/mem.h" +#include "libavutil/opt.h" +#include "libavcodec/avcodec.h" +#include "libavcodec/bsf.h" +#include "libavcodec/packet_internal.h" +#include "avformat.h" +#include "demux.h" +#include "internal.h" + +void ff_free_stream(AVStream **pst) +{ + AVStream *st = *pst; + FFStream *const sti = ffstream(st); + + if (!st) + return; + + for (int i = 0; i < st->nb_side_data; i++) + av_freep(&st->side_data[i].data); + av_freep(&st->side_data); + + if (st->attached_pic.data) + av_packet_unref(&st->attached_pic); + + av_parser_close(sti->parser); + avcodec_free_context(&sti->avctx); + av_bsf_free(&sti->bsfc); + av_freep(&sti->priv_pts); + av_freep(&sti->index_entries); + av_freep(&sti->probe_data.buf); + + av_bsf_free(&sti->extract_extradata.bsf); + + if (sti->info) { + av_freep(&sti->info->duration_error); + av_freep(&sti->info); + } + + av_dict_free(&st->metadata); + avcodec_parameters_free(&st->codecpar); + av_freep(&st->priv_data); + + av_freep(pst); +} + +void ff_remove_stream(AVFormatContext *s, AVStream *st) +{ + av_assert0(s->nb_streams>0); + av_assert0(s->streams[ s->nb_streams - 1 ] == st); + + ff_free_stream(&s->streams[ --s->nb_streams ]); +} + +/* XXX: suppress the packet queue */ +void ff_flush_packet_queue(AVFormatContext *s) +{ + FFFormatContext *const si = ffformatcontext(s); + avpriv_packet_list_free(&si->parse_queue); + avpriv_packet_list_free(&si->packet_buffer); + avpriv_packet_list_free(&si->raw_packet_buffer); + + si->raw_packet_buffer_size = 0; +} + +void avformat_free_context(AVFormatContext *s) +{ + FFFormatContext *si; + + if (!s) + return; + si = ffformatcontext(s); + + if (s->oformat && s->oformat->deinit && si->initialized) + s->oformat->deinit(s); + + av_opt_free(s); + if (s->iformat && s->iformat->priv_class && s->priv_data) + av_opt_free(s->priv_data); + if (s->oformat && s->oformat->priv_class && s->priv_data) + av_opt_free(s->priv_data); + + for (unsigned i = 0; i < s->nb_streams; i++) + ff_free_stream(&s->streams[i]); + s->nb_streams = 0; + + for (unsigned i = 0; i < s->nb_programs; i++) { + av_dict_free(&s->programs[i]->metadata); + av_freep(&s->programs[i]->stream_index); + av_freep(&s->programs[i]); + } + s->nb_programs = 0; + + av_freep(&s->programs); + av_freep(&s->priv_data); + while (s->nb_chapters--) { + av_dict_free(&s->chapters[s->nb_chapters]->metadata); + av_freep(&s->chapters[s->nb_chapters]); + } + av_freep(&s->chapters); + av_dict_free(&s->metadata); + av_dict_free(&si->id3v2_meta); + av_packet_free(&si->pkt); + av_packet_free(&si->parse_pkt); + av_freep(&s->streams); + ff_flush_packet_queue(s); + av_freep(&s->url); + av_free(s); +} diff --git a/libavformat/utils.c b/libavformat/utils.c index 06401b767c..b3806fe87b 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -29,18 +29,14 @@ #include "libavutil/dict.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" -#include "libavutil/opt.h" #include "libavutil/pixfmt.h" #include "libavutil/thread.h" #include "libavutil/time.h" -#include "libavcodec/bsf.h" #include "libavcodec/internal.h" -#include "libavcodec/packet_internal.h" #include "avformat.h" #include "avio_internal.h" -#include "demux.h" #include "internal.h" #if CONFIG_NETWORK #include "network.h" @@ -188,17 +184,6 @@ int ff_is_intra_only(enum AVCodecID id) return 1; } -/* XXX: suppress the packet queue */ -void ff_flush_packet_queue(AVFormatContext *s) -{ - FFFormatContext *const si = ffformatcontext(s); - avpriv_packet_list_free(&si->parse_queue); - avpriv_packet_list_free(&si->packet_buffer); - avpriv_packet_list_free(&si->raw_packet_buffer); - - si->raw_packet_buffer_size = 0; -} - int av_find_default_stream_index(AVFormatContext *s) { int best_stream = 0; @@ -472,95 +457,6 @@ int ff_stream_side_data_copy(AVStream *dst, const AVStream *src) return 0; } -void ff_free_stream(AVStream **pst) -{ - AVStream *st = *pst; - FFStream *const sti = ffstream(st); - - if (!st) - return; - - for (int i = 0; i < st->nb_side_data; i++) - av_freep(&st->side_data[i].data); - av_freep(&st->side_data); - - if (st->attached_pic.data) - av_packet_unref(&st->attached_pic); - - av_parser_close(sti->parser); - avcodec_free_context(&sti->avctx); - av_bsf_free(&sti->bsfc); - av_freep(&sti->priv_pts); - av_freep(&sti->index_entries); - av_freep(&sti->probe_data.buf); - - av_bsf_free(&sti->extract_extradata.bsf); - - if (sti->info) { - av_freep(&sti->info->duration_error); - av_freep(&sti->info); - } - - av_dict_free(&st->metadata); - avcodec_parameters_free(&st->codecpar); - av_freep(&st->priv_data); - - av_freep(pst); -} - -void ff_remove_stream(AVFormatContext *s, AVStream *st) -{ - av_assert0(s->nb_streams>0); - av_assert0(s->streams[ s->nb_streams - 1 ] == st); - - ff_free_stream(&s->streams[ --s->nb_streams ]); -} - -void avformat_free_context(AVFormatContext *s) -{ - FFFormatContext *si; - - if (!s) - return; - si = ffformatcontext(s); - - if (s->oformat && s->oformat->deinit && si->initialized) - s->oformat->deinit(s); - - av_opt_free(s); - if (s->iformat && s->iformat->priv_class && s->priv_data) - av_opt_free(s->priv_data); - if (s->oformat && s->oformat->priv_class && s->priv_data) - av_opt_free(s->priv_data); - - for (unsigned i = 0; i < s->nb_streams; i++) - ff_free_stream(&s->streams[i]); - s->nb_streams = 0; - - for (unsigned i = 0; i < s->nb_programs; i++) { - av_dict_free(&s->programs[i]->metadata); - av_freep(&s->programs[i]->stream_index); - av_freep(&s->programs[i]); - } - s->nb_programs = 0; - - av_freep(&s->programs); - av_freep(&s->priv_data); - while (s->nb_chapters--) { - av_dict_free(&s->chapters[s->nb_chapters]->metadata); - av_freep(&s->chapters[s->nb_chapters]); - } - av_freep(&s->chapters); - av_dict_free(&s->metadata); - av_dict_free(&si->id3v2_meta); - av_packet_free(&si->pkt); - av_packet_free(&si->parse_pkt); - av_freep(&s->streams); - ff_flush_packet_queue(s); - av_freep(&s->url); - av_free(s); -} - AVProgram *av_new_program(AVFormatContext *ac, int id) { AVProgram *program = NULL; From patchwork Sat May 7 11:28:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35663 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122519pzb; Sat, 7 May 2022 04:33:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz3ECrdz5nwVobMIMJ2fjaJkCMvtsT8mnoVXTGVTSyzHQ69fCnKPs2+1Ufoy5mxv5Q2DR43 X-Received: by 2002:a05:6402:1394:b0:427:e7a5:b8d0 with SMTP id b20-20020a056402139400b00427e7a5b8d0mr8140937edv.9.1651923218193; Sat, 07 May 2022 04:33:38 -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 y6-20020a50e606000000b00425e1de3c34si7063264edm.308.2022.05.07.04.33.37; Sat, 07 May 2022 04:33:38 -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="l7/ZWEL9"; 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 0C8BD68B4AA; Sat, 7 May 2022 14:30:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073102.outbound.protection.outlook.com [40.92.73.102]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 80B1068B498 for ; Sat, 7 May 2022 14:30:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bp+AU90sZdD1+7rFz8IiLfpmJL10j8Zirhzy9colcX3uhEraCpnWchHBkpv8CeMqkTbHeJChhJOMYOw993QFbT5ekF6uIC1NR8roHnS9tlGa5RcS1G2b5KqtfLPZtTPWcRfvOUQ4NeTiUbQw4FjfksgcofzxwBk5Bwc5C2d6e9WvkpzjfoMT4ZTqLQ/3uw0FRNgtDP8kApn5b7vWm1Om2TKxcqxA9GQqOugZsgA+6YZuhCVuh8DMbW7imrF6k6PBRMQyN2sxpJ1Gfur0kFgGcnEoCi1qkmFPkgxeVYIMvT/OEApKdQ+xU8uuo/jEualwnF9tl64uZ6W92CeU7r8VSQ== 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=SyNXRYV1SVsAkiEXFQF05uusv5AhU0teeYtp8jKu+8A=; b=Zt1ek+16Duuyg2YE2BHbgvCSnsD4uqXtqZ6FyfcvTeM8zIU/gkMw/ZKGkZeg83dEofaHJV3yfWJtysllJd+b3eBQdIVKkkgOYoEZx8PeAggfR/DuHczUkRdQaJIcI/yf1fxXu4Asr0d1UfFmXYdmq47pULQaGQrwpCIkANZhOpXU5t6eW7oegcLgSXxxV9ZfdwSADjqOzCMyvd/OGbWVLIv+80KGQP1rV929ocsC1DSXjAdWsEuLkKxzCWRYnuFFEI+tuS3VqrpQr4pIQ3NjBgtm16Sy372UcSvALXoUzxiNegb4/zSN7OH5+485fece59Lmv6JbrSKN9QpqCOcG8w== 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=SyNXRYV1SVsAkiEXFQF05uusv5AhU0teeYtp8jKu+8A=; b=l7/ZWEL9UP75qiH7jTTAZl0kbkvArjFarmeoeoI5aEZMny6W8al4BigGSgeNp1rhaGhAUsPzAEH/ZDhYpSYEJ5mq4BDdNC4o6xclN7afNovL4fJ5uWUwO431/fCBqLQPJYqUtXG5OiaP32cQUxssf0Kt+mf/8IXM3bj1WeGyoGUyXolqGGoMkulN4Nq3g3rYt+SN/1CZaCNELPrx9AdkgIuEPt+qBKQeNy17A8pDNKojapPyqSP9NjWUQXnV1b1dYENOOO5rMYNxP5SN8CtZrwuPz+cuOIEgmFh4oB6JyBhARvSSzk0CMdqZv6Fz5CSADTYy1sn8Bla0DCuWxswETQ== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:28 +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:28 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:15 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [uiqp+4UnHiNuZ3gr3Ssx1dRvyfXjNnGS] 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-28-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5fd51ac0-d0b3-4c9e-ff2d-08da301cfccc X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8WIYYNqwA9x7aT8m3jGyw/O2YinY7NHBNrmZMwiB/gTfYdnnmjRFhbq8ML8ULzYk2dQq2QTTMCMu7mU57kUJ2VH3xtG8FqADNQ4cO4xqIP6O7jQj9Wjw71PLai3MUmlYCuGvlbUfzR9vHNChXrvHYxIjG9f9n7yb+ZUD+5KreTchRD9SYjXMM5Lwp3LejNUA63Kqu7mRzSmVb/1eBHhcQM6rEzdnRHdguzV/yZxAQfOFoaznwwdY8yKLqHRPs+jKC6Wj75j2niPim3Z+nEWG+Rf5YEdSjeK0Y8dTOKoTOHc90amDdhR72o52UubiybcHps4TcX+WRWNbMf6l5GOhvaXzvwfDZi35ZmZSIUAOTgsbE48uOqV/SmIo6mSI2V9rhTWYHvyyx9Y8bqB84CICSf3ksqcwuF+NhTD3/BvOXX8hPTCAqGkPsmZPmwiPIEc4gQTQ/gk3CVWlG+oTteXJ5MVz4sv8N1Rn+zwKKcH93nZNPuStnMpvtI+Y0syu/rS+5qzo+bvePPI2tlveER+JT9brKniUZNWNPUdDavNlon1suIebVK4UM/PIl30odRDCgQMNdQ7dWodS0fXUKBj5UhXvNZ1ES6SKL0gpJmS5vok8QihOWcjROEaQxGgARTLaRobiYJckKgMrUIrCC6tpBE83SQk15H66Xk61zD6Dnufx7WpiYQmKB8yJODAdMxAZstS3xCUey05Q= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: t5pSP8GYxSRCc+0lon9EX2FFFUgBlLVmkYcUCU5dQEitOi3yZlZXWR3acikMrCW3JGMx3o3adyMRzfSlfqGWXDn8X0t1W/06XZZcMBY1JKPozVdgpvu5CCrLGIKOzlhwOyBpc+3wqR9dPdKMXHUIItlEhRGhEId7OLy/pn8Z7c17cZeriJTi+XPKm1kldqj7cwposjCezL5ljbFA8IRMVVNmUNixDZzmMIrna/4/2TfYI9BdwQP3o3/j6RcmogD1RSH8/fuqX3BXz2Pa3IcuNOJjGiPlTQPP8nLEAHsDdMQ1B3/3YiuRu8MXiVr7mEsG4a7WMLlmfe8BqWyvJoAG9lkqVxpnsJ1IH/hpGZ4GO4lZw1Cr8/pwHMyegLeY9NvlTKkYnyq76fDF+fbEUaOJ2n08NSMdMAxSm2yEd0D0Ili3C5/AYH8b23Hh+jpXXQWrJi3m7UAAhBneNdKA/hNJm9SL9jn2tJEZOlES8zbNrDzkKbMofJ+QSiClsHHg4m0qnBaUWTC4F7M/+8BzURLvUwjasZrey0GisTc2ujD3DQQEG+q99VsuiqUdAIWo8gbVTJKyqDNHpnS6NqqSbQ1/7G07Fp+kcXfXXWVyshX1VceLfgP7RIuEYwe9ijAEUUj1 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +CHPr0n5LNQy8HHlxNEnWno5fGJySnQvLxps8Xji/bpQZh3ztAY6FRJM62j3w9h6D6eDSji4l/IkigrUjY0F2ee8moIbbRhJTK9eohLX9+Yi7E5RmECRCUsSIuG+vUeJhIbLyvcxNwzvrCAvSdqZA/3c6vuK4wEhAX+D2NmUec1RKt6vqitGkNoxMnZ2ZtpUZnlWSV/3Vq67+DExXel39xNSf0lQNPjPkaqHxpwF+Lxg5dHwVLjgIV8hpKnKRSvhIunJztHgL97PUyfAR0pg6+pmKyrq/6jihApD6916jPOfFj9HsrVz7OPSglOEdlYSkGXrxB1IYhWtzcyvG0sWxN4KTOYTylcc87DLB7URTVUIxvJ0jgHBdIO9WNN/DpLjJ9zkFC6kIumK5pES6tEZ6DsgXLLslAzWjq+ZiwrQ4mK8zsg8onHJgi1fP4FQx9ta3A7wmRfU6esoIplPPGIeYXc+Nqj458ylK56aIyJPMOdLjAH7TgzL3ZjWXvFz40nM3ATdbOLcdmYjrQ2lgmC5jPgiYFvNAtY8wWqPwgWFSZ8TK76cbMLTZH4WEBDZf/mpMnMyb7GzFg0qdxpxblRGUyUWbktel9a05YSsnL9jLMHNiwaWQYiSMihjNTIj22vMB84Z38nie6qphquj2k4UbqCu3d1f7/EZa+k2sjBc8f8BnYthHvyLNQ6/VnGv2lt8pP/VwapuS4//2BmeM4dFeyhlMPQV6ZVcbk5CPDY616cqb7Pwd9HviVaPGWa85MiYTU1SyBHLnrcryZviJQ/ZFKR1y8QLSRsepBSjbeOOay0zOt6AsPUQM556XibeKkfRG0wof7B9yuUlY1ivmZHQQd9W5JfRN1j622lra37G5Qn5fYXEZ9VlWn1ftGEitBV5fvDyH0B/eiv+3WGKv222h0FSMgjWhkxO0Iup4ZTwMYcs4r/Gyaj9W/h8iztByI4F5Ho7+XxPpWUBvbGy3GYTcAVXiRybrDvxwgfoda4ly6N/fiw70Qo/NC8PhHpv/OimLvUk3PapJqDXnCF+FYYk2C3Ik5s2j+UxcsSrF4//bLvNmT2W2wqqY7KVTgMWgsWBQbWEBrV+nhLt/Fa4X0ZUXuycq3A3g54cPqXH2Q/DuIZn0I+xABuU3I8FlLEMtU+mkyMA7AC8UFsahNZB7KZei+exe4vxkgvATYunwx12tVM0uLSaSTwIsGWpCi0I201ev+mQ0xmTD4vg3JEJQr/qYgeFoMFRlfbiA0db/vVIvx6hqaJs7r3Qq4rvowOB3+khSsb8GtCUwOvKBVXAonUiiWTgvDYv3745DfeSZ8sI0wGu7ib+LUo+id5zrBnSnxDH6lpwT5ObyTFv2Hh0rEIiYX2x0jd4cht06awVAv0JLIxQ2EBvmWgsmqEmbqz8UOjLAoUqNQpKfsx+hOQ0aQ/el9WyneNAcytNj/5Qe77n+zWuZkYOevcSb8fLSwr5fnp6 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5fd51ac0-d0b3-4c9e-ff2d-08da301cfccc 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:28.7045 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 29/44] avformat/utils: Move av_stream_*_side_data API 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: MqOTgK8/oAz7 Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 68 ++++++++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 68 ------------------------------------------ 2 files changed, 68 insertions(+), 68 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 88acae018e..baad2acde1 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -128,3 +128,71 @@ void avformat_free_context(AVFormatContext *s) av_freep(&s->url); av_free(s); } + +uint8_t *av_stream_get_side_data(const AVStream *st, + enum AVPacketSideDataType type, size_t *size) +{ + for (int i = 0; i < st->nb_side_data; i++) { + if (st->side_data[i].type == type) { + if (size) + *size = st->side_data[i].size; + return st->side_data[i].data; + } + } + if (size) + *size = 0; + return NULL; +} + +int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type, + uint8_t *data, size_t size) +{ + AVPacketSideData *sd, *tmp; + + for (int i = 0; i < st->nb_side_data; i++) { + sd = &st->side_data[i]; + + if (sd->type == type) { + av_freep(&sd->data); + sd->data = data; + sd->size = size; + return 0; + } + } + + if (st->nb_side_data + 1U > FFMIN(INT_MAX, SIZE_MAX / sizeof(*tmp))) + return AVERROR(ERANGE); + + tmp = av_realloc_array(st->side_data, st->nb_side_data + 1, sizeof(*tmp)); + if (!tmp) { + return AVERROR(ENOMEM); + } + + st->side_data = tmp; + st->nb_side_data++; + + sd = &st->side_data[st->nb_side_data - 1]; + sd->type = type; + sd->data = data; + sd->size = size; + + return 0; +} + +uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type, + size_t size) +{ + int ret; + uint8_t *data = av_malloc(size); + + if (!data) + return NULL; + + ret = av_stream_add_side_data(st, type, data, size); + if (ret < 0) { + av_freep(&data); + return NULL; + } + + return data; +} diff --git a/libavformat/utils.c b/libavformat/utils.c index b3806fe87b..e7788f3f40 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1091,74 +1091,6 @@ error: return ret; } -uint8_t *av_stream_get_side_data(const AVStream *st, - enum AVPacketSideDataType type, size_t *size) -{ - for (int i = 0; i < st->nb_side_data; i++) { - if (st->side_data[i].type == type) { - if (size) - *size = st->side_data[i].size; - return st->side_data[i].data; - } - } - if (size) - *size = 0; - return NULL; -} - -int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type, - uint8_t *data, size_t size) -{ - AVPacketSideData *sd, *tmp; - - for (int i = 0; i < st->nb_side_data; i++) { - sd = &st->side_data[i]; - - if (sd->type == type) { - av_freep(&sd->data); - sd->data = data; - sd->size = size; - return 0; - } - } - - if (st->nb_side_data + 1U > FFMIN(INT_MAX, SIZE_MAX / sizeof(*tmp))) - return AVERROR(ERANGE); - - tmp = av_realloc_array(st->side_data, st->nb_side_data + 1, sizeof(*tmp)); - if (!tmp) { - return AVERROR(ENOMEM); - } - - st->side_data = tmp; - st->nb_side_data++; - - sd = &st->side_data[st->nb_side_data - 1]; - sd->type = type; - sd->data = data; - sd->size = size; - - return 0; -} - -uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type, - size_t size) -{ - int ret; - uint8_t *data = av_malloc(size); - - if (!data) - return NULL; - - ret = av_stream_add_side_data(st, type, data, size); - if (ret < 0) { - av_freep(&data); - return NULL; - } - - return data; -} - void ff_format_io_close_default(AVFormatContext *s, AVIOContext *pb) { avio_close(pb); From patchwork Sat May 7 11:28:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35636 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122578pzb; Sat, 7 May 2022 04:33:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzsjl720sYdHiQ/EWTAkujvsdn3D4hHRFMIyTRvEyPYtvfsDGlf58770GrDXmAhXrR0JtLp X-Received: by 2002:a05:6402:50d2:b0:428:b39:5c08 with SMTP id h18-20020a05640250d200b004280b395c08mr8200581edb.146.1651923229108; Sat, 07 May 2022 04:33:49 -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 gz12-20020a170906f2cc00b006e89020bc79si7096314ejb.937.2022.05.07.04.33.48; Sat, 07 May 2022 04:33:49 -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=NQ3lcphC; 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 0EEB768B48D; Sat, 7 May 2022 14:30:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073042.outbound.protection.outlook.com [40.92.73.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 65CE768B3E7 for ; Sat, 7 May 2022 14:30:31 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eXW6scgi4j0OCGKfRup/PW6PoyS/MRYfbfEDQA3QkgwbuceY7FkI8newCHw6dZM/XssS1TNJq5f/yWLhs3wzV9JTQO3xPyl7hx7NfVEiPUQJ2g2e+yNAKOpt+S6JlzU7C5X5m+K3A/9MlzJYcC41rFe5ctwnLCxtGZ2haS/JHewVbI02QlSR/eLi7RieMOR+UBQK/jRl4H+6UA2OVDS416xYe1S0wCoDhghDHjkv67+Iba/R9iMpvPivvbxElXBb3MGT3/6pdTedSxJyULyNNUqUYFcD9EW2qjPbkrbqrE9HBX92LUH3H3PVG0zjMtJVLohXrcwtnAKVayRPrcMBmA== 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=HlZITpRKrayjjFIK/LXih78uiC167x7I+TQ6gjQRNfA=; b=LfSH+7Er5a/6U+SmQbPpklX1RpyD745ySoaLtbJ5F3s/BvRANmGz8n9cSBLerO+/Rh1tz9elwTIb0zqktuAdMXcRbFGskU4aX8MOyhENEBcZNWP6ba0fND7OR/I9YxJCmDvYCiCMNE0/yWXuia9uLsZF3utHhe7pnnxlgKsbo1jfOpANCsOdSYQxlQ9pJTnFaZlJl4zeNMD6S+cEm4pmKuD41VmnK9lz36LWt9cSW5NHuM/j1OziS/6Hpr4Ok//mmV3PWMSj4Rr2J37Av/tcqEZorVfYRqR9K3dUiReo1Lc1lRMnk1pioMYJS+gk7qtmQsAd+xwFecyuQ4CDwbXw4w== 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=HlZITpRKrayjjFIK/LXih78uiC167x7I+TQ6gjQRNfA=; b=NQ3lcphCf4ccA5r+zh4tIjCbxzwQQvfkjgSKh1lqXG/2djqzftqUJvS8hFpRTW8A4X8kfpAhEWSzqw8lzys/2PwaXrKGCTtXmbWbLVLmy0f8LyzT4h2fLsa7pxSdPGyPodLfKJ/EvfWdt2z8APRXsfIqQWkV2P6pDFhhYLbAuSWny9aOASiCpxifz+IK/2yBLUn4ORK16zrAmeB4ldGwvPu8Q2rGOfLmYBfqUf1uYb6q8GaC1hmyUVXS3k4T5OEfkTFneuB8Q9VUZa1z9G8Mw1lyckUseMS/ESYx1juIBJvYi9Lou6wY+ew3Es0fPPKewL5wwTXAa51KneaJd8INCw== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:29 +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:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:16 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [Z5N+JMSnnjDxNdktjRNOLA7b9p7rr1+d] 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-29-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 26b4bb61-915e-439e-8e5a-08da301cfd65 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8tD/ejvgItuUm7ostWEp2CZ+kOzZazytaJ08dSN1t2gXrJrw2KvY5vevXYwkXWLLd4+I4g876OP+oQogjg67SFh8mCGMHbuqSVjHEnPevpAByUpJrdIxOgbFwotmgmfOBSZNQiItZjWHtA45yrpuWcxNWjKEM1uovnvyXZqJaQOFTO7mLHICdaHnCwD+zDKdWKRr9bKmYmnfKcW/hsk1O6L9Cz098bdQ2HmuzIO+xKJ6WdtfRJKuqKjGWv7ZVBP/IDfxCKSgabzLSsiJ1zGPg+/+GlPW6KiAhRfFtl7wM0wc68do6eztoqM4MyQd4f9uf6aTRsBL6C8d/0imuQ0uMGHTguJxz2mbDIoRszNHPibmjsJWMK7i6oIhYjumB3TU6rgJenD8e2hsOe1nv8M39D3u8OgyNSniT42HWqA3j5irTolL9BHdfbfJsH4nOTNQYecButHdWoatlmLURDk1UMUoucZjWEFO7oRj4fqlQG2eMi6AHpb31MSEccDPj8NFFk+3D+vs4ttaRVoLfdhrGqvjaqznL2AiB7mAZXl9+CGzgSuRpSO/gNMjeZFBCsWyjgU+fVfgK2JGCBzdgI0KMY9zDcHiqbp33XC2AF7YVXARhYdRgwskcn6vdu1uCt6H06RfQjxcIdT+y01KBdUNt4htzoNxC2L2N6FEQvFcjFyLzxmk9PNByJjW6fFr9WtGjmFf6yvwH/Ec= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YTPPh/2RIHKOuW3lKqJ6qPlCyVvRSW1lWqjpOJwjFqkIX8CH04UOQULxTBTFxXwXS6ule/1eabeoiQw1jBIDO6xfp7M2JiaceFSrNY57VljoURW7sisAvjzCgMrW0axxk50QAoV8gl38jWN8as1yYOSA1SW/hM16KUi29Ij8UwrF2a1HafUYOcRGEK161f0jlP4DyZ9s3F37gpKIcdkpquF1zZxh6S12UN2uw335Oa2cfbVdIZ/v+b0psi9MZAZ3ME5/a1Pcuvn++mEUJwTIBJo7wtTeQ5AH7OqjoPRCNPzqVJX5lot2RE7FFkqdD4m/cAlBGW1aFLuewY2SOAXvxHMmbg9tG5ZPggGmFitCpdpNU/UO20JrQDkENcT7nsVPBQM57ykumMRfT7clZTfVOzI+WsjvZkC6vhnFW1P+pTdHAN0gANVdn81gI2C0Fcw7zu6sOVEQTry+P4SvLsJqVvjY/7c2DCVKVTHXJS2vrbZJdxB1iCKSGpztEv9sGX1CPdExQaq0fxw3xYpyF5MKFFSPEJCig9jWTVd1XP+is7TIINa6ugxIQ3oL4QVwGzTSfMfI7q6wIi6WTpunvYjf9kfKAmZ+8LQcRXp2omPhL2DREscOKY7q69Di/sQKyUny X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: H8EKMR+1Hn4ekeXrkMuNx9jI5AhixoXg2zzBTgM3qUCAe3mDc30U+hMKqXnOZI9zqjHNaWAxSmyO/mW/n03bu4tlAPY5Gf1Ng1Z32Zu83PiraT1gpQmCpcho4NffnzepyzAISfhMAGU/8e+tZI2Z1VDkOhFyNeTbHexgx2aaTOUHl6BbKuDdFBb0kAhv8MhWLNDwofkMXgnNxDLIDVN1Ad4lCWcXWgeqanEAwieAeNzJSjopeAya+XDo0ovu7peYSyfUeLp9Bpku63L0Y+/GG2ajI1K5dXeQGoHp32jTYk4YraAXm1y53li55Nex9fCOYTcf1Gt8t/+JMQGdvPlpprl5bosXFhlQBvkSFq/dN3v07Q0HJpGB6w9hBeaA/6S32i0uhTgalwTDNcZTFZxp0496G5yHMTjs1XabZI1bl4jfNcBnbhjd3plkS5/yXpQAHvXfr82/eSI8EJyaJIVjRDGfHBeRWBrlajTD6yQEZvCynvmlmu/W13WzhJUXi2Ei1vCKV432ZWgrAcOiRReJ0I6RHuUurZ3KkWFln55Hw3TziUBeCXEMo4ZZWUzKAF8BTw4mOFMOT/HjSRL4bRQ5J6cmWJEY+cQTrKmHiS9ak4rja+VyDEVAJgP3PmUgtc5L2mY8nxFUUz1UsjBa47XEocaMfX03RCrD39BhnEIXAdgkCE87cadOJAqjlwrE2HlNuWDSpIsrMV78p5P1P5cds/Gt7/k8V3scTzt/wT+bBmIZm6KZuSeDz4SNsj8QQA+yM8/C4wwRaaZ2FsbUrwhKC5eUtVu98RhMMuHarmESf2LuZ9zk9ZlBBtP/PU///m1+yEauML3KC8GY0ZopUxnpR7yYHt+vVEYXV8yWygpbQ07qeGCI9TL9dusDaGGJzl+jy0tWHiUmZMKHV0kkLNfVDIVqz4UeyRuDz2uHR+Q6m0lnosgV9vOIV7/XXs6oz93kTc4kktS4+WxgRMkX9DSUuqFEr09DTm3iOkNiJaSo7tUtc6klyCN/2ldr1xqkcvUniCEgs9RCXF/gFQlVJXN8Rb3UGGJzwRzOhEzeCdYDM/vl9VzuQvUV17er8GLHdXXelAlZVtC7b7ioDlSiJjPPz05JYSXz2jyjTPqPcdLNmqO2P3Y3XmNGWzF8VwnNhW+0ptEJx0CTLGVhQV4sPZuW5JkG35oIwpHpLdezbdYvODwu6okHHJIphmqfvgetx4dFsHqA7eIuo2v3xGvtmOL+Ok2R7nIbcLNYs/FazMZsIyy3gzCkQp34/FxNweCjmv3KtCzTsKmi+Rr9BCUZjSi39a7PdmYJ44uu3I3bnEdOM4BqC76NcIjbaYfaFTDRjOv4x4SbM+BgDOpWtHkPs7kI179fVQexoq1D/M39GsK7uoTL8KkHEsX2HsC0imU4JmT9COurBzacTMTMchCx30q/pgmDCMX2uJzkWCkIuitxFaYB9FKIQ0aJSijB67gx/Dsa X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26b4bb61-915e-439e-8e5a-08da301cfd65 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:29.7030 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 30/44] avformat/utils: Move adding AVProgram 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: JWK9xXmupqm5 Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 58 ++++++++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 58 ------------------------------------------ 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index baad2acde1..0b86ff025c 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -196,3 +196,61 @@ uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type, return data; } + +AVProgram *av_new_program(AVFormatContext *ac, int id) +{ + AVProgram *program = NULL; + int ret; + + av_log(ac, AV_LOG_TRACE, "new_program: id=0x%04x\n", id); + + for (unsigned i = 0; i < ac->nb_programs; i++) + if (ac->programs[i]->id == id) + program = ac->programs[i]; + + if (!program) { + program = av_mallocz(sizeof(*program)); + if (!program) + return NULL; + ret = av_dynarray_add_nofree(&ac->programs, &ac->nb_programs, program); + if (ret < 0) { + av_free(program); + return NULL; + } + program->discard = AVDISCARD_NONE; + program->pmt_version = -1; + program->id = id; + program->pts_wrap_reference = AV_NOPTS_VALUE; + program->pts_wrap_behavior = AV_PTS_WRAP_IGNORE; + program->start_time = + program->end_time = AV_NOPTS_VALUE; + } + return program; +} + +void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned idx) +{ + AVProgram *program = NULL; + void *tmp; + + if (idx >= ac->nb_streams) { + av_log(ac, AV_LOG_ERROR, "stream index %d is not valid\n", idx); + return; + } + + for (unsigned i = 0; i < ac->nb_programs; i++) { + if (ac->programs[i]->id != progid) + continue; + program = ac->programs[i]; + for (unsigned j = 0; j < program->nb_stream_indexes; j++) + if (program->stream_index[j] == idx) + return; + + tmp = av_realloc_array(program->stream_index, program->nb_stream_indexes+1, sizeof(unsigned int)); + if (!tmp) + return; + program->stream_index = tmp; + program->stream_index[program->nb_stream_indexes++] = idx; + return; + } +} diff --git a/libavformat/utils.c b/libavformat/utils.c index e7788f3f40..3267db432e 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -457,64 +457,6 @@ int ff_stream_side_data_copy(AVStream *dst, const AVStream *src) return 0; } -AVProgram *av_new_program(AVFormatContext *ac, int id) -{ - AVProgram *program = NULL; - int ret; - - av_log(ac, AV_LOG_TRACE, "new_program: id=0x%04x\n", id); - - for (unsigned i = 0; i < ac->nb_programs; i++) - if (ac->programs[i]->id == id) - program = ac->programs[i]; - - if (!program) { - program = av_mallocz(sizeof(AVProgram)); - if (!program) - return NULL; - ret = av_dynarray_add_nofree(&ac->programs, &ac->nb_programs, program); - if (ret < 0) { - av_free(program); - return NULL; - } - program->discard = AVDISCARD_NONE; - program->pmt_version = -1; - program->id = id; - program->pts_wrap_reference = AV_NOPTS_VALUE; - program->pts_wrap_behavior = AV_PTS_WRAP_IGNORE; - program->start_time = - program->end_time = AV_NOPTS_VALUE; - } - return program; -} - -void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned idx) -{ - AVProgram *program = NULL; - void *tmp; - - if (idx >= ac->nb_streams) { - av_log(ac, AV_LOG_ERROR, "stream index %d is not valid\n", idx); - return; - } - - for (unsigned i = 0; i < ac->nb_programs; i++) { - if (ac->programs[i]->id != progid) - continue; - program = ac->programs[i]; - for (unsigned j = 0; j < program->nb_stream_indexes; j++) - if (program->stream_index[j] == idx) - return; - - tmp = av_realloc_array(program->stream_index, program->nb_stream_indexes+1, sizeof(unsigned int)); - if (!tmp) - return; - program->stream_index = tmp; - program->stream_index[program->nb_stream_indexes++] = idx; - return; - } -} - uint64_t ff_ntp_time(void) { return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US; From patchwork Sat May 7 11:28:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35664 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122637pzb; Sat, 7 May 2022 04:34:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwt7mSmt0FX0dLsHPnyr7MbFwBcmIUw7XWr9Ti2CkeDZRSrKYnrrsKEKiYCB44JfgbqCOOs X-Received: by 2002:a17:906:a5b:b0:6f4:55f6:78af with SMTP id x27-20020a1709060a5b00b006f455f678afmr7008957ejf.238.1651923240432; Sat, 07 May 2022 04:34:00 -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 w6-20020a1709060a0600b006e895cb661fsi6825825ejf.151.2022.05.07.04.33.59; Sat, 07 May 2022 04:34:00 -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=Dn0c3dCB; 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 246D668B3E7; Sat, 7 May 2022 14:30:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073076.outbound.protection.outlook.com [40.92.73.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 79D7868B4B2 for ; Sat, 7 May 2022 14:30:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h3uUvhtSW+aazGaw82J8mLGJZDa2WSiUGTB2sOIRTulaKi75f0TeWMnfQ0vg6hQRBn/caIXHO4EhPJIcZG13nGJY1FRCcWSXCMO/cJ8geyX3YzFciLoj+WqF502AVk2MO1AHMQ9DpZ/YsFXuFZoOGQLQrYKWqv25F/ftWGfYiyxuNabgkAnre3QIDNJPD8ieDvcty2rTKITADGP1L0lDYqBjQTtI1KGvPy9nY3XHu0T0a1+zNJsJJGig5ZLJlg49L/STs6rx93GM8t2bIMJgGR3OkfPtnjZtUQGv8Jfj3rXZBRLq7rg8LTcTw3HoRACTyaayxMnMxDrQpIc9c6z9GQ== 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=iOFStkDmQmtycK6PWcRffz8m2HtJmnPIshPBcf9+Huw=; b=MovJ7Z+KvIOOxTtRTOam2UUAxW0IUSuYC2P4M/NFmjbZcLDYmpTC8zLtJaCH1+D453HQiOxyiwEyKh5OiVGGEyi6e6EdHxxR2fwIJXdZXvUI4o8IiGIovTaUpSlhWnFY5QqsM9c0dh9GOQEerKfBw3SGioW3VqBpfV8owt6MQTeCp/rKaS7lO/1Cjmg+LDuX8UgbqB81MXxGbQHqQQFseJDnpIlZospOKwOe15s+CDnm5bvDJrfWHyYD74HwQ1vzO9H1uACa56T8fx776+WdnPvnKfH9wIlLO2v2WwaWlV1NSLl7St/llDEO9tGOCNK/kdV3eXUccwgScKZ4/gVmiQ== 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=iOFStkDmQmtycK6PWcRffz8m2HtJmnPIshPBcf9+Huw=; b=Dn0c3dCBtfKmUXomw+4GS5i8fEVfypho1UMHY6mxC4aPLcG4rUcw3ps86sUQpfA2QhLkfWBRyK/FtMtO57ejZOIdETAiJLcdSilHKr2qN2MLxiMFke2A9Rhj52eQhTbROkJQ/FICuwrlXHCqywjxRqdQ6keVvup4auyGEDpe2mgNRzD1knDLtQctVcuKFpbhmSi1DyGUj4UiG5P3GZYySxI97uEAnbJW5AHtRqxbJtYfJXNQKNrIqTNplgFaZe2nNzGHqeOy3mk4AG5IMjv5ew0TmpSfPb0iBgzMNzeoUtMOwPGpV73GCmom5I9DYL7/SS31pvMxhfA/Gix2oyW1mg== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:33 +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:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:17 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [nPDGO3P6z3QXnYQe7c88TPsFwl9aR89B] 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-30-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4f33e128-8f23-468e-9d3e-08da301cfdf4 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwlo3tc/Qzy8NO8XnY7oXLO1T365InGJtjplxvPoapFNaW6lqYVB6Kki1NW9yUctRtdLWFitwOl3tNDRd/92O10IAH99Xuni/yICoXRab1Sn4IR3nIkxtfsqLHupjHDfsinqP6a7E9NSDSlyXFee2H6BNv+DLZko3jquWzPij2tzssn9mmXeSwLjTdBb+NkYlTTprPAdW7jQRf+yzJ3Gxirw8QXwGSfuJ2LKAMStclBfh1pBWDjspZGcijFMsDHJE6BVYFlI19MHRxIiVh8kOAHobexyobQzzlXzn/+54OoRJ7ZEgSMYC9g6vtTpw1ogCJ/47OKjV07oORGw3idx8C2Seg19O4Tgiy6PthkkvF5mh5MCr6Od6juNGF1QfF7u1qKJeWUs1gkY2NTw+pV5u/Xb58j7L3C14aaKnf4QpUR7bHi9ATEx4/UK+o+oqc4neq06/2QJADXfnQPXXEjX9xUVKU7y459xe8hg4XRRIy8Rrw+2s11faEpNKp1G3hL9q5Tw2WR3aOV6/icPdm2qvV7iwbcT0mpu+ZwlRg6ZnM8uqtPgHLjiD8IiRZx0DdrJl/SikAGwdmf4aIWAXLnoXa87N2V6KMuLYyLvXXiN+rbaTCNCUDWwv0abk424E7SHJd7UsfjTRcJWp8aXmnAoMC53Cuz+PAkSGGXrzCvSrx5aCVGbUOyjOFCzicGks2MgsrKchg6LLAdgifDFUvNSFXEtIKe4u5TfI52e/PjGTftmQ= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HVfUClB1WeOJt4z9LsVJSMznTeUpvqDrhtcOF2vLV6QP679cSeSPZFdf1oS1K/t7OdluWnqslOPSUh2WPq/AHKFaX+nSToQbDeZ1Do0taI3ekiE3IkSPZqpZxt5AGqCOAkXsGsZCZQb/1USb27wnYI/0G3s4HipLgEo4iG9CJ2vXCkQcvaP+z31HPBujydqdUBpfGPBz0bZwYg156lwgfZkOkbLdNh3ARGpsG2KmEqeVmzfuudjB9MtddfwWGiUm5kQc32c7Ljoifv+zAfeOoRfayrUczG9GL099RpZsa4VFuBtO9pHE23VVMTwf5CQJd4e7OTQcoc7TGQYtxjpvF7BgKiG5g/5R13U+kOojDezAA8iXXCRxcBKTnu9yC6h6rg3InL3sz228WuRA2X9vzEFfZA97YHRXW+IJlKaLjulVRj3Y0l3DDGBCDio4GLpYTtgcPRVgEVpMc3pz62T9qv+9dCsl62JlG2ZN94g5zTMcdjrBlch62Iljl/oP+TGC+azazB+dhFtXRXqLfjxGPybb8vqbREZWkrCLHzw+XjdGd4olc7slwbq+c1KDRzdO/GAoTogvPJ8amXTcaMM4JimdXm9D4EHUut0pCJt/CbYv7/Hhs4b2CpLk9RTMd72d X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ipACO50RPNJ36N8xNAUB9Q+kIUuh6ZRYvSUIsp5OZJ9sGwZDJ7jtZzNkWWxWZlYFYTq4oFOg9IaKU2VybhtroRlYFzynEMyEJlTMYMFUustjPN60m9T4xNNiSck8mEkv1D+/W+0ZxfwgKF2gG/h77ZBIkH+wpMDDBXhxLY0CIfPTy4NSTvPTjojm1P68PaIOkMKz9KfhE3dzSBKC2y02iRrT3STkGv6xv+CBkO0DYP1tzhnqK0sGiKFF6AUQvqjvCe+1pc+Ck4pwn0kXpQL3MN7kLc2jtwxxKm1lNu1R6CaZ5Bon9Ols/EQWy7KwOvncMH67zwkdrQ63r13qN48KCNTWVZyLuLJpo8acIWxfgP+oFxhAydjBlnMw2OGJxw/fiBTOT9SqqTmExsO+YKLt6tNj2A784GlUeBlLElKPONcL6r+ts1ixN7JF8v1FtMc6fqyI8qy0YSYCo3KjW0RINNw8HWzK+M4oJBhnPdCD6+ntTg6BKFziuxiNB9guz4mhXn0fHGKX/evBtR5ghZtgWN2tHwKcTEpmUEvH1aEWPouex/gjvkGrwlmrZXan2Q4RwxGuUDS3vQ9qtWtDzkvUbpVcYbB7eyzSDLdpAFRC4evSLLAGT9lCuBBFs7OnQK69WQC6AiIeiICIf50aQLQHIqxPFxb1p3404ucbHf41JNC2YM2IOxPm6jHEV9tfcSfornK/SVp5oifbFtlQnakSQZTkip2vw26qIQAUG2uSaHrj1y6hqhSYgthuCWru6g4ynX4Bi9oDi6gwO5t51mgxCBdT5Uql0E7VI9+xS3K0YJP3ctI6iBaYOtvHQqskJvAJQ0rXZnmk1vs1q/T4ir1oLKdDcuSYjKQ6tw64ySNzNN3baFt/ATbOZz3QdQiforz5R6hx8fIjNUgK/OYiI7tO27ZHLeZ9M2kwV39Ucs7rhT8sgkAs+ELqXSkVWLisaq8jR10gVSttRhWH+LZM/OYA+6orqhLzxSOX0d+zm4WhCdGam15KFlUBw9kgQZLt8RXAcQonHWTNHiinrVCe5adiAJ0Cno5cG+Vd3OqVN7WMuhBLT5bEGtcouZJYpgyInsrafVkphwwYq7y4zDCuaFc8jec190U8o4Uo9rq31tF0z8LTY5Xy3R5RgXZl2fQEe0zMcXQGSMIipxRBDjqU4ZFyQ6sZNgQ9wIXXtCwCF+tb8W4PO4d/WbXopkjDnST9Siu7EFP3gwFvBPt/8qKoNcUBpX5qpPrXwCgH4ddasczP1D3xCsFW/pBzUXkrFbRZ5uzZqBp/sfCiIhUwiJJyIweBRHdKs9pxQ4sMy80z1swx0q6Zzc3r0reTlZuzQG+Y5MH84B+h/DK2YvHaPOOztbeFNvCM5doAe7DGDFufDhbgGZa9G21IgEuYF77SfhrT6jh5o7b+NF7rSyzlcsfX+5sm1zDCLfYTwuj6wbDt01x+OM8vNRTHcdib087fFHqy0O+w X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f33e128-8f23-468e-9d3e-08da301cfdf4 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:30.6261 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 31/44] avformat/utils: Move internal stream timebase stuff 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: BzyGXN96OTXM Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 66 ++++++++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 65 ----------------------------------------- 2 files changed, 66 insertions(+), 65 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 0b86ff025c..ac0e28a6a9 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -20,6 +20,8 @@ */ #include "libavutil/avassert.h" +#include "libavutil/avstring.h" +#include "libavutil/intreadwrite.h" #include "libavutil/mem.h" #include "libavutil/opt.h" #include "libavcodec/avcodec.h" @@ -254,3 +256,67 @@ void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned idx) return; } } + +int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt, + AVStream *ost, const AVStream *ist, + enum AVTimebaseSource copy_tb) +{ + const AVCodecContext *const dec_ctx = cffstream(ist)->avctx; + AVCodecContext *const enc_ctx = ffstream(ost)->avctx; + + enc_ctx->time_base = ist->time_base; + /* + * Avi is a special case here because it supports variable fps but + * having the fps and timebase differe significantly adds quite some + * overhead + */ + if (!strcmp(ofmt->name, "avi")) { +#if FF_API_R_FRAME_RATE + if (copy_tb == AVFMT_TBCF_AUTO && ist->r_frame_rate.num + && av_q2d(ist->r_frame_rate) >= av_q2d(ist->avg_frame_rate) + && 0.5/av_q2d(ist->r_frame_rate) > av_q2d(ist->time_base) + && 0.5/av_q2d(ist->r_frame_rate) > av_q2d(dec_ctx->time_base) + && av_q2d(ist->time_base) < 1.0/500 && av_q2d(dec_ctx->time_base) < 1.0/500 + || copy_tb == AVFMT_TBCF_R_FRAMERATE) { + enc_ctx->time_base.num = ist->r_frame_rate.den; + enc_ctx->time_base.den = 2*ist->r_frame_rate.num; + enc_ctx->ticks_per_frame = 2; + } else +#endif + if (copy_tb == AVFMT_TBCF_AUTO && av_q2d(dec_ctx->time_base)*dec_ctx->ticks_per_frame > 2*av_q2d(ist->time_base) + && av_q2d(ist->time_base) < 1.0/500 + || copy_tb == AVFMT_TBCF_DECODER) { + enc_ctx->time_base = dec_ctx->time_base; + enc_ctx->time_base.num *= dec_ctx->ticks_per_frame; + enc_ctx->time_base.den *= 2; + enc_ctx->ticks_per_frame = 2; + } + } else if (!(ofmt->flags & AVFMT_VARIABLE_FPS) + && !av_match_name(ofmt->name, "mov,mp4,3gp,3g2,psp,ipod,ismv,f4v")) { + if (copy_tb == AVFMT_TBCF_AUTO && dec_ctx->time_base.den + && av_q2d(dec_ctx->time_base)*dec_ctx->ticks_per_frame > av_q2d(ist->time_base) + && av_q2d(ist->time_base) < 1.0/500 + || copy_tb == AVFMT_TBCF_DECODER) { + enc_ctx->time_base = dec_ctx->time_base; + enc_ctx->time_base.num *= dec_ctx->ticks_per_frame; + } + } + + if ((enc_ctx->codec_tag == AV_RL32("tmcd") || ost->codecpar->codec_tag == AV_RL32("tmcd")) + && dec_ctx->time_base.num < dec_ctx->time_base.den + && dec_ctx->time_base.num > 0 + && 121LL*dec_ctx->time_base.num > dec_ctx->time_base.den) { + enc_ctx->time_base = dec_ctx->time_base; + } + + av_reduce(&enc_ctx->time_base.num, &enc_ctx->time_base.den, + enc_ctx->time_base.num, enc_ctx->time_base.den, INT_MAX); + + return 0; +} + +AVRational av_stream_get_codec_timebase(const AVStream *st) +{ + // See avformat_transfer_internal_stream_timing_info() TODO. + return cffstream(st)->avctx->time_base; +} diff --git a/libavformat/utils.c b/libavformat/utils.c index 3267db432e..f5d24e7a3a 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -28,7 +28,6 @@ #include "libavutil/bprint.h" #include "libavutil/dict.h" #include "libavutil/internal.h" -#include "libavutil/intreadwrite.h" #include "libavutil/pixfmt.h" #include "libavutil/thread.h" #include "libavutil/time.h" @@ -1079,70 +1078,6 @@ int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf return 0; } -int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt, - AVStream *ost, const AVStream *ist, - enum AVTimebaseSource copy_tb) -{ - const AVCodecContext *const dec_ctx = cffstream(ist)->avctx; - AVCodecContext *const enc_ctx = ffstream(ost)->avctx; - - enc_ctx->time_base = ist->time_base; - /* - * Avi is a special case here because it supports variable fps but - * having the fps and timebase differe significantly adds quite some - * overhead - */ - if (!strcmp(ofmt->name, "avi")) { -#if FF_API_R_FRAME_RATE - if (copy_tb == AVFMT_TBCF_AUTO && ist->r_frame_rate.num - && av_q2d(ist->r_frame_rate) >= av_q2d(ist->avg_frame_rate) - && 0.5/av_q2d(ist->r_frame_rate) > av_q2d(ist->time_base) - && 0.5/av_q2d(ist->r_frame_rate) > av_q2d(dec_ctx->time_base) - && av_q2d(ist->time_base) < 1.0/500 && av_q2d(dec_ctx->time_base) < 1.0/500 - || copy_tb == AVFMT_TBCF_R_FRAMERATE) { - enc_ctx->time_base.num = ist->r_frame_rate.den; - enc_ctx->time_base.den = 2*ist->r_frame_rate.num; - enc_ctx->ticks_per_frame = 2; - } else -#endif - if (copy_tb == AVFMT_TBCF_AUTO && av_q2d(dec_ctx->time_base)*dec_ctx->ticks_per_frame > 2*av_q2d(ist->time_base) - && av_q2d(ist->time_base) < 1.0/500 - || copy_tb == AVFMT_TBCF_DECODER) { - enc_ctx->time_base = dec_ctx->time_base; - enc_ctx->time_base.num *= dec_ctx->ticks_per_frame; - enc_ctx->time_base.den *= 2; - enc_ctx->ticks_per_frame = 2; - } - } else if (!(ofmt->flags & AVFMT_VARIABLE_FPS) - && !av_match_name(ofmt->name, "mov,mp4,3gp,3g2,psp,ipod,ismv,f4v")) { - if (copy_tb == AVFMT_TBCF_AUTO && dec_ctx->time_base.den - && av_q2d(dec_ctx->time_base)*dec_ctx->ticks_per_frame > av_q2d(ist->time_base) - && av_q2d(ist->time_base) < 1.0/500 - || copy_tb == AVFMT_TBCF_DECODER) { - enc_ctx->time_base = dec_ctx->time_base; - enc_ctx->time_base.num *= dec_ctx->ticks_per_frame; - } - } - - if ((enc_ctx->codec_tag == AV_RL32("tmcd") || ost->codecpar->codec_tag == AV_RL32("tmcd")) - && dec_ctx->time_base.num < dec_ctx->time_base.den - && dec_ctx->time_base.num > 0 - && 121LL*dec_ctx->time_base.num > dec_ctx->time_base.den) { - enc_ctx->time_base = dec_ctx->time_base; - } - - av_reduce(&enc_ctx->time_base.num, &enc_ctx->time_base.den, - enc_ctx->time_base.num, enc_ctx->time_base.den, INT_MAX); - - return 0; -} - -AVRational av_stream_get_codec_timebase(const AVStream *st) -{ - // See avformat_transfer_internal_stream_timing_info() TODO. - return cffstream(st)->avctx->time_base; -} - void ff_format_set_url(AVFormatContext *s, char *url) { av_assert0(url); From patchwork Sat May 7 11:28:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35665 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122722pzb; Sat, 7 May 2022 04:34:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyGPcUqEL914t8qVd1KoJRQNjSBpXtg4ehvXEJhXsQiqWDI1BUIvoYzW4aQ8Rsg3L6YHRBH X-Received: by 2002:a05:6402:51d0:b0:427:dfa3:1a46 with SMTP id r16-20020a05640251d000b00427dfa31a46mr7996762edd.107.1651923252203; Sat, 07 May 2022 04:34:12 -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 z15-20020a50cd0f000000b00427b431e10asi6531108edi.469.2022.05.07.04.34.11; Sat, 07 May 2022 04:34:12 -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=onK446Hr; 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 30B3668B4BB; Sat, 7 May 2022 14:30:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073064.outbound.protection.outlook.com [40.92.73.64]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4172068B3EE for ; Sat, 7 May 2022 14:30:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jbGve7dTX9mFomv9doTiWSQyihqJuVqO2y3Jmzf9QpiXy6X7JiPm7eynjY3i+R6rAgEPSgH8QUPQQMJFZBtPXWVjUze9/Juc/IClmg8pOraEockSJ7s81wgi3Jq/Ck7w4NSyCT3TTXs8WCYvpp9nA+vzMnLETcNqTgqSChzFHBTOMmVAzGT3kQIODaxIeRh4vf1PqEeOdSCqH/+yEVuErZ0wa1szcOvBrWwqvgT5tNyG+4A9nW/IQcSrLRnG2lQV0UPUR3bPhYfmrsrGFyTae+KquVzm29Yz2G4CKL4zz4hctX8QvGpEFncK37sgODedvuvnqL+prOlXc216QmqDAg== 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=xEL8n4oEdlnk0f/Qyc+ZF+OAd4dRKItH8iND3ULCJpQ=; b=UZKeSkQg0LvjxUm8gKPQV85ceSs/5yRcXj3O0Qs8wHHbhMnrpGLCSCtMpb2uIWQl95Wj/DElXD/TaXyfIGrrcKYdq429tQCU9Ey1FrbagYufcy+TglN0kGh4yMWRMkhQo+4K10pOWY1832gF1DfEqF0r77RlT6Lvst2d0JAWz7muuq3CNsNjbUfTTYMlgu7R5OwauPLlWevU5+i5VOA7pc0B6GlUiXGA1nbVuve7AC/N8BTXAWOZntHk5Y9VrCNVJjovu1dpsUhO/q2FaOUBvY2FK8ne39TvwAP5wzxkarBp9vkgp+ONEJrIJUI1TQcXq7MSnR8AFbqqF0HNXuYmOg== 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=xEL8n4oEdlnk0f/Qyc+ZF+OAd4dRKItH8iND3ULCJpQ=; b=onK446Hr57py/6O8gQY4WH0YNnwaBWQHE49VCaIJ+Q0On3QG2U/LFXYoVgJqWmzsNGrCEctX13iidEyY22/DZ6lEW4cS3Ph03SxsboYkYzBS5fw+NOF62DG//uxPEbVIXztdS851WhaNB0Id6z/q+b2s2if/V6ZxfUKBnBnDLUAYO30kzCJegCFFDsyJkoFAF8+qaL93MWvHHcphnd0Tr8d41WFG022SSNM6i+fPv0kBbCiTYri4mGmKRlmvCr0eaEy6+TLE1HuI/dlxZtVBXndHszbQ0kY0ApWJTPT/FtRmMf5ifxhMX1VCdK7SiWMyYmhc+XC9a9N2ebGjl9/+Ig== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:38 +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:38 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:18 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [90RqvNdHD6ZUak26qxT255CiQjjCaEQU] 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-31-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 27bb0d5a-9067-48ff-dee5-08da301cfe7e X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8llYh5b6hJTs9UzQX4bc4ySN7PluJyNWV66F/ZqUqd0l5YC6msg4LSQ5ohsbopeTQUXrvtJeF8sbkiylahgfqFHvfbvfGUOa7P0zRm8sKT748OqgkjOWL6/d5ip/lUKPl9N8ABl3Y9NQ2YOIpFl1eZD3NHadk5XX9AtztpJdk1jxG6iDhZN2R+tSMFSQkJJlM/BUG/CXpevrHzBtcljb0GnkKKHrk/S0mcHiTwnVvJegKyOsYDTUqML2ERAyyupoqrMdo1qaBbQH1l4mcQYV9t+pNm12ranlTg75IofXw/pwc/RHxZqCjWw8h0qJnOH2twcTIWHFaeSgCsztuk9tq6Ihsbrdz8mmU76LAFVGPMlXqPy1uXiFR6y4JzzGaG+QFfFBa1vrK4E3Hzn6TV0vs8fsP3atcz5CRl8mXnBpNg1ULn7Wt/rYAN/WSdfpSF0LufcwIMHuqu8iIUTD7RuIoVGWsuJ4QbPeqmjjRo3bBOrjA+iwvt/JUfmfIhJKJeSMC47zFiVjZZrxO5m/W+aJQWHKADY7pVEbGCDQPio0fcYunBCHirjZu1ptreO4uzr7uXpXtqJ8TVRRcEO7HkmMUTEH2gWG3pC952/iXn+B//7pMQ1HlrgJ0PtbfH3XVpE9V8NzBJE5Fw/t3E/bqiq+IrJFw+Dlkc9ja6MSH+n439hWY1oCcaklQuhlgTA/0QmrGHu4QDAGuCBE= X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /J/ChCUmpP1TLEJBrslXVO2T5NFiXhGRfpZvLyIwlgnJLEx9ZvLGBptRVKIpvIYFHSngRRyavbOuEqAcot87++5HLG9DJSGs9+STrlD5KkZBCYZKtqFTKWj/CbuoBy1thrtRjtD5BVilgnywnFlTsTYCu70w/9okLyRMSQBJy4tEKIGkSdiTwdppIpYsZDAAwygKFvoQQBmZiFrRHHbPiKgjabT4JFIgiLtPY3ZsN3QUemDHd+KcMQa12awEamVk3FaCy6ulk5xHEeUOUDytQ7cNehU0yYb3cC/J+/SFMLZPnUY8a2i70Rno852kXUnWT5GjQzScQTkG0DIlTieekdT9+ytzmcnM1FFc5THF22ZDJ02OPO+qGNbd3KdWLHO+IPm4CGi5HWm60n/p9fcXAtOuh8SJ0OBcGGTTOvBQfs9muc1O0IQvdy4l7JZfo8g+QyYYBQR6JAQWd7pUsA4PWskLy9en/8UQRS8572kyOkhhFvBM5u7IRtlbDWAUV6VLF9GTIoOpDvhhIrHp4GDqccKT/TGCrfCYoQWG7D+glOa8MICuJqrg/T3Rvzh0xLEVW5Nnw5b1TcNhP86UX4HhER5GOTWO3q7eTy52E4T8W5QGz+omtVQl4Ce9h4Am6D/u X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nvy/Thryf7rlAvrkiaNh4ok3lmJIZ89N9bW8k9MlVQfUS4V3VqltOODja3yLe2853jCJtwvnhn1Xa7YTG2IZFPpIopy6ZRPUBb31XihA8Qb0ld46pzO0ljgxc/lsgXp/gN/s0BG8teVDMJqIhvNIA2CNx37upBK1TR5zbXqZ0B9t6buLsOsdJEsI0Umb+lbrRYnWx5e35Q1Elhp2fpVUk3Nxk9ZSayTQS8px2HtI+C8XhbVWl/qXsjYxTx8L3iTPBo9LIWvba2AE1m1sRGKIbMrgI5HqZlOH0tlWYipO2Z/Z3erXPrNnVPHjHvJwBDoPRh+w0t/q0J+vdmRrKmN4vaO5O72NrT5Drt81aLS7CkBUOBCAbaJTUH/pedU5od3qtzrGmgat2M5MU+W3UVq6IcdODGAeYhQ/rjYJ1y9k/JPRaF6eTHFGzDaUHE+mHhhwqug2dzYtQP7K/l5WA0GVM55RywJHL3ruC84AAD3u2TdIeD8UytCf1BvcY8u+GrdMvx2wJoUt8w4AmlwYVSpCuw+wGW692Ynj16mQ0OcdbD3DzveiqIuZ+784jlhU9L8a5JdRlX8B3agnF55fqbf1EChCd67K1LoeNiPXVxsP+7zy+ofhHyyvdGCT9o+/cChkuTnr86reth5W+JSBy9hpAFi35eSyqjIxidQ4PCbY5rbpeponidx1a0W6hWK0JkyJ0TFGf1EQj2W90K5lJTnxqPr7bYvDuGOm5K+fVSaV+rFSZIa5w/9dwue1HBAtD11QsQ6iWkmhN/I1VtChlxS76TZy28kyWrFFTJGNMON3rImkZFTgYF8qLOS3LhIIcXQc6any1YbumCKsb07N9cyMpx1Z0sTBeT2nrsXduzHxgUwqdH6WhMCAnF54dKE2ejt30H8ec/ZofAn1bqaPMIT9a/o8SywZVPhmZ//IYgnGFAXKQbOwsSP83coukRRuMcOh9HriVeTuxczGMjkBcmLFutGY65Z/uBjgcs8OgBdjNpINws91PBhFfBBRCcEK6pNxdXK446h+NlwkE5mKOk0XZ2p6G0mfoG4xQ6hdjXiVZINFUTZT2hk9hcpsmj8DyakBpDiBiz8mwk5eWYn8GymVqLjJFOwyWFjna21nXnUErlN0WunxHTvZeWshuyE/V/d8uDyv76Uoq2imvboc94ZDQK57DJGK3gLX0UvjEG53SGIc3qqqVyZquhpZv5dfWMBnqFJ9jFDJAX29AjkUJgH6y2ONHiLMDc35sYBYxhDlf+uER+tB41L/PGvz+L5rvzD5i7AnIKkK6hgnOqJvNgi9gWsKTubaFzVjxhQVbjZ+DgiNMr94TAiW1za7f9Vq9A1S24nApFXUcS4F4ptLocgYX1TmVzFF5Mr05HXk38lNzD1f3++1wzstyoj5bLuuhb7zQCUx1q6jmHSDifYoeP735D4Gb7wh54hNpyOBcoJThVcRPQ1TWh4EIzugGOGo3JSF X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 27bb0d5a-9067-48ff-dee5-08da301cfe7e 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:31.5478 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 32/44] avformat/utils: Move matching stream specificiers 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: nhLqU+uO5lUH It is not to call this with a muxer, so move it to avformat.c and not demux_utils.c. Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 179 +++++++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 179 ----------------------------------------- 2 files changed, 179 insertions(+), 179 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index ac0e28a6a9..7fab0dd99d 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -21,9 +21,12 @@ #include "libavutil/avassert.h" #include "libavutil/avstring.h" +#include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "libavutil/mem.h" #include "libavutil/opt.h" +#include "libavutil/pixfmt.h" +#include "libavutil/samplefmt.h" #include "libavcodec/avcodec.h" #include "libavcodec/bsf.h" #include "libavcodec/packet_internal.h" @@ -257,6 +260,182 @@ void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned idx) } } +/** + * Matches a stream specifier (but ignores requested index). + * + * @param indexptr set to point to the requested stream index if there is one + * + * @return <0 on error + * 0 if st is NOT a matching stream + * >0 if st is a matching stream + */ +static int match_stream_specifier(const AVFormatContext *s, const AVStream *st, + const char *spec, const char **indexptr, + const AVProgram **p) +{ + int match = 1; /* Stores if the specifier matches so far. */ + while (*spec) { + if (*spec <= '9' && *spec >= '0') { /* opt:index */ + if (indexptr) + *indexptr = spec; + return match; + } else if (*spec == 'v' || *spec == 'a' || *spec == 's' || *spec == 'd' || + *spec == 't' || *spec == 'V') { /* opt:[vasdtV] */ + enum AVMediaType type; + int nopic = 0; + + switch (*spec++) { + case 'v': type = AVMEDIA_TYPE_VIDEO; break; + case 'a': type = AVMEDIA_TYPE_AUDIO; break; + case 's': type = AVMEDIA_TYPE_SUBTITLE; break; + case 'd': type = AVMEDIA_TYPE_DATA; break; + case 't': type = AVMEDIA_TYPE_ATTACHMENT; break; + case 'V': type = AVMEDIA_TYPE_VIDEO; nopic = 1; break; + default: av_assert0(0); + } + if (*spec && *spec++ != ':') /* If we are not at the end, then another specifier must follow. */ + return AVERROR(EINVAL); + + if (type != st->codecpar->codec_type) + match = 0; + if (nopic && (st->disposition & AV_DISPOSITION_ATTACHED_PIC)) + match = 0; + } else if (*spec == 'p' && *(spec + 1) == ':') { + int prog_id; + int found = 0; + char *endptr; + spec += 2; + prog_id = strtol(spec, &endptr, 0); + /* Disallow empty id and make sure that if we are not at the end, then another specifier must follow. */ + if (spec == endptr || (*endptr && *endptr++ != ':')) + return AVERROR(EINVAL); + spec = endptr; + if (match) { + for (unsigned i = 0; i < s->nb_programs; i++) { + if (s->programs[i]->id != prog_id) + continue; + + for (unsigned j = 0; j < s->programs[i]->nb_stream_indexes; j++) { + if (st->index == s->programs[i]->stream_index[j]) { + found = 1; + if (p) + *p = s->programs[i]; + i = s->nb_programs; + break; + } + } + } + } + if (!found) + match = 0; + } else if (*spec == '#' || + (*spec == 'i' && *(spec + 1) == ':')) { + int stream_id; + char *endptr; + spec += 1 + (*spec == 'i'); + stream_id = strtol(spec, &endptr, 0); + if (spec == endptr || *endptr) /* Disallow empty id and make sure we are at the end. */ + return AVERROR(EINVAL); + return match && (stream_id == st->id); + } else if (*spec == 'm' && *(spec + 1) == ':') { + const AVDictionaryEntry *tag; + char *key, *val; + int ret; + + if (match) { + spec += 2; + val = strchr(spec, ':'); + + key = val ? av_strndup(spec, val - spec) : av_strdup(spec); + if (!key) + return AVERROR(ENOMEM); + + tag = av_dict_get(st->metadata, key, NULL, 0); + if (tag) { + if (!val || !strcmp(tag->value, val + 1)) + ret = 1; + else + ret = 0; + } else + ret = 0; + + av_freep(&key); + } + return match && ret; + } else if (*spec == 'u' && *(spec + 1) == '\0') { + const AVCodecParameters *par = st->codecpar; + int val; + switch (par->codec_type) { + case AVMEDIA_TYPE_AUDIO: + val = par->sample_rate && par->ch_layout.nb_channels; + if (par->format == AV_SAMPLE_FMT_NONE) + return 0; + break; + case AVMEDIA_TYPE_VIDEO: + val = par->width && par->height; + if (par->format == AV_PIX_FMT_NONE) + return 0; + break; + case AVMEDIA_TYPE_UNKNOWN: + val = 0; + break; + default: + val = 1; + break; + } + return match && (par->codec_id != AV_CODEC_ID_NONE && val != 0); + } else { + return AVERROR(EINVAL); + } + } + + return match; +} + +int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, + const char *spec) +{ + int ret, index; + char *endptr; + const char *indexptr = NULL; + const AVProgram *p = NULL; + int nb_streams; + + ret = match_stream_specifier(s, st, spec, &indexptr, &p); + if (ret < 0) + goto error; + + if (!indexptr) + return ret; + + index = strtol(indexptr, &endptr, 0); + if (*endptr) { /* We can't have anything after the requested index. */ + ret = AVERROR(EINVAL); + goto error; + } + + /* This is not really needed but saves us a loop for simple stream index specifiers. */ + if (spec == indexptr) + return (index == st->index); + + /* If we requested a matching stream index, we have to ensure st is that. */ + nb_streams = p ? p->nb_stream_indexes : s->nb_streams; + for (int i = 0; i < nb_streams && index >= 0; i++) { + const AVStream *candidate = s->streams[p ? p->stream_index[i] : i]; + ret = match_stream_specifier(s, candidate, spec, NULL, NULL); + if (ret < 0) + goto error; + if (ret > 0 && index-- == 0 && st == candidate) + return 1; + } + return 0; + +error: + if (ret == AVERROR(EINVAL)) + av_log(s, AV_LOG_ERROR, "Invalid stream specifier: %s.\n", spec); + return ret; +} + int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt, AVStream *ost, const AVStream *ist, enum AVTimebaseSource copy_tb) diff --git a/libavformat/utils.c b/libavformat/utils.c index f5d24e7a3a..ebee44f47d 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -26,9 +26,7 @@ #include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/bprint.h" -#include "libavutil/dict.h" #include "libavutil/internal.h" -#include "libavutil/pixfmt.h" #include "libavutil/thread.h" #include "libavutil/time.h" @@ -855,183 +853,6 @@ AVRational av_guess_frame_rate(AVFormatContext *format, AVStream *st, AVFrame *f return fr; } -/** - * Matches a stream specifier (but ignores requested index). - * - * @param indexptr set to point to the requested stream index if there is one - * - * @return <0 on error - * 0 if st is NOT a matching stream - * >0 if st is a matching stream - */ -static int match_stream_specifier(const AVFormatContext *s, const AVStream *st, - const char *spec, const char **indexptr, - const AVProgram **p) -{ - int match = 1; /* Stores if the specifier matches so far. */ - while (*spec) { - if (*spec <= '9' && *spec >= '0') { /* opt:index */ - if (indexptr) - *indexptr = spec; - return match; - } else if (*spec == 'v' || *spec == 'a' || *spec == 's' || *spec == 'd' || - *spec == 't' || *spec == 'V') { /* opt:[vasdtV] */ - enum AVMediaType type; - int nopic = 0; - - switch (*spec++) { - case 'v': type = AVMEDIA_TYPE_VIDEO; break; - case 'a': type = AVMEDIA_TYPE_AUDIO; break; - case 's': type = AVMEDIA_TYPE_SUBTITLE; break; - case 'd': type = AVMEDIA_TYPE_DATA; break; - case 't': type = AVMEDIA_TYPE_ATTACHMENT; break; - case 'V': type = AVMEDIA_TYPE_VIDEO; nopic = 1; break; - default: av_assert0(0); - } - if (*spec && *spec++ != ':') /* If we are not at the end, then another specifier must follow. */ - return AVERROR(EINVAL); - - if (type != st->codecpar->codec_type) - match = 0; - if (nopic && (st->disposition & AV_DISPOSITION_ATTACHED_PIC)) - match = 0; - } else if (*spec == 'p' && *(spec + 1) == ':') { - int prog_id; - int found = 0; - char *endptr; - spec += 2; - prog_id = strtol(spec, &endptr, 0); - /* Disallow empty id and make sure that if we are not at the end, then another specifier must follow. */ - if (spec == endptr || (*endptr && *endptr++ != ':')) - return AVERROR(EINVAL); - spec = endptr; - if (match) { - for (unsigned i = 0; i < s->nb_programs; i++) { - if (s->programs[i]->id != prog_id) - continue; - - for (unsigned j = 0; j < s->programs[i]->nb_stream_indexes; j++) { - if (st->index == s->programs[i]->stream_index[j]) { - found = 1; - if (p) - *p = s->programs[i]; - i = s->nb_programs; - break; - } - } - } - } - if (!found) - match = 0; - } else if (*spec == '#' || - (*spec == 'i' && *(spec + 1) == ':')) { - int stream_id; - char *endptr; - spec += 1 + (*spec == 'i'); - stream_id = strtol(spec, &endptr, 0); - if (spec == endptr || *endptr) /* Disallow empty id and make sure we are at the end. */ - return AVERROR(EINVAL); - return match && (stream_id == st->id); - } else if (*spec == 'm' && *(spec + 1) == ':') { - const AVDictionaryEntry *tag; - char *key, *val; - int ret; - - if (match) { - spec += 2; - val = strchr(spec, ':'); - - key = val ? av_strndup(spec, val - spec) : av_strdup(spec); - if (!key) - return AVERROR(ENOMEM); - - tag = av_dict_get(st->metadata, key, NULL, 0); - if (tag) { - if (!val || !strcmp(tag->value, val + 1)) - ret = 1; - else - ret = 0; - } else - ret = 0; - - av_freep(&key); - } - return match && ret; - } else if (*spec == 'u' && *(spec + 1) == '\0') { - const AVCodecParameters *par = st->codecpar; - int val; - switch (par->codec_type) { - case AVMEDIA_TYPE_AUDIO: - val = par->sample_rate && par->ch_layout.nb_channels; - if (par->format == AV_SAMPLE_FMT_NONE) - return 0; - break; - case AVMEDIA_TYPE_VIDEO: - val = par->width && par->height; - if (par->format == AV_PIX_FMT_NONE) - return 0; - break; - case AVMEDIA_TYPE_UNKNOWN: - val = 0; - break; - default: - val = 1; - break; - } - return match && (par->codec_id != AV_CODEC_ID_NONE && val != 0); - } else { - return AVERROR(EINVAL); - } - } - - return match; -} - - -int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, - const char *spec) -{ - int ret, index; - char *endptr; - const char *indexptr = NULL; - const AVProgram *p = NULL; - int nb_streams; - - ret = match_stream_specifier(s, st, spec, &indexptr, &p); - if (ret < 0) - goto error; - - if (!indexptr) - return ret; - - index = strtol(indexptr, &endptr, 0); - if (*endptr) { /* We can't have anything after the requested index. */ - ret = AVERROR(EINVAL); - goto error; - } - - /* This is not really needed but saves us a loop for simple stream index specifiers. */ - if (spec == indexptr) - return (index == st->index); - - /* If we requested a matching stream index, we have to ensure st is that. */ - nb_streams = p ? p->nb_stream_indexes : s->nb_streams; - for (int i = 0; i < nb_streams && index >= 0; i++) { - const AVStream *candidate = s->streams[p ? p->stream_index[i] : i]; - ret = match_stream_specifier(s, candidate, spec, NULL, NULL); - if (ret < 0) - goto error; - if (ret > 0 && index-- == 0 && st == candidate) - return 1; - } - return 0; - -error: - if (ret == AVERROR(EINVAL)) - av_log(s, AV_LOG_ERROR, "Invalid stream specifier: %s.\n", spec); - return ret; -} - void ff_format_io_close_default(AVFormatContext *s, AVIOContext *pb) { avio_close(pb); From patchwork Sat May 7 11:28:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35666 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122783pzb; Sat, 7 May 2022 04:34:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyVcMWAoZfl8xaijqQLWugMH8rVVa/qGrsdA1QAyDTVdDKqVMPVDV3i0QfcRfwDosAx6wBZ X-Received: by 2002:aa7:d916:0:b0:425:d75f:ae68 with SMTP id a22-20020aa7d916000000b00425d75fae68mr8106304edr.270.1651923264220; Sat, 07 May 2022 04:34:24 -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 hp10-20020a1709073e0a00b006f4408bfffbsi8345514ejc.779.2022.05.07.04.34.23; Sat, 07 May 2022 04:34:24 -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=JSePiWi7; 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 4784F68B4A2; Sat, 7 May 2022 14:30:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073037.outbound.protection.outlook.com [40.92.73.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 982BA68B3C5 for ; Sat, 7 May 2022 14:30:44 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L2xSKrdLDjZiB9G6YFaP2Xei4XPgzfLrQa7lO2xzFz4vCehh3VRdFNA5nGhIWiVkQY6CfI0KE4FtyqmUz30/KYGX9LFUZN7UkGYKonZulSdluMZAP/nSeZ5r9ONacPBKG00q+gb7PNkbb++fcZ3upNJwr5DKxUOhZtTJWTqQsLJBejjDcgSu/QsRaRU38hrNWC09dKNQ0hLYnFug2YeQssdovJjevapnZ0t5ljHsAzinswPXLrhXqjzwpGcMr7fRHvvrJC/lIhau/jlmWN3l9HCIvyXlTAp5N7KdqLFnrgI5no5uQ1WNqWfErEk+9YXyavW3SuuFsJWONUFRXsKvMA== 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=AgxjIc9796ddtxuJoEAyl82PJdiNaggC18hHJ3wn2WM=; b=TA9VM78ipIePg+sV2niairNDmXCoDtxGAGZ4C0ynfDoDDVqu/R8SUbvEJP1axlp8ZXTaptu7JXQD0oe3x38vsgzOY9fn1eh6jG24sSPYXWQQRO2nu9siDwS4jLKo0CJ4MuDKFbks3ntBwJ0ZWYRzIi6E5TOUMrUNQnTN3jJGlrWQ5/aGmr76m7Z4lEoNisH32GXoZlmvyHHupFcTURdqcROSmvmBfuZ1ffPOg3O61i84rk8+yuEfZxdXqKI0cpwRNq/g0S9iSeQtXjJDP/+mB3OzkK7XXt8NUWBaDoYMBUMopnf5Z+cz/qMG9m/B4+2HuVK8V5Q5KM801DZC8HRSOw== 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=AgxjIc9796ddtxuJoEAyl82PJdiNaggC18hHJ3wn2WM=; b=JSePiWi7ctiWBc6eGw51ZWHOmx6jXr37VlMdchpCCVnr76Oq5b9w2Ow/3aL07PpjDpJTz2UzD7u9P8ufOO++mUzNCeI3nDE1rlmJ1v0YT5gOVzPhqmR9LeqpXNx4s5wLybMUatjJzg956SeN5bsLS6/aEs+BTWO1KZSth2HLOrCpljvup0AIU1aHxQegccFt8LvgGgcMijPbGgrG8AN3l9aB8OEpQRoh66xiL6wN+WRDouK6R5O+gnpTxIrM7rchwFkTK08aIsd87uX8MtGQTsMSLXxZyVFESzaHnNPCGVMANeA9FXbkVrhEWkPsiCQo0mwi1eVmQqAqKlQHevefTw== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB6PR01MB3895.eurprd01.prod.exchangelabs.com (2603:10a6:6:4b::10) 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:43 +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:43 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:19 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [BapESKTDvAfl6w38Vp0u4jGMTnNpu9/M] 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-32-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e7dd00b6-7b30-4bf6-2315-08da301d02a2 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEvwPxT+mwCURHm2qGG32agMpraRfinc1wGxj6w3N61XKr772lAT/Wk9nuTsOLb3OOxf3K+5r0yhoemDIWcpU4xQdbY8Nt46V1SuogEUh1mTG3NRXB/ivGc6qe25jUEEsyROsu5PZSuuy2GvQGy6ZJQ3Wv5gKhfP7tAlLqlu0V5LgRBdaq5BfQWBWABQk/zcXdXjLloHLJ9cyxdl3RagLET5yyd81LC7tJmnNLofdDecS85Hs/+0iUiH40qF0m4eyZkSuVKiKKEO9HQ+Ct2iDe+vtx5pPItCecYHwAQttLlcLEzoxM/WjyMrbDQMommSWZ1JEDHWy+5iRzBJBes0RAWUdu77fusZKRp4wR0CyDz9z0z3nPZERN0mmQDIXtlZ5CDjlgmSAXs9D6a/1W98ihPit362/oGbfAuZc0/VFuFH6VnUtw3W6IKsKeDmbrPHDLE7jvUyxF0jzInJ0EgsGgGkxG5qMoROmJLCz19yay0wpYgEDEGtMpl0hg13fQlJCwibdHOq67sBPWA3lgt//fAHWog0mLZm9BH/dSX0NNrEyO0uwKV1mwK78A5cCo0eH9vfmcvoLka+lSzdiIp0uodnpSHrpIuFnUUSWOsB+/ANHeozmUYTWPm9n2Q/KRalwXDJj4gMmqLKOf0E4hWDKhrj9rCgEM4WIs15lbSo4zmkZGBJpW5ii/gGyfCOVIE5CmF5p8QvhhsAq4WAW6WHFawk1o5/Fs5OZuemv4+YOPv6uvMYrb/tHDqdQS7FHWF1Dfj5GEbrXN7BnNoxA8nv6E07 X-MS-TrafficTypeDiagnostic: DB6PR01MB3895:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3e47PVDUPvYNOQ4uhAircOpErOf0LnoLynLT0uxSKtJM9F1yg0LxMO7i5F5vFp3xQOk5r4iyaIG/7IP1RfHO28pCQHuQZdzecAtbPEYFpINxnEzARkyDumAvlJ36CyDNvLmVmTHNhKDlnXE5mka70jXe97m+D72TLGnNWkflAhOdikK9o1blJ9sr639B8q89/dMRA6c8yfeJxlAQ7M8+vWSGCa8CyJ1PDu0Pmpkf2fyzQIPVHtdXTiDi+DRjHYn1Q0VemthrT2CAvGpsG9k+FEQY8v+VXVttgSL4bDRRLQnmEqMVWDPNmnEk0g494uwEiXJ3fAVzodWPDTuCGt6ZPZ+0Y193SBE1RXfbGkt29P2jljGbBr+OYVgknZ7xMPmWobl2iT7SdhmEIub5Yj8QXMCCxUmMeuSeACl0XPS8nlLLKt7Z09k8HZGecRLm4U+k1H1CZCM+ytAZu1HABGVG0hK12N8Totq2BSGokeWG7DjFs+Qf72x7IV3WQufIBgDbGttZjAotSrMZR0n2wKzo0fWxgq00uM6l2cwtAqzy4hNC+OUbNOiqUsQDTeplNVGEdrFl9GZwy/khsjITIqBhw0f4bANBK1b8RVAU5VOyEkG1IhH0kIGzXWy7bVW9TQuL X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Zk6QwduSeO7iDqPvS8CnRlpPWq1tpPheI1PwI7oFeL/9JDsDE5jNMi1fpVKG+LzU1o7C/Kd4A4cvZ76U+rj7i+nFMn6e5xs5cw6gm1j519rjW7fQ6796nJMyEHGC0Hu84QvOSjZQGR+jEqsOhN5/EbzsvhHD/2FTSXFOPe/edR2xUITqBGEzibwi8qAB0Do5ENlUKySLOrfgOR916/zIEUSjnTVLAzkdUKhw/J+xmswxDdtl6g1Q38uLDDKKLGH6wv+1qmzzw62iiwZUbrGNxMSyQvjB0M7Ch/wyZSOQEPoMzCV31h92Txf6oJ79wRpcgW5IDccKfAoeYNDROFR+KRn70Ucg75+CV7h3mR9TdD3TTd2E5F7v6VWXfykVo+NanEg65kyEZNrbgxtPruYHXUmJuujy/IkOGEmgsfFkoQkGxgQeRV3g0DhUUUiygmrrcR7wRkZhQaODYqy2EmhBJl75NgHu99KB32sA18utEGvzF6RSVVuOXkMPuCRJLiz3/aGVsveV6j/tlNxX6pqzZV9+fBvA/V74+TKTyRg5aedFKrATHqkaAwG1qI8R/79jlKv6He4FdUREtbItOrSMb2H+WdcCyK+s2l6GCi4fj893JFovS4S5lq674clrvTfRq+Pzd9vHT0Ak+zfWdRvHxwihNSFsq5fLZ/T0WJmoZ1bzXa/0bqe/IHj4BsW8CXXVNUoYM3+gGSppoPI9S1MmKON7R3YHeF9kykcir3Oblt/i3P4QsRyJdv6zNf2oSHaEHrH1t4Jf0ECaDkQ3dopWPaoZQnNZoHiIXDdBc4EDxLeXkpkLrNU9qRRewNXMgpfOJub6+FL5b1hB3hmmQyCwfwh9JLpzNchnty9988I/vz72001Als3icW0zmPq/nKEVHrwQ+MzVk4KNQYCs0wjGfAWpO+xbr3FSus1wqsIpk6pDP5qu6+x4LBDovAMzMGPLCZ/5luxRRVRRPXj5m9pGUzpCjxTE6UO0FL5CpK9/APLEcyqI288VQiLMRzMBi7gNENI9QcYWsUNaujt1fB52NFbbUhby8u38IZFPcq14IZilwxn4Pu8PAJFN2J3Lvfa2gdq3cWrGNxAh3Mo9yqmwAVYgrY9/DVOFo1Aa4eth4XhebdY4wt+RjoXDj6izqYNaqipfmOEpjfHeQ12fVC6MK+EkWI3vZp6ZucViduXvXfl78oCaxQLvOUXqN7DiT4lAvKE4ZsBIsiMUoe1rlq2T8RoQRG3ZLOWBIf+mTKlFM/uIporU7LJY4GohGvV1u7yPIi49RtkdP6aBpJiRQmCb6+c9uAGH1uFBu+zgOaCgO9w+tAPLi6Ztr4qNKvY/dNV/1j713Yh5SESHiP7Uijl3LI8sVatzsPmci2i2Gaz4H+w+AFYZ9F/2c5G3LfylW14vIpCWe5EqsbPx0nmA9My5uFYIv+8mli1lhITA6J3Ejs5bl1MjTvE6bFaSM2vMGEfK X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e7dd00b6-7b30-4bf6-2315-08da301d02a2 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:38.4585 (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: DB6PR01MB3895 Subject: [FFmpeg-devel] [PATCH 33/44] avformat/utils: Move guessing frame rate/SAR 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: kx1l/ajLd95a It is not explicitly forbidden to call these functions with muxers (although it is probably intended to be only called by demuxers; av_guess_sample_aspect_ratio even says that "the stream aspect ratio is set by the demuxer"). Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 45 ++++++++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 45 ------------------------------------------ 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 7fab0dd99d..78bec2f736 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/channel_layout.h" @@ -436,6 +437,50 @@ error: return ret; } +AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame) +{ + AVRational undef = {0, 1}; + AVRational stream_sample_aspect_ratio = stream ? stream->sample_aspect_ratio : undef; + AVRational codec_sample_aspect_ratio = stream && stream->codecpar ? stream->codecpar->sample_aspect_ratio : undef; + AVRational frame_sample_aspect_ratio = frame ? frame->sample_aspect_ratio : codec_sample_aspect_ratio; + + av_reduce(&stream_sample_aspect_ratio.num, &stream_sample_aspect_ratio.den, + stream_sample_aspect_ratio.num, stream_sample_aspect_ratio.den, INT_MAX); + if (stream_sample_aspect_ratio.num <= 0 || stream_sample_aspect_ratio.den <= 0) + stream_sample_aspect_ratio = undef; + + av_reduce(&frame_sample_aspect_ratio.num, &frame_sample_aspect_ratio.den, + frame_sample_aspect_ratio.num, frame_sample_aspect_ratio.den, INT_MAX); + if (frame_sample_aspect_ratio.num <= 0 || frame_sample_aspect_ratio.den <= 0) + frame_sample_aspect_ratio = undef; + + if (stream_sample_aspect_ratio.num) + return stream_sample_aspect_ratio; + else + return frame_sample_aspect_ratio; +} + +AVRational av_guess_frame_rate(AVFormatContext *format, AVStream *st, AVFrame *frame) +{ + AVRational fr = st->r_frame_rate; + AVCodecContext *const avctx = ffstream(st)->avctx; + AVRational codec_fr = avctx->framerate; + AVRational avg_fr = st->avg_frame_rate; + + if (avg_fr.num > 0 && avg_fr.den > 0 && fr.num > 0 && fr.den > 0 && + av_q2d(avg_fr) < 70 && av_q2d(fr) > 210) { + fr = avg_fr; + } + + if (avctx->ticks_per_frame > 1) { + if ( codec_fr.num > 0 && codec_fr.den > 0 && + (fr.num == 0 || av_q2d(codec_fr) < av_q2d(fr)*0.7 && fabs(1.0 - av_q2d(av_div_q(avg_fr, fr))) > 0.1)) + fr = codec_fr; + } + + return fr; +} + int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt, AVStream *ost, const AVStream *ist, enum AVTimebaseSource copy_tb) diff --git a/libavformat/utils.c b/libavformat/utils.c index ebee44f47d..272b8790a6 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -808,51 +808,6 @@ int avformat_network_deinit(void) return 0; } -AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame) -{ - AVRational undef = {0, 1}; - AVRational stream_sample_aspect_ratio = stream ? stream->sample_aspect_ratio : undef; - AVRational codec_sample_aspect_ratio = stream && stream->codecpar ? stream->codecpar->sample_aspect_ratio : undef; - AVRational frame_sample_aspect_ratio = frame ? frame->sample_aspect_ratio : codec_sample_aspect_ratio; - - av_reduce(&stream_sample_aspect_ratio.num, &stream_sample_aspect_ratio.den, - stream_sample_aspect_ratio.num, stream_sample_aspect_ratio.den, INT_MAX); - if (stream_sample_aspect_ratio.num <= 0 || stream_sample_aspect_ratio.den <= 0) - stream_sample_aspect_ratio = undef; - - av_reduce(&frame_sample_aspect_ratio.num, &frame_sample_aspect_ratio.den, - frame_sample_aspect_ratio.num, frame_sample_aspect_ratio.den, INT_MAX); - if (frame_sample_aspect_ratio.num <= 0 || frame_sample_aspect_ratio.den <= 0) - frame_sample_aspect_ratio = undef; - - if (stream_sample_aspect_ratio.num) - return stream_sample_aspect_ratio; - else - return frame_sample_aspect_ratio; -} - -AVRational av_guess_frame_rate(AVFormatContext *format, AVStream *st, AVFrame *frame) -{ - AVRational fr = st->r_frame_rate; - AVCodecContext *const avctx = ffstream(st)->avctx; - AVRational codec_fr = avctx->framerate; - AVRational avg_fr = st->avg_frame_rate; - - if (avg_fr.num > 0 && avg_fr.den > 0 && fr.num > 0 && fr.den > 0 && - av_q2d(avg_fr) < 70 && av_q2d(fr) > 210) { - fr = avg_fr; - } - - - if (avctx->ticks_per_frame > 1) { - if ( codec_fr.num > 0 && codec_fr.den > 0 && - (fr.num == 0 || av_q2d(codec_fr) < av_q2d(fr)*0.7 && fabs(1.0 - av_q2d(av_div_q(avg_fr, fr))) > 0.1)) - fr = codec_fr; - } - - return fr; -} - void ff_format_io_close_default(AVFormatContext *s, AVIOContext *pb) { avio_close(pb); From patchwork Sat May 7 11:28:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35667 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122839pzb; Sat, 7 May 2022 04:34:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUcCuRLgMlXJBTVVN16YcsVr54n06pSlEsOPtmI36MMlwGEQsTs/FAKToweEhe1DfTWViN X-Received: by 2002:a17:906:6a28:b0:6f4:d368:ccf1 with SMTP id qw40-20020a1709066a2800b006f4d368ccf1mr6881280ejc.35.1651923275719; Sat, 07 May 2022 04:34:35 -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 16-20020a508750000000b00418c2b5befcsi6067879edv.478.2022.05.07.04.34.35; Sat, 07 May 2022 04:34:35 -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=DADW72Yb; 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 5917F68B4C4; Sat, 7 May 2022 14:30:53 +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-db8eur05olkn2105.outbound.protection.outlook.com [40.92.89.105]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AE22768B4BA for ; Sat, 7 May 2022 14:30:51 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T4l5A5MDWyB4fHwgw77ahdcSd5PwZjqm3PWTetNskrTmznEaouisaxfM9/hIGAUBMRbid2T8+94CUKHu3PFH7Ats1xCCWLGRkZNZOt9fS9j9ptFyfnTsK5noPEtXQhoNQFOPy26+J4zDnw2lTe4u09AGU8VWlLeSPxkr3/jYgH58UIxcCfR/II/JDkVle80rg+0dr4fhs0GRNKQY2M6vNIabDdP9rOdGvb/0Hr3sluQf9nB2btb7U7Ae6PmKw2e8sGvzzOePNmUBtKqYqvuJhuAfolKuK2P42NOHzSiXmxArwHu25GFwbNuED89wnmAmKk6/jMes+AwcwxPh3okfxA== 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=lv0xcxxCADRL/uRX1EeBjFujeXskjSKkxlGBu1/gAEQ=; b=EHqEtnys7fhPyICHqh1kb1bIEk/csdHdXVsmfuV1sJ5h4G8g237L1furzLOaJdNdYSt31E0q3+auihGcAv0957hE9Q6ZYYNf1W5DYe39BSaFK6GWv5W1DtoHJX8lPigf5TGgvEWUeNDHPQybdMJXcZG4ZPZxeJcG7jv1PO3i0qEjKgMnyO80QrDkTywSZU0FIYhBCDUZXV0IZVF3iRJa7K/St8MWbfX5xiVpIQJzak9yOkSgPwkNGa1W/+PFhbWGHZyb96ub6SXfz9zuqcw02v0fcMXyZ7PhxHWd7DM8qHLQ3GbTjlsxOKqC+HqV7zqNe7dWu1qTohwlseswFwTHQQ== 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=lv0xcxxCADRL/uRX1EeBjFujeXskjSKkxlGBu1/gAEQ=; b=DADW72YbSzbXiEmkMhJM5ZrwQ6rALMDy/RyvOK9KrHRasmWDGTmh4Ci9mqtfjX5fLsiC2E1I3mPqcBTuDzyTw83TOFJhAG2rjEJmrbdFFh+zSeevRpqms27haFb1XCJPviF2gjgA4fxNqQIaWQvSUx9ZUqk4d7VVlwHZwiJZY6S8jmPplBgI/zhTR04wzfZ8sdyMeohXSbpYodUkkHpNCfDY47BMM/8QtRrH2pYXYKk7YP5KKfM9ElHC28hiDduQAN7BJ8fpC3iOFKdXbphGmwiwmd1u0H5Cx3K6awf7rEZkJNY2gmleDqsSBZLo2RxvdzMl9Ia0aHRZEJ09blii8g== 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:49 +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:47 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:20 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [FlSkaE5O1PI2Emy4h5htoiPh02E7q7BI] 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-33-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 177896a1-f2aa-44a1-974a-08da301d0561 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwhfMPADru2NH1gKe7N2z2deFIFqx7KLZpiwgIA2MGyHCI+O4OOwDIUPdlM+ObcwKtgRn6AMWVSabgyUiwgMDeHGcRXswjJ7wNp2RwQa4PEEvT2uMhMPLk10MO6zJBCF5JpFzzzyYb3JopRRjjYzf5n/AqxNi3ARehJAfIM4suTkMcrKDn2lJb5IWL+0n41OUOoa6dySHcVj6hJoG4/7TaHE917wEj4qUbxcLS1+4H8K8ANxiW5ReBhHNVXnMh6vode9i4UHpMy4rJpHMwOnBfkyMumVaXdNpK7aPl263mAtV3u1G4hUN3Wzgz3YOqhaR8MnCZKhIiiapcP+FurNlqioQwV2yNFr41Y0nS9JCcSQkwfWjEWeBFgyytTqq9Ka6errm8nt0scmgNFysCF4L/kVGikskBLHnXylYez/vy8pri8A8KXngtIjKqO8FrkgXw5TKHMpcaDvog74p5Phs9U+r4O8SiuuU2d7vjp3eOzfBPn3ME4WEePsoFE/FoecDgEbUuCadiTq87KiFgRWjKVRV+BsK7OssOv+gi8WCl/tWMdyOO0GF7VLpCmj8v4N6zlRgSd5wjEDW8uvG+MMuzEYt1B1NnHLtk1QD95mScSZ2vSYDCru0YVWkstICOA1YzJa6/13RmjwVVZDCkWMZNnx70hOqwomrNMuYgssGusWLqKZfbNQcyKh+5Q8/WG9yd3gg1lShfoHXL8fwxzWoSZe5yVqwv8vgjLvojovg0guE= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tunr87Xnm5i7QY8fZTeIc0WSsh6PO5xaKBnp+8aMXjRAKrx+jtkU3y4+DuYsACNT4o1TRIdFBQfAer9pQsTk03V7EAIdK1KaXEuKxySX9UjMQqw8JFaouqXpnEGej6mIqxdqsRUJmNrdjlvT8sLpSs31TdvfFyGiTmbEhC9or1/vmJ/WxPSmMRBBiX54fWg2/qFIfQV/Af3BPmDS3KgAtK6o6mii363qOPNfacwheKePGRhwN4bniUOMTUY/CO/Uw9nKjwAXEdVnHTMsY2FkeKcTzQb4PpVk27B/i7dCx/5KoSv8DTcrvzCdUwsp4vCEkJ8VmQdHifXzadWKf8dfIl73WCfRPZY1NTxXX3xVIRdaV1V5f2ud5XHTCZ7YM9aLk0IISkz9g/7S/6RDpABtlJvnf9BzbNCCSl993ZSLB9N8JaAlhpGjjphsmnvGSYWfw67lixoTBhtpjq2EBPF+ZRIPy4wfhsHDa8y0P19OK1cUavLH9DTUVWL8NJjhzLvyLSlim9DfSu4QzqKO1QUNP/gl4oozApmY3ccSIeqlpxnnNaDNdUjydje8hAwxQhvDpqhyZ5JGgx/YooomGWA6VmoLj0yHGi0DrAJ7EWA5dWVNyfze0Gs+/xfhb50EYnBE X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1Qk9QP3Y9ikkZVmqWQZdGGpbp4vv4pXAogiVr4SMoEU4+7Ujw34yV53OrLiUr257ZiTc/wSoAL7gqyAiq9bHRnW8CZUJDMWrMCO1lypmBVIVfWLxK1nOOMylxsnEBALeGeplRmkkAwFmd8UJHmLuTX5cD72o5gXKNxT0L4HTnv7Ea2PhGU2Nm+PcKFyqkmc+osviIfbm6NFmxPwAtvfM+QRWzbxTZ6CaXeD1CntjSsaOKryxdwEjEou7XvQIejq9N0KY2YO8JYrAUVcTOT3W62bRkfkooVknRuL7k0q/rY29u36OFzhwPhf6nYUs1UgU7k0kzHDmLkYwbzChCiRHk+DVgqkmydDjLSfUmzwBENbSl9gW8bfAvvUpN2pWa0UoYdttwOR/7SbGU0XbYCOvNbE/ofK9wPU7aj3dz5JIAtIal2LlVWOChazMONFlvyVlNhIfG+Wq0a1JXa4bUimNifd66rjkgTxhWjlgLBKeepVWpkGaPxSmPsJftRtQljxNz1n2G/pRYbYjxlx7PX8yWRBlrF6qvjuJNs7qIZ3GDGvHax+JvKw+hi/apRhbjPc+u904yzw9uJFNgg2TsA4s4NyJa3IRRGQvKcJHzBZWMjmtzknhrDLquc9jhZfF914mxDb11uxTAoFH1+zhhZ9N/3c+F91dnhvqEGyPB1kPIbjlIXkdZc+rTUExAT3tfkMCbg+QgPqlgCR2bJmoNJv5trAtNOltcJ1N03forK1FVmdSUuItRsTae3MblS8RA7Y1qP0tKpRGUpIlq7dt5meIvIyBK+5ceXBAH0MjWt9Yl25medqRPb3DtZv7RwPLGwZ2LQzkijDQc+1/LV13K+SFQahUE6vUfkyZzGuQrmJkecXgKCLtrWNqZn1ZbF3xqB7Ntph9ixAJgy5SjGlcz3pIK6wEfAHUkiVVSnoJqbpyuczvsalIGZY61hJS3HEUvg6mol24M07ApjZItlXkuj5uWV090hNR1fak7NXOCKCN8rP8Y43zaKx+jhcPmG3m6qF0Xr9ombJH7FbHO5lmmXTLWm0BD4ocZo1Hbi2XYy+LQB25cw3jyEGfi9a8Hm1F/L8yfWTHZ7m8Hspl/lZTrbZ7ktdowCCR7O0V9g2pb4Z9FpCEstlKGbCpvNjwwmSHQweom6l+9V4qJrvxMzzWS4+UxT1lWNo98nJpyGkwUtpas5QwaS6wQZjISS47osoQx1st03ct9zBA41g2U99l+tsfL5q89u6/6WSyEMJgv8klo+QmPZPvhaRTezaJ8m01F9ql88Ht3+E5CkltNYDtGREGJn5gJiA0f1yhx1oZMyEQQV1YXwLdfANnW1QfC4DSLUqMtDZJTDDzpcyiQ3QGTeTlmOtBRvEgpGrfe8ACv0rPQxjY62o+7MyLYvfXGMgpmvbXNzVCsZnHj24/49D6raLVv2a/p6jVuCeVP5MJ5mngTCaSCjkmnN1Lsc/99ZWnUWvA X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 177896a1-f2aa-44a1-974a-08da301d0561 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:43.0699 (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 34/44] avformat/utils: Move av_find_program_from_stream 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: C6XtK594WP69 It is potentially used with both demuxers and muxers. Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 15 +++++++++++++++ libavformat/utils.c | 15 --------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 78bec2f736..e3dad1f9a5 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -261,6 +261,21 @@ void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned idx) } } +AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s) +{ + for (unsigned i = 0; i < ic->nb_programs; i++) { + if (ic->programs[i] == last) { + last = NULL; + } else { + if (!last) + for (unsigned j = 0; j < ic->programs[i]->nb_stream_indexes; j++) + if (ic->programs[i]->stream_index[j] == s) + return ic->programs[i]; + } + } + return NULL; +} + /** * Matches a stream specifier (but ignores requested index). * diff --git a/libavformat/utils.c b/libavformat/utils.c index 272b8790a6..e500d35d83 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -341,21 +341,6 @@ int ff_alloc_extradata(AVCodecParameters *par, int size) return 0; } -AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s) -{ - for (unsigned i = 0; i < ic->nb_programs; i++) { - if (ic->programs[i] == last) { - last = NULL; - } else { - if (!last) - for (unsigned j = 0; j < ic->programs[i]->nb_stream_indexes; j++) - if (ic->programs[i]->stream_index[j] == s) - return ic->programs[i]; - } - } - return NULL; -} - int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type, int wanted_stream_nb, int related_stream, const AVCodec **decoder_ret, int flags) 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) From patchwork Sat May 7 11:28:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35669 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2122999pzb; Sat, 7 May 2022 04:34:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyhlHBrCZjLcxxcCwsuhRdJhz5FjKqwC3t4stkJFrf6Z/bghc++FP2UlMz0uF5PcYEclrIn X-Received: by 2002:a17:907:1623:b0:6f6:e9ce:9926 with SMTP id hb35-20020a170907162300b006f6e9ce9926mr3927081ejc.360.1651923298596; Sat, 07 May 2022 04:34:58 -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 fd18-20020a1709072a1200b006f39eda7db9si6006510ejc.761.2022.05.07.04.34.58; Sat, 07 May 2022 04:34:58 -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=PEimdWDj; 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 A201D68B405; Sat, 7 May 2022 14:31:00 +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-db8eur05olkn2054.outbound.protection.outlook.com [40.92.89.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 15E7468B4C1 for ; Sat, 7 May 2022 14:30:58 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bl/VbciZjJ914IXMjnalalMoU69oNUd97IdKynENxYVa20jL+zAWaPbGLIYy5P5y6Z9bDT9f0PavOm2yoVnzXSv1/MUkaggTG7acFXpWaOvkeFxvZ3oUgmydnTYiXC+if5idVpFxTaN1FalYmpNpns/fGa7Wt3IkuSQkG49ksvw9hL5Et3ZFSutiUhjzvWKFcNhjna0j4oR7imrHhIsEUJYVfFcCnKa+U79Eb3h6G5NljmJV2ZUSkTrC3BpggeaFmNERdRmf7ykaPLirvSqUmFMSSrm5mzi6ioeNmfTAcK07sBwGvQXIShLiGAM+epOEK2E6QYWlfpWRpB7fbeD9aA== 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=lrt5pZwRycKo5A+2koeO+WsntvpbpL5wVC3DjHngcug=; b=Km+Ta0JsKmWYA3hXDQhMYm3VGpocQJWOqn96kG/9KkHyPyS5/Cd2jTa1z9YHEcRhjip0oVRdyexWpPNcVf4nMGl01m28IS66Uckr57zbo52DTV1oFUkpFiTIymNZGsOLit2GSWmNbBf9oZd3kX0g9WSRp8DC4mjvZkBYP/2+vMeXYffaf8477Nmq5gaQFdGQimfhqrveeeq+5KytjptpgLr/1R6QY+rZqldu4Una2RyHYjHNTLrc26TGWdMIB0RaNshmcj+QlbyHAh+OVhE2iXUZl8z0FFscUK+5wSSRQDd5+6JnbYi5a9UAKY82Z2HI5snUjyrhfBXgUx+Tr0v4uA== 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=lrt5pZwRycKo5A+2koeO+WsntvpbpL5wVC3DjHngcug=; b=PEimdWDjyPzPwx7u4mOv2Re6vlmFGcTzj8lim9JqCJzdhjBSyGLyaBB9QhpsLb2iz4QwV1w/qm/5lDlnPHttCcDVSf7SYEKg3Wj433ENmd53SUPBwr0/hKVHgPdTaR8BeKMXwoBcRD3ZgrxlD9tf0FIN/LPPrNnIGJpFEgd9aedV7YmzE9bZ0In8UGXt4ZnjvWw8M3ifH3jKuYdyrRd+JiKRH576SWgcYOfAG9MPKkRwfPzuNRyjXRtwLy6yRHJ0t6aPh5Gj69R3XaOdCPTsBvgRIKw7SbREazdlmQljge71swXKeWS3Iw+Lt87XWm4D0MRUZ3M7By4TaU0Cj7JHQw== 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:57 +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:57 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:22 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [HoTAydRbGtYrOGD/rE+gzO7z/gM0p1eg] 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-35-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4fe9371a-b5eb-4233-c248-08da301d0b37 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwK1ZQTqdVaaEL6YW0KwBVOKEwMYFmeOJkdlAdExyqyqte1SXRBUDLUC9AcPI1TocfoK92oKkQeX/6PRm3k072hpd6ik6aLMDt/IcFkbcO24Lxmy1MGKPzVTKfioWHAur8uicaYwevwjJvgsvi7z1MG5b3JeAkgtnjRB/hcnbAyhbiqw2wsE+MKlJRvqC//HszZBh/SuWmPar5wlsjzLIZtVlSWq4SmrAFgFKGYEOjG/5xpgIKOd1J4T0wL4NW1cM5FKtmj3265o698+ZTlfIcyCjKKEVUKZHTVi7tCR85hQKGdoURCOIa/h+o1Sya2UBLA7QklKHM+Kbf3b5HxxWxBZO2dbBrLaj6y/lIgEMhJesmzQPnPThtBdUgQou/Qsr70EPVWiUSYbiEeuGmavIseDA8DjV6bYrefvYhTNOdgCcwk2hXINWk5V3Kx7DgEBhOd+Km4nm5lRAYtCWjr7QSzeRINsiQCG9dxN0hHhy+2y3RMLCqMyn/UJ0DiQ2AxiXKEuzzH4GV5jxwQq8LvSfAwTWmwyRAi9xWepVC/lhbd+5VIWKR+vc+7WgsdaSEpSincy1DrVsF2blAZxKbC+DkVCT/im/r4TAgPr/szpKXMn85VDBfYB42/Npj6TqeDxH+idbgpaufM9aITG8q0p+TJUPr7SqzHeI1Jbck2rbQOGh1sTzeFLbHRdjDyAyCFE9QCwACgIA1Ya9KDTK24dW7sAg3fVFC4W/EKhLD5Tirt3M= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FfIMkYxZss9QaVPSI6wUrQQlFzfiPXAQZftzUJ6k7ky4vajLxUtLLB4xHKLjJiGPwUQicpEPQrAnzeCppyWXEk1akrGcPLw/WZ3+FtS44kyJctnZNBOPcIaNLXRR404rEPsBsodRFfX8qWOh59/nY/RjUAMPZJFwAFCjcLwb9wiMNSmBnK4Su2vwSdhBLzqf6903lA+SRU3SZATmOqK+Qc5vFNcQqeCteOR9bmNJenDQq1kmvOuwNXH+vr/ISM8xqJhDDLAxzrSuCbxsb0V4mFQbzG00G8jlVQmfKPjquiPy1nYxAo0HELq90mvZmxqVUFMG0pKYBuVZUnK+XAr0kAlobsLNPbwbdrY+MWR8ffAoShhILkNPqWRAeMfJZ1ojC02cdKaz16OUmKhXACgbx54vHpmx2ss4CWAsFEOz1g0ZWAUfacVW6I9cAdBJ2E7vilPK5X3RwAjGm3wvKRjEPRWlAEMPq6W1HJr4Z+NCvSx0i1giFqmYpnQhOqh2zNjYtrqk0fUXuxwnUlHKb70EGIDZFiaD+BpE6IrPWSliiuWEyAA3vcCx1A4kj95S3tsx9ELhmQ0QX8KJIVhe424E2n9s+jPSwxJd4FKuS4/D/zymOJZo7LXWXy2D8IjfhLnH X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UDd9qFddl98/Eg6jUUUxAOiM3m4TIhGOZaJdePFiMAhVeYUScVqgwCfNnHhfIonPdsqptf7JbyVoDmgBbPfSwldCya6vwCZ7cteJyai0yQ/UKZVVlBYELZQX+WQp8XrPs8yDIWPpCnU9pyh1VbBgZzhtpghPyMXYd2jP2uCo0MFNwDNrdrWnmb11+zB2H1k2iDFY6bLlowaIpONXLBVJI7fvTsL0UcLRgpeNjg4mI3CrJk/+YOLyysmg64I58ZOz9acYQC43ub+P7Kb51bIxMuSfulfboE7lKTtwhm+dMSKkDz7Tue5IAUOCpoovzIIe7Pr/Aj3FDIloFK0WWM3nGebOT1tTrv3KjcxHhbw4r86RMSSEHoSz1L/KNH5AS3PJCiyLirYfTHqUjkdO264/f3PXU/PhlEpKUXAnQNa3+4i9lAQBkxe9JXfpCGbX/HtfoYo3E3AowfQCImbNHjPhQWQD94JNXGWQjHHljyBxD3t1LbENY+ieuQFFNMM3EuIWC7FXzo8AbB6AaKHic9h24ehN5wphW8GhflRi63j7ZO9OLaDeNW3U/I2LdjXP92JGRN5Z0iMPIWBL4lYQlfPBWJ02Dg5nG9KeBGbkFV6JHL1Q6ZO1A2tUuExUeta8Aowg5uYNYmc6JpeUvLv+s9Zvuwk+njys8Q9NZScC4TkfSDTsh8RPqAe+bmWJx3JBphgfqlYlxK5LZCL/4fKkxTUU4Dew4E0W9KA1Chi9Th0icCAPM0tqGP3nFkprjzpsO9+OfpejNT0EqwPjsQAdtK23Ub/Zachijli7rpaPesOiVTDaFV7pE+abT5/6c/VQIKVy1GL2BckVgmjuMZjL/e4J7MllBNQ+fnL1ZH7CyM6gHc/IIn/GS5DP0mYwii50cWU5z8Gh/QiOJey1i4AoVu4NIaiINfAcWThGAcoV73n+dOP7vK/WjMkWuePgje2Ux6a5t0zGS6gtji0LsNusHICJ3HOWze0D1iUtu4o+fDCnrdnvyIBSYc8cRNs+nLSBIS4yoI1yrlUSZpXf38nB670Qq5WMgKm1tKWz7gAlKH0WIjVKtLiN+7Hu8lp7op7RI8KEeVRhGlLihIxlvvcF0aM/RGeuPlAWenjaykZJ2dq/AwcdatmMvs47CMey0IfFbYFFfpz9d86kEm3zkIOp962BrogO4RdZjbK9pWOefLyG5nQIYriItuPowZ1Sg7iGYg3HahzQmLOHc+WJ6RvGLkuW+S+98dK6MS6cRbwv+5jQ7khO++uANUooB331rvu1G73mw4kEsV+J2+Bcrd0ja12hNbwfwrgJlb4PJ3f5loHF4x0dB5KPU7yATe7VrHXuaLliU3lHRJHSlU7P8EmXq2ZLE7ncQIC5Eq7ECNsEzrbABTqTspiMfhMVzlblf5xpW0vedHqHm6HpfbCfrd9+mQmVHemZmX96UidbNkRQQkAFWc5wNh6SrFb7c6hLGIIiondk X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4fe9371a-b5eb-4233-c248-08da301d0b37 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:52.8453 (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 36/44] avformat/utils: Move av_find_best_stream 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: OLbHAy4ajx1d It is not forbidden to call this with a muxer, so it is moved to avformat.c and not demux_utils.c. ff_find_decoder(), which is used by av_find_best_stream() is also moved as well, despite being even more geared towards demuxers. Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 84 ++++++++++++++++++++++++++++++++++++++++++ libavformat/utils.c | 84 ------------------------------------------ 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 2b012a903f..a828e6db55 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -312,6 +312,72 @@ int av_find_default_stream_index(AVFormatContext *s) return best_stream; } +int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type, + int wanted_stream_nb, int related_stream, + const AVCodec **decoder_ret, int flags) +{ + int nb_streams = ic->nb_streams; + int ret = AVERROR_STREAM_NOT_FOUND; + int best_count = -1, best_multiframe = -1, best_disposition = -1; + int count, multiframe, disposition; + int64_t best_bitrate = -1; + int64_t bitrate; + unsigned *program = NULL; + const AVCodec *decoder = NULL, *best_decoder = NULL; + + if (related_stream >= 0 && wanted_stream_nb < 0) { + AVProgram *p = av_find_program_from_stream(ic, NULL, related_stream); + if (p) { + program = p->stream_index; + nb_streams = p->nb_stream_indexes; + } + } + for (unsigned i = 0; i < nb_streams; i++) { + int real_stream_index = program ? program[i] : i; + AVStream *st = ic->streams[real_stream_index]; + AVCodecParameters *par = st->codecpar; + if (par->codec_type != type) + continue; + if (wanted_stream_nb >= 0 && real_stream_index != wanted_stream_nb) + continue; + if (type == AVMEDIA_TYPE_AUDIO && !(par->ch_layout.nb_channels && par->sample_rate)) + continue; + if (decoder_ret) { + decoder = ff_find_decoder(ic, st, par->codec_id); + if (!decoder) { + if (ret < 0) + ret = AVERROR_DECODER_NOT_FOUND; + continue; + } + } + disposition = !(st->disposition & (AV_DISPOSITION_HEARING_IMPAIRED | AV_DISPOSITION_VISUAL_IMPAIRED)) + + !! (st->disposition & AV_DISPOSITION_DEFAULT); + count = ffstream(st)->codec_info_nb_frames; + bitrate = par->bit_rate; + multiframe = FFMIN(5, count); + if ((best_disposition > disposition) || + (best_disposition == disposition && best_multiframe > multiframe) || + (best_disposition == disposition && best_multiframe == multiframe && best_bitrate > bitrate) || + (best_disposition == disposition && best_multiframe == multiframe && best_bitrate == bitrate && best_count >= count)) + continue; + best_disposition = disposition; + best_count = count; + best_bitrate = bitrate; + best_multiframe = multiframe; + ret = real_stream_index; + best_decoder = decoder; + if (program && i == nb_streams - 1 && ret < 0) { + program = NULL; + nb_streams = ic->nb_streams; + /* no related stream found, try again with everything */ + i = 0; + } + } + if (decoder_ret) + *decoder_ret = best_decoder; + return ret; +} + /** * Matches a stream specifier (but ignores requested index). * @@ -595,3 +661,21 @@ AVRational av_stream_get_codec_timebase(const AVStream *st) // See avformat_transfer_internal_stream_timing_info() TODO. return cffstream(st)->avctx->time_base; } + +const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, + enum AVCodecID codec_id) +{ + switch (st->codecpar->codec_type) { + case AVMEDIA_TYPE_VIDEO: + if (s->video_codec) return s->video_codec; + break; + case AVMEDIA_TYPE_AUDIO: + if (s->audio_codec) return s->audio_codec; + break; + case AVMEDIA_TYPE_SUBTITLE: + if (s->subtitle_codec) return s->subtitle_codec; + break; + } + + return avcodec_find_decoder(codec_id); +} diff --git a/libavformat/utils.c b/libavformat/utils.c index b448f7b9cd..c8d975ddcc 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -76,24 +76,6 @@ int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src) return 0; } -const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, - enum AVCodecID codec_id) -{ - switch (st->codecpar->codec_type) { - case AVMEDIA_TYPE_VIDEO: - if (s->video_codec) return s->video_codec; - break; - case AVMEDIA_TYPE_AUDIO: - if (s->audio_codec) return s->audio_codec; - break; - case AVMEDIA_TYPE_SUBTITLE: - if (s->subtitle_codec) return s->subtitle_codec; - break; - } - - return avcodec_find_decoder(codec_id); -} - /* an arbitrarily chosen "sane" max packet size -- 50M */ #define SANE_CHUNK_SIZE (50000000) @@ -305,72 +287,6 @@ int ff_alloc_extradata(AVCodecParameters *par, int size) return 0; } -int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type, - int wanted_stream_nb, int related_stream, - const AVCodec **decoder_ret, int flags) -{ - int nb_streams = ic->nb_streams; - int ret = AVERROR_STREAM_NOT_FOUND; - int best_count = -1, best_multiframe = -1, best_disposition = -1; - int count, multiframe, disposition; - int64_t best_bitrate = -1; - int64_t bitrate; - unsigned *program = NULL; - const AVCodec *decoder = NULL, *best_decoder = NULL; - - if (related_stream >= 0 && wanted_stream_nb < 0) { - AVProgram *p = av_find_program_from_stream(ic, NULL, related_stream); - if (p) { - program = p->stream_index; - nb_streams = p->nb_stream_indexes; - } - } - for (unsigned i = 0; i < nb_streams; i++) { - int real_stream_index = program ? program[i] : i; - AVStream *st = ic->streams[real_stream_index]; - AVCodecParameters *par = st->codecpar; - if (par->codec_type != type) - continue; - if (wanted_stream_nb >= 0 && real_stream_index != wanted_stream_nb) - continue; - if (type == AVMEDIA_TYPE_AUDIO && !(par->ch_layout.nb_channels && par->sample_rate)) - continue; - if (decoder_ret) { - decoder = ff_find_decoder(ic, st, par->codec_id); - if (!decoder) { - if (ret < 0) - ret = AVERROR_DECODER_NOT_FOUND; - continue; - } - } - disposition = !(st->disposition & (AV_DISPOSITION_HEARING_IMPAIRED | AV_DISPOSITION_VISUAL_IMPAIRED)) - + !! (st->disposition & AV_DISPOSITION_DEFAULT); - count = ffstream(st)->codec_info_nb_frames; - bitrate = par->bit_rate; - multiframe = FFMIN(5, count); - if ((best_disposition > disposition) || - (best_disposition == disposition && best_multiframe > multiframe) || - (best_disposition == disposition && best_multiframe == multiframe && best_bitrate > bitrate) || - (best_disposition == disposition && best_multiframe == multiframe && best_bitrate == bitrate && best_count >= count)) - continue; - best_disposition = disposition; - best_count = count; - best_bitrate = bitrate; - best_multiframe = multiframe; - ret = real_stream_index; - best_decoder = decoder; - if (program && i == nb_streams - 1 && ret < 0) { - program = NULL; - nb_streams = ic->nb_streams; - /* no related stream found, try again with everything */ - i = 0; - } - } - if (decoder_ret) - *decoder_ret = best_decoder; - return ret; -} - /*******************************************************/ int ff_stream_side_data_copy(AVStream *dst, const AVStream *src) From patchwork Sat May 7 11:28:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35670 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2123076pzb; Sat, 7 May 2022 04:35:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyrDQEjrEsdcz+csMtisi7Q+5yX/s41nOeOQ4Qa55kPyDSz+tv8QmmJ79hO1yRqX5DcHFZU X-Received: by 2002:a17:907:3e8e:b0:6f4:ff62:a399 with SMTP id hs14-20020a1709073e8e00b006f4ff62a399mr7289314ejc.298.1651923310936; Sat, 07 May 2022 04:35:10 -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 c10-20020a05640227ca00b00425d7b21928si7661372ede.98.2022.05.07.04.35.10; Sat, 07 May 2022 04:35:10 -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=DK209JEj; 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 88F2868B4D2; Sat, 7 May 2022 14:31:11 +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-db8eur05olkn2010.outbound.protection.outlook.com [40.92.89.10]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 89E3A68B410 for ; Sat, 7 May 2022 14:31:03 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gvLARdKOVdNQXPPGS33vQx942WhHWL1QRrBJE+Je+vgd97W3mTKS4r2lOxq03Nr2CF1LG+Wlb7IP3qM/NWjDU33V86Ryq0+vh02tGM86qPi3XDquQY+tTtNT+3huRuq3tHmpvbm2R81mZmSl0tKp7q2l0Jp/itobFTDUi/KQffME0xhjcZK5S5X6foxJiXjlwgFf0BjjPxzg0MamHq8o3PS3T2iJ/0HWMTclVN4VM+ESHBqewVRO15zJla9txBGtg3FSdDHAFsNR/+xd38JRVf/RaowyTDYYaluTyCrEL3PFCidJFgbEOOsw6Dppc2iqs9xF3g4sDDj4d36HIlxxwA== 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=YquwZXEzCxOShO2XBUDf/PRqOAZ7kHcnWc68uoARNuE=; b=ltnAqWG4MEVruiWGe8WYr6s3daD720Ddin+kiVrHEbqFudqCzkJ2f4RjtiJAU1wFfcHpqXmwlU6Eg5m21tNqGHkoEDjs8EX/NHIP3Y/JEZfiMuXAcTB95xj+er1eVS3/BfZA2ETMxazqhXP9XwjZhmvLFGMh/xTaYX8DYGqugnXqrrTii5lprc3A4j+N1Dd92AApQS+VOkIdDkMqSnH30aPtjnOcDHEIqpqytDCqaEagKvh51ipFPopueiaBr35BtvE8D1BYIIdWAVnBVyzAbbCzfP8rmevVWL3/htB21wyu/gBrS9JuIVr0wm8XvPm04h0l+pxjJH/s8cU70ZBE2w== 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=YquwZXEzCxOShO2XBUDf/PRqOAZ7kHcnWc68uoARNuE=; b=DK209JEjLcpthOntRKFdtnb1fBuMPKeX/Zx+pwkbhfhPajRSVRHRGA3ou9SZzDRVL0CRNKF4gZFEM2lx0E9T4JD2NUzz0f1J/TEe46wocPxJAK+3//qZO5Ma7CMNL3s2l/9hujZgBCoICFBVETRW/JnqWBIsL9pLofTTnFjJsRTVd4T5H3iRt58mwUdZgFdrQYA4+prR/PKQhB7D92xFk/qg9IIAVHFV348Fey92S7uEHhcglzmd4ImPHhI4ZnMAfVfDrN74RjkihCzQLxXk8/d0oeQ/wdq3khyzkIaRctyZPJkQTC+hhkXvc1Iy0C9U1xztwJBoQWkwY/u3QZFW4g== 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:31:02 +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:31:02 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:23 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [rsUatRGyy8nqryF6MgXK3sccv9QqwYIq] 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-36-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0a170f36-e224-4564-1510-08da301d0ce5 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwzu4V577dU65ed5eVZN41J6p4y2huotYlQDtCd2MxMaSOJOgFh+IRXYRnmZV46ELJlXmcmPSdDB//3bnqcN1zutQHf6wJVJCtaZG0oiSEK6u4dCPS80E+xN9le75w9Rkxcly5i+cl31sgsWyq+CPD9KIygaqR8LyXSmakCuJlNGY/Ao0HxuKm7nLXqKfx83gkWNg/YrlaCz1L/sVbNXmBk/VUSb82A2yoQxTmXBgK5mhwIo5SSKwkZp+mhxdmyccN+lry+jwwiVXrrGSzwLddi3C2lD/WDU/r093O9zWfWRBmFqC+/Bsxg7ib6GlWXkHUPAM8Chp7ilBx8VYst77RmMTFDTcwTQ9BsKQlm2oJn7XpJXmcds0vqHTM7fMBQHqf7IfVDgNEdBf7OygB32qAztboGxNwua2knIL5igTE5gOe2OeKsN+mqYMu1R7kkK/mWaVgI1nTwYD+GLHe2t8zR7C+IkYeyMc2UxNEZueYjVR3Isp3cDOUU2TaCxaBpeZpHFOGckwX6XDuuO2Bf+BzcCLswVjow7tDhckq/LtwFNBTTFtfLVQCPJYcwhvmUnuZWPkeQ1dEyVe3DUquefsbMSHcDsp1IFrrBEbjpt8ML9QQBWGRxYu+H2H9OjxGiua/0ATpWX6naZfMphaDrAJ+tS7qSgwcNdKWgA0vvfXwpNYu+fDJajvDi1zbpURReEgZle7aw4K+v8cEiqijrdV0Ma9J6TLWgxIe3se99kGBlew= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AmbihqFEP/wyYFltP0R6z/0xS0yANdk10dBWH3IEbJTwMxeqV+rdXEXaBtuGvzfhCPYANA1CjPXKMG9RrnaS4gBVnMvEDGSO6QmM1+Dg8C5HQbzq3U18B7yWrulsghOyn0GbV326PU+VIlwSQTevkk0GJmDBhgkY+KiDs3r7IPIy+p2+FXw7TN0xLvBEpqAo+BLhMPSGxAWyZyykA0l9h7ytgXVm1ltBwu8Bb9r/UsH/o1726eqoa66YxyGaKRmICQVKgpoR7qchQWtieDo9+WBV8akC0bs0pIxsG/GZ/18RlpiqjAbMBDG6yjLQReriHsX787bErQ29KQHociLc1TasYvQt3p+8vVD3WJVbJyPiGghc2xBs0m3FUpVmFURd9HXXfq19ArZEYnQO6Fl34edxW0J668b/SgBkrCgwsqhqT6grzT3YOFA7ahXBHNc13bH/THUjlWGfxb1nFKze2Tg69MlfRYuBev65FMed9TjJpPwZfYquewsYzwtZAbZ/FpXhIxpO7xWLMldfu9rUCYX8vyNlrF4A5QWzkj9Etyl6+nGecVZLaV1QinKvKMhG8IE2o2wJEZRCISA6K9Dp2YuG0wxLAGzzP5cvaOVNY1NhXKQVsO+xbRx6BJ5q+p+f+NMjw6cQ9jxZmXZut705FYQDgeCkCXsi4/aDzHV0NHM= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9/t4iXf1NEBLw8KQU/bQculWVs9JBvetwrA2eCkBgZVq0PKymgzqTyYHH/7Vcl+jBBvEASwj3/8uMlMEAWIYa0Yvo5DhPtosk8YsjyYu96B3AeP2pMz8zRlFVx/PTzkMM60ZsuxqAIscPATvLHJ6XOFOgM1CDF21j5HhqC3oSH2/OqGWyHiCui5+RIoMQ504Kl4kDtibP4x+ksu3YYh1ahxLSZePCIPpf6O8onMsHyMNbznq9de+Ieg/AQ05QlvRMZvPpSwhRL5z9hRurwEN2pSYov95H5gOdQ5sGuXcP2T2deKV3xxNG8rs7svtyl5GgwRJ80mwAZG+ArJrK1sR1E+firdCobr59P2TH2IkY5RMl4vcL3W48Vo+jvMmVa/H8MmoaqQUwRvyYEEl/nGWEh+36Y3ST8uVaWIWvFRtcb8T4+tM5TLth33LIubzXdZWgUumE86LaQFZucqEu99SSzWecpLLUQTxNfpzDuegikDP2jRS0hla5L+Wyla85MuzzIMJM8U7C7MKOSqNE7ET53Wqthfsd11uNf8pQXOp0dD/8xa1m1hYN1iSl6JnYdJGE5KUwP1hgziN0mcR3Ht7o+Aaf1oUseNVX5iQNNPiMLWrY2F65WyMAZ1y5j0B1b5mLI6JaCn4gyYaxly0sLFvkN5rqJ8Zu8ONwVDbdXThPkZ63nFOEOHS6A2fLWxxLIibVli/qSpDAyJ+XX/NEUY9RI+PLwjnPWK1cP64W01o72Oq8zVJgr80b7eiYS7m7rwNuU5bKmV4CM/HiR7S0zqrsL/B86dwmJh3zmJnLgNof1xZwArXRsMv2C2WVB0cve6pKsuXYtkyeHy6RB16ghv6xYQjTEkCphTQlHwYs6cZTsjbxAeQBlDKz431cayIGutEq5wVQGCHIl1PTddjtz6Hdsf1z9S9jZRCjn3EPPwQjW8cp6qEBzSi2XZK78IyJpI+5ITFAEdUKmZMHYkI6MpnPRtS9XAi2riuy9jk7PlcZk2rwN1NEw7h0jkhboWwSaElyt9zZDR2IwIOXDEsTq5bjtMHARd3I3vbLkOl+cCSyhAzG9cVOwknG9OJM+F8exb3nio07kKI3WhMiFUPBf+218QoYZw53EBtsuOhh6OFPoWALFdQJV5WP10tAgwZzC2qMQY7qNSIPlmdqtvmBDcFStePuqzBKH08r35Z5DHzlq7Ike3aIaNyc7sSPjgMFwKE4i+j064YE/Ts6RCQjEvHknUJU+K7N7xWSvCieUx/pyy4BAydgcb+2fJTzQY0Qla6GI3JC5B0Q/sBgQJWKZZxPByhtDrebrkhh7PNfBAIM1Ht1gee46Tj+YRk+x8W14i8NyNRFJhxVbC/eFzchnrD5sFcyUQ4lWcdiYlbfebo0Oq8IAZ3EVlmDumxwvSWcjmjw6MBa/RQpTRZ25ePTaBvdO4UhRCK4Hh0g691T443jCbkK5MmyqWIRcOh6VVUCHSe X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a170f36-e224-4564-1510-08da301d0ce5 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:55.6745 (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 37/44] avformat/asf: Move ASF GUIDs to a new file 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: sGOrCXq24c3I They are also needed by the MMSH and MMST protocols and therefore the file they are in is pulled in when these protocols are enabled and used. By moving them to a separate file, linking statically to libavformat while only using AVIO no longer pulls in all the muxers/demuxers (and also no longer any AVCodecs when linking statically to libavcodec). Signed-off-by: Andreas Rheinhardt --- Getting rid of the rest for avio-only users was my actual aim with this patchset. After this patchset only two parts of lavc will be pulled in for an avio-only user of lavf: avpacket.c because of av_get/append_packet and ff_toupper4 because of ff_codec_get_id(). The former functions are declared in avformat.h, but are actually avio functions (they even use internals of avio), but they could be moved to a file of their own so that only users that actually use them get them. The latter could be solved by moving the AVCodecTag functions in utils.c into a file of their own. Yet I didn't do this, because ff_codec_get_tag is only used by muxers (whereas ff_codec_get_id is nearly only used by demuxers), so I am unsure if it should not actually be moved to mux_utils.c. libavformat/Makefile | 8 +-- libavformat/asf.c | 129 ------------------------------------------- libavformat/mmsh.c | 1 - 3 files changed, 4 insertions(+), 134 deletions(-) diff --git a/libavformat/Makefile b/libavformat/Makefile index 7fd6d099b9..3b9995a9d3 100644 --- a/libavformat/Makefile +++ b/libavformat/Makefile @@ -117,9 +117,9 @@ OBJS-$(CONFIG_ARGO_BRP_DEMUXER) += argo_brp.o argo_asf.o OBJS-$(CONFIG_ARGO_CVG_DEMUXER) += argo_cvg.o OBJS-$(CONFIG_ARGO_CVG_MUXER) += argo_cvg.o OBJS-$(CONFIG_ASF_DEMUXER) += asfdec_f.o asf.o asfcrypt.o \ - avlanguage.o + asf_tags.o avlanguage.o OBJS-$(CONFIG_ASF_O_DEMUXER) += asfdec_o.o asf.o asfcrypt.o \ - avlanguage.o + asf_tags.o avlanguage.o OBJS-$(CONFIG_ASF_MUXER) += asfenc.o asf.o avlanguage.o OBJS-$(CONFIG_ASS_DEMUXER) += assdec.o subtitles.o OBJS-$(CONFIG_ASS_MUXER) += assenc.o @@ -649,8 +649,8 @@ OBJS-$(CONFIG_HTTPPROXY_PROTOCOL) += http.o httpauth.o urldecode.o OBJS-$(CONFIG_HTTPS_PROTOCOL) += http.o httpauth.o urldecode.o OBJS-$(CONFIG_ICECAST_PROTOCOL) += icecast.o OBJS-$(CONFIG_MD5_PROTOCOL) += md5proto.o -OBJS-$(CONFIG_MMSH_PROTOCOL) += mmsh.o mms.o asf.o -OBJS-$(CONFIG_MMST_PROTOCOL) += mmst.o mms.o asf.o +OBJS-$(CONFIG_MMSH_PROTOCOL) += mmsh.o mms.o asf_tags.o +OBJS-$(CONFIG_MMST_PROTOCOL) += mmst.o mms.o asf_tags.o OBJS-$(CONFIG_PIPE_PROTOCOL) += file.o OBJS-$(CONFIG_PROMPEG_PROTOCOL) += prompeg.o OBJS-$(CONFIG_RTMP_PROTOCOL) += rtmpproto.o rtmpdigest.o rtmppkt.o diff --git a/libavformat/asf.c b/libavformat/asf.c index 6e3854eceb..1285062220 100644 --- a/libavformat/asf.c +++ b/libavformat/asf.c @@ -23,135 +23,6 @@ #include "id3v2.h" #include "internal.h" -const ff_asf_guid ff_asf_header = { - 0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C -}; - -const ff_asf_guid ff_asf_file_header = { - 0xA1, 0xDC, 0xAB, 0x8C, 0x47, 0xA9, 0xCF, 0x11, 0x8E, 0xE4, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65 -}; - -const ff_asf_guid ff_asf_stream_header = { - 0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65 -}; - -const ff_asf_guid ff_asf_ext_stream_header = { - 0xCB, 0xA5, 0xE6, 0x14, 0x72, 0xC6, 0x32, 0x43, 0x83, 0x99, 0xA9, 0x69, 0x52, 0x06, 0x5B, 0x5A -}; - -const ff_asf_guid ff_asf_audio_stream = { - 0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B -}; - -const ff_asf_guid ff_asf_audio_conceal_spread = { - 0x50, 0xCD, 0xC3, 0xBF, 0x8F, 0x61, 0xCF, 0x11, 0x8B, 0xB2, 0x00, 0xAA, 0x00, 0xB4, 0xE2, 0x20 -}; - -const ff_asf_guid ff_asf_video_stream = { - 0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B -}; - -const ff_asf_guid ff_asf_jfif_media = { - 0x00, 0xE1, 0x1B, 0xB6, 0x4E, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B -}; - -const ff_asf_guid ff_asf_video_conceal_none = { - 0x00, 0x57, 0xFB, 0x20, 0x55, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B -}; - -const ff_asf_guid ff_asf_command_stream = { - 0xC0, 0xCF, 0xDA, 0x59, 0xE6, 0x59, 0xD0, 0x11, 0xA3, 0xAC, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6 -}; - -const ff_asf_guid ff_asf_comment_header = { - 0x33, 0x26, 0xb2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xa6, 0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c -}; - -const ff_asf_guid ff_asf_codec_comment_header = { - 0x40, 0x52, 0xD1, 0x86, 0x1D, 0x31, 0xD0, 0x11, 0xA3, 0xA4, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6 -}; -const ff_asf_guid ff_asf_codec_comment1_header = { - 0x41, 0x52, 0xd1, 0x86, 0x1D, 0x31, 0xD0, 0x11, 0xa3, 0xa4, 0x00, 0xa0, 0xc9, 0x03, 0x48, 0xf6 -}; - -const ff_asf_guid ff_asf_data_header = { - 0x36, 0x26, 0xb2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xa6, 0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c -}; - -const ff_asf_guid ff_asf_head1_guid = { - 0xb5, 0x03, 0xbf, 0x5f, 0x2E, 0xA9, 0xCF, 0x11, 0x8e, 0xe3, 0x00, 0xc0, 0x0c, 0x20, 0x53, 0x65 -}; - -const ff_asf_guid ff_asf_head2_guid = { - 0x11, 0xd2, 0xd3, 0xab, 0xBA, 0xA9, 0xCF, 0x11, 0x8e, 0xe6, 0x00, 0xc0, 0x0c, 0x20, 0x53, 0x65 -}; - -const ff_asf_guid ff_asf_extended_content_header = { - 0x40, 0xA4, 0xD0, 0xD2, 0x07, 0xE3, 0xD2, 0x11, 0x97, 0xF0, 0x00, 0xA0, 0xC9, 0x5E, 0xA8, 0x50 -}; - -const ff_asf_guid ff_asf_simple_index_header = { - 0x90, 0x08, 0x00, 0x33, 0xB1, 0xE5, 0xCF, 0x11, 0x89, 0xF4, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0xCB -}; - -const ff_asf_guid ff_asf_ext_stream_embed_stream_header = { - 0xe2, 0x65, 0xfb, 0x3a, 0xEF, 0x47, 0xF2, 0x40, 0xac, 0x2c, 0x70, 0xa9, 0x0d, 0x71, 0xd3, 0x43 -}; - -const ff_asf_guid ff_asf_ext_stream_audio_stream = { - 0x9d, 0x8c, 0x17, 0x31, 0xE1, 0x03, 0x28, 0x45, 0xb5, 0x82, 0x3d, 0xf9, 0xdb, 0x22, 0xf5, 0x03 -}; - -const ff_asf_guid ff_asf_metadata_header = { - 0xea, 0xcb, 0xf8, 0xc5, 0xaf, 0x5b, 0x77, 0x48, 0x84, 0x67, 0xaa, 0x8c, 0x44, 0xfa, 0x4c, 0xca -}; - -const ff_asf_guid ff_asf_metadata_library_header = { - 0x94, 0x1c, 0x23, 0x44, 0x98, 0x94, 0xd1, 0x49, 0xa1, 0x41, 0x1d, 0x13, 0x4e, 0x45, 0x70, 0x54 -}; - -const ff_asf_guid ff_asf_marker_header = { - 0x01, 0xCD, 0x87, 0xF4, 0x51, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65 -}; - -const ff_asf_guid ff_asf_reserved_4 = { - 0x20, 0xdb, 0xfe, 0x4c, 0xf6, 0x75, 0xCF, 0x11, 0x9c, 0x0f, 0x00, 0xa0, 0xc9, 0x03, 0x49, 0xcb -}; - -/* I am not a number !!! This GUID is the one found on the PC used to - * generate the stream */ -const ff_asf_guid ff_asf_my_guid = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -const ff_asf_guid ff_asf_language_guid = { - 0xa9, 0x46, 0x43, 0x7c, 0xe0, 0xef, 0xfc, 0x4b, 0xb2, 0x29, 0x39, 0x3e, 0xde, 0x41, 0x5c, 0x85 -}; - -const ff_asf_guid ff_asf_content_encryption = { - 0xfb, 0xb3, 0x11, 0x22, 0x23, 0xbd, 0xd2, 0x11, 0xb4, 0xb7, 0x00, 0xa0, 0xc9, 0x55, 0xfc, 0x6e -}; - -const ff_asf_guid ff_asf_ext_content_encryption = { - 0x14, 0xe6, 0x8a, 0x29, 0x22, 0x26, 0x17, 0x4c, 0xb9, 0x35, 0xda, 0xe0, 0x7e, 0xe9, 0x28, 0x9c -}; - -const ff_asf_guid ff_asf_digital_signature = { - 0xfc, 0xb3, 0x11, 0x22, 0x23, 0xbd, 0xd2, 0x11, 0xb4, 0xb7, 0x00, 0xa0, 0xc9, 0x55, 0xfc, 0x6e -}; - -const ff_asf_guid ff_asf_extended_stream_properties_object = { - 0xcb, 0xa5, 0xe6, 0x14, 0x72, 0xc6, 0x32, 0x43, 0x83, 0x99, 0xa9, 0x69, 0x52, 0x06, 0x5b, 0x5a -}; - -const ff_asf_guid ff_asf_group_mutual_exclusion_object = { - 0x40, 0x5a, 0x46, 0xd1, 0x79, 0x5a, 0x38, 0x43, 0xb7, 0x1b, 0xe3, 0x6b, 0x8f, 0xd6, 0xc2, 0x49 -}; - -const ff_asf_guid ff_asf_mutex_language = { - 0x00, 0x2a, 0xe2, 0xd6, 0xda, 0x35, 0xd1, 0x11, 0x90, 0x34, 0x00, 0xa0, 0xc9, 0x03, 0x49, 0xbe -}; - /* List of official tags at http://msdn.microsoft.com/en-us/library/dd743066(VS.85).aspx */ const AVMetadataConv ff_asf_metadata_conv[] = { { "WM/AlbumArtist", "album_artist" }, diff --git a/libavformat/mmsh.c b/libavformat/mmsh.c index 495d7fb73b..672f4b3788 100644 --- a/libavformat/mmsh.c +++ b/libavformat/mmsh.c @@ -31,7 +31,6 @@ #include "libavutil/opt.h" #include "internal.h" #include "mms.h" -#include "asf.h" #include "http.h" #include "url.h" From patchwork Sat May 7 11:28:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35671 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2123135pzb; Sat, 7 May 2022 04:35:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzVglg44UpS8cfMo5cvjYrp9+ZQjVRj/uKlO7y0IuFbiD//Z4yK2THdHNRFdAmFUWY13jcN X-Received: by 2002:a17:907:6287:b0:6e1:6ac:c769 with SMTP id nd7-20020a170907628700b006e106acc769mr7088098ejc.388.1651923320676; Sat, 07 May 2022 04:35:20 -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 nb18-20020a1709071c9200b006f5062464e0si6308875ejc.960.2022.05.07.04.35.20; Sat, 07 May 2022 04:35:20 -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=SItJ76xV; 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 D90EB68B3B1; Sat, 7 May 2022 14:31:12 +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-db8eur05olkn2010.outbound.protection.outlook.com [40.92.89.10]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DD5AA68B4C1 for ; Sat, 7 May 2022 14:31:08 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IZL9TTsc5+qZG6lmGRE1MPUxIsCWZ1eMR5a9ZZ8c+rtGN6bW+IXrvkUgvICegUdi6ZGCHHfKnommqnVfy2K4m+yshJdOGu9rVW02WuFuONQd2a7x24LWZnsuowQp23QsjnJ3ixd5PnWcWr3l6WDCKwM6pLHVjg8b/iK7ZcOIRIKU9AR67FZRkrpLbCLWpsPLKnvREY0TwkQSO6Ej1z/wT42BoIZZujX+dG8bB0ehZCFZNDyxiGsCbgTH0TXxc6xRuQOkE3KoZoi/3u5DWcrtKxZ3a78CkF3SjIj8Ex9epkQN9a7acxsj0k/cA3Nh5kd2CSVbGru3EFIuSNUQeSAmTQ== 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=pdV0dSGkz6l/gh2b8G4JxXgTlTEoNk/7GNj03fS+Las=; b=hVxH/2YYBlaKqPhaU1MZqnG0G1iJdgjOnNS31OtQy7qjfa+t5lQoFipEFzZkqHIuiFkaL4wfMtB8Xc137uBYUGTpdWO9HxEL1zKLstw0D38Ea/7QZMiuczvbLDyMcVt0VdK4vzQ/KdQT6l3DIXcyK2xnn12blpiYrMRYeYy5c5B1N9UuLqbIFEQ46GWdu9iOmXoWa0SC5T5pPkjETTAslBry8M5aUHZc9hQe9XC+kebkGD4ulbAV76+lXJeq7XkBMd1N5ox0GFIWTKZg11j6Lyrl7U9gAgEdiNAzztmLwLBGchbszheCLcZYgRkatpJOt3UoAl5f/zYWPCUHv4clKw== 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=pdV0dSGkz6l/gh2b8G4JxXgTlTEoNk/7GNj03fS+Las=; b=SItJ76xVt/quSmpaam/r8JJSbimKiyzEHjOU3u2YgHjwVC1wsF952f0tDLJWFj+dSDrM+ob6hRYugXLxsAGkjLxVncFTTTcxJ4vNdEaBFk6E4TeQaorfeF9q+4ZsWFRUkLfdGfGdQniGYUiwGaChq/cQnbcxFSBZt6hXXR/hMHNvuyubHo2+0gSKMDi/dgDMsCiNu5ApkUjdC7/SWaOx549iXChSXynffVggnALdBANGPKoOjXEVq267VkV2vP1cFsi8n6re9RfdvifIJUUJIUSezfAqfqEcJZC+VAsBJVfKN4zMqMU8UnV11a3/Efd2l64IbaYfKt63c+h0kUaosg== 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:31:07 +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:31:07 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:24 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [OhN6Q0w9BPW/e8ItrgGw053TxnMpiszO] 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-37-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 79eb8def-2284-448c-c3c1-08da301d0e37 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItwx6hL8RKgGgS53utO0ti2q7tW7kMls3JxTOHqTEvKSp1oRsj5O7IkvP1znDUjIwLS8RD3xeu/EvoR48K8BZKZxB07JYuwxUJ/y8ZKIxTpGeFDoiErCYw1GnCS/sSG1NyrQI2J0OqvAtDkmYLXyofyZKYWORxr5IXyEk2bfXh9lTdUfx5prI9Eevv6C4sRlB6HhU30ZFHQTAYV1EQYAbEFB1L+IeIp2ccXPQAEl6LbOHNCg/JpNK9nuq31UowabFeusFi2Ab5vUNdPOa/9+s0Z3Zmoo/q04h8GE9/4nohAUSAyMbpuGqKG0i6bP8JzIxX1rLxBHXSAOySvYQYjYqVGESzbgSYYfSDe9J4PFOle+yTGPzlQmM825OYKGpCtODipbpKpzEMh4R3/3eVluEqDtEDAYzAPg4RC6AE9Yap5ZBQ5Y1Qi/5ZrqeSzLvihgMmku3TOzBNZEHkSHG5FVPbINflbF+Y/D9B4ea6HXTDSaBUGaptH2332qfWZMog+QGNkD08IZVxfolccMJUvHkirnoUxmWEH1S8abW+11Hbf2CD4ja/hhkSXDEOBkhOJFRKzgDAarbDYhpqKrZyHYi6guOg9sUO+iHW0EsY00jTJYcMzq+whj4Z0ZMZWdwHMDHbYZofKK/aphAj7Wvf/RWx3fQqDDvjVUjdgj4bNMJ8beYNof7IzpUIuHMemOgleHKQ3xcgPf/b3SP/mzooftFnUy++jCq7EmARu+5JHwrQX7/o= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yNdVvBsnrJ5t2Mfz28i5J31HdFA9sndb6rX51VQR4n+aXQAKypLLJLL7HECJ6f9+cMynThfH88WU22OMeNmbLnejmzQf4u/lF7OwYHeRWjOlmTu0O3M8lHmr6w8eagp5hs3dD9LEZpQeSvZzMm3r2zNMxhf5i9jmbaJ0o/rUax3nQbzQwEpKRIPnpQabkpcgCyP9KTzeRpJooU4+qwv+0B7ST4ahWXOf7Do356FReiFLEPiwRAqySMaUfbYAm/9dFeQadinjeDvqkSh9nDIIwh/XfXih/MQIJkIFcxKvS1SXH4gQr18wL1owpuo1jJKd2PqpflLLLVxg5nNnDRz2GWkAk9QV6Gc+5nH0M13V6Gh4Gk3J9pf+DYNZFGzPYKUKjmJlfeo5kfNjjyNe+7vlfAA1pijE7kIKUEUfWb3T7IPmo7q7nSaALAboyPHrugctG1HN3l4D01OO6E2mn4inM42LoKrz7BY6bc/bRZX96JAmHQfgXFw2Z7Hfl3RIhPS4Ld2OJcsDeyB+iwOFEmGrSWFfAJIO/sjwoawKF7TVpALK5pHnG1CawSEiNRXviSr3MWV768zIBjJGLPIVoIus0f54NibnkT3AEF1rySEvLlz7KvWW2iDC4DNgzqDU9lVm X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0DHn9i5bxsFgG3Q2BdzqiO4++5ZYdz5drOhKUGoRlchAs5NQ7sGorVgv7E7x/B3znhaQPmT6JdgFJO0vAIpBU2ivDUjwqYl3zvTdzanwW4jy0Pv9M6I+Cu9dYwYptP5zE8SayNNrpmCUHx2C2iy9FcXzSl7KSxcetUasVLOTKo/uoIMqJOC82oY6IBGU/pg2a0sp1Goxdb6UBAxJccGvvJ860t5DKPG7qqUXbGJ74yeO5g30XXanFB95X1XnypAQLVdQD8F1pTYaIIEbf9ZlbKCL2tTYpdUNS9otqz7OXM0f3SxrPeCVIS9jVlstLG8swCfUvLfeWMmp2Joq731m9wKTULJNWskqBBQqdvYEdaqKYgaoE22XSL8AnQi/iFsmB3rUttlEPQTk2djq7tc5HGXr3klEsIebk2aPmv8pm4v+GyAzA+wBD3R8r3pAwgJMkTWloQHM5pg54o6l8cfo3t/UKNTLF6C0fJuGJyCOdlC4IkEI5TU6gasXVUuM+rgrbjn4Mh+0hma+VTQiWOKnT/PLpLFAM+4qtCrFWrTyyn1XvtVTXrcoVux8J7G1OFgLJqzk/tK+C91wFTnFGt387t9ImTiDvaK6jgqk5OiN30S869LxzunnkeuhVpat5Ne37oqC6OAWR/bM5EkH6hBACzJvb5frG/wLsT5CTk16THO/X8EDPo0BWeJylrMcsuMtrrYv/cX+n0GezlTCtW3PXFUVaF5zrpQCRTaUk02JUNRfnIN5zgY8n0t0POPH0i0bmShRuyjRScnW4Y9cJPMrE3RyGrjQ//4YAzVzjrFhzSo4jGn2ENFBgMRUX5MaNWAnuZa/Kg3F4KVG6Awv6XqjF3m4eZTV/rEMQ7PkmWAm+ZKgrbE4awTud/veclxLv9AjEsyg9m5E1SCt0Nfh5B1SDXhgHrfWYdgh+g2wgco+BsfnOxkbxVun/LFzfUPPxNhsJKk1fHCl/CHO6lWHv0qVXhco2m9pxMGewZ06SB211PM5qxsY1VV+74fiQcsSsqzrlG8iYnuDb/zpVBJQpGxRAc4Pccyj3iMQ5bdwbgKSiZ/G8L8j4uwfpkdZc7TqjU29OEyhOEeZy/Vp7ewkuWzpc8l3rhwxMMKhcr3636sVOjXd75/i+pwW7LRTK9UXYK7f/3PIqXR6MCLsVMOJOCGkS6OYfKXJSlLShscLoZB1IRqDfWlEfq8uZzdPzRc7YoNKmPYwqTpb525YSWe0S4LrjqQthsaY7sWlYdCVcUl4MVPocHKax0kgwAr9LkgbbaX0jvzRucols63Bz+nSGDPlHOLNBpxssq0O6aHXjwPq9mT4N7zd3NvNWcJCVQStnBFuPWRwWAXnN6+ki7RlVNP/4MC7ul6ird1pXoExi19nOjEg1XyIsFn+riwkzi04gAHYll6n0sri6pZYdEBgJ8jLMKcE2x8Ks56kpeTI6NoUF11HDjq0+dPRoyKGlE3duZqc X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 79eb8def-2284-448c-c3c1-08da301d0e37 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:58.0660 (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 38/44] avformat/utils: Move ff_find_stream_index to demux_utils.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: YyoSzUQaCvkf It is only used by demuxers (and it is generally demuxers who have to translate format-specific IDs to stream indices). Signed-off-by: Andreas Rheinhardt --- libavformat/demux.h | 6 ++++++ libavformat/demux_utils.c | 8 ++++++++ libavformat/gxf.c | 1 + libavformat/internal.h | 6 ------ libavformat/utils.c | 8 -------- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/libavformat/demux.h b/libavformat/demux.h index 209cd813ab..a008c3dba1 100644 --- a/libavformat/demux.h +++ b/libavformat/demux.h @@ -226,4 +226,10 @@ int ff_generate_avci_extradata(AVStream *st); */ int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size); +/** + * Find stream index based on format-specific stream ID + * @return stream index, or < 0 on error + */ +int ff_find_stream_index(const AVFormatContext *s, int id); + #endif /* AVFORMAT_DEMUX_H */ diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c index 6e894ae28a..f699c79383 100644 --- a/libavformat/demux_utils.c +++ b/libavformat/demux_utils.c @@ -367,3 +367,11 @@ int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int return ret; } + +int ff_find_stream_index(const AVFormatContext *s, int id) +{ + for (unsigned i = 0; i < s->nb_streams; i++) + if (s->streams[i]->id == id) + return i; + return -1; +} diff --git a/libavformat/gxf.c b/libavformat/gxf.c index e61291382a..f720521c1b 100644 --- a/libavformat/gxf.c +++ b/libavformat/gxf.c @@ -24,6 +24,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/common.h" #include "avformat.h" +#include "demux.h" #include "internal.h" #include "gxf.h" diff --git a/libavformat/internal.h b/libavformat/internal.h index acda79821a..44516578b0 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -558,12 +558,6 @@ typedef void (*ff_parse_key_val_cb)(void *context, const char *key, void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf, void *context); -/** - * Find stream index based on format-specific stream ID - * @return stream index, or < 0 on error - */ -int ff_find_stream_index(const AVFormatContext *s, int id); - enum AVCodecID ff_guess_image2_codec(const char *filename); const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, diff --git a/libavformat/utils.c b/libavformat/utils.c index c8d975ddcc..68ea1d1050 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -644,14 +644,6 @@ void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf, } } -int ff_find_stream_index(const AVFormatContext *s, int id) -{ - for (unsigned i = 0; i < s->nb_streams; i++) - if (s->streams[i]->id == id) - return i; - return -1; -} - int avformat_network_init(void) { #if CONFIG_NETWORK From patchwork Sat May 7 11:28:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35672 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2123182pzb; Sat, 7 May 2022 04:35:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8XGcGW1NNLeQbhlRBfAdSntw0UIds/rW/N/5d2pqvSlY41sGeEATmwXJH4J7mbNdAKYBl X-Received: by 2002:a17:907:3f04:b0:6e8:4b0e:438d with SMTP id hq4-20020a1709073f0400b006e84b0e438dmr7036108ejc.391.1651923330398; Sat, 07 May 2022 04:35:30 -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 d6-20020a17090648c600b006efac6c0b7csi8143882ejt.7.2022.05.07.04.35.29; Sat, 07 May 2022 04:35:30 -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=DwJMP3WQ; 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 1749168B4DD; Sat, 7 May 2022 14:31:20 +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-db8eur05olkn2050.outbound.protection.outlook.com [40.92.89.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 380FB68B417 for ; Sat, 7 May 2022 14:31:13 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SwWMBqvOndnYNFi04zFBHbWHGrsQQplNd4qyyqM+DqS16UAtdcHmPaGL8QtbSeQdI4CRH3Qy/sOaLAviBy91qr6S6rGJbVPQqHiJAEeyvBma3dQn47PXrXLF486iXJLkigpFRVGFCV/GnjwLAYzTx7FiT8V8wBtVL4RQWclsJd0sqEfuKo8Bm2pWwEK3T/gxAc+Bu6Ajw2AHDtfdEg6+E5gPvWMsmzu7kzp4WfLF/1clqaoIxIf5oUnSWFelnUinAA/yrkHHcmbnPZhurKwiUb78JJqWXbEx0UCU6WxBv53BYKL4DO5T1FhZf0WiQqAGnVXFoPk0QGZ0xoPa1yO0IQ== 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=vd6HIq2PtGf7fTtP4rIfuZu0hEtmXphym5DCC1NRTMk=; b=TBCVNv+mYK4tRMjuIGI76QSeNHEp2B+EoOzzxKxx0zx2YXtHwsuYI3FVa1+BWyktVd4uHQdISq3WytdFX/zhrF08OE/IXNDU73wb2IRSyPbJz4AueqyuPW5/pVs72O3pg7wU0EtWTqomYZ4ItPiLH9/TsHH2qw5ZoheozXNtmL8kcd4WUTLMUsC3OzmYKIvL2OjrT5DZTVTYrZ8VG0ICDaQ05fcm+rjKMP8PUNaBNIRHqhdM21cdxBKl6F/uiUjq1ENV1sva5vFnxqrbT4rUpFRSaIWsWYBTq6Lr3T5zPAe2kaAV67czvn20APmVWb/Byx8ywZ1smJY6rFgOEAsIYg== 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=vd6HIq2PtGf7fTtP4rIfuZu0hEtmXphym5DCC1NRTMk=; b=DwJMP3WQmfQA+X/5ssFcKxTvV8YLa8P89OJL6XMMnYHNHoJ6o+0vmPJzOQMYkWS/xbihagaZ3VNeWZXyYCPTZBb7CJEjBZh+9DI2bsTvYIGPB6bgmnNlxyvVQzBM35cVV6m/zUAgQReBvhV0xLY8BxEcP5z5K9rLZ4nfP7g/XPmkIm+xg7YHCNuJ/ltMhgt2VXVA9rM/XJEmpUQ3UcDagDIFPpXApQiQ0eRH5QN+Y18gqAnO+s87HnJ+WG8w3sMo2qRj6vnAWFI0O3FiJmjBf7/6cyS7CtZBAzL6Vzl2CFoYguNBCmItTPUn5jPOhVZJ2rjTAHdFrS5K5lMxzR48PQ== 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:31:11 +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:31:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:25 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [G525Q1HH6FzBf4ZouFCJPqhlt2B6DeR6] 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-38-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5241517e-df12-4a2c-175e-08da301d10d1 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRIovyFjHwHllp74iOQFItw++0heYnR/zZMD1MV9YHbyfRBFZTEEHypZnlQ2CvpSnjYrUcwh4SYa30fkMekQ5UZTP1/EJOLhcMxEjYpQfrCK/q26q4d0e4H0ew6dPAUH3vNd1LxyRHOYdv/2Zbyv1YvhOH53SPFGpQX365FjzYXbd5dyPlIpjEN4zAAJykp4WhvjKkPuIWg3b3c7bPBgkbUeUjAlHSu75A3SLw9be9ZQD2CBvpWXJ3ZTX26KyOFAg1+J50kO4x3Ri+b/DgSowP5xqIBvVfumCrovb0ygB2vK99lub1GPWKt/5C+diflIzu7KRTiQMdgy758yYrcUom9/MISCkuIrZijKaSJ72deSinfBWomCOhj067DD0KAi9OWaCMlItTe9vCL4YVaEqZScr/zRnTBqy5dJrITl9XxRsL572AcYFV7Rjv3RysH+w6msFtCQExMc6A/xp3LJBBp9Jo9q4cpCgAoxwuOKxiyjdFOyruS2SDWFfAqdKYY0W9dUWs2vWssfKckjO57xbYA5h1YTfEEC+7L7EpUu3TUnlCSKaFEYWl4dghBcCKgMCZYSqnNoCeyoqsIUMKQVpCNcHHSgyg7x0xbT25OKA3jdu50DDk2tGY2BMMCI7JTOjzPq5cfuPUuHEEb7BRf/jbU/oISyy/uYUA/72VdfskQd0vTvPFBcxUKNP9EPV76IBYMH6wXJDE4lrqr6BGLsgSSgGc0J0LMR+cO82iGoQ1zGVXI1lqUvquRA3Vbo1onrPg= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5Kw8gWc7gMAeocvPp1AmhNMz53RSRxfjvav8G4WHcX72y9c2zIjwWD3FdyZi/w03QqnFTbshSzICsgQusrHPtRSiaVJOeIhdKHPVF+S5TFgSUKCrBwprDOcD/VeUHAaRiAUVVr5xEgVHp50JY5SbU+dLvYkvPw8DDgQE5oxw6A+g06MsjjH/lZmaF08mGzZOX5i+9FomAIcQ/0HIcBfqJjPHBUDv9lyZ/+iwahicxQWoArZ8bZww0zIDLVrBj3Pu7xBCJOzx3uu+FFOVaFt1J/ysJ1PNQcgXJ5mUBjtVyPgsTPweDIfE5n+2ZoqucXh7EXMx1GJEhQkB77l1N0cIAvNWqH8gXEk5xa5HvJh9wQ93fGQeDoBDB7JZcjeKK59hBKd2Mm1iD/bRKHnKsw4GWAJQHv89e0Av5+hosBCcc/x1vhxOPNdM8YkAoZV3+N5xfds8qEKRk4N4xgt6GnAYuYAHnJR0qlUeTk8pYtnfTmBKuUYIdk6EYKVg2wT9ppXmH7dYl2QcxUSU00mefhQt5FIjjwz1Mcd0ZKKTu4Ea+7ZyR5eU0qoPsmHXoiD2R4Vaqrd5NI5dJWlyj/yV4b/SL8+9c8/wEBENVqY1dqrQ87iWNMORIybdsMF1eO3h1aqo X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yfqYg8Cqr0+sHJe0UPfYI4DkysiTBfG5M0r6zgVSCQ8/ibBvhUX1kU6a7yjPYsX/5tKgN7Wp+t20uBrOIDlXRWlzovPO7mXPgMj7u8dPsNAZ1geHvdQqRgRWRkaaD6txMGL9vWpUr1o1rnM7pWKjk1cUJxDbSZmL/m3U48OywB4ghUPrPnOz+stBe7C+6i0iXXa8dNNd2ZVxXukbliAuMt9kufMNq0fKxpsVYNL94ld0UrCZ2V4tZCjxKaQ5bm7NIEWCaBtZyb3SauxAtMCd0zmqZ4u2bNmVc/kNNRIBK8nUo9Z/yd+TBHeNN8/GVYalpCqGHQtpDugw9TZdUmdh2W0IdScg75fgJaImFeoP0bkktZQXkaub5UH90e38iuqd0csWlLBt7jqVJHa+DrcNg0jylLT8QJ/U0gCy3wVbRDQEc4MoStpSjELXgSQm+lUnjrY1780YFYQQmpd5gafVD9Vz9KM24TpMt7nlwVD303pEuXqPdLneh/Kp/A+mDOaDiTvx16eBCGeof6zK5vGHfjQqVIbi95L/PMVVYcYsFmWYHXl5M7fibqEMbFLJvV/ovJoSlQOV6XuOnuPqPREODHpG8cWAPYJ/Ie27cJVJZrOifvHktT2Gw3p/1LCdyD7HzX+F0Epj36aRxqyIIqJlQk3qhNc8krAmyvbE3abkGudZngYSjFGlot3rR7cNd6xVIMeTdbQPX0Q6/+UUR3hzGz5Gim8ZH+dlWLtAHsSsgiikBvHq5IBZmJ7EGPrAZ3KoFY3oSv85bbsd/1veSwvrgFLMFb6FdzC0wVH+yd7+6F7IsRILSNLb8QNBu4F58lpYH4T4FI5XuxpvqJB0pXtqOpeNfemRMJQyjS8IGSnU+pyQBs2xFSkYfLM9MHyrh3MTa04wT5zSu7WMTt4Iy6skAPP8yahixYiIt/NUkCBxNOirXO5ADuAI0KGRMh5XIuCeo3eRFS3bm8Telhg8N/cSRFkS+brCHA7lsFccfhYVZMm/s1B8mJHZ5NX9hDyUI3yl/2uQjJN6G4z3NHp5b7GDBa0+zUQMZE+TFkCeSXJ4KkOkN5ZfgTriB1a1ENkzIHKmXrhmaX9zv8Qme1tzfLAJwcOd76K4T+u6b9j2gF/nBGKIcZaiEhOHfpy1yc58Ncbt7GGF3p4W4mnieblLNfHLBbvmO4fs8cwgVqq2/V3VTn00xBlIaJSyIQ2ExDjGFXchZ/jpIZJb6FchTfMY2LK11VdOUcQzPTEFBzKp0XunzfXfpjsRyHSw4oMBX5F7/aKzMqfvt1jAFDlEvFQzn409u1Wpnzxfni5fI0TaeZ0AMVFoJVdBbbMsiuRYSfHcKY0k0azPjvWO3qFujbr0XXnFg/+XO0Db1YEe20xQMFHDdDYshenWuXq761n/pWtcnLZpW6MORbsDkF4DviXp3eCQgo/aUHZgMascyrRp8DmWdAYap9Is6pqO3WakgVkp5yRz X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5241517e-df12-4a2c-175e-08da301d10d1 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:31:02.2544 (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 39/44] avformat/utils: Move ff_is_intra_only 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: X3J/3LVqm/3R It is an auxiliary function only used by the generic muxing and demuxing code. Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 12 ++++++++++++ libavformat/utils.c | 13 ------------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index a828e6db55..eabccffcb0 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -30,6 +30,7 @@ #include "libavutil/samplefmt.h" #include "libavcodec/avcodec.h" #include "libavcodec/bsf.h" +#include "libavcodec/codec_desc.h" #include "libavcodec/packet_internal.h" #include "avformat.h" #include "demux.h" @@ -679,3 +680,14 @@ const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, return avcodec_find_decoder(codec_id); } + +int ff_is_intra_only(enum AVCodecID id) +{ + const AVCodecDescriptor *d = avcodec_descriptor_get(id); + if (!d) + return 0; + if ((d->type == AVMEDIA_TYPE_VIDEO || d->type == AVMEDIA_TYPE_AUDIO) && + !(d->props & AV_CODEC_PROP_INTRA_ONLY)) + return 0; + return 1; +} diff --git a/libavformat/utils.c b/libavformat/utils.c index 68ea1d1050..343d8e7374 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -152,19 +152,6 @@ int av_filename_number_test(const char *filename) /**********************************************************/ -int ff_is_intra_only(enum AVCodecID id) -{ - const AVCodecDescriptor *d = avcodec_descriptor_get(id); - if (!d) - return 0; - if ((d->type == AVMEDIA_TYPE_VIDEO || d->type == AVMEDIA_TYPE_AUDIO) && - !(d->props & AV_CODEC_PROP_INTRA_ONLY)) - return 0; - return 1; -} - -/*******************************************************/ - unsigned int ff_codec_get_tag(const AVCodecTag *tags, enum AVCodecID id) { while (tags->id != AV_CODEC_ID_NONE) { From patchwork Sat May 7 11:28:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35673 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2123247pzb; Sat, 7 May 2022 04:35:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxypuP7c7odvb98tcfdGoiMm+EHZo4Mv3z+gOnoThQmnLhvTA52Lqr6XB7A7pO3Uen/5iwJ X-Received: by 2002:a17:907:d22:b0:6f4:8766:2042 with SMTP id gn34-20020a1709070d2200b006f487662042mr7048873ejc.259.1651923339629; Sat, 07 May 2022 04:35:39 -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 o26-20020a170906769a00b006df76385eacsi7577924ejm.844.2022.05.07.04.35.39; Sat, 07 May 2022 04:35:39 -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=oUt5G5tR; 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 0A81368B4E0; Sat, 7 May 2022 14:31:21 +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-db8eur05olkn2050.outbound.protection.outlook.com [40.92.89.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6BB3B68B417 for ; Sat, 7 May 2022 14:31:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P65ztanmXrzhmPVmFjwZpOEcGsJA1Xr4D1ksmFAg4WGtKxHldQa/7YCMZogxNM4bY3thVeeKoladaopc8PJvysm29pVtQv0dCSX+z4RjmrOqpsmPdwehxLvCEySQsTgNXJiFsU58MzjZayAWfHm02dVb+CIWrxTI7jgR6wmNxHnOVPGaPbfLl+B+IjdIQr5SmIGbdPay0Q0bAqSkrRmYsXEiND4K4asxnEW8vA71h7mpD1bi1/hAlnkXvAnr1EsRzHodp1QnB864HuSMoit1nVomCr/o0ABEMM+YrUVvle8AbT6xCLHLHd/0B3Pyp5Z8vSjzyPn3bwkJJ+wNu7EDmQ== 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=O9Fvsm9MzjKiDyDKIKKFFy8iIaBE1u8RQhRzG1C8AzE=; b=EnJ/Bt6A0xRZ8hRTzXZM1oTQU6qbZIp7/q0D39+SfjJ3VHN2WfK2Hl7TnxFpcT69k6hzB/Kp5F+PyH4tIMcG4/l5en5KXyGoWvYx7BaIky0V8fT6KKBpCSrrxqNBVDHgH2vacymw2C/PkdAnZAdtPZmDlB5IlZETj6TZ/M+4X8WS9tVsMa0UMHMLf96M8NpR7aI/XmBcDenqXvtK5gdDKqCX8AkVckXoHu68eFC4GVN7G7JYTe7kjuMRwSVK9kfz54ibCzX6r65/RIVFWdjVV4aLTemhtjeduWt6R4LMfeNhhSoMmc+6DzAT88tPP/yn4r9xDnECNDZEvYsjR6YnLg== 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=O9Fvsm9MzjKiDyDKIKKFFy8iIaBE1u8RQhRzG1C8AzE=; b=oUt5G5tR8kLA1iDYhkHLsdzJAps8+vhV19a3ZYJzrnjG1tquTAipkTpo8wRUBmkO54Qzu5Qsi/hdJhdxtH3QtaOC/s3L1DJ6Aq934dINweAQyyMERSUFtq0bE0JwPg+Q8wbFOyMbNY1gmsOyyKRTFX9k4El4zMpDSPWSh2D9y5KHKbQvX0ymhP5oHF+CpYjPwwR4ocGh7yU3I8LyC4fGACOlViaAv9/pujlr/TRFrQgi6WgW9V0rLxdvd2WLMOC/JAdSHhjKWzj7HumXL4Vs9n7CA7QNsWstHDm+U2Ul7BxLmxZI2i+HjHtly9r2OAPLsieHoH+DMkNJ/pE1r+Euqg== 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:31:16 +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:31:16 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:26 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [LYWdPZN6taFJ1/KwGaNmPkQwl/So7vjB] 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-39-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7bc23087-fe12-46ae-89f7-08da301d122b X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8oePGfv30J+uWr14Lzz8AW9jg20Rx0wUY2pw9MJItZpCuchn+TL8Cwql1EdIeTNLrph/cFcDkVdc0bLGEZPdAImUuJfJPXDrfXubr2jn9BCZmH66rtYvZIsBxz+yJhfo/+nO8jrEqavVHN3Ax/SmgUqxKHC6q3DCLN1lb1agYIfyMI4xD22bR+ts/WekFO47WwmaOeHhi7WL0hMsxMc+S6j1xTM+khIRr288oMgPLgfUUedI+u6xDz5YocOvtdWNK7d9wMlAgsSoe077Wpe8upGoiVmAiuvTKYm3W7tY1JK5TjcxHJVh/VIEenVWyh7zjA9kxYYvjiUN2Pea2Afizhp1+e+Sdf5BuSPD4imX3C6VNQRdEtk3Klp3t6mBq8wEH4u8o8NBDmsoxcX+IIlSqGa4R3wlzKYqAeGuNDvPAX7uJytcri9lA9FyMGKRvcxflD5bP4tcvajjz24SXpKQsEG3A811adDRugqSZGHbdd2Hpou4GPUuwdNiQVrrgf1/HM5R3nfGOkVGq+3d5Z9MlVWgfrtVabqRXnd3dCP/4kqX24GVE1r9ULhGQK2+mYdbHJm9ljzKpX5ufh2zK90XnPIlP3Gq0XDZRsGBpetMhQE6/pyeDyun4l3Y1aXJDzxkycrrPxvy4ydup/KP7VDQ63K5QAKX0UwBygdVy46KDbi1TWluyAEzQIXDhVUSb2kvk0EswJQbIWqM= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: B++/1XGA5nM3AAPb8HX4lpSnUiUs0lLrLfuYVgNa+y3TufxnHj8upEPa7kbrUIMwduKX1ylL5LnmfajlqJcVteB8aPiYIFTnUocogtHBAk9p1waC6Q/AiJmGFeSlvPZUJz1+BilU0Fif0T1vO3/g08HWFdm7SZ0kIDh4DBmWJJoreIM4UGrIVDUrz070+LFWJl0re/UEMyvfgeE9gEo8Fb2eKhFNy/u7uudGx5n2nsL8ZZpQwqudCj3skRl/A3B4/u/WNAsE7h1fxOzbN9FYZA89HT1uOWygTTTc8Swo/OuDitsh90qDRBbO/bot63IyDAmPCFzqoD7OqXg/xcrdIUyCp1w8at5zixjTYQnpBFO0X43YJYKi1fUu4v0VxCoaFbvfL9am7nDNIZ2kpE+lvEiHUxNpN90CzwtvSTMenJg0Jf3V331PUmr85F9OrtrA3a1k4lqpZZVEu2JPsXBOu/U7DRuJPpoV9KoPeQVqDx41yuoIQCegzas9pil5Td+UoF8G2kb5z/3b9X7Ke+FA6NHDzT+QABYbQ8f2ZWXHvAEXaMKuX9xlU8L2jtqCBVZa1RF4v/iDkTJaXMfoIUbbL+/Ir8Odr67YEHsy46EF0WqRsLBgexFffv3OpFk9nTTs X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: EigVakp6Kv/oLT+aO6l0zu0dRSFk9x4473RrJhrI7+ctfvjhlBkfdoJ6ZJAZeZ58G7diBRiZbFfQ0/GBTage2tdcS3HcBcOrcNOQ+MD9mHnUbB+Xf0LoA5FqQcl/yC7mj5ATzy3gwjp42FEmBGA5Itw3jtP8yOTeDyNymHQPWHIaMexeZNuNCuOE2bS1VV56liUb/+Sy8iewE8Qrc+yq3+lW+q5CJjIThY7+oH2uoEvqtZsU1yKsbOvD2yNm3L1L+cIpVWeWoTzZQU0GGCHUTdZ77jxxjsREbmBI1/YdbwWfO1Nri8B3axrUjt2UspjwYUdP84PU30OB/3wYcvg9qnzxzJq711Rb49MT8XODfoBXxCDgLuAoh8sTEJkkFfuwYcNf4CINTM1HPTwUMh4Pu1D7ZyC4sZukTpAcgb9vSQR6kTBzhloJ9yroJPIAU3dpe9GApIiLVq5qFNaAu9l9aewmWrKMjBw06lXAwXCvVmXctdrjIvgNUnjjY4IFhFIZEtcgStiRlwSJ4sf8b9+digNsOKQqiR6JMqr916D5FR/VreVnv1IIdMxzpZHmtmw6B0aekErijsL/tYlnb2cePIm7R8oqgWK6zwLjik84/Op8+k6r3OGRqwZef0f8AVYgrkyUP1CwTHDI5WHl4NRyzZxwkNNYlvitjCvH5joCPtpRgh+jjeT7zhqX0gMxKapbw3DKP+8PIFUY0l9ge5Io5XBeEDFz4ESG86Xdu9zxNHBwGc6V5dQCLlsXVzxrnuW9n7f0rhXuKd/IhxLYD3nq+MXzTNVIT4agdygpvbiSwpRuDbAOakxLgrzHqT4E9fTujhDimSn3xpkmU+GesHXnS+Jseq3f0wV+fshrV8rIuLEqtFHYokpASZUPP4fSU+vj4A/EvyZrqonUZ0YREfOTO80TxtdYGPzBz3L1wAvEjPcl3EAMBhDLa4ANBviA9pi6O68Hc3E5uDTNJg3Dx0rT6Xm+9ApmM7m/raSDleBxelBkgPlcac9+Rp7EHMzAAhMH69JNyQj/H8xb/4tJn6v693EC1ky/AfWBm/D/BdCyt5/f3JrSX4LCTBj/H3aCTkzP6LKaaV1vN12IPjmSGyb1kh74aM4boW8kixO6b9bbYmKxQ2F2dbmHS8ENxuu9WTGjg8gCTz2OybcXPYdlks3O/1aSLWPsrt/qGEBXDvv8I+Esy84Hn3yGHQUzjSo2UMbcgxOuXg8BHOrYAfLBTKoW5UO0bgJRUyptPgjyOvRt46UWqKYC/VIYQZh7IDcdQiMnAt9OgMTpSF1vP+jhKNlSgh9t2xneWbsW8/8NkqWsyXsZil5gyjU/Ur1DmES4wE8y2wqXO+f6UWlI6EqylbXikIx6IZ9+4dMn8jGG+6eVkUWnd2sw6Piwb+1DbiDFyibhyPoA3BF0gzFfHH11keydJL7X/5Ma/fBFRVbCG6ITHOOGrDy3dwwmbcsPKe68lsER X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7bc23087-fe12-46ae-89f7-08da301d122b 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:31:04.5717 (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 40/44] avformat/utils: Move ff_format_set_url 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: /hnM+mF8C0KR An auxiliary function for AVFormatContexts (mainly muxers, but potentially (e.g. rtsp) also demuxers). Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 7 +++++++ libavformat/utils.c | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index eabccffcb0..414224187a 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -691,3 +691,10 @@ int ff_is_intra_only(enum AVCodecID id) return 0; return 1; } + +void ff_format_set_url(AVFormatContext *s, char *url) +{ + av_assert0(url); + av_freep(&s->url); + s->url = url; +} diff --git a/libavformat/utils.c b/libavformat/utils.c index 343d8e7374..866b80cffe 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -697,10 +697,3 @@ int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf par->extradata_size = buf->len; return 0; } - -void ff_format_set_url(AVFormatContext *s, char *url) -{ - av_assert0(url); - av_freep(&s->url); - s->url = url; -} From patchwork Sat May 7 11:28:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35674 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2123288pzb; Sat, 7 May 2022 04:35:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzDZfySU0QNyqA9yM01W5Bfy0Whl51rvLFsjbTsewJq2zhqmQaq/rVPxyFxUpFN4NTyUyq/ X-Received: by 2002:a17:906:d288:b0:6f3:cb6f:428f with SMTP id ay8-20020a170906d28800b006f3cb6f428fmr6895905ejb.332.1651923348597; Sat, 07 May 2022 04:35:48 -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 w10-20020a05640234ca00b00427d81514ebsi8629885edc.14.2022.05.07.04.35.48; Sat, 07 May 2022 04:35:48 -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=LyDlwh3j; 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 ED07068B4E1; Sat, 7 May 2022 14:31:28 +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-db8eur05olkn2070.outbound.protection.outlook.com [40.92.89.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1C72F68B4A0 for ; Sat, 7 May 2022 14:31:23 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JHkMhzeR5r2oJxwRRIAAtSW9PErgILpEoGPIk+MsXYZvXwlPmbBW9HGL6WxvEOgo/vAsTWjT6zqOqoJ7Bek414RNyIV9UWnEW7l7dqm+KvFG+gGRtb4f1/P4Nr9yQJGA+1ulVNrROsw5LKySknIa88voETzeO3l4QQQrWZ88RZxRqPxflSuomIA0q3IX2eoAOH8g9Eq1vavB+9LdYrl6k5/3/r+lly8Uf9VVDPOf+DAljO1ZOCtiPuNrGWQiwaKu3mPYU4HJHxQDIr8KUuUTpIqqCajJ3uiqXlXOidnIKv2jjQFwTHbnu4PksaUmLvj0xMYcyzIq/Z8tP8vaCDoJuw== 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=8vUQiczgZjobT0x23w0vA7PXb5dc9SdphEOknz+CKe8=; b=iCpczoARaxw+I5xFRrZXBJPoL3iwRcU9yZstWuihhmCTuoucL9JehmUZklzSEBSHmLagQZL0ZfS5R86m9CfCGp5aV8kp1daGcGlZ6R+mbtoPyop1jMawvMNuaMnMOC0pwND2F5ShP4+Y9EaJ2pLZyLyjNyAyd5QreC8agXy+u6XNU1Xvx2svS8kuVEfCsWIRfcE7Jqt4hFfPjAeI53QJHfpd7PW23s6b7uxHw87MA2oXWu6mMWNYEw4eHVjznK9Dacw2INuvbp4pjQsPVnoONaKkbLQlVnmtb5L8YsoVb0CBhlfqhHG/Ztt4nm9SVjiiMztshicD4ANyaJbv1XSsFA== 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=8vUQiczgZjobT0x23w0vA7PXb5dc9SdphEOknz+CKe8=; b=LyDlwh3jYtnptEhK/fgAOUbOqMZhgXtJ2wFDmqeAauQVBY+reak9eOYs7FFKd0vEanZXZztVFNgSZYn4KK68wSjWsbYuIpGRzzn27tSrLPJTdlgc8S1a2QEryxgYQJ8iRFM8ToFMynAC5H5c2hWATKg0T8wp9wRAJh4JUNAograaVlJAI8BgUQ7b1YrufNoyhXpYMpfCWLjaCZZUvvB89uxXDLemnwmPBP4QxYYAvJBUyrBJzpiO1ocu+TIpCh3uIErbGaOykf8RQ/WKev3W9yDOr6+Rzr+GKjdCZUVur8ZXkrWQ7THsBj/OjYLk6YD8BEIDCRenmiztnEN1kwuKhQ== 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:31:21 +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:31:21 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:27 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [DctL4dc0/20A6hUZn58xC4C8c8aCpQ8t] 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-40-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a657bb4b-4392-4b53-7536-08da301d13fb X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/UJIjRE5frp5NC4IyFBWce+aUYxeDlI9rvKrbW3bwML1PK16HU11+ZFKcchcvAfjdn0Glv8rtadUWWAS4U2ls5C0gWzEG4yQBgnRDvD4HZ/6Ezuuh3bvzj8xuOqe4uAE6neHMd5xMuoUaAmJRqcr1Gs7tUtCS1DjtOk9Loa5SNnUeEIpigSCEK7I7JGALzkGU0SySzLUT+NLPKyUFwJl/ceMepQgR+Yq7fzhY9oFogNJK9TYNBWje5vap/GQAv+y7v7ZI0qHWHmFCn35vWSdA43Uxs2u4p5382/K2gu0MpGCmV4TKy+NlWIDIAGVG4sM9fjkd7b4K/toEGEJ83hCo3PrYtzGEzKLGV8PeKL5q2AY7Wro/O6P6A+XgETtk5RCJHsST3iItWbQlisYQmP3xapIF28+hpz3m6X+tQeNzJBn8oivYmPEbl4h1ULvjZoeXPg/Wt8HBu6LeEUyL3FE8vPQvKBU0rIXzFQkO3KQIUw4QeJZXj8YdzRo7kWTRAateoykLKfqtBiaRxymG5+J4f/C+DFAwRW3fq7knSmi3r24MU95hynr4nnfNUSGB2j9thkO3/8SUZ8iNFUUnbBV1L/JgxC1+XwN5RX7DzaJChF2wN0mYoI7VLcmXZ/TvE0VvLiGAxCUvMfQ109gZ+e9nvoGDuA1hC0DqBlmxc4MjQv3C/lPmlE0WsIM++6WsAATYuQ4AOSiXR+tIg== X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GIjWv3U4N1NA3dLfmF91JjLRwCA8HLbicuvnwe+6zUOkUUx9rvD9AN4gmb548WJ6yDtv5au8/EUYcuj+wlSlibpQ5L1VsaapnLxAZTo9QJI/L6j3G8ekyr1EtilrJ3kbJl8RxwNDMDDJQydbOMaWqip6WzS3fQ7h94of8hVVvP+5P45ErG3tGJD4Li3iWGcu65MriE2/ucdYDhbqTU9JEq+b/yCcuMCM1/sDVKB92ocvBTxgVwfVCZEOW2jvs9rxIEBW9fl4EzL1izQ3Vv8QpK7YJNxIX6HZbjZigdUoWzQAciycjIsoc3s8euW7dl5JdQdmmE78PGlX1BHf2MjMj92yBc3YKpnHMyarF5fjsFixbw45ITffABudxCaoiiQD9cXg0BSjJZC97oRVLxaJHoF+wHpZ+EJe/jOyFMh3tfbcsRS9pxxej2s/cwHvkLJRiEekyxmZu+IOfggjPNrBfqzukT8ZnbaoPlDhXydZU1YfIfIqKl1hPQpuufj/dn34OpKLJiDZSecWeFjGeFniCMX6mOleFS0YSdcwfiX0d09PRbBTypatGVWzY/b7y32NQDan/iDI4s2nJpZhnrvvFzO5cDnfk4ezqt2ccJtXZWtLtU0OooLkIAc/CYhHnZWT X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eNcWv50VscxQezRP85lw4wtPEjyrSRaGFRRW2j16Bs58tc1dFPad1A4Les9IIcZTZlgfCRXx9e1MjfZSWmKqb/jLYYeAs6ZFdRZDwdbgzcGV8lzHRj3m2nZ3oL31Rkj0hNl7uXRadR8bmsRnXG6YJKd5J4qRN4JpBjI/hhiSTKHEUfz4iEqYqUzTzCpeQD4ptqwXSNTshJxAJKjhXDBq32tfZPmUs/kLfESbZFD3HYB+OMvk3ubwNAY2UcHeNDzwTz9ATXH8by/b5/+fx+vUhMJxoTyeVLQoxizl6FwB9E2tqFCacfigb2ylHUfwXgT36Fh1m9jrngaXlNz1JzZEGNOKVo9sBc0Wzwu5hDMGiQS/zKH42nbyMFp+PaN4+eS0e878U8MwEhf1TLv4dS0h7WcpR95E49DzaEZF5DklVYyTCfyAGKUOZBwlDWPEzqAnoSWuPG74z5WRApPddWE/11qRef3twy6hlqetv5dcXIV+uUd9I37deWH6KtFMwjG2kabt4jGKdIEQJ4ZXONF6iif+tp/C69Jovq+I2f4KHyPBKPv3BTMoGtnRWF5joRX06JAFJ1xccUU27QcQyyMXznFsDD7/nSpIMT4EXD2R8BYWZZFSyHrWMKoaAGAGHz8YqfHD9HmS64/XVe6rtMzYWXOooPnmebzRLgwpjYO4d78065BbBUliTR91psFPcRLzOdfsE7YOq3921WzLZ3dCJDFQfyx+vSPmfRcKp/0fcpYmkBiA8yGuf0UM9+YZcPIdSHYRdQukNF+lLArDowoKzdwITYLmTCLsqgzwLUqPqz0gwLeqJ7TKvbUZ/W50FrQYkvIXVyDVbU+dRtJYNH/vDz6xEjLx/44G6rT0mqFmCw/JAajeWddYksI2ypri+tR9COsJFdXBdwwWfIMcZYaqGnvwzMR5K0NmH23yCb5sQx4YxkJLvfaGiIXqhVGY0HJ9qupKyrUajsC0GiuweiS9mhHi63ywzNkl2J4J0/E4K6kl2vneUm/17TqPjsTwCVSLalPi/8xW8i6HzHZSEs8Q7AZxalmAruAjB7w5vbKV9amB5471g1ZRP8Ed6oWO6aOyXpOXv9knXAdFtTvITegzR/JH1H+5sDl8IUaErfFWZws+PjHaMhSdOE38eU03d9Fc9IsLgT/bYKqBKBxzSbaGrbgr+l+tV3e6zn/pLVd1uciYqXY5eFKYue1ydqstxiGJbFTzqUFF5gyx+bgdHsp66lh2nscyAETvSM9D3j9h52DaiNdLPPZRHbV9JkjW3tVlPyIURbsJ1FFgKwtumy67eQJ7er0DESdOxCuiKpkiJaT1cQ5sp7C16W8AgbmK5KddQTuT16GEKh8fnuOyqsmqpQMoWZSyAlnnl4+vPZRW7guhRHLE3hyXG1SdOQ3FjKoGGcwilkKr2APiDOrh3AfvnODj2rktZXwqG7DFR7e5bSyZI9c5zYBoPZakeDXTUcaX X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a657bb4b-4392-4b53-7536-08da301d13fb 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:31:07.5340 (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 41/44] avformat/utils: Move ff_copy_whiteblacklists 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: nAphovmPCtEs This is an auxiliary function for AVFormatContexts. Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 20 ++++++++++++++++++++ libavformat/utils.c | 21 --------------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 414224187a..2249f09825 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -681,6 +681,26 @@ const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, return avcodec_find_decoder(codec_id); } +int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src) +{ + av_assert0(!dst->codec_whitelist && + !dst->format_whitelist && + !dst->protocol_whitelist && + !dst->protocol_blacklist); + dst-> codec_whitelist = av_strdup(src->codec_whitelist); + dst->format_whitelist = av_strdup(src->format_whitelist); + dst->protocol_whitelist = av_strdup(src->protocol_whitelist); + dst->protocol_blacklist = av_strdup(src->protocol_blacklist); + if ( (src-> codec_whitelist && !dst-> codec_whitelist) + || (src-> format_whitelist && !dst-> format_whitelist) + || (src->protocol_whitelist && !dst->protocol_whitelist) + || (src->protocol_blacklist && !dst->protocol_blacklist)) { + av_log(dst, AV_LOG_ERROR, "Failed to duplicate black/whitelist\n"); + return AVERROR(ENOMEM); + } + return 0; +} + int ff_is_intra_only(enum AVCodecID id) { const AVCodecDescriptor *d = avcodec_descriptor_get(id); diff --git a/libavformat/utils.c b/libavformat/utils.c index 866b80cffe..26f44ddfa1 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -23,7 +23,6 @@ #include "config.h" -#include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/bprint.h" #include "libavutil/internal.h" @@ -56,26 +55,6 @@ int ff_unlock_avformat(void) return ff_mutex_unlock(&avformat_mutex) ? -1 : 0; } -int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src) -{ - av_assert0(!dst->codec_whitelist && - !dst->format_whitelist && - !dst->protocol_whitelist && - !dst->protocol_blacklist); - dst-> codec_whitelist = av_strdup(src->codec_whitelist); - dst->format_whitelist = av_strdup(src->format_whitelist); - dst->protocol_whitelist = av_strdup(src->protocol_whitelist); - dst->protocol_blacklist = av_strdup(src->protocol_blacklist); - if ( (src-> codec_whitelist && !dst-> codec_whitelist) - || (src-> format_whitelist && !dst-> format_whitelist) - || (src->protocol_whitelist && !dst->protocol_whitelist) - || (src->protocol_blacklist && !dst->protocol_blacklist)) { - av_log(dst, AV_LOG_ERROR, "Failed to duplicate black/whitelist\n"); - return AVERROR(ENOMEM); - } - return 0; -} - /* an arbitrarily chosen "sane" max packet size -- 50M */ #define SANE_CHUNK_SIZE (50000000) From patchwork Sat May 7 11:28:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35675 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2123336pzb; Sat, 7 May 2022 04:35:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwCQtQl+Top2Ve3mRrEDNerkrB/d4X3x9RCM1Y1y5j1HOoq5ddnYMoM7KuYmqSbCpwzT2Zl X-Received: by 2002:a05:6402:1cc1:b0:413:2b12:fc49 with SMTP id ds1-20020a0564021cc100b004132b12fc49mr8127789edb.118.1651923358691; Sat, 07 May 2022 04:35:58 -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 i26-20020a17090639da00b006f38bf1700fsi7479927eje.585.2022.05.07.04.35.58; Sat, 07 May 2022 04:35:58 -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=CM0K1FWe; 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 E3B3468B4E4; Sat, 7 May 2022 14:31:31 +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-db8eur05olkn2070.outbound.protection.outlook.com [40.92.89.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5566968B4A0 for ; Sat, 7 May 2022 14:31:28 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LEyir3wFivU9HMYOxkdWBIcEcr/xYMrZtUqFW2DeBGs1VHNku4VvIK83X9ZzX+oJmWGqZ/lZv5dd0ErvF3TDCa1Z9QBHUSXfbgwBBzypYTrM4XLee9uQ8rfm25n1upPDsrcz3QN8hGiOR1/lKytxZw4HjxuCa6dzSLLngJsQltr28ambSsYDZzE6IJph8lhfWN8eYxP3dqGQhZOZRDuSdsuUTP8IUGH7mQ0cUSC0nTpn5E0JHH5k7FW7UwsoHEdvsNBHrSVzjmdSv624uB0S9cUnjku0B387ulK1FueJpyvX1l5K4Yd9jISFIVa0UB5w4qQ6FleIqCW/YqQD5MFEhA== 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=jRR2CqgZdHn9UdVRLvcVM0jaCRt4n2/fJvYIfMZdsnU=; b=R6EHXKtdSlVenDUzsbU3eECpaacMqygtnoERGnoYs1K5pxe2qUKPB1EzK8C5+ydgKhxWdjTAg4/+J2qHz1j+NnLeKScEyZYuHF8NQ0HYqp/45GyBwesPBkzy1Gncmig0wPKHniQ81gKxTyGMcVHbX+brmTeq4sy3Zh64trUwWrOmmYZDXGXKcHpAFQoK0oH2myx7R5GzfB6QA/izpRVDc7Jfl272JIiFpzazRh+MvP83IOnLq/riXG94Q9Pp6jMEKdVUbTpjmm9LFGuzW9kobJQgZ+21LgHIYL7SPX+6z24kx3qlsc4EY6jl4fWJ2pBwj8V/rbqs0gUhYdhBCzgk4A== 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=jRR2CqgZdHn9UdVRLvcVM0jaCRt4n2/fJvYIfMZdsnU=; b=CM0K1FWefag1BAcTrNssqPbsrG6+b0/gyjkIJidA43gr7+w/aUHzWcn0jy1JjmvpbQkz2RioM/QOUClvUlOLzp5SOnpeGoElbYKQdZl8zAudHAoygVZaZKHqQUcY326rPcOl0zo9l0PNl/bAFEWgJZuLXNHnrRVDzuodDghKhfyqzuTBvC/3SdNd+9nA0uJ75EDvSEsIZC9AFy9Bv8O7tayWFnIcVhsJQYqGoP0b9Ft/YFQoTJW2Flic1kE81x78wsJfl2QGMraNK5Fd52rHwIgNdROtnrXDF/zCIAZRuCG7Vgugoll4M1nvN24zbgwSsNx9w5K3Vdhz69KninPrew== 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:31:22 +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:31:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:28 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [NrQo/Dg4wAh2aoRoj9Gz/QRA4X8rz4hN] 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-41-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 71ca8534-f397-466b-2899-08da301d17bf X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8TX1U2ayKbJMPdMyHhNmyjoWCOrflIDBqBApMxSZaU3xj6F+v6/lSBPFUYZKx+IlUly+nDrGMXq0AzZ+lwp2XQ/9JgrCuEbEkXR5KWYFPppL195o7JjHQJYwbOu6ca4OhrLHGkHNUcNXfD8iA1jzcfa6L6MeLmNUu//hYFE8gY1wD2okuH6toAMlCEOSV34GoEUxTv6pGHMsVpis1FBMqjDBNm1OXljmGUjEakBsmEv9kgy42AGcJGctaUbsYCQCDq26CSfzUPz0R1lu/B82BgZiPfC7R8icPAQzqglZfgB4r1wYkzH2igRHoGb1kYXRkArDXisf2Ik4xjyfXptTZ08OdPYMXNJKmlhkW7NUH1FUBY15v1uinbYLirjOpwd6gp6wbEODQPt7nU8RsJf9dhl9TdKDsgG7B73IdvTul4vabM2XUcA5cZzwdgPe9TB9Q327OD6cbjov7IGnVuu1YC66OpoyyVeG4ejAwFy0T9EwyEvQtW8tg0rlNO89l4jkFm3hqjIUL0FUtOiMU8PsqzHaR6ad2NBF1mmSQHryAve1GWmpUDv4QhU9VFulAwOV3ELkvLVdcDQSnqsYFExfF3/p52Nj2iOAG37qY/1nqqRvmS+DI+0oLSX/flXDiyA+Rx2pBpV/hFPFAyhXUbOKWGBGgPZCHTuGkT9ZpT2tJf3VFjnBxM1vcwjHJhS07gCc9RYTM+lHJw34= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JQV+r8qIIXPXL9HGcUHs8z6b/FmUbpT7vFrPB9VKgMSGJjDz4Itn7k8O/th1/vpaqF1Ct6w+u4HmOvpSrri+262XGy/f+FzdBLGJyxVkb+T9kHzhE7Tzlsn8+eHx0S3oqsGHKWu4q+1yRZT1OW7do2DUm/kW7sVfoBqdfcTI2PG+ptTpFIByPscbR9TfswW/DJC35Tesg57n2gOmNQiZ7Z1bXHox/UJ+4qOj6hMBtaM9bARMMLm40jbe0xnRzbnyllYwwb3vuOEgOcbKWp/js465Bd2MUa9Gt47iX+fQZ27gTaltgpKpQXzUObHwaSlHWEW7ZWRkAvpzKJlT09KL/Ds3dniffBXQ6lDY7y6a0X0ZzayclO5sazBMU4iP/f1AtPh2cg1hKn3GGZtvGfynE7lkkEPNlfnvqeCgbQQ/wQdeH8MHBV5J/t57EJhgRqq3lBip5DHx3PZb3/7JaH/nKoPEif97R61SFCIQt/Dyl7ijrX1VBLQ1PI20FiWsflkc81OUXctF5CZk4Ikg2qegjxETeinEpVzE9hgisXaY+6zTusVAILKfpjnoayVf/K//7K5XpKXtjWtE4IQ0Aipc51VkJq2LfUV+NfMtAoSmkXlSlPKW43DdMW5cLvZ2f4Lr X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FwznPR2EL+p84/v/BGFg137/S8qqgL5LtMTYBwRZ8HZsjpkiN6nPIJ5xBxMzNdWpHzusoR17rmwhIv08g1CJ3G0Ksk/moc/QixmlV4BNQUfOo4OttKCv0XmxwBGdGnX+pPbT3EGVohcAIHmWhIROk7b21pWLxSXPXe97gZ2um4YZaiJWmL3X3OE8aXGWMy1RxznJdwt9vNusvgblTWTZS3y9WmmcXEWg/pPDTEyvXz8GdqUCxxM1rjz1/lhHG2OBJS5dAaF39TqIB1wJQBhFTRYTK39xTnAjmPFWY+umeKBIqAasDiXcCzc/B3d1X0h4X4zPgEa89ckguuQybEwb1JSqs+IDca8eJWvfLfXNrtFqd5+48Ci5Ku8Sk6t2erBPC2TzNsFlWhUzNGY/FJT769Y+JTXG72sVFFvf4/X0RsQMegqgay8GPXcsF4tjknryqmi5st65IiHy10Q/hdLHULzaj4THB/SufehrA247VNIbhDyfkddPYuYv7ONMH4ZCcQnxrsLjn7PdtwKlMjyJVl06G4SsC4CfC2GY93V4cblZa7zSoPOZCh2f7Tg6pRiBH60oUs0mIMW1ac/eETmlLNbzX6H/cLT9iTlZxO5ca3fy3rgx4AjeCSalFbqANvle8C+wHHtFvXLR4KiUwSJebm4GvjMjEluDB0pjMwaBmJ1vQ6ZE3auhzgmRRDhPkZiPOxdZG9pjqDM7HrRQ98Y9vdxzUXUIqUrZEehtg2L4Cb4ujpzMWz2JeA1KsW9Z39Mb0pzkVbpIwyxnXkUc2ZbhHySNaV+DmIoFD7wyHF5FMzET6+OC/D837ugf716q3zs2NwPdWpvcsAWZWzPxsA2yZP+dYaJx7E2OJWA4ZStiHt6QUUeytBKQ5+p2aogSMNaTLC7C+bxLrKKVIvOADlgBh6MGqb4SoAn2pf5PK/kh0Rux5JP6lSTCT4HXLtny1DCJYZnMP4Pt77tCd++b9Jk2mvQjnfEaWdhbYCros6tiKOJK84w4GmmJ9nnMwUY6BRztNgL6BwBErdBL/1FGv+ZXJm65ApSBEIL7YbpEw0xCQ+5AE8HTbgURG+nrpAP6ZgGXoz7m3xTwFNIgzJRvAVzfAI07/fIMPPVZJB1kVMySzxShi3oGe+64pLgxIvBJRHRo3sZ5y0IfFE+k1ol5qLTHcFRv3GddfuIvg7yXhA5ytUFH1Ety093ejUYVjwrKe9WXqT4VOSkBSSdYSwhD07fFRwQpzXG2r4QvcW/P/TZK0h1tJoqu4+3PvDN4na6/OkznBKnxLVC0x7hpapw8UGjs/yBoTofZ6lYrbMSalk2+u/D3wDhZk3xHd45uTmK8PW7CVFvgx47650jhbs2XJeR0XLxCcPgLWJecOl4rnvMSxT7rjl3N49DTYkcnFvWcKQStcaS9ObXIYXEHTmhcgS04JLmw2sW/ofbTLNo1Dxwkh/iTuXJWnFYty0BEeqAOUH6d X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71ca8534-f397-466b-2899-08da301d17bf 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:31:13.8497 (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 42/44] avformat/utils: Move avpriv_set_pts_info() 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: Fz58R9bXpBMs It is an essential auxiliary function for both demuxing and muxing. Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 26 ++++++++++++++++++++++++++ libavformat/utils.c | 26 -------------------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 2249f09825..2a919ad89f 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -663,6 +663,32 @@ AVRational av_stream_get_codec_timebase(const AVStream *st) return cffstream(st)->avctx->time_base; } +void avpriv_set_pts_info(AVStream *st, int pts_wrap_bits, + unsigned int pts_num, unsigned int pts_den) +{ + FFStream *const sti = ffstream(st); + AVRational new_tb; + if (av_reduce(&new_tb.num, &new_tb.den, pts_num, pts_den, INT_MAX)) { + if (new_tb.num != pts_num) + av_log(NULL, AV_LOG_DEBUG, + "st:%d removing common factor %d from timebase\n", + st->index, pts_num / new_tb.num); + } else + av_log(NULL, AV_LOG_WARNING, + "st:%d has too large timebase, reducing\n", st->index); + + if (new_tb.num <= 0 || new_tb.den <= 0) { + av_log(NULL, AV_LOG_ERROR, + "Ignoring attempt to set invalid timebase %d/%d for st:%d\n", + new_tb.num, new_tb.den, + st->index); + return; + } + st->time_base = new_tb; + sti->avctx->pkt_timebase = new_tb; + st->pts_wrap_bits = pts_wrap_bits; +} + const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st, enum AVCodecID codec_id) { diff --git a/libavformat/utils.c b/libavformat/utils.c index 26f44ddfa1..848afa3c35 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -530,32 +530,6 @@ int ff_hex_to_data(uint8_t *data, const char *p) return len; } -void avpriv_set_pts_info(AVStream *st, int pts_wrap_bits, - unsigned int pts_num, unsigned int pts_den) -{ - FFStream *const sti = ffstream(st); - AVRational new_tb; - if (av_reduce(&new_tb.num, &new_tb.den, pts_num, pts_den, INT_MAX)) { - if (new_tb.num != pts_num) - av_log(NULL, AV_LOG_DEBUG, - "st:%d removing common factor %d from timebase\n", - st->index, pts_num / new_tb.num); - } else - av_log(NULL, AV_LOG_WARNING, - "st:%d has too large timebase, reducing\n", st->index); - - if (new_tb.num <= 0 || new_tb.den <= 0) { - av_log(NULL, AV_LOG_ERROR, - "Ignoring attempt to set invalid timebase %d/%d for st:%d\n", - new_tb.num, new_tb.den, - st->index); - return; - } - st->time_base = new_tb; - sti->avctx->pkt_timebase = new_tb; - st->pts_wrap_bits = pts_wrap_bits; -} - void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf, void *context) { From patchwork Sat May 7 11:28:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35676 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2123386pzb; Sat, 7 May 2022 04:36:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwAPxXxOQDZemdXqlxmFiVw7z0bTP3ZS+hbx+FlmQJ3jRgJAL6n4n5yfy6oj+OhMDiFNerL X-Received: by 2002:a17:907:2d8a:b0:6f5:df90:45c4 with SMTP id gt10-20020a1709072d8a00b006f5df9045c4mr4670138ejc.662.1651923367759; Sat, 07 May 2022 04:36:07 -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 w15-20020a170906b18f00b006f0034e2730si7759497ejy.930.2022.05.07.04.36.07; Sat, 07 May 2022 04:36:07 -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=mk0jl7k8; 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 B171868B4F0; Sat, 7 May 2022 14:31:33 +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-db8eur05olkn2070.outbound.protection.outlook.com [40.92.89.70]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 763D068B413 for ; Sat, 7 May 2022 14:31:28 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eSfDWe0P6wUbdbO0rxBcXjqcMwtRLrhEaJg6Q/zEOcL8tQ2hcfjmQwW94+EZ+TMgqFH0jIctBaxEKBljwgv8AWU3GeKGE5vBvi7NtSFmxHszfDsmvN+k7If8Nh0+/BYx3qqCFgiMyo91x8QrRCacKLNwWzy3EgSS+2SQhIleZh38/P9DdiYIEgkZbqW2U8COZof3vPVxQcGmczjMx/WOn/Oyisb3qgUiAG2+mJ/zNnylrXNE5c4KbdzpB9sROdXzDq4/TReG5cnIMKMnYHSv9wiz+6d+t1Xt/i9Rpu6Bl5SDcOJnQt7adSOuShOLDKPgKo8QDL4PJw9rcED69StuYg== 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=A0b4f1mx1rWUQUT0G8BuciBPkJUCQ5q8C+J4IURQqhA=; b=YJekF+jYUHVnX15ZR4UyqfuGr/dUXIMImmp1hAveUfUL05M3Zx0LX+X6PcecrnRla2JihhRX2RdUrH9P7iDdxIAN7aLjgt3Pt3Evc+2GI7sIgl4yYvJkLH4I6eI5cjBxUbLa/rsdUfmX7mbvxf0pMyFoSX48XnDotHJMthBB4ZgNC46zY89acXeclt2HGBj2/6sTTLJI1Vqbpl69GR4xkvn0AGJGgiZnCJoyx8mNR7XGmnumjmuzaxZ30QcYv2JRoNszw7wxfyCdOcnjwwH5vuY1XxaIBcDjUissGSgC/STeLBsDbzGd5HXGmjnb6xgRDh0Ttt6GIlb4QO1s72zYeQ== 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=A0b4f1mx1rWUQUT0G8BuciBPkJUCQ5q8C+J4IURQqhA=; b=mk0jl7k8llnWiA/TY1OozpgaWmkINUwDTTP9UNgBSrxQt7L9uLOTP9PHFUsgPXYREJFtmFu7XPbuJqPRWMr8kZZUmJO+fM/Z3xaCJbWY3tHz3nmdV1bgp/NXbXNnnBZFSIDb0uCnA9w4e7MRl2ksecUbFuQEwQkaPPxhmN3BI23AhzGtyKnuHThvpmBvOcxtSLpBka956qRVdjrxv7FokkCW3Gs91O5OPm+qk65Oq5MB+NJP3yGwro0siLl/uwTHawLlGAmRFaM9usoeVq+w7r03JONrqBFw+Wxpz608E6d95sR6JYqRMg55sJMUe+WpRc+doYj/Bttd8CW3Tm/rdg== 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:31:26 +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:31:26 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:29 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [bGqzJXDCeB29H3H0OhOnaatxEG0F53C+] 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-42-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 60d7a396-a56a-457b-0db1-08da301d18a4 X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/UJIjRE5frp5NC4IyFBWce+atiGmsDaoZhwQirNq4f985YXNpnAz2tcY1Zq9YKxUvxppj24PlWhUpUUXQsb9Eh2lYaj2ltvAxMfP9ZxObjwryhk+SnY5cczeg9Sfms4XluY/cAo/jhh11+Kv5KUs88WTYs2bBnS/FvJgXKxd9o9gDwcr5G2brhhgugkSE56jwc3dLvyexZgqIpxcCQ/oD75QKJmA+1/vYWQR+sIPZdsIj327r1JfleTawbfFwlakueQER3AfeGjgiADPKP3SP+I3DFOIKqfEuxzWDHpTQTWcgEaxIo400wlIOEezBQjLuioPd/5Qa7A3Kb9yQSFpFrU39bGKW6F5NDZiepYa4TRI4u+v6LbRfkAdsgN1RRSrs7BcLClJy32RIDJAvq4/2v+zIsQNSwQdXVQzRBZ5DEA+7JtzkVrxT+hjoJVVC5s2TvFfZ/6Y0/CwgimQiF2yPoAEeBlh3+zYYQL6sxrD7HSEROr29lXpIFgGE9/4bJHc8oDi4bUq6SOW8v0wSesAhjtmRE0RXX/QyWG+/0xc1DztuMHTMHhu/tKu5cMbT63OSs5qQV6dmBbMXBW0TREbQQK57qi8clSq/oD4DeCClp1+woJKB8yhSJRwcGXCSISLu4Wa3qNYKYYoc8jph3RPHap9iEY4SkQ82UM5jyVBkcC9luuNTf6gkK7bnj6y/8iNiwsIJUY+1cObUg== X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Gk5MfAhAVhuATQVI+T72E8f3pBR+FMyWS1MDJixjZqMayxDt/D3qsKesz39qGcZN+PMx7HVLZMQXYQ54GIgU6RPbEZHvOtZY10X+vQUvNIbivUW6OAFeb/nwFGKX58QGrq1KYNoPoXgHIgrWlc6nAk0OZtCxZ2o6FZk3RRMgeyWf26SXt9jxkepGj+XuvBFO654OMg5S998ayeZjggxLs2+/8JVEh/UhM6Grby1MpQFFa/1nvS6l3xEgcDtvoEn5xmExeGEpEx0m8NEMKBJOayX7zJATwdQH1gCMdC2DpbLGNkjFiE6SD/ttzRJ8ZEwuSp5EK6flXVFA8f5lobFjVwMGCtdUc3olfbY4NlsvZKTqEfLbcvLSAIGHm3LLjzOT2Q4Na47v24Dwe/ZZePUZni40hV7g/JUAx/kz5HhD8jP6shoouvJgXSwSOOp99KPRecGVr4ZLGs1rdzuf51ZNLV6NaSqv2aFLH+cO98Hvo024BfNANWCg5IUUbhBcIp/1TqthEqRkSMnbM6JJDFHhk/XXDyTBgEQHjDv/aCQ1QQBgHl3zxh6eeP68r4Vc+OhWKLRiVOFG8ToWVq4dtASCc8qSAeU/i2HrS7alPKfkB4gAwRG/HZ6dbEwOhpSpMKJQ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: l+OhGpT+xgyBwIWubAjnUmEbouhd8v9Pk82WoZP7Gl+bkUEGT1rOHZ+1JMu31jl2W08oufNqizeC/Fqy7CqnOhvRqtxsTNRr2BDb5slHAWUqT53Ld6gZNa+d+AeJXo8R+C6z4mfJCWgGZSawJUrjS4+GzxJ+N+mntsDgcVlkEklTje9oMQcv6HWTnK1h+7o3FATuLCvH/nIX8A9qWLeAFWV2Dk6LPeT5Y2b3PV3ZxjeaMGA/7teQfB+tZ+lCGYzDgvpZ97vtbloNhqf8nK4w5j3tIwNjHpLIykoQM0QbIr8oqa2s6UABQAxxNOqDIZdx/bBkq7AZfVgTKhl18pSn8vaA1pLvEY882LDKX2F9nN18T5u+OtEeuR2TDSQsEtiFncZvmNBvuhIfemJuaO/UC7ir/UOmlvTxM+KQRFipBwiBsu6zU7o+/oku9QIIOAHWryz01W4e2RvNzCpm/jNKwiaG/4bgxXL/+lFPVLD/ck0AXdriBpHbA31AcTFfoBbN+pjqQ7VDukjkzfX/q7RxX/ihpz5lPn/THT1Yyy1zyh4ceuk//tSGiuObtlb2dOxBbjHtrl6FAg/7B83kXxG9fKGU+SIEtBfu07shkM0uRhNPFm2vqarvLJ0Fb7Tx8UszxgZ2+jzeWf3kLCuNUfs6RWwNzYh5pIO6fhTFcbGF3mKvgMI/psndao545UMCvO89m1QPyhcgdeJUREDjVmYoE3QR/sg2PtMR2eyl3nO5tu0eSmn9r0pq4jJSAZUp8394umOotP+HaXvzzAn4Uqad1uo0DaNFmiFBKOLNr8l1b1ZVmz+9SNu8uf76jPQB++cTvpZcRt2VF2cfcNtbG2S1amR8i5zB+U5gyIYSsWRBWwmZP4XeJgxVxfKVFZgC8te8FFWKswRDTIuzAsRmW1A0FjLADoztNRcoc+BtA+C51HHmVmJ7D35fO218oXaJTP8VIibX0Vdxc98+kJ4QSuq3JBL2nkQTDXkoz3IND426XWyEFoeZPVaTQmBXJXuB6/8bqvqQZO6VhhJhErax0F0ERuANObeh7zOpwwekTHJNA45+WwPWNBF1ViIkzyjKkKctul0d7qK5oJO21qkujj3iKk+YCrqNumrmJlnpHGj7Qw0jQL0UrWtcGDRCbo9Pq8zmRRid67a1JzBNWnyzAYbWVx487Oi1fAyGDFAZQ5DSf6nj9wc7szyxxR8xRbTt4d51P7gcpKMLI7tQJUzZDRQQJ4Ipews3ALSJMMkPzqOwYkcZ5OHHqpMMazG4V/IwTKw/D2r2EyPD0TxoFp1jtRu3UEngiE00KnhlZ618L/WykSgkP1Rn22tEGAqWV6kQKYO6DVRmhDWpNRi3K4XVz7ocLUDDHYnTApCmaWNwTkMWU8CQ3pCg+7tTorgjk1QCQqyAdy+tBNqipGp48ItBHupm3Rty6yfOgKB+Hxllktq6qcpuXDTuAWTNDvhJPOVvjYWY X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60d7a396-a56a-457b-0db1-08da301d18a4 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:31:15.3653 (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 43/44] avformat/utils: Move ff_stream_side_data_copy 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: qEWWDtEa3NCi Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 30 ++++++++++++++++++++++++++++++ libavformat/utils.c | 30 ------------------------------ 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 2a919ad89f..3eae41d109 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -204,6 +204,36 @@ uint8_t *av_stream_new_side_data(AVStream *st, enum AVPacketSideDataType type, return data; } +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); + av_freep(&dst->side_data); + dst->nb_side_data = 0; + + /* Copy side data if present */ + if (src->nb_side_data) { + dst->side_data = av_calloc(src->nb_side_data, + sizeof(*dst->side_data)); + if (!dst->side_data) + return AVERROR(ENOMEM); + dst->nb_side_data = src->nb_side_data; + + for (int i = 0; i < src->nb_side_data; i++) { + uint8_t *data = av_memdup(src->side_data[i].data, + src->side_data[i].size); + if (!data) + return AVERROR(ENOMEM); + dst->side_data[i].type = src->side_data[i].type; + dst->side_data[i].size = src->side_data[i].size; + dst->side_data[i].data = data; + } + } + + return 0; +} + AVProgram *av_new_program(AVFormatContext *ac, int id) { AVProgram *program = NULL; diff --git a/libavformat/utils.c b/libavformat/utils.c index 848afa3c35..667ed0c4c5 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -255,36 +255,6 @@ int ff_alloc_extradata(AVCodecParameters *par, int size) /*******************************************************/ -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); - av_freep(&dst->side_data); - dst->nb_side_data = 0; - - /* Copy side data if present */ - if (src->nb_side_data) { - dst->side_data = av_calloc(src->nb_side_data, - sizeof(*dst->side_data)); - if (!dst->side_data) - return AVERROR(ENOMEM); - dst->nb_side_data = src->nb_side_data; - - for (int i = 0; i < src->nb_side_data; i++) { - uint8_t *data = av_memdup(src->side_data[i].data, - src->side_data[i].size); - if (!data) - return AVERROR(ENOMEM); - dst->side_data[i].type = src->side_data[i].type; - dst->side_data[i].size = src->side_data[i].size; - dst->side_data[i].data = data; - } - } - - return 0; -} - uint64_t ff_ntp_time(void) { return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US; From patchwork Sat May 7 11:28:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35677 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp2123443pzb; Sat, 7 May 2022 04:36:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzlnWKe2fjQHOk56KKDIM2DihJlwGytFqDBHXz7N+WcSX2kU9F1MMFK1Rg9CAFZrPZCxMSe X-Received: by 2002:a17:906:c10d:b0:6f4:a770:846e with SMTP id do13-20020a170906c10d00b006f4a770846emr7135967ejc.497.1651923377398; Sat, 07 May 2022 04:36:17 -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 i15-20020a170906698f00b006f382c47ad9si7632216ejr.846.2022.05.07.04.36.17; Sat, 07 May 2022 04:36:17 -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="tvw/hBdm"; 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 B6C3E68B417; Sat, 7 May 2022 14:31:35 +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-db8eur05olkn2016.outbound.protection.outlook.com [40.92.89.16]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BAFEA68B4F1 for ; Sat, 7 May 2022 14:31:33 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QYoi7i3Sh/UafvS9l0i65u9QPktBSZtt0RJJjzSMuYh8YHPSH1cGtN4+XgIdsLxgakYv42vneHQ4qHaoXWcgrTiZYDJcsIzhiveTzPyXkn2x/rssCQ55eEjxws6ZIM0Y4y94stGz8uwQDCpPUAEHV1zKRKYrxnm4UNR0Qu8SOVXWq0f2AXXTixRrRE5/xGB9OfHbOJaaM/OMkPLM/3KCdqg+P5t9SbEM7BZHAdTs8YxgDGwG1HWggrC2wHRFfHMs3hna9T0ca1sXNdjXLOvUXwH3tuFGBSVM0t7szWNaA10TnEOQK2L8hchkrRp0DGubyo+puLE5tCKVAdjXskYJEA== 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=S+E5cd8pXEi7awUycW1WgEMIfmqlK8nsVJxdgTkZ+Gw=; b=WwYDsnggGk7uc6uGPKLwZke06sKHvt8UlYlfIrAEPH66OgpI0MK8IKKJszso1USSylBZpt9RKLlyQwGeEYdTMotSwUnw2yffIwlqewlSpFbE9CGm9pKs8wyTj3pH22+pMy4deExIFjfK2JP4PPlUOGHrmpEuNHXTGr6CrZzGQY4fBVGugQN67Joz9ocdfHxUrC8f/eRHPfXziIFbjhlFn0P68Ups8WWFguy7ex9em15ShcOYC9rNwdwA4CZKDJ7TcbgCCU6aSAsw4mdf6RvDGSAoKekhHaeTm6EL+/Ey1a6N/RVJnPpAF5icA13BVhOJDoYNfD+ANUif1BUiHqYAKA== 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=S+E5cd8pXEi7awUycW1WgEMIfmqlK8nsVJxdgTkZ+Gw=; b=tvw/hBdmi66fBMA6E80eBXASzX8sjwB8P1FMKJ3RkdsGFwrEJ/osUdWerlvhXEC6KEx2IhtIcTWVozvo63v/TUumnEtb6Xg57mMTan3LsG2kJMm4Fc3QgnUnrUbqgDgB7fVS4RklkNbEZsIPc8v3RYIARxXsaOFfnTrjpqj0AAL3TkJftiMLPqzs9maK2gDUhTnFffW9v+HT8nAk6Vy+bPItsYly0RxjkK6xOkA3DJT1w2MROsh+0g1l/xbfuw8/2nrJZipeqBXkCb0disIqz98HGfgMn9i1I1Y0xQnGr559CLBtTYYB8TbhyPrGyPgEGBbZsIierOfF3P6w/401Sg== 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:31:32 +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:31:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 May 2022 13:28:30 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [8DHLZWROoQhUA+SlRsTHSYvitSioZriA] 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-43-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dacdcff5-21ba-4660-669e-08da301d19d5 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVZjuqTokTVdg9S7+crVfX8UW/IIpxLXYxDxE2dstFo4RNuKt9kcvPkA+Ode7+6Wh0XZ+DT8vbCyy9BIKxufgm9MjpSnbnx74ok12Ocm27nP89EFm6dvNpQzE3rojgL7wnWUrxRUIix/Pya8E125HeA3WMB2hyUiISlGMMFmFIhKo++RKNbDNddNLHn8Rqs1V02I9b+S+QVDPlj+Dc3pflgjnUOEujFLF3E1YUiTmaaUYPOR6Ng7gi7VwOACNsYB5zQoxYuvOF5YlmnIDbHSRuQ4EN+iGnKB7pYr0Vxnm3Wn7WpHanvr6qtmlYYIyXSUoADtgPcSRvaQ/w/83qfFvCB/HpVNrzlQTK7qqetwMt/Ttse7kqXHeBIte1DHWamDKWwNUvoXxhzeSCGaFskGAkiKxnHZjr0g+zWhtIAc5nJIxtFu7DK0U+4/GTmaNDBeFmoz/xrCJjTmGeNDMY3cjdncR3w9oW+Gc/cosjvQxiBgdw6shZ6oZ4xj0p2Ez8a2cJ9Zhge3EL9LU8HTAc+pgNXpdEaO6W0aZ5fMWgDkXXOhR0Y4vPKGda3Nrd2/Sxipxl9anKb3MOmRO9012BTN3DjWZD+tp/tyFoPUZ/fO41J1RxxibcMx2Ag/utjhxhNnnsCxF7L0b5ext5eWzdZHd92e/P3vY6R5A2Z7fqO0cMLx8efhN9y7l8UXk+NmFECUqDTSMkMEnAYj8XTHsn3DIik0qpYjZjRG/Q= X-MS-TrafficTypeDiagnostic: AM6PR0102MB3128:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iWJ33G5z7zQv4efrKNMX/4T7Zb2Mh6sxVlQkaBvZ8mX5VlMSVA59xs9nZvAUaW3vVTtmJTp4Ieeohwl651AXkEoL+9NbgjxwaMxi51wZYQcXaxCdX0296gAbCo5/nFr9KVaUrYTqiFQKklMsFjo7k61kKDsYwxNgntBbt32ruagTmekRbixTRpfs+fEOdvt6UQaHtZO7vOKDqvTujK8w6S/kl4kqLZF3P3fy5roiy4F/DpxF1tzU+fmRHI+aBUvEp9Atj6OKnLFxYOYVaOZR3MvrFIMLgmTQfl8dJ7gWLIo/DyodHE6HDvAX9xfdR3ZBg2Mnr4tI6CvQ1WwIOx/6+kpu8UxROmaYaTtac2yBKWDVFTu7gaIy/TO5rX65ovqymhAx4QbdxiD8Sf8b37EBBB8YhKadvlu0u0A020HItGJOK8Uvz7YAo0s64hMHDNf7hLnVwdHVVpBU9PWGJzjTS2cBCLqCL2tYxnVfRDyxCs0meBu3luSe8LXCesMpLMB/KppNU28AcF+RjN/IqjzMEqxpTz/JfS2WhbMoe+m/ft7RhIHwQrY2eKMyE9IPNDqlk1PDFOM5KJmftUz1tU7F/APt7DX6qsCMpKhPY+Tvts4kmr46CnGd4ikNDwgF5iKL X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: On09w9O/vE9XGusvW1OzBnW+ee/wxRwLFTm73zDinFNxDwjk0Gd35XhIBdSqAnch2FThLRfDFrm4qkbzY9zj5OOd98vAIkNmupFMJAptfRDZ3Fs7+A7Tai9jb/UubIhd25oUU1cEPSLfhbZPA/OcnjH8mswCn3D1swAhV+yZhf+ByKccBUHSzHKV+ROTxuDp2+fwTTnrpT2hY+uAtwIlUDerhdnRlS96AMXpLvdczJamOMVz4U2/ZCo0JIGCq+BK73yVzVkJawDrdYgeMa4VvD70JMNiVUKQlTDjM0mvnYZ9GUBXLd1r66Ru6+uwA+LjZE2FqQIbpFduDp7rbg3CJeLpfFt57X1D3fJSnR67xvLBMfK3bh/WojOD0xaXuPBaHBn7n2HCuqthqqbm0DTcQqTLqMpXNJAp6t29ZR/WJl9x1H8CxcM7Bo0bkEmCDhEOhWIVVhLJvisNBJtoUJYGXfazfSvHG9bUJo07PfKrvt/GZfRwBkXWbcIKj4foHymfPZ76ZiSKYneVl3e+C6AJo+BWcP4nxhTvmD/JcpB7Wb2LwyHu6/5qZODzU5ZVkh3gczjCYdvMsSOflKXJEI06eOkgc22L8BV8hbCaH0/OB4fBhdSY5UgDcmn0qVfvIwyNUIEBA9KmPBUS98vJPbl9iTZIlDbGz1s/fXKX82XFIrpEXkqh39M1DeNZmvf9ooLoIe/TUezsWHaKYKTJfO2lIkslYmqt0lIrwQNV+juwuzaAz4SrsFwnHB2EPRBo17Dp7eQsHq/ft/9KSMwPhtsDbY98pVr5cvy/O4akdgPOIVYnUvJQ7YmDd1ROx5b7legcVlb3XXCnmsq1Re7maw2THgaQw3eSr2hYmX5E6deuS6w/f8xWliBxuLgJE+QiO/C119DM5QF66IIhBEV20JDFJWastMEZ/sX87oJzvYuxZrMQYYbVUp3LjyWeALFGrI5ijUF0QO95u6JwjJKrox1ByDKrT4/p3c3MzP6d/1g4XQ4xNu+4OzelUyCLx0ytyPQ1zuAFxg/XgdA4u95WTR9e5IwWNX+/0aiMfDX9gkuLFdakeKde070SabvqhrHFC+DRS/vN3KjGNrPGA2pRHIT/n7aWs6IZHfIK8rECdGYqwreqKgDh82e90+mSpU+oR5PR3W+k8lfGxdjNR2elNxTwHtq1+4Z7VXbg+bsLfopaerenm5xiqxB43m9co0m0KYh4uqXCtJk6uypCc9W4E6CwHxxsLyFU849dgRUf4GRQR5QchdYtXm1r7WRvszlV+zKGLNF+PhLBXLtjN29EuX1mypuEAxk026H/3q21zE4gVhiD0zQrwqnQ/2X40luU7ZEAVgfW2IsRaxC5pPtrfS6b7Afqe0wBu8DghyZaWFv5vNPDxqJz0fplqbs4fdhef5/y1WcLiAYjYaF10p49umk/NYuRnv50lJxnnCvHCQFQGGhSgFG4LJ0VyEGkdZ0RkSUN X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dacdcff5-21ba-4660-669e-08da301d19d5 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:31:17.7414 (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 44/44] avformat/utils: Move ff_format_io_close.* to options.c, 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: o0zZbfK72Fm2 These are not pure avio-functions, but auxiliary AVFormatContext functions. Signed-off-by: Andreas Rheinhardt --- libavformat/avformat.c | 14 ++++++++++++++ libavformat/options.c | 5 +++++ libavformat/utils.c | 18 ------------------ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/libavformat/avformat.c b/libavformat/avformat.c index 3eae41d109..30d6ea6a49 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -33,6 +33,7 @@ #include "libavcodec/codec_desc.h" #include "libavcodec/packet_internal.h" #include "avformat.h" +#include "avio.h" #include "demux.h" #include "internal.h" @@ -774,3 +775,16 @@ void ff_format_set_url(AVFormatContext *s, char *url) av_freep(&s->url); s->url = url; } + +int ff_format_io_close(AVFormatContext *s, AVIOContext **pb) +{ + int ret = 0; + if (*pb) { + if (s->io_close == ff_format_io_close_default || s->io_close == NULL) + ret = s->io_close2(s, *pb); + else + s->io_close(s, *pb); + } + *pb = NULL; + return ret; +} diff --git a/libavformat/options.c b/libavformat/options.c index d306c86c63..0079a06d9a 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -151,6 +151,11 @@ static int io_open_default(AVFormatContext *s, AVIOContext **pb, return ffio_open_whitelist(pb, url, flags, &s->interrupt_callback, options, s->protocol_whitelist, s->protocol_blacklist); } +void ff_format_io_close_default(AVFormatContext *s, AVIOContext *pb) +{ + avio_close(pb); +} + static int io_close2_default(AVFormatContext *s, AVIOContext *pb) { return avio_close(pb); diff --git a/libavformat/utils.c b/libavformat/utils.c index 667ed0c4c5..cf4d68bff9 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -575,24 +575,6 @@ int avformat_network_deinit(void) return 0; } -void ff_format_io_close_default(AVFormatContext *s, AVIOContext *pb) -{ - avio_close(pb); -} - -int ff_format_io_close(AVFormatContext *s, AVIOContext **pb) -{ - int ret = 0; - if (*pb) { - if (s->io_close == ff_format_io_close_default || s->io_close == NULL) - ret = s->io_close2(s, *pb); - else - s->io_close(s, *pb); - } - *pb = NULL; - return ret; -} - int ff_is_http_proto(const char *filename) { const char *proto = avio_find_protocol_name(filename); return proto ? (!av_strcasecmp(proto, "http") || !av_strcasecmp(proto, "https")) : 0;