From patchwork Wed Apr 3 04:01:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eugene Zemtsov X-Patchwork-Id: 47742 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9f96:b0:1a3:b6bb:3029 with SMTP id mm22csp164962pzb; Tue, 2 Apr 2024 21:02:18 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX0jjgEAqwjH5J6F0mE3SucvV4TQdRQ/8kPqNwFeTpUYtErEwj+52m5Qf8T3/rGr87hOlSMt5h8aiowT8eDX6drm19/Qp/aCnkf9g== X-Google-Smtp-Source: AGHT+IHWEfIroLnbTfXV8UziXOM57HnAldD+45MV8VuJcFPQrvhzhciG7tHl3YHTUEwPC6krJ72m X-Received: by 2002:a05:6512:3103:b0:515:7686:6068 with SMTP id n3-20020a056512310300b0051576866068mr2675335lfb.55.1712116937853; Tue, 02 Apr 2024 21:02:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1712116937; cv=none; d=google.com; s=arc-20160816; b=xppkVgyHYbnKXFf16AGfmsw+RQjWGux5jf3VBcq9KhGkNn6Csj7BahvnKa+27y02e8 OUh4eNB4Sn7Js+2KTY93irg3c04Fy+6vROIBsE1/uDNXojCU7RNEvvws1D7pIs5XUrye tIPEiGfkAph0txyskFq2nJH0aMefyI5V8izGZYsKS4XSkFtzYTkB39GGoFiuZUI7itfF GWd1RmS4T7VCKb/hBIlToaLSW0REmSwQ2rEyZDnR/vJSMlQkp6kxtU+Zu/O9FW3Rn2o6 VaIBbj+o2kw5iF87kTRKFwQPqVFsdSSeEStT9akcndY61JfobBnezpUgyGmQVvAsmBVV IL5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to:from :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:message-id:mime-version:date :delivered-to; bh=KvueFLiKrtcNNt569yFxDA1fJXP6vJLfS96ItMpDj4U=; fh=/9RAhijlZj+WphHRSZsZ9sLSydmlaGzIcPxS+9T0zWY=; b=AQTRRZj6g3vTrFHZmb7lQYHfOweLG/PQ98o5HivOcHFp1XknLKvbwIt1fjtK/vRsxJ /n31UW15eOCTlmQ8/H66QaPcrk/5VjKBm8JRWLoDNNuZk/Mh0UForUMvz6jKmUHhv7++ QunGqVD0ltFnVQrhRDD5aOF8gVwUC8OhAOOpW42eVxI9zjA6yOvHuKx0etrLz2jXe4q2 uDTYlx9tYl46vLvmFs/v9bSPZxSS5dNlJPsIvb3uDUy9Q/fsokbuPlmFCZoRkaXcJLV/ +3Gnk2wrxfuu96CV+SYylJRxsNPiUPG9btKAllTwFgpo5uVeqdxd9oq0b6/P0qkZLwoW ED6g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a1-20020a170906274100b00a474f677083si6261295ejd.80.2024.04.02.21.02.17; Tue, 02 Apr 2024 21:02: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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 86DD468D01B; Wed, 3 Apr 2024 07:02:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 79BEE68B23B for ; Wed, 3 Apr 2024 07:02:06 +0300 (EEST) Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-dced704f17cso9896632276.1 for ; Tue, 02 Apr 2024 21:02:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712116925; x=1712721725; h=cc:to:from:subject:message-id:mime-version:date:reply-to :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Q0jG9nRn49+b2Tx5FoYmiOhyRMdzL7SYQo2x5rDhQf8=; b=C5W5ijKm1pR2xX4+hY7V5nME43F6JVp0pnxV1kml8MymOZ83mU90rs6jp6DRoTZNm8 U6KfxmeAnMofBqtDumpxRpzEVeNWbjdVwj4xbRWWQ32lkyKlUV9SEsMMXRIKhcDxKwFy tGcK9l+0r9Jmf7L6dDaF+iO+h6F0839V59pejvco63U1Ad8ZFeMGZJP7EUzSye9npypc heABUaEefOJYE7D5bEYjHb/BVWZooqyFcLN4RT2vcEVLqi9QmmEGI50H6qbcNTzZJisS KoVHm38m8hWiUC91fBj3easfdDrpQemxnioZbBlHtos+L6dsYOBWOSkX0aLrcD0DCIYG ELTg== X-Gm-Message-State: AOJu0YxC5YwwYuf5h5rxKRvUB4YnkHYAzzpa3nOAncKDr/x9FGES/Wex R4TbV6LPqVTylivVT30nTf1YwEJG/A/C8IgXVatkXKCAUZXi9wgUNPlO6vGL/deSjgjZzpy/zJC fnwJJ9Ns6OdQxUBzYkZmOyGK8Wg8TR7NiiM5lAfKbglSIw6xYz7Yp/yIFIfboHCxVKiHzhZX5Uu Kasa+Uup2h/jLK+/eN5o5n9I2rNUuCw3eu+HmLmPs63jQ= X-Received: from ez-linux.bve.corp.google.com ([2620:15c:7d:6:788b:3efd:cfec:8d45]) (user=ezemtsov job=sendgmr) by 2002:a05:6902:228c:b0:dda:c565:1025 with SMTP id dn12-20020a056902228c00b00ddac5651025mr999287ybb.2.1712116924733; Tue, 02 Apr 2024 21:02:04 -0700 (PDT) Date: Tue, 2 Apr 2024 21:01:56 -0700 Mime-Version: 1.0 X-Mailer: git-send-email 2.44.0.478.gd926399ef9-goog Message-ID: <20240403040156.1346917-1-ezemtsov@google.com> To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] configure: Separate subsystem for Immersive Audio Model 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: , X-Patchwork-Original-From: Eugene Zemtsov via ffmpeg-devel From: Eugene Zemtsov Reply-To: FFmpeg development discussions and patches Cc: Eugene Zemtsov , eugene@chromium.org Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gX3U4RVi02i6 From: Eugene Zemtsov This change allows users to link ffmpeg as a library without support for Immersive Audio Model by specifying --disable-iamf. It helps to save on binary size in cases where it's important. Signed-off-by: Eugene Zemtsov --- configure | 7 ++++++- libavformat/mov.c | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/configure b/configure index d03e7e1631..56cc03f68a 100755 --- a/configure +++ b/configure @@ -141,6 +141,7 @@ Component options: --disable-lsp disable LSP code --disable-faan disable floating point AAN (I)DCT code --disable-pixelutils disable pixel utils in libavutil + --disable-iamf disable support for Immersive Audio Model Individual component options: --disable-everything disable all components listed below @@ -2018,6 +2019,7 @@ SUBSYSTEM_LIST=" lsp pixelutils network + iamf " # COMPONENT_LIST needs to come last to ensure correct dependency checking @@ -2806,6 +2808,8 @@ mpegvideoenc_select="aandcttables fdctdsp me_cmp mpegvideo pixblockdsp" msmpeg4dec_select="h263_decoder" msmpeg4enc_select="h263_encoder" vc1dsp_select="h264chroma qpeldsp startcode" +iamfdec_deps="iamf" +iamfenc_deps="iamf" # decoders / encoders aac_decoder_select="adts_header mpeg4audio sinewin" @@ -3552,7 +3556,7 @@ matroska_demuxer_suggest="bzlib zlib" matroska_muxer_select="mpeg4audio riffenc aac_adtstoasc_bsf pgs_frame_merge_bsf vp9_superframe_bsf" mlp_demuxer_select="mlp_parser" mmf_muxer_select="riffenc" -mov_demuxer_select="iso_media riffdec iamfdec" +mov_demuxer_select="iso_media riffdec" mov_demuxer_suggest="zlib" mov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf ac3_parser" mp3_demuxer_select="mpegaudio_parser" @@ -4029,6 +4033,7 @@ enable safe_bitstream_reader enable static enable swscale_alpha enable valgrind_backtrace +enable iamf iamfdec iamfenc sws_max_filter_size_default=256 set_default sws_max_filter_size diff --git a/libavformat/mov.c b/libavformat/mov.c index c55778f3ef..662301bf67 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -839,6 +839,7 @@ static int mov_read_dac3(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; } +#if CONFIG_IAMFDEC static int mov_read_iacb(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; @@ -1015,6 +1016,7 @@ fail: return ret; } +#endif static int mov_read_dec3(MOVContext *c, AVIOContext *pb, MOVAtom atom) { @@ -4797,6 +4799,7 @@ static void fix_timescale(MOVContext *c, MOVStreamContext *sc) } } +#if CONFIG_IAMFDEC static int mov_update_iamf_streams(MOVContext *c, const AVStream *st) { const MOVStreamContext *sc = st->priv_data; @@ -4840,6 +4843,7 @@ static int mov_update_iamf_streams(MOVContext *c, const AVStream *st) return 0; } +#endif static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom) { @@ -4921,11 +4925,13 @@ static int mov_read_trak(MOVContext *c, AVIOContext *pb, MOVAtom atom) mov_build_index(c, st); +#if CONFIG_IAMFDEC if (sc->iamf) { ret = mov_update_iamf_streams(c, st); if (ret < 0) return ret; } +#endif if (sc->dref_id-1 < sc->drefs_count && sc->drefs[sc->dref_id-1].path) { MOVDref *dref = &sc->drefs[sc->dref_id - 1]; @@ -8457,7 +8463,9 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('i','p','r','p'), mov_read_iprp }, { MKTAG('i','i','n','f'), mov_read_iinf }, { MKTAG('a','m','v','e'), mov_read_amve }, /* ambient viewing environment box */ +#if CONFIG_IAMFDEC { MKTAG('i','a','c','b'), mov_read_iacb }, +#endif { 0, NULL } }; @@ -8929,8 +8937,10 @@ static void mov_free_stream_context(AVFormatContext *s, AVStream *st) av_freep(&sc->coll); av_freep(&sc->ambient); +#if CONFIG_IAMFDEC if (sc->iamf) ff_iamf_read_deinit(sc->iamf); +#endif av_freep(&sc->iamf); } @@ -9570,6 +9580,7 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) if (st->codecpar->codec_id == AV_CODEC_ID_EIA_608 && sample->size > 8) ret = get_eia608_packet(sc->pb, pkt, sample->size); +#if CONFIG_IAMFDEC else if (sc->iamf) { int64_t pts, dts, pos, duration; int flags, size = sample->size; @@ -9592,7 +9603,9 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) } if (!ret) return FFERROR_REDO; - } else + } +#endif + else ret = av_get_packet(sc->pb, pkt, sample->size); if (ret < 0) { if (should_retry(sc->pb, ret)) {