From patchwork Wed Dec 8 01:06:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 32122 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp7042692iog; Tue, 7 Dec 2021 17:07:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJxKnZ4zfiKmzFW2CrRjzkQ1eEYlz1hM53AF9xil0LZ+wPS2bZKyHsLvOolc6TwnM+i8skcV X-Received: by 2002:a17:907:728a:: with SMTP id dt10mr3475590ejc.526.1638925655562; Tue, 07 Dec 2021 17:07:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638925655; cv=none; d=google.com; s=arc-20160816; b=sA4M33Txg2iUY+VQN/Bv251I7ORPEKUN34X2Fy00Q9Ox8B7pG9zsL0FKumnpifFiOK F5xHd0LmF5RQAqGFQNuAitb7vqX588mwrt2inTcjjUf79h21jDxw/MW25gVujHycT6T7 STddE9dJTRXb74TvAk8JKmqVhXHAKacUgu2j3m3akcKC6DC+C1/khkPCJCZ2hlt5sk6B gqxR4W6lwl6wl1Li6QM4wAz2Re2DPiiuPH8fuNfJvOkXKWU6r8wZBMIj1BKHM5yotF8R CpWrshJFmo9BRH06oQpCcsC7noqzgiMiK5D25R/OP7feXfQWWUtHK7/zF+CuSMnVYRwN sv4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=PktYf8K6RoAx8c/XGJEUqmLr1NqCpBfg9fSIt99c3tE=; b=DNc4L1LLnTx3wL0Az0jtRlhgS16RMuFnSvGmSe9+a0yhxch5+RTyeaLEpGH5yK5F9L 5ruwX01t/HwMMWvVgZt/kKPZhNCzU7YwmmAawkVGJBY6Dd2REIq56ttGTHfrNPyZp22o c/oaMSOWPqQV6dQvUliBNWkI7xuUGSLKUdGsYvTlbTHQCMDuD5voe5uNr4Ea5AV4mG0V or5f+jBeDHefUoUXjtYQF1jB+DirDIFEdhfUllOdH1AtEfgNIooDKi9hPUf3LtVVoc6x LGD2Q5gXjl1kjHN81mYqE9HhFW/iFh/9+qiPt9wRTuSGKXBYcqRtVwQBCbI0iNDzeprE vWgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=R14rbhP3; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id yc22si1733095ejb.643.2021.12.07.17.07.34; Tue, 07 Dec 2021 17:07:35 -0800 (PST) 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=@gmail.com header.s=20210112 header.b=R14rbhP3; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 98CB968A8BE; Wed, 8 Dec 2021 03:07:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ua1-f43.google.com (mail-ua1-f43.google.com [209.85.222.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BE54468A360 for ; Wed, 8 Dec 2021 03:07:23 +0200 (EET) Received: by mail-ua1-f43.google.com with SMTP id y5so1892082ual.7 for ; Tue, 07 Dec 2021 17:07:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=WrWWl4YVkCT0+IlcGR4SV8ntvdA9fh/C+dDZq0MoLWI=; b=R14rbhP3gDkmZDKE0miEAYMuhtpo/hFilWAhpYb3AHzLVbpDSk210GdMo1ERxQIOOM 66w47UzVJF4TKwVXkxrSkIQ7jUrtQsM4GI+u/fsUbF1Ra+QnNs88LeDUJRcgM0mL9aO3 MZMeXY8gGOp8EJdA9bcqh/7zskaO3ifCQGN1Q7WcY/ewaLPRlcJZa3ZQTHUci2d6ZXPh xROpBLYPrBa1GZSitfsSx2eJz0x6mUd3+7hdRzQnqqGvbh29+yWznOgL7wvyDQ8ZTuOC 3LWAAFYhEm2OZ5MVoQVRNLz6INrq/eKPSxL63ji2howb+me9OrjOWiqPmJKjQvr7hzpW ffrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=WrWWl4YVkCT0+IlcGR4SV8ntvdA9fh/C+dDZq0MoLWI=; b=iBE34fsjMz1XO+KOeCOL1CsImT1JuX4nfd08dBOsbQVkQJP0RqL1ECitNed0FUcgLY SKfPOGT7xKoPNokExzWSnt/pfWREXGlq3lV7Nz5HToEERSk5OkZ7LU7PiCrkvPScRSai yRVbJqRjDrDAeerrRRP4dK16M9F5925i157gvJC1T9mz0v7Kif05xT6WAT9IVU7Wm9YW tMakeZ4yxkK598SbVWAgj2EYGDIB3seKTXw5QiS2HR88UJnuPKvpTN28kMKACywu5IG1 Lh5bh18kO0K2Hj/EGa2gbrx1ysvQUDJ4YorXKAEfafRySxoUes6mzaN3S9XfmAU+rnrw ITkQ== X-Gm-Message-State: AOAM531RptKGHjXVJShSPX8LDLoXcyfZEAdJo+5ZfOtqWTuQf38yc1HW ciUBjEvgBfMwRAIC3dXMd9wAIReq9cZRWvVS X-Received: by 2002:a05:6130:424:: with SMTP id ba36mr4162646uab.1.1638925641211; Tue, 07 Dec 2021 17:07:21 -0800 (PST) Received: from localhost.localdomain ([181.170.250.138]) by smtp.gmail.com with ESMTPSA id b8sm949898vsl.19.2021.12.07.17.07.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Dec 2021 17:07:20 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 Dec 2021 22:06:16 -0300 Message-Id: <20211208010649.381-1-jamrial@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 000/279] New channel layout API 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 6CpimZFdlk97 This is an updated and rebased version of the API that was sent to this mailing list about two years ago. It expands it with some new helpers, implements some changes that allows further extensibility for new features down the line, and finishes porting all missing modules and those introduced since 2019. I'm sending a reduced amount of patches to not spam the ML too much. In total it's 279 patches, the bulk being one per module ported, which it's what i'm skipping. This reduced set will obviously not apply as is, so you can find the entire set in https://github.com/jamrial/FFmpeg/commits/channel_layout Anton Khirnov (136): Add a new channel layout API lavu: support AVChannelLayout AVOptions lavc: deprecate channel count/layout changing side data avframe: switch to the new channel layout API lavf: add a temporary compat layer for the channel layout API change lavf: convert the generic layer to the new channel layout 3dostr: convert to new channel layout API aa: convert to new channel layout API acm: convert to new channel layout API act: convert to new channel layout API adp: convert to new channel layout API ads: convert to new channel layout API afc: convert to new channel layout API aixdec: convert to new channel layout API aptxdec: convert to new channel layout API argo: convert to new channel layout API ast: convert to new channel layout API avr: convert to new channel layout API bit: convert to new channel layout API boa: convert to new channel layout API brstm: convert to new channel layout API codec2: convert to new channel layout API dcstr: convert to new channel layout API dhav: convert to new channel layout API dtshddec: convert to new channel layout API dsfdec: convert to new channel layout API epafdec: convert to new channel layout API framehash: convert to new channel layout API fsb: convert to new channel layout API g726: convert to new channel layout API gdv: convert to new channel layout API genh: convert to new channel layout API hcom: convert to new channel layout API ifv: convert to new channel layout API ircam: convert to new channel layout API jack: port to new channel layout API libcdio: port to new channel layout API lvf: convert to new channel layout API mpeg: convert to new channel layout API mpegtsenc: convert to new channel layout API msf: convert to new channel layout API mtaf: convert to new channel layout API musx: convert to new channel layout API nistspheredec: convert to new channel layout API nspdec: convert to new channel layout API oss: port to new channel layout API pvf: convert to new channel layout API rawenc: convert to new channel layout API redspark: convert to new channel layout API rsd: convert to new channel layout API sbg: convert to new channel layout API sdr2: convert to new channel layout API sds: convert to new channel layout API sdx: convert to new channel layout API svag: convert to new channel layout API vag: convert to new channel layout API vividas: convert to new channel layout API vivo: convert to new channel layout API vpk: convert to new channel layout API lavf: drop the channel layout compat layer for old-style (de)muxers 8svx: convert to new channel layout API aac: convert to new channel layout API adpcm: convert to new channel layout API alac: convert to new channel layout API amr: convert to new channel layout API aptx: convert to new channel layout API atrac9: convert to new channel layout API apedec: convert to new channel layout API audiotoolbox: convert to new channel layout API binkaudio: convert to new channel layout API bmvaudio: convert to new channel layout API cng: convert to new channel layout API cook: convert to new channel layout API dca: convert to new channel layout API dolby_e: convert to new channel layout API dsd: convert to new channel layout API dsicinav: convert to new channel layout API dst: convert to new channel layout API dvaudio: convert to new channel layout API evrc: convert to new channel layout API ffwavesynth: convert to new channel layout API flac: convert to new channel layout API g722: convert to new channel layout API g723_1: convert to new channel layout API g726: convert to new channel layout API g729: convert to new channel layout API gsmdec: convert to new channel layout API hcom: convert to new channel layout API ilbc: convert to new channel layout API imc: convert to new channel layout API interplayacm: convert to new channel layout API libcelt: convert to new channel layout API libcodec2: convert to new channel layout API libilbc: convert to new channel layout API libgsm: convert to new channel layout API libmp3lame: convert to new channel layout API libopencore-amr: convert to new channel layout API libopus: convert to new channel layout API libshine: convert to new channel layout API libspeexdec: convert to new channel layout API libtwolame: convert to new channel layout API libvo-amrwbenc: convert to new channel layout API libvorbis: convert to new channel layout API mace: convert to new channel layout API metasound: convert to new channel layout API mlp: convert to new channel layout API mpc7: convert to new channel layout API mpc8: convert to new channel layout API mpegaudio: convert to new channel layout API nellymoser: convert to new channel layout API on2avc: convert to new channel layout API opus: convert to new channel layout API pcm: convert to new channel layout API qcelpdec: convert to new channel layout API qdmc: convert to new channel layout API qdm2: convert to new channel layout API ra144: convert to new channel layout API ra288: convert to new channel layout API ralf: convert to new channel layout API roqaudioenc: convert to new channel layout API s302m: convert to new channel layout API sbc: convert to new channel layout API shorten: convert to new channel layout API sipr: convert to new channel layout API smacker: convert to new channel layout API sonic: convert to new channel layout API tak: convert to new channel layout API truespeech: convert to new channel layout API tta: convert to new channel layout API vmdaudio: convert to new channel layout API vorbis: convert to new channel layout API wavpack: convert to new channel layout API wma: convert to new channel layout API ws-snd1: convert to new channel layout API lavc: drop temporary compat wrappers for channel layout API change opus: export mapping family 2 (Ambisonic) as Ambisonic layout James Almer (30): fate: add a channel_layout API test aax: convert to new channel layout API ace: convert to new channel layout API alsa: convert to new channel layout API alp: convert to new channel layout API amv: convert to new channel layout API apm: convert to new channel layout API derf: convert to new channel layout API dshow: convert to new channel layout API fwse: convert to new channel layout API hca: convert to new channel layout API hls_sample_encryption: convert to new channel layout API imx: convert to new channel layout API kvag: convert to new channel layout API avdevice/lavfi: convert to new channel layout API mca: convert to new channel layout API moflex: convert to new channel layout API pp_bnk: convert to new channel layout API scd: convert to new channel layout API sga: convert to new channel layout API svs: convert to new channel layout API fastaudio: convert to new channel layout API hca: convert to new channel layout API mf: convert to new channel layout API siren: convert to new channel layout API speex: convert to new channel layout API swresample: convert to new channel layout API avfilter: convert to new channel layout API ffmpeg: convert to new channel layout-API ffprobe: convert to new channel layout-API Vittorio Giovara (113): avcodecpar: switch to the new channel layout API 4xm: convert to new channel layout API adxdec: convert to new channel layout API aea: convert to new channel layout API aiff: convert to new channel layout API amr: convert to new channel layout API apc: convert to new channel layout API ape: convert to new channel layout API au: convert to new channel layout API bethsoftvid: convert to new channel layout API bfi: convert to new channel layout API bink: convert to new channel layout API bmv: convert to new channel layout API caf: convert to new channel layout API cdxl: convert to new channel layout API dash: convert to new channel layout API dsicin: convert to new channel layout API dss: convert to new channel layout API dv: convert to new channel layout API eac: convert to new channel layout API electronicarts: convert to new channel layout API flac: convert to new channel layout API flic: convert to new channel layout API flv: convert to new channel layout API g722: convert to new channel layout API g723_1: convert to new channel layout API g729: convert to new channel layout API gsm: convert to new channel layout API gxf: convert to new channel layout API idcin: convert to new channel layout API idroq: convert to new channel layout API iff: convert to new channel layout API ilbc: convert to new channel layout API ipmovie: convert to new channel layout API iss: convert to new channel layout API jvdec: convert to new channel layout API lxfdec: convert to new channel layout API matroska: convert to new channel layout API mm: convert to new channel layout API mmf: convert to new channel layout API mov: convert to new channel layout API movenc-test: convert to new channel layout API mp3: convert to new channel layout API mpc: convert to new channel layout API mpc8: convert to new channel layout API mpegenc: convert to new channel layout API mvdec: convert to new channel layout API mvi: convert to new channel layout API mxf: convert to new channel layout API mxg: convert to new channel layout API nsvdec: convert to new channel layout API nutdec: convert to new channel layout API nuv: convert to new channel layout API ogg: convert to new channel layout API oma: convert to new channel layout API paf: convert to new channel layout API pcm: convert to new channel layout API pmp: convert to new channel layout API psxstr: convert to new channel layout API qcp: convert to new channel layout API r3d: convert to new channel layout API riff: convert to new channel layout API rl2: convert to new channel layout API rm: convert to new channel layout API rpl: convert to new channel layout API rso: convert to new channel layout API rtp: convert to new channel layout API sdp: convert to new channel layout API segafilm: convert to new channel layout API sierravmd: convert to new channel layout API siff: convert to new channel layout API smacker: convert to new channel layout API smjpegenc: convert to new channel layout API smoothstreaming: convert to new channel layout API smush: convert to new channel layout API sol: convert to new channel layout API sox: convert to new channel layout API swf: convert to new channel layout API tak: convert to new channel layout API thp: convert to new channel layout API tiertexseq: convert to new channel layout API tmv: convert to new channel layout API tta: convert to new channel layout API voc: convert to new channel layout API vqf: convert to new channel layout API wav: convert to new channel layout API wc3movie: convert to new channel layout API westwood: convert to new channel layout API wtv: convert to new channel layout API wv: convert to new channel layout API xa: convert to new channel layout API xmv: convert to new channel layout API xwma: convert to new channel layout API yop: convert to new channel layout API wsd: convert to new channel layout API wve: convert to new channel layout API xvag: convert to new channel layout API lavc: switch to the new channel layout API ac3: convert to new channel layout API adx: convert to new channel layout API als: convert to new channel layout API atrac1: convert to new channel layout API atrac3: convert to new channel layout API atrac3plus: convert to new channel layout API dpcm: convert to new channel layout API dss_sp: convert to new channel layout API libfdk-aac: convert to new channel layout API pafaudio: convert to new channel layout API twinvq: convert to new channel layout API vima: convert to new channel layout API lavf: Add non diegetic stream disposition flag channel_layout: add support for Ambisonic mov: Implement spatial audio support fftools/cmdutils.c | 42 +- fftools/cmdutils.h | 8 - fftools/ffmpeg.c | 47 +- fftools/ffmpeg.h | 7 +- fftools/ffmpeg_filter.c | 43 +- fftools/ffmpeg_opt.c | 62 +- fftools/ffprobe.c | 19 +- libavcodec/8svx.c | 19 +- libavcodec/aac.h | 11 +- libavcodec/aac_ac3_parser.c | 13 +- libavcodec/aaccoder.c | 10 +- libavcodec/aaccoder_twoloop.h | 4 +- libavcodec/aacdec_template.c | 52 +- libavcodec/aacenc.c | 13 +- libavcodec/aacenc.h | 64 +- libavcodec/aacenctab.h | 16 +- libavcodec/aacpsy.c | 8 +- libavcodec/ac3dec.c | 57 +- libavcodec/ac3dec.h | 2 + libavcodec/ac3dec_fixed.c | 1 + libavcodec/ac3dec_float.c | 2 + libavcodec/ac3enc.c | 78 ++- libavcodec/ac3enc.h | 4 +- libavcodec/ac3enc_fixed.c | 5 + libavcodec/ac3enc_float.c | 5 + libavcodec/adpcm.c | 151 +++-- libavcodec/adpcmenc.c | 122 ++-- libavcodec/adx.c | 16 +- libavcodec/adxdec.c | 6 +- libavcodec/adxenc.c | 11 +- libavcodec/alac.c | 16 +- libavcodec/alac_data.c | 20 +- libavcodec/alac_data.h | 6 + libavcodec/alacenc.c | 37 +- libavcodec/alsdec.c | 90 +-- libavcodec/amr_parser.c | 10 +- libavcodec/amrnbdec.c | 12 +- libavcodec/amrwbdec.c | 12 +- libavcodec/apedec.c | 9 +- libavcodec/aptx.c | 2 +- libavcodec/atrac1.c | 10 +- libavcodec/atrac3.c | 41 +- libavcodec/atrac3plusdec.c | 25 +- libavcodec/atrac9dec.c | 4 +- libavcodec/atrac9tab.h | 14 +- libavcodec/audiotoolboxdec.c | 27 +- libavcodec/audiotoolboxenc.c | 95 ++- libavcodec/avcodec.c | 51 +- libavcodec/avcodec.h | 23 +- libavcodec/binkaudio.c | 19 +- libavcodec/bmvaudio.c | 4 +- libavcodec/cngdec.c | 3 +- libavcodec/cngenc.c | 6 +- libavcodec/codec.h | 11 + libavcodec/codec_par.c | 65 +- libavcodec/codec_par.h | 12 + libavcodec/cook.c | 25 +- libavcodec/cook_parser.c | 4 +- libavcodec/dca_core.c | 6 +- libavcodec/dca_lbr.c | 13 +- libavcodec/dca_xll.c | 2 +- libavcodec/dcadec.c | 63 +- libavcodec/dcadec.h | 7 + libavcodec/dcaenc.c | 39 +- libavcodec/decode.c | 73 +- libavcodec/dolby_e.c | 52 +- libavcodec/dolby_e.h | 2 + libavcodec/dolby_e_parser.c | 11 +- libavcodec/dpcm.c | 16 +- libavcodec/dsddec.c | 14 +- libavcodec/dsicinaudio.c | 4 +- libavcodec/dss_sp.c | 4 +- libavcodec/dstdec.c | 8 +- libavcodec/dvaudiodec.c | 8 +- libavcodec/eac3enc.c | 5 + libavcodec/encode.c | 43 +- libavcodec/evrcdec.c | 4 +- libavcodec/fastaudio.c | 6 +- libavcodec/ffwavesynth.c | 6 +- libavcodec/flac.c | 39 +- libavcodec/flac.h | 2 +- libavcodec/flac_parser.c | 7 +- libavcodec/flacdec.c | 9 +- libavcodec/flacenc.c | 26 +- libavcodec/g722dec.c | 4 +- libavcodec/g722enc.c | 5 + libavcodec/g723_1_parser.c | 2 +- libavcodec/g723_1dec.c | 19 +- libavcodec/g723_1enc.c | 8 +- libavcodec/g726.c | 8 +- libavcodec/g729_parser.c | 2 +- libavcodec/g729dec.c | 20 +- libavcodec/gsmdec.c | 4 +- libavcodec/hcadec.c | 16 +- libavcodec/hcom.c | 2 +- libavcodec/ilbcdec.c | 4 +- libavcodec/imc.c | 22 +- libavcodec/interplayacm.c | 10 +- libavcodec/libcelt_dec.c | 10 +- libavcodec/libcodec2.c | 4 +- libavcodec/libfdk-aacdec.c | 34 +- libavcodec/libfdk-aacenc.c | 37 +- libavcodec/libgsmdec.c | 4 +- libavcodec/libgsmenc.c | 4 +- libavcodec/libilbc.c | 6 +- libavcodec/libmp3lame.c | 9 +- libavcodec/libopencore-amr.c | 8 +- libavcodec/libopusdec.c | 39 +- libavcodec/libopusenc.c | 65 +- libavcodec/libshine.c | 6 +- libavcodec/libspeexdec.c | 19 +- libavcodec/libspeexenc.c | 17 +- libavcodec/libtwolame.c | 2 +- libavcodec/libvo-amrwbenc.c | 2 +- libavcodec/libvorbisdec.c | 4 +- libavcodec/libvorbisenc.c | 42 +- libavcodec/mace.c | 15 +- libavcodec/metasound.c | 31 +- libavcodec/mfenc.c | 8 +- libavcodec/mlp_parser.c | 12 +- libavcodec/mlpdec.c | 112 ++- libavcodec/mlpenc.c | 98 ++- libavcodec/mp3_header_decompress_bsf.c | 2 +- libavcodec/mpc7.c | 7 +- libavcodec/mpc8.c | 6 +- libavcodec/mpegaudio_parser.c | 4 +- libavcodec/mpegaudiodec_template.c | 22 +- libavcodec/mpegaudioenc_template.c | 2 +- libavcodec/nellymoserdec.c | 4 +- libavcodec/nellymoserenc.c | 6 +- libavcodec/on2avc.c | 20 +- libavcodec/options_table.h | 3 + libavcodec/opus.c | 73 +- libavcodec/opusdec.c | 4 +- libavcodec/opusenc.c | 11 +- libavcodec/opusenc_psy.c | 20 +- libavcodec/packet.h | 5 + libavcodec/pafaudio.c | 5 +- libavcodec/pcm-bluray.c | 36 +- libavcodec/pcm-dvd.c | 28 +- libavcodec/pcm-dvdenc.c | 20 +- libavcodec/pcm.c | 39 +- libavcodec/pcm_rechunk_bsf.c | 5 +- libavcodec/psymodel.c | 8 +- libavcodec/psymodel.h | 2 +- libavcodec/pthread_frame.c | 10 +- libavcodec/qcelpdec.c | 4 +- libavcodec/qdm2.c | 6 +- libavcodec/qdmc.c | 9 +- libavcodec/ra144dec.c | 4 +- libavcodec/ra144enc.c | 8 +- libavcodec/ra288.c | 4 +- libavcodec/ralf.c | 18 +- libavcodec/roqaudioenc.c | 20 +- libavcodec/s302m.c | 31 +- libavcodec/s302menc.c | 18 +- libavcodec/sbc_parser.c | 8 +- libavcodec/sbcdec.c | 4 +- libavcodec/sbcenc.c | 10 +- libavcodec/shorten.c | 6 +- libavcodec/sipr.c | 4 +- libavcodec/siren.c | 4 +- libavcodec/smacker.c | 12 +- libavcodec/sonic.c | 14 +- libavcodec/speexdec.c | 8 +- libavcodec/takdec.c | 41 +- libavcodec/truespeech.c | 7 +- libavcodec/tta.c | 18 +- libavcodec/ttaenc.c | 14 +- libavcodec/twinvq.c | 20 +- libavcodec/twinvqdec.c | 18 +- libavcodec/utils.c | 24 +- libavcodec/vima.c | 5 +- libavcodec/vmdaudio.c | 26 +- libavcodec/vorbisdec.c | 24 +- libavcodec/vorbisenc.c | 7 +- libavcodec/wavpack.c | 51 +- libavcodec/wavpackenc.c | 29 +- libavcodec/wma.c | 11 +- libavcodec/wmadec.c | 29 +- libavcodec/wmaenc.c | 27 +- libavcodec/wmalosslessdec.c | 13 +- libavcodec/wmaprodec.c | 28 +- libavcodec/wmavoice.c | 4 +- libavcodec/ws-snd1.c | 4 +- libavdevice/alsa.c | 19 +- libavdevice/alsa_dec.c | 3 +- libavdevice/alsa_enc.c | 2 +- libavdevice/dshow.c | 3 +- libavdevice/jack.c | 3 +- libavdevice/lavfi.c | 7 +- libavdevice/libcdio.c | 5 +- libavdevice/oss_dec.c | 3 +- libavdevice/oss_enc.c | 2 +- libavfilter/aeval.c | 19 +- libavfilter/af_afir.c | 9 +- libavfilter/af_aformat.c | 32 +- libavfilter/af_amerge.c | 38 +- libavfilter/af_amix.c | 2 +- libavfilter/af_apulsator.c | 2 +- libavfilter/af_aresample.c | 41 +- libavfilter/af_ashowinfo.c | 13 +- libavfilter/af_asr.c | 2 +- libavfilter/af_biquads.c | 42 +- libavfilter/af_bs2b.c | 2 +- libavfilter/af_channelmap.c | 86 ++- libavfilter/af_channelsplit.c | 42 +- libavfilter/af_compand.c | 6 + libavfilter/af_compensationdelay.c | 7 + libavfilter/af_crossfeed.c | 2 +- libavfilter/af_earwax.c | 2 +- libavfilter/af_extrastereo.c | 2 +- libavfilter/af_firequalizer.c | 5 +- libavfilter/af_haas.c | 2 +- libavfilter/af_hdcd.c | 4 +- libavfilter/af_headphone.c | 22 +- libavfilter/af_join.c | 268 +++++--- libavfilter/af_ladspa.c | 16 +- libavfilter/af_lv2.c | 17 +- libavfilter/af_pan.c | 62 +- libavfilter/af_replaygain.c | 2 +- libavfilter/af_sofalizer.c | 86 ++- libavfilter/af_speechnorm.c | 12 +- libavfilter/af_stereotools.c | 2 +- libavfilter/af_stereowiden.c | 2 +- libavfilter/af_surround.c | 72 +- libavfilter/asrc_afirsrc.c | 2 +- libavfilter/asrc_anoisesrc.c | 2 +- libavfilter/asrc_anullsrc.c | 13 +- libavfilter/asrc_flite.c | 6 +- libavfilter/asrc_hilbert.c | 2 +- libavfilter/asrc_sinc.c | 2 +- libavfilter/asrc_sine.c | 2 +- libavfilter/audio.c | 11 +- libavfilter/avf_aphasemeter.c | 2 +- libavfilter/avf_avectorscope.c | 2 +- libavfilter/avf_showcqt.c | 3 +- libavfilter/avf_showspatial.c | 2 +- libavfilter/avf_showspectrum.c | 3 +- libavfilter/avf_showvolume.c | 9 +- libavfilter/avfilter.c | 15 +- libavfilter/avfilter.h | 10 +- libavfilter/avfiltergraph.c | 84 ++- libavfilter/buffersink.c | 29 +- libavfilter/buffersink.h | 7 +- libavfilter/buffersrc.c | 92 ++- libavfilter/buffersrc.h | 9 + libavfilter/f_ebur128.c | 10 +- libavfilter/f_streamselect.c | 4 + libavfilter/formats.c | 131 ++-- libavfilter/formats.h | 16 +- libavfilter/graphdump.c | 4 +- libavfilter/internal.h | 2 +- libavfilter/src_movie.c | 19 +- libavfilter/tests/filtfmts.c | 3 +- libavfilter/tests/formats.c | 8 +- libavfilter/vaf_spectrumsynth.c | 2 +- libavformat/3dostr.c | 13 +- libavformat/4xm.c | 7 +- libavformat/aadec.c | 6 +- libavformat/aaxdec.c | 7 +- libavformat/acedec.c | 5 +- libavformat/acm.c | 7 +- libavformat/act.c | 3 +- libavformat/adp.c | 3 +- libavformat/ads.c | 11 +- libavformat/adxdec.c | 22 +- libavformat/aea.c | 11 +- libavformat/afc.c | 5 +- libavformat/aiffdec.c | 13 +- libavformat/aiffenc.c | 8 +- libavformat/aixdec.c | 3 +- libavformat/alp.c | 16 +- libavformat/amr.c | 20 +- libavformat/amvenc.c | 4 +- libavformat/apc.c | 12 +- libavformat/ape.c | 3 +- libavformat/apm.c | 22 +- libavformat/aptxdec.c | 3 +- libavformat/argo_asf.c | 18 +- libavformat/argo_cvg.c | 5 +- libavformat/astdec.c | 18 +- libavformat/astenc.c | 4 +- libavformat/au.c | 9 +- libavformat/avformat.h | 7 + libavformat/avr.c | 7 +- libavformat/bethsoftvid.c | 3 +- libavformat/bfi.c | 3 +- libavformat/bink.c | 8 +- libavformat/binka.c | 3 +- libavformat/bit.c | 7 +- libavformat/bmv.c | 3 +- libavformat/boadec.c | 8 +- libavformat/brstm.c | 44 +- libavformat/cafdec.c | 7 +- libavformat/cafenc.c | 12 +- libavformat/cdxl.c | 4 +- libavformat/codec2.c | 3 +- libavformat/dashenc.c | 2 +- libavformat/dauddec.c | 3 +- libavformat/daudenc.c | 2 +- libavformat/dcstr.c | 15 +- libavformat/demux.c | 18 +- libavformat/derf.c | 12 +- libavformat/dhav.c | 3 +- libavformat/dsfdec.c | 60 +- libavformat/dsicin.c | 7 +- libavformat/dss.c | 3 +- libavformat/dtshddec.c | 3 +- libavformat/dump.c | 11 +- libavformat/dv.c | 3 +- libavformat/dvenc.c | 2 +- libavformat/eacdata.c | 22 +- libavformat/electronicarts.c | 7 +- libavformat/epafdec.c | 6 +- libavformat/flacdec.c | 3 +- libavformat/flacenc.c | 7 +- libavformat/flic.c | 4 +- libavformat/flvdec.c | 15 +- libavformat/flvenc.c | 10 +- libavformat/framehash.c | 8 +- libavformat/fsb.c | 36 +- libavformat/fwse.c | 10 +- libavformat/g722.c | 2 +- libavformat/g723_1.c | 3 +- libavformat/g726.c | 3 +- libavformat/g729dec.c | 2 +- libavformat/gdv.c | 6 +- libavformat/genh.c | 38 +- libavformat/gsmdec.c | 3 +- libavformat/gxf.c | 9 +- libavformat/gxfenc.c | 2 +- libavformat/hca.c | 3 +- libavformat/hcom.c | 3 +- libavformat/hls_sample_encryption.c | 12 +- libavformat/idcin.c | 4 +- libavformat/idroqdec.c | 12 +- libavformat/iff.c | 63 +- libavformat/ifv.c | 3 +- libavformat/ilbc.c | 2 +- libavformat/imx.c | 3 +- libavformat/ipmovie.c | 8 +- libavformat/ircamdec.c | 8 +- libavformat/ircamenc.c | 2 +- libavformat/isom.c | 5 +- libavformat/iss.c | 17 +- libavformat/jvdec.c | 3 +- libavformat/kvag.c | 19 +- libavformat/lvfdec.c | 3 +- libavformat/lxfdec.c | 3 +- libavformat/matroskadec.c | 8 +- libavformat/matroskaenc.c | 10 +- libavformat/mca.c | 25 +- libavformat/mm.c | 3 +- libavformat/mmf.c | 5 +- libavformat/moflex.c | 3 +- libavformat/mov.c | 172 ++++- libavformat/mov_chan.c | 21 +- libavformat/mov_chan.h | 3 +- libavformat/movenc.c | 25 +- libavformat/mp3enc.c | 2 +- libavformat/mpc.c | 3 +- libavformat/mpc8.c | 5 +- libavformat/mpeg.c | 3 +- libavformat/mpegenc.c | 10 +- libavformat/mpegtsenc.c | 30 +- libavformat/msf.c | 16 +- libavformat/mtaf.c | 5 +- libavformat/musx.c | 49 +- libavformat/mux.c | 19 +- libavformat/mvdec.c | 10 +- libavformat/mvi.c | 3 +- libavformat/mxfdec.c | 23 +- libavformat/mxfenc.c | 20 +- libavformat/mxg.c | 3 +- libavformat/nistspheredec.c | 8 +- libavformat/nspdec.c | 3 +- libavformat/nsvdec.c | 2 +- libavformat/nutdec.c | 3 +- libavformat/nutenc.c | 4 +- libavformat/nuv.c | 11 +- libavformat/oggparsecelt.c | 3 +- libavformat/oggparseogm.c | 6 +- libavformat/oggparseopus.c | 3 +- libavformat/oggparsespeex.c | 8 +- libavformat/oggparsevorbis.c | 6 +- libavformat/oma.h | 2 + libavformat/omadec.c | 35 +- libavformat/omaenc.c | 4 +- libavformat/paf.c | 3 +- libavformat/pcm.c | 2 +- libavformat/pcmdec.c | 7 +- libavformat/pmpdec.c | 3 +- libavformat/pp_bnk.c | 12 +- libavformat/psxstr.c | 10 +- libavformat/pvfdec.c | 5 +- libavformat/qcp.c | 3 +- libavformat/r3d.c | 3 +- libavformat/rawenc.c | 2 +- libavformat/redspark.c | 15 +- libavformat/riffdec.c | 20 +- libavformat/riffenc.c | 18 +- libavformat/rl2.c | 7 +- libavformat/rmdec.c | 6 +- libavformat/rmenc.c | 2 +- libavformat/rpl.c | 7 +- libavformat/rsd.c | 27 +- libavformat/rsodec.c | 3 +- libavformat/rsoenc.c | 2 +- libavformat/rtp.c | 10 +- libavformat/rtpdec.c | 4 +- libavformat/rtpdec_amr.c | 3 +- libavformat/rtpenc.c | 14 +- libavformat/rtsp.c | 6 +- libavformat/rtsp.h | 1 - libavformat/sbgdec.c | 3 +- libavformat/scd.c | 9 +- libavformat/sdp.c | 36 +- libavformat/sdr2.c | 3 +- libavformat/sdsdec.c | 3 +- libavformat/sdxdec.c | 3 +- libavformat/segafilm.c | 9 +- libavformat/segafilmenc.c | 2 +- libavformat/sga.c | 3 +- libavformat/sierravmd.c | 15 +- libavformat/siff.c | 3 +- libavformat/smacker.c | 11 +- libavformat/smjpegdec.c | 3 +- libavformat/smjpegenc.c | 2 +- libavformat/smoothstreamingenc.c | 4 +- libavformat/smush.c | 4 +- libavformat/sol.c | 4 +- libavformat/soxdec.c | 14 +- libavformat/soxenc.c | 4 +- libavformat/svag.c | 12 +- libavformat/svs.c | 3 +- libavformat/swfdec.c | 8 +- libavformat/swfenc.c | 2 +- libavformat/takdec.c | 7 +- libavformat/tests/movenc.c | 2 +- libavformat/thp.c | 3 +- libavformat/tiertexseq.c | 7 +- libavformat/tmv.c | 10 +- libavformat/tta.c | 3 +- libavformat/ttaenc.c | 2 +- libavformat/utils.c | 13 +- libavformat/vag.c | 11 +- libavformat/vividas.c | 8 +- libavformat/vivo.c | 3 +- libavformat/voc_packet.c | 9 +- libavformat/vocenc.c | 9 +- libavformat/vpk.c | 15 +- libavformat/vqf.c | 13 +- libavformat/wavdec.c | 32 +- libavformat/wavenc.c | 14 +- libavformat/wc3movie.c | 8 +- libavformat/westwood_aud.c | 10 +- libavformat/westwood_audenc.c | 2 +- libavformat/westwood_vqa.c | 2 +- libavformat/wsddec.c | 12 +- libavformat/wtvdec.c | 6 +- libavformat/wvdec.c | 3 +- libavformat/wvedec.c | 6 +- libavformat/xa.c | 9 +- libavformat/xmv.c | 3 +- libavformat/xvag.c | 10 +- libavformat/xwma.c | 10 +- libavformat/yop.c | 3 +- libavutil/Makefile | 1 + libavutil/channel_layout.c | 641 ++++++++++++++++-- libavutil/channel_layout.h | 559 ++++++++++++++- libavutil/frame.c | 112 ++- libavutil/frame.h | 12 +- libavutil/opt.c | 126 +++- libavutil/opt.h | 12 + libavutil/tests/channel_layout.c | 231 +++++++ libavutil/tests/opt.c | 8 +- libavutil/version.h | 1 + libswresample/options.c | 33 +- libswresample/rematrix.c | 227 ++++--- libswresample/rematrix_template.c | 7 +- libswresample/swresample.c | 158 ++++- libswresample/swresample.h | 63 ++ libswresample/swresample_frame.c | 65 +- libswresample/swresample_internal.h | 10 +- tests/fate/aac.mak | 2 +- tests/fate/ac3.mak | 16 +- tests/fate/cover-art.mak | 2 +- tests/fate/lavf-container.mak | 2 +- tests/fate/libavutil.mak | 4 + tests/ref/fate/8bps | 1 - tests/ref/fate/aa-demux | 1 - tests/ref/fate/aac-autobsf-adtstoasc | 1 - tests/ref/fate/adpcm-4xm | 1 - tests/ref/fate/adpcm-afc | 1 - tests/ref/fate/adpcm-dtk | 1 - tests/ref/fate/adpcm-ea-1 | 1 - tests/ref/fate/adpcm-ea-2 | 1 - tests/ref/fate/adpcm-ea-maxis-xa | 1 - tests/ref/fate/adpcm-ea-r1 | 1 - tests/ref/fate/adpcm-ima-amv | 1 - tests/ref/fate/adpcm-ima-ea-eacs | 1 - tests/ref/fate/adpcm-ima-ea-sead | 1 - tests/ref/fate/adpcm-ima-smjpeg | 1 - tests/ref/fate/adpcm-ima-ws | 1 - tests/ref/fate/adpcm-ima-ws-vqa3 | 1 - tests/ref/fate/adpcm-ms-mono | 1 - tests/ref/fate/adpcm-thp | 1 - tests/ref/fate/adpcm-vima | 1 - tests/ref/fate/adpcm-xa | 1 - tests/ref/fate/adts-id3v1-demux | 1 - tests/ref/fate/adts-id3v2-demux | 1 - tests/ref/fate/adts-id3v2-two-tags-demux | 1 - tests/ref/fate/adtstoasc_ticket3715 | 1 - tests/ref/fate/armovie-escape124 | 1 - tests/ref/fate/bethsoft-vid | 1 - tests/ref/fate/bfi | 1 - tests/ref/fate/bmv-audio | 1 - tests/ref/fate/caf-alac-remux | 1 - tests/ref/fate/caf-amr_nb-remux | 1 - tests/ref/fate/caf-mace6-remux | 1 - tests/ref/fate/caf-pcm_s24-remux | 1 - tests/ref/fate/caf-pcm_s24le-remux | 1 - tests/ref/fate/caf-qdm2-remux | 1 - tests/ref/fate/cdxl-demux | 1 - tests/ref/fate/channel_layout | 94 +++ tests/ref/fate/copy-psp | 1 - tests/ref/fate/copy-shortest1 | 1 - tests/ref/fate/copy-shortest2 | 1 - tests/ref/fate/copy-trac236 | 1 - tests/ref/fate/copy-trac3074 | 1 - tests/ref/fate/copy-trac4914 | 1 - tests/ref/fate/copy-trac4914-avi | 1 - tests/ref/fate/corepng | 1 - tests/ref/fate/cover-art-aiff-id3v2-remux | 1 - tests/ref/fate/cover-art-flac-remux | 6 +- tests/ref/fate/cover-art-mp3-id3v2-remux | 1 - tests/ref/fate/creatureshock-avs | 1 - tests/ref/fate/cyberia-c93 | 1 - tests/ref/fate/d-cinema-demux | 1 - tests/ref/fate/dca-xll_51_16_192_768_0 | 1 - tests/ref/fate/dca-xll_51_16_192_768_0-dmix_2 | 1 - tests/ref/fate/dca-xll_51_16_192_768_0-dmix_6 | 1 - tests/ref/fate/dca-xll_51_16_192_768_1 | 1 - tests/ref/fate/dca-xll_51_16_192_768_1-dmix_2 | 1 - tests/ref/fate/dca-xll_51_16_192_768_1-dmix_6 | 1 - tests/ref/fate/dca-xll_51_24_48_768 | 1 - tests/ref/fate/dca-xll_51_24_48_768-dmix_2 | 1 - tests/ref/fate/dca-xll_51_24_48_768-dmix_6 | 1 - tests/ref/fate/dca-xll_51_24_48_none | 1 - tests/ref/fate/dca-xll_51_24_48_none-dmix_2 | 1 - tests/ref/fate/dca-xll_51_24_48_none-dmix_6 | 1 - tests/ref/fate/dca-xll_71_24_48_768_0 | 1 - tests/ref/fate/dca-xll_71_24_48_768_0-dmix_2 | 1 - tests/ref/fate/dca-xll_71_24_48_768_0-dmix_6 | 1 - tests/ref/fate/dca-xll_71_24_48_768_1 | 1 - tests/ref/fate/dca-xll_71_24_48_768_1-dmix_2 | 1 - tests/ref/fate/dca-xll_71_24_48_768_1-dmix_6 | 1 - tests/ref/fate/dca-xll_71_24_96_768 | 1 - tests/ref/fate/dca-xll_71_24_96_768-dmix_2 | 1 - tests/ref/fate/dca-xll_71_24_96_768-dmix_6 | 1 - tests/ref/fate/dca-xll_x96_51_24_96_1509 | 1 - .../ref/fate/dca-xll_x96_51_24_96_1509-dmix_2 | 1 - .../ref/fate/dca-xll_x96_51_24_96_1509-dmix_6 | 1 - tests/ref/fate/dca-xll_xch_61_24_48_768 | 1 - .../ref/fate/dca-xll_xch_61_24_48_768-dmix_2 | 1 - .../ref/fate/dca-xll_xch_61_24_48_768-dmix_6 | 1 - tests/ref/fate/dcinema-encode | 1 - tests/ref/fate/delphine-cin-audio | 1 - tests/ref/fate/dpcm-idroq | 1 - tests/ref/fate/dpcm-interplay | 1 - tests/ref/fate/dss-lp | 1 - tests/ref/fate/dss-sp | 1 - tests/ref/fate/ffmpeg-attached_pics | 1 - tests/ref/fate/ffmpeg-filter_complex_audio | 1 - tests/ref/fate/filter-acrossfade | 1 - tests/ref/fate/filter-adelay | 1 - tests/ref/fate/filter-aecho | 1 - tests/ref/fate/filter-aemphasis | 2 - tests/ref/fate/filter-aemphasis-50fm | 1 - tests/ref/fate/filter-aemphasis-75kf | 1 - tests/ref/fate/filter-afade-esin | 1 - tests/ref/fate/filter-afade-exp | 1 - tests/ref/fate/filter-afade-hsin | 1 - tests/ref/fate/filter-afade-iqsin | 1 - tests/ref/fate/filter-afade-log | 1 - tests/ref/fate/filter-afade-qsin | 1 - tests/ref/fate/filter-agate | 1 - tests/ref/fate/filter-alimiter | 1 - tests/ref/fate/filter-amerge | 1 - tests/ref/fate/filter-anequalizer | 1 - tests/ref/fate/filter-apad | 1 - tests/ref/fate/filter-asetnsamples-nopad | 1 - tests/ref/fate/filter-asetnsamples-pad | 1 - tests/ref/fate/filter-asetrate | 1 - tests/ref/fate/filter-atrim-duration | 1 - tests/ref/fate/filter-atrim-mixed | 1 - tests/ref/fate/filter-atrim-samples | 1 - tests/ref/fate/filter-atrim-time | 1 - tests/ref/fate/filter-chorus | 1 - tests/ref/fate/filter-compand | 1 - tests/ref/fate/filter-concat | 1 - tests/ref/fate/filter-concat-vfr | 1 - tests/ref/fate/filter-dcshift | 1 - tests/ref/fate/filter-earwax | 1 - tests/ref/fate/filter-extrastereo | 1 - tests/ref/fate/filter-formats | 20 +- tests/ref/fate/filter-hls | 1 - tests/ref/fate/filter-hls-append | 1 - tests/ref/fate/filter-meta-4560-rotate0 | 1 - tests/ref/fate/filter-overlay-dvdsub-2397 | 1 - tests/ref/fate/filter-pan-downmix1 | 1 - tests/ref/fate/filter-pan-downmix2 | 1 - tests/ref/fate/filter-pan-mono1 | 1 - tests/ref/fate/filter-pan-mono2 | 1 - tests/ref/fate/filter-pan-stereo1 | 1 - tests/ref/fate/filter-pan-stereo2 | 1 - tests/ref/fate/filter-pan-stereo3 | 1 - tests/ref/fate/filter-pan-stereo4 | 1 - tests/ref/fate/filter-pan-upmix1 | 1 - tests/ref/fate/filter-pan-upmix2 | 1 - tests/ref/fate/filter-silenceremove | 1 - tests/ref/fate/filter-stereotools | 1 - tests/ref/fate/g722-encode | 1 - tests/ref/fate/g722dec-1 | 1 - tests/ref/fate/g723_1-dec-1 | 1 - tests/ref/fate/g723_1-dec-2 | 1 - tests/ref/fate/g723_1-dec-3 | 1 - tests/ref/fate/g723_1-dec-4 | 1 - tests/ref/fate/g723_1-dec-5 | 1 - tests/ref/fate/g723_1-dec-6 | 1 - tests/ref/fate/g723_1-dec-7 | 1 - tests/ref/fate/g723_1-dec-8 | 1 - tests/ref/fate/g726-encode-2bit | 1 - tests/ref/fate/g726-encode-3bit | 1 - tests/ref/fate/g726-encode-4bit | 1 - tests/ref/fate/g726-encode-5bit | 1 - tests/ref/fate/gapless-mp3 | 6 +- tests/ref/fate/gsm-ms | 1 - tests/ref/fate/gsm-toast | 1 - tests/ref/fate/h264-skip-nointra | 1 - tests/ref/fate/h264-skip-nokey | 1 - tests/ref/fate/h264-xavc-4389 | 1 - tests/ref/fate/hls-fmp4 | 1 - tests/ref/fate/hls-init-time | 1 - tests/ref/fate/hls-list-size | 1 - tests/ref/fate/hls-segment-single | 1 - tests/ref/fate/hls-segment-size | 1 - tests/ref/fate/id-cin-video | 1 - tests/ref/fate/id3v2-chapters | 1 - tests/ref/fate/id3v2-priv-remux | 1 - tests/ref/fate/jv-demux | 1 - tests/ref/fate/lmlm4-demux | 1 - tests/ref/fate/matroska-flac-channel-mapping | 2 - tests/ref/fate/matroska-flac-extradata-update | 3 - tests/ref/fate/matroska-lzo-decompression | 1 - .../fate/matroska-mastering-display-metadata | 2 - tests/ref/fate/matroska-mpegts-remux | 2 - .../matroska-wavpack-missing-codecprivate | 1 - tests/ref/fate/matroska-xiph-lacing | 1 - tests/ref/fate/maxis-xa | 1 - tests/ref/fate/mkv | 1 - tests/ref/fate/mkv-1242 | 1 - tests/ref/fate/mov-440hz-10ms | 1 - tests/ref/fate/mov-bbi-elst-starts-b | 1 - tests/ref/fate/mov-cover-image | 1 - tests/ref/fate/mov-mp3-demux | 1 - .../ref/fate/mov-mp4-disposition-mpegts-remux | 2 - tests/ref/fate/mpegps-remuxed-pcm-demux | 1 - tests/ref/fate/mtv | 1 - tests/ref/fate/mxf-demux | 1 - tests/ref/fate/nsv-demux | 1 - tests/ref/fate/oma-atrac3-remux | 1 - tests/ref/fate/oma-atrac3p-remux | 1 - tests/ref/fate/on2avc | 1 - tests/ref/fate/opt | 16 +- tests/ref/fate/paf-audio | 1 - tests/ref/fate/paf-demux | 1 - tests/ref/fate/pcm-planar | 1 - tests/ref/fate/pcm_dvd | 1 - tests/ref/fate/pmp-demux | 1 - tests/ref/fate/prores-gray | 1 - tests/ref/fate/prores-transparency | 1 - tests/ref/fate/prores-transparency_skip | 1 - tests/ref/fate/psx-str-demux | 1 - tests/ref/fate/pva-demux | 1 - tests/ref/fate/ra3-144 | 1 - tests/ref/fate/redcode-demux | 1 - tests/ref/fate/s337m-demux | 1 - tests/ref/fate/segment-adts-to-mkv-header-000 | 1 - tests/ref/fate/segment-adts-to-mkv-header-001 | 1 - tests/ref/fate/segment-adts-to-mkv-header-002 | 1 - tests/ref/fate/segment-adts-to-mkv-header-all | 1 - tests/ref/fate/shortest | 1 - tests/ref/fate/sierra-vmd-audio | 1 - tests/ref/fate/siff-demux | 1 - tests/ref/fate/smacker-audio | 1 - tests/ref/fate/smjpeg-demux | 1 - tests/ref/fate/sp5x | 1 - tests/ref/fate/tiertex-seq | 1 - tests/ref/fate/tmv | 1 - tests/ref/fate/tscc-15bit | 1 - tests/ref/fate/vqf-demux | 2 +- tests/ref/fate/wav-ac3 | 1 - tests/ref/fate/wc3movie-xan | 1 - tests/ref/fate/webm-dash-chapters | 1 - tests/ref/fate/westwood-aud | 1 - tests/ref/fate/wmv3-drm-nodec | 1 - tests/ref/fate/wtv-demux | 1 - tests/ref/fate/xmv-demux | 1 - 710 files changed, 6417 insertions(+), 3446 deletions(-) create mode 100644 libavutil/tests/channel_layout.c create mode 100644 tests/ref/fate/channel_layout