Testing av_channel_layout_standard
mono           FC
stereo         FL+FR
2.1            FL+FR+LFE
3.0            FL+FR+FC
3.0(back)      FL+FR+BC
4.0            FL+FR+FC+BC
quad           FL+FR+BL+BR
quad(side)     FL+FR+SL+SR
3.1            FL+FR+FC+LFE
5.0            FL+FR+FC+BL+BR
5.0(side)      FL+FR+FC+SL+SR
4.1            FL+FR+FC+LFE+BC
5.1            FL+FR+FC+LFE+BL+BR
5.1(side)      FL+FR+FC+LFE+SL+SR
6.0            FL+FR+FC+BC+SL+SR
6.0(front)     FL+FR+FLC+FRC+SL+SR
3.1.2          FL+FR+FC+LFE+TFL+TFR
hexagonal      FL+FR+FC+BL+BR+BC
6.1            FL+FR+FC+LFE+BC+SL+SR
6.1(back)      FL+FR+FC+LFE+BL+BR+BC
6.1(front)     FL+FR+LFE+FLC+FRC+SL+SR
7.0            FL+FR+FC+BL+BR+SL+SR
7.0(front)     FL+FR+FC+FLC+FRC+SL+SR
7.1            FL+FR+FC+LFE+BL+BR+SL+SR
7.1(wide)      FL+FR+FC+LFE+BL+BR+FLC+FRC
7.1(wide-side) FL+FR+FC+LFE+FLC+FRC+SL+SR
5.1.2          FL+FR+FC+LFE+BL+BR+TFL+TFR
octagonal      FL+FR+FC+BL+BR+BC+SL+SR
cube           FL+FR+BL+BR+TFL+TFR+TBL+TBR
5.1.4          FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR
7.1.2          FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR
7.1.4          FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR
7.2.3          FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBC+LFE2
9.1.4          FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR
hexadecagonal  FL+FR+FC+BL+BR+BC+SL+SR+TFL+TFC+TFR+TBL+TBC+TBR+WL+WR
downmix        DL+DR
22.2           FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR

Testing av_channel_name
With AV_CHAN_FRONT_LEFT:                          FL
With AV_CHAN_FRONT_RIGHT:                         FR
With 63:                                       USR63
With AV_CHAN_AMBISONIC_BASE:                   AMBI0
With AV_CHAN_AMBISONIC_END:                 AMBI1023
Testing av_channel_description
With AV_CHAN_FRONT_LEFT:                  front left
With AV_CHAN_FRONT_RIGHT:                front right
With 63:                                     user 63
With AV_CHAN_AMBISONIC_BASE:         ambisonic ACN 0
With AV_CHAN_AMBISONIC_END:       ambisonic ACN 1023

Testing av_channel_from_string
With "FL":                                         0
With "FR":                                         1
With "USR63":                                     63
With "AMBI0":                                   1024
With "AMBI1023":                                2047
With "AMBI1024":                                  -1
With "Dummy":                                     -1
With "FL@Foo":                                    -1
With "Foo@FL":                                    -1
With "@FL":                                       -1

==Native layouts==

Testing av_channel_layout_from_string
With "0x3f":                                                          5.1
With "63":                                                            5.1
With "6c":                                                            5.1
With "6C":                                                     6 channels
With "6 channels":                                             6 channels
With "6 channels (FL+FR+FC+LFE+BL+BR)":                               5.1
With "FL+FR+FC+LFE+BL+BR":                                            5.1
With "5.1":                                                           5.1
With "FL+FR+USR63":                              3 channels (FL+FR+USR63)
With "FL+FR+FC+LFE+SL+SR":                                      5.1(side)
With "5.1(side)":                                               5.1(side)

Testing av_channel_layout_from_mask
With AV_CH_LAYOUT_5POINT1:                 5.1(side)

Testing av_channel_layout_channel_from_index
On "5.1(side)" layout with  0:        0
On "5.1(side)" layout with  1:        1
On "5.1(side)" layout with  2:        2
On "5.1(side)" layout with  3:        3
On "5.1(side)" layout with  4:        9
On "5.1(side)" layout with  5:       10
On "5.1(side)" layout with  6:       -1

Testing av_channel_layout_index_from_channel
On "5.1(side)" layout with AV_CHAN_FRONT_LEFT:       0
On "5.1(side)" layout with AV_CHAN_FRONT_RIGHT:      1
On "5.1(side)" layout with AV_CHAN_FRONT_CENTER:     2
On "5.1(side)" layout with AV_CHAN_LOW_FREQUENCY:    3
On "5.1(side)" layout with AV_CHAN_SIDE_LEFT:        4
On "5.1(side)" layout with AV_CHAN_SIDE_RIGHT:       5
On "5.1(side)" layout with AV_CHAN_BACK_CENTER:     -1

Testing av_channel_layout_channel_from_string
On "5.1(side)" layout with "FL":                   0
On "5.1(side)" layout with "FR":                   1
On "5.1(side)" layout with "FC":                   2
On "5.1(side)" layout with "LFE":                  3
On "5.1(side)" layout with "SL":                   9
On "5.1(side)" layout with "SR":                  10
On "5.1(side)" layout with "BC":                  -1
On "5.1(side)" layout with "@":                   -1
On "5.1(side)" layout with "@Foo":                -1
On "5.1(side)" layout with "FL@Foo":              -1

