From patchwork Thu Dec 16 13:21:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 32656 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp423746iog; Thu, 16 Dec 2021 05:23:15 -0800 (PST) X-Google-Smtp-Source: ABdhPJzZKoDquPtQWW9ou7UCGUUxILdZCSnMr1ipmuhxFebMmw0Tkq+/CBJagStDhqWXgGErkxoj X-Received: by 2002:a17:907:9608:: with SMTP id gb8mr16649286ejc.301.1639660995312; Thu, 16 Dec 2021 05:23:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639660995; cv=none; d=google.com; s=arc-20160816; b=zrSdLIhTN+CjBa6wSFiPhf2zLb8Y5P2JO2NT+pZ7e+xmKfYfV5liXBJbAc9X7PuWvk oIeSWKTt3clvs6SxD8splKIR9yV0SA/90viWJAWckI5vggFfbJ3jBUnCSde39z1eiu9v xRgSrY0WrEZKI8sWHIgbiCvFJ3QVv+XQKn11XfitQodpv4O6bh4AHn5q7F54OZ9xQEL8 WrcJ8voorzexvGom6+fSrfLGB5hsSfvYxyjS6FwhclILhrxRa46HZBR0dOgym9qZMaIg wQOZJkXhBmIngUH0CatHyGtAcL0CL41YzNIVQaJgjnsZ5RIhGfkwAspRrq50nTDLJyaZ 6eug== 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=oj7MkpyDEWYHFgZQIVVTW+BRKU9a2o50t0wrIZLVwjc=; b=xvvp/sDHbI/5kVPvOs/0H++b23mXFEA6odsQEnR+xkbv5rwuh4BZzRTEU0wqWdYaWa Yp9k/jIZOPc6je4sQmUjZJG9FBNwQ5w40yDv9ae2Z1GLEOQ/vJrwzoKcaLqHavKxeLJi nzoW/wwuzol8sz7au7EjNoGwK4uLJC4TcoAtXZforkVxpLiYiPcKXljOKXVbKo7iCGGX lhg47tpGgD7wFvQdphhsdA4tBn9EcIe7G7Seud6TfFbAuMJrXghUkByMXPpCeuGd7dbf 8tGRsmcFkuxh+4dy5r0b/mn8dmSbUdS5g8mJg/rl5TUcKbEfHGeYugkrm93iJbU6YMz6 q43Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=CKtRvzDP; 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 gb9si3720025ejc.959.2021.12.16.05.23.07; Thu, 16 Dec 2021 05:23:15 -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=CKtRvzDP; 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 6304468AEEC; Thu, 16 Dec 2021 15:23:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ua1-f48.google.com (mail-ua1-f48.google.com [209.85.222.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1D1E3687FCE for ; Thu, 16 Dec 2021 15:22:56 +0200 (EET) Received: by mail-ua1-f48.google.com with SMTP id p2so47054870uad.11 for ; Thu, 16 Dec 2021 05:22:56 -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=IIs7Iipo3ca/Edh2MEo3c7F7qBB3mgz2hHN/5L+4rYU=; b=CKtRvzDPNN7rn+k+unLTpM/TbHSPJBa78IW5nBxKbzNfTcBWKT8hvAPg3br8fHIwXM wWE9fZoMmp0p8GKRMSQMHxlW33FJcRxeKTxyg3uOpYTx2Ddbesgl6AUQVS/UuFZiHkUB hDnUizI6BjPP1AlNb5f9FHgBa8M4kYpPsH+uCE4nWgStEFowkT31fQbK64gIKDyDGciM uJPLPt7EqCHYlxClufggZMJX6T3Mc6NFA+3riB2Am2egcuTVB3aVwwU7E6sS2kdOuPsW fWvOZx3jUzvF8axfQiAp1eVT2G06TnuP2pgEwE2RjGSjNtPdtsOC/DFnqISDdtPvu8fr iYmg== 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=IIs7Iipo3ca/Edh2MEo3c7F7qBB3mgz2hHN/5L+4rYU=; b=P51xgrUenRKvGlmNCCYCOkWSqK4GZ/XKQyQo4ue77PaHPJaSrHbBjQzFs9bnih1/7G mtfo8spFy2lSWH/js3qJsQEOtO2SACLARu+9nUILpkoHLq4xArBZyUA/cIE8rNKwfzh5 5MvDAlbSWgq3UhMm+ro8Q2PHNLsaBDEcxSupTbuol+k3CFm9bh4vLjijy4dMuEKnUBMW imZ+0cYBENX1obaInqg9I8CuAX9Wvrb1th3c9+K0UQswhDeC4e3lxuaQ62jt7O6y0uTy qFiAZ/47uPFpqAVWZ33Wqf/HCDNO3n41dXgfKkOMVfxaOqv8lXgqnGuc5xi0svTbqeco G5IQ== X-Gm-Message-State: AOAM531RI8HwDkzu4l9+M9beQmHw+MSExtCd0pCbIORe2PhJt1dsYEWr 0xNotzZjxoLJBqpWRCuARFVpk1wqKZz9tA== X-Received: by 2002:a67:6bc6:: with SMTP id g189mr5360946vsc.63.1639660972926; Thu, 16 Dec 2021 05:22:52 -0800 (PST) Received: from localhost.localdomain ([181.170.250.138]) by smtp.gmail.com with ESMTPSA id 6sm1082605vkq.23.2021.12.16.05.22.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 05:22:52 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 16 Dec 2021 10:21:49 -0300 Message-Id: <20211216132151.8216-1-jamrial@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 000/279 v2] 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: YhKE7iI0je5p Resending the first two patches only, since this is meant to show the implementation of one of the several suggestions made in the previous set that need to be discussed and hopefully resolved in a call. The proposals so far to extend the API to support either custom labels for channels are, or some form of extra user information. - Fixed array of bytes to hold a label. Simple solution, but the labels will have a hard limit that can only be extended with a major bump. This is what i implemented in this version. - "char *name" per channel that the user may allocate and the API will manage, duplicate and free. Simple solution, and the name can be arbitrarily long, but inefficient (av_strdup() per channel with a custom label on layout copy). - "const char *name" per channel for compile time constants, or that the user may allocate and free. Very efficient, but for non compile time strings ensuring they outlive the layout can be tricky. - Refcounted AVChannelCustom with a dictionary. This can't be done with AVBufferRef, so it would require some other form of reference counting. And a dictionary may add quite a bit of complexity to the API, as you can set anything on them. - Opaque id/s or pointer/s that the API will not touch beyond passing them around (So unlike the above, the helpers would not benefit from this). This can be combined with any of the above, too, and i did as much in this version. - Leave API as it was in v1. 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 | 116 ++- libavcodec/mlpenc.c | 95 +-- 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 | 4 +- 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 | 783 ++++++++++++++++-- libavutil/channel_layout.h | 589 ++++++++++++- libavutil/frame.c | 112 ++- libavutil/frame.h | 12 +- libavutil/opt.c | 126 ++- libavutil/opt.h | 12 + libavutil/tests/channel_layout.c | 253 ++++++ 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 | 111 +++ 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, 6627 insertions(+), 3444 deletions(-) create mode 100644 libavutil/tests/channel_layout.c create mode 100644 tests/ref/fate/channel_layout