[FFmpeg-devel] [PATCH] lavfi: add ff_all_channel_layouts internal symbol

Stefano Sabatini stefano.sabatini-lala at poste.it
Thu Sep 8 02:12:53 CEST 2011


On date Wednesday 2011-09-07 20:18:19 +0200, Michael Niedermayer encoded:
> On Wed, Sep 07, 2011 at 05:35:16PM +0200, Stefano Sabatini wrote:
[...]
> > Not that easy for me. Proof-of-concept attached, the resulting formats
> > are:
> 
> your list is missing the front right center channel entirely
> it also looks quite odd
> anyway, the 6 line case i meant:
> 
> int array[]={
> #define A(x) (x), (x)|AV_CH_LOW_FREQUENCY
> #define B(x) A(x|AV_CH_FRONT_CENTER), A(x|AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT), A(x|AV_CH_FRONT_CENTER|AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)
> #define C(x) B(x), B(x|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT), B(x|AV_CH_BACK_CENTER)
> #define D(x) C(x), C(x|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
> D(0), D(AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT)};

Brilliant. Nonetheless the resulting 72 formats are:

mono
2 channels (FC|LFE)
stereo
3 channels (FL|FR|LFE)
3 channels (FL|FR|FC)
4 channels (FL|FR|FC|LFE)
3 channels (FC|BL|BR)
4 channels (FC|LFE|BL|BR)
quad
5 channels (FL|FR|LFE|BL|BR)
5.0
5.1
2 channels (FC|BC)
3 channels (FC|LFE|BC)
3 channels (FL|FR|BC)
4 channels (FL|FR|LFE|BC)
4.0
5 channels (FL|FR|FC|LFE|BC)
3 channels (FC|SL|SR)
4 channels (FC|LFE|SL|SR)
4 channels (FL|FR|SL|SR)
5 channels (FL|FR|LFE|SL|SR)
5.0(side)
5.1(side)
5 channels (FC|BL|BR|SL|SR)
6 channels (FC|LFE|BL|BR|SL|SR)
6 channels (FL|FR|BL|BR|SL|SR)
7 channels (FL|FR|LFE|BL|BR|SL|SR)
7 channels (FL|FR|FC|BL|BR|SL|SR)
7.1
4 channels (FC|BC|SL|SR)
5 channels (FC|LFE|BC|SL|SR)
5 channels (FL|FR|BC|SL|SR)
6 channels (FL|FR|LFE|BC|SL|SR)
6 channels (FL|FR|FC|BC|SL|SR)
7 channels (FL|FR|FC|LFE|BC|SL|SR)
3 channels (FC|DL|DR)
4 channels (FC|LFE|DL|DR)
4 channels (FL|FR|DL|DR)
5 channels (FL|FR|LFE|DL|DR)
5 channels (FL|FR|FC|DL|DR)
6 channels (FL|FR|FC|LFE|DL|DR)
5 channels (FC|BL|BR|DL|DR)
6 channels (FC|LFE|BL|BR|DL|DR)
6 channels (FL|FR|BL|BR|DL|DR)
7 channels (FL|FR|LFE|BL|BR|DL|DR)
7 channels (FL|FR|FC|BL|BR|DL|DR)
8 channels (FL|FR|FC|LFE|BL|BR|DL|DR)
4 channels (FC|BC|DL|DR)
5 channels (FC|LFE|BC|DL|DR)
5 channels (FL|FR|BC|DL|DR)
6 channels (FL|FR|LFE|BC|DL|DR)
6 channels (FL|FR|FC|BC|DL|DR)
7 channels (FL|FR|FC|LFE|BC|DL|DR)
5 channels (FC|SL|SR|DL|DR)
6 channels (FC|LFE|SL|SR|DL|DR)
6 channels (FL|FR|SL|SR|DL|DR)
7 channels (FL|FR|LFE|SL|SR|DL|DR)
7 channels (FL|FR|FC|SL|SR|DL|DR)
5.1+downmix
7 channels (FC|BL|BR|SL|SR|DL|DR)
8 channels (FC|LFE|BL|BR|SL|SR|DL|DR)
8 channels (FL|FR|BL|BR|SL|SR|DL|DR)
9 channels (FL|FR|LFE|BL|BR|SL|SR|DL|DR)
9 channels (FL|FR|FC|BL|BR|SL|SR|DL|DR)
7.1+downmix
6 channels (FC|BC|SL|SR|DL|DR)
7 channels (FC|LFE|BC|SL|SR|DL|DR)
7 channels (FL|FR|BC|SL|SR|DL|DR)
8 channels (FL|FR|LFE|BC|SL|SR|DL|DR)
8 channels (FL|FR|FC|BC|SL|SR|DL|DR)
9 channels (FL|FR|FC|LFE|BC|SL|SR|DL|DR)

with some 9-channels formats, which are not supported by libavfilter
(max 8 channels).

New patch attached as a variation of the previous one, I can
eventually remove the print_channel_layout_macro() and the map and
simplify the generate_all_chlayouts.c code (but maybe seeing symbolic
macros rather than numeric constant in the included table may be
useful for debugging/understandibility).
-- 
FFmpeg = Fiendish and Fanciful Maxi Prodigious Ecumenical Glue
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0004-lavfi-add-avfilter_all_channel_layouts_int64-public-.patch
Type: text/x-diff
Size: 6433 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20110908/d601ac92/attachment.bin>


More information about the ffmpeg-devel mailing list