Testing av_channel_layout_index_from_string
On "5.1(side)" layout with "FL":                  0
On "5.1(side)" layout with "FR":                  1
On "5.1(side)" layout with "FC":                  2
On "5.1(side)" layout with "LFE":                 3
On "5.1(side)" layout with "SL":                  4
On "5.1(side)" layout with "SR":                  5
On "5.1(side)" layout with "BC":                 -1

Testing av_channel_layout_subset
On "5.1(side)" layout with AV_CH_LAYOUT_STEREO:   0x3
On "5.1(side)" layout with AV_CH_LAYOUT_2POINT1:  0xb
On "5.1(side)" layout with AV_CH_LAYOUT_4POINT1:  0xf

==Custom layouts==

Testing av_channel_layout_from_string
With "FL+FR+FC+BL+BR+LFE":                6 channels (FL+FR+FC+BL+BR+LFE)
With "2 channels (FR+FL)":                             2 channels (FR+FL)
With "2 channels (AMBI1023+FL)":                 2 channels (AMBI1023+FL)
With "3 channels (FR+FL)":                                           fail
With "-3 channels (FR+FL)":                                          fail
With "0 channels ()":                                                fail
With "2 channels (FL+FR":                                            fail
With "ambisonic 1+FR+FL":                  ambisonic 1+2 channels (FR+FL)
With "ambisonic 2+FC@Foo":                ambisonic 2+1 channels (FC@Foo)
With "FL@Foo+FR@Bar":                          2 channels (FL@Foo+FR@Bar)
With "FL+stereo":                                                    fail
With "stereo+stereo":                                                fail
With "stereo@Boo":                                                   fail
With "":                                                             fail
With "@":                                                            fail
With "@Dummy":                                                       fail
With "@FL":                                                          fail
With "Dummy":                                                        fail
With "Dummy@FL":                                                     fail
With "FR+Dummy":                                                     fail
With "FR+Dummy@FL":                                                  fail
With "UNK+UNSD":                                    2 channels (UNK+UNSD)
With "NONE":                                                         fail
With "FR+@FL":                                                       fail
With "FL+@":                                                         fail
With "FR+FL@Foo+USR63@Foo":              3 channels (FR+FL@Foo+USR63@Foo)

Testing av_channel_layout_index_from_string
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "FR":                  0
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "FL":                  1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "USR63":               2
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "Foo":                -1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "@Foo":                1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "FR@Foo":             -1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "FL@Foo":              1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "USR63@Foo":           2
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "BC":                 -1

Testing av_channel_layout_channel_from_string
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "FR":                   1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "FL":                   0
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "USR63":               63
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "Foo":                 -1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "@Foo":                 0
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "FR@Foo":              -1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "FL@Foo":               0
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "USR63@Foo":           63
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with "BC":                  -1

Testing av_channel_layout_index_from_channel
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with AV_CHAN_FRONT_RIGHT:      0
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with AV_CHAN_FRONT_LEFT:       1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with 63:                       2
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with AV_CHAN_BACK_CENTER:     -1

Testing av_channel_layout_channel_from_index
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with  0:        1
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with  1:        0
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with  2:       63
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with  3:       -1

Testing av_channel_layout_subset
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with AV_CH_LAYOUT_STEREO:   0x3
On "3 channels (FR+FL@Foo+USR63@Foo)" layout with AV_CH_LAYOUT_QUAD:     0x3

==Ambisonic layouts==

Testing av_channel_layout_from_string
With "ambisonic 1":                                           ambisonic 1
With "ambisonic 2+stereo":                             ambisonic 2+stereo

Testing av_channel_layout_index_from_channel
On "ambisonic 2+stereo" layout with AV_CHAN_AMBISONIC_BASE:   0
On "ambisonic 2+stereo" layout with AV_CHAN_FRONT_LEFT:       9
On "ambisonic 2+stereo" layout with AV_CHAN_FRONT_RIGHT:     10
On "ambisonic 2+stereo" layout with AV_CHAN_BACK_CENTER:     -1

Testing av_channel_layout_channel_from_index
On "ambisonic 2+stereo" layout with  0:     1024
On "ambisonic 2+stereo" layout with  9:        0
On "ambisonic 2+stereo" layout with 10:        1
On "ambisonic 2+stereo" layout with 11:       -1

Testing av_channel_layout_subset
On "ambisonic 2+stereo" layout with AV_CH_LAYOUT_STEREO:   0x3
On "ambisonic 2+stereo" layout with AV_CH_LAYOUT_QUAD:     0x3

Testing av_channel_layout_retype
With "FL@Boo": CUSTOM (1 channels (FL@Boo))
  ~~ UNSPEC (1 channels)
  ~~ NATIVE (1 channels (FL))
  == CUSTOM (1 channels (FL@Boo))
  != AMBI
With "stereo": NATIVE (stereo)
  ~~ UNSPEC (2 channels)
  == NATIVE (stereo)
  == CUSTOM (stereo)
  != AMBI
With "FR+FL": CUSTOM (2 channels (FR+FL))
  ~~ UNSPEC (2 channels)
  != NATIVE
  == CUSTOM (2 channels (FR+FL))
  != AMBI
With "ambisonic 2+stereo": AMBI   (ambisonic 2+stereo)
  ~~ UNSPEC (11 channels)
  != NATIVE
  == CUSTOM (ambisonic 2+stereo)
  == AMBI   (ambisonic 2+stereo)
With "2C": UNSPEC (2 channels)
  == UNSPEC (2 channels)
  != NATIVE
  == CUSTOM (2 channels (UNK+UNK))
  != AMBI