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