You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	fate: add a channel_layout API test
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
		| @@ -221,6 +221,7 @@ TESTPROGS = adler32                                                     \ | ||||
|             bprint                                                      \ | ||||
|             cast5                                                       \ | ||||
|             camellia                                                    \ | ||||
|             channel_layout                                              \ | ||||
|             color_utils                                                 \ | ||||
|             cpu                                                         \ | ||||
|             crc                                                         \ | ||||
|   | ||||
							
								
								
									
										266
									
								
								libavutil/tests/channel_layout.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										266
									
								
								libavutil/tests/channel_layout.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,266 @@ | ||||
| /* | ||||
|  * Copyright (c) 2021 James Almer | ||||
|  * | ||||
|  * This file is part of FFmpeg. | ||||
|  * | ||||
|  * FFmpeg is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU Lesser General Public | ||||
|  * License as published by the Free Software Foundation; either | ||||
|  * version 2.1 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * FFmpeg is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  * Lesser General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Lesser General Public | ||||
|  * License along with FFmpeg; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
|  */ | ||||
|  | ||||
| #include "libavutil/channel_layout.c" | ||||
|  | ||||
| #define CHANNEL_NAME(x)                                                    \ | ||||
|     av_bprint_clear(&bp);                                                  \ | ||||
|     av_channel_name_bprint(&bp, x); | ||||
|  | ||||
| #define CHANNEL_DESCRIPTION(x)                                             \ | ||||
|     av_bprint_clear(&bp);                                                  \ | ||||
|     av_channel_description_bprint(&bp, x); | ||||
|  | ||||
| #define CHANNEL_LAYOUT_FROM_MASK(x)                                        \ | ||||
|     av_channel_layout_uninit(&layout);                                     \ | ||||
|     av_bprint_clear(&bp);                                                  \ | ||||
|     if (!av_channel_layout_from_mask(&layout, x))                          \ | ||||
|         av_channel_layout_describe_bprint(&layout, &bp);                   \ | ||||
|     else                                                                   \ | ||||
|         av_bprintf(&bp, "fail"); | ||||
|  | ||||
| #define CHANNEL_LAYOUT_FROM_STRING(x)                                      \ | ||||
|     av_channel_layout_uninit(&layout);                                     \ | ||||
|     av_bprint_clear(&bp);                                                  \ | ||||
|     if (!av_channel_layout_from_string(&layout, x))                        \ | ||||
|         av_channel_layout_describe_bprint(&layout, &bp);                   \ | ||||
|     else                                                                   \ | ||||
|         av_bprintf(&bp, "fail"); | ||||
|  | ||||
| #define CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(x)                               \ | ||||
|     ret = av_channel_layout_channel_from_index(&layout, x);                \ | ||||
|     if (ret < 0)                                                           \ | ||||
|         ret = -1 | ||||
|  | ||||
| #define CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(x)                               \ | ||||
|     ret = av_channel_layout_index_from_channel(&layout, x);                \ | ||||
|     if (ret < 0)                                                           \ | ||||
|         ret = -1 | ||||
|  | ||||
| #define CHANNEL_LAYOUT_CHANNEL_FROM_STRING(x)                              \ | ||||
|     ret = av_channel_layout_channel_from_string(&layout, x);               \ | ||||
|     if (ret < 0)                                                           \ | ||||
|         ret = -1 | ||||
|  | ||||
| #define CHANNEL_LAYOUT_INDEX_FROM_STRING(x)                                \ | ||||
|     ret = av_channel_layout_index_from_string(&layout, x);                 \ | ||||
|     if (ret < 0)                                                           \ | ||||
|         ret = -1 | ||||
|  | ||||
| int main(void) | ||||
| { | ||||
|     AVChannelLayout layout = { 0 }; | ||||
|     AVBPrint bp; | ||||
|     int ret; | ||||
|  | ||||
|     av_bprint_init(&bp, 64, AV_BPRINT_SIZE_AUTOMATIC); | ||||
|  | ||||
|     printf("Testing av_channel_name\n"); | ||||
|     CHANNEL_NAME(AV_CHAN_FRONT_LEFT); | ||||
|     printf("With AV_CHAN_FRONT_LEFT: %27s\n", bp.str); | ||||
|     CHANNEL_NAME(AV_CHAN_FRONT_RIGHT); | ||||
|     printf("With AV_CHAN_FRONT_RIGHT: %26s\n", bp.str); | ||||
|     CHANNEL_NAME(63); | ||||
|     printf("With 63: %43s\n", bp.str); | ||||
|  | ||||
|     printf("Testing av_channel_description\n"); | ||||
|     CHANNEL_DESCRIPTION(AV_CHAN_FRONT_LEFT); | ||||
|     printf("With AV_CHAN_FRONT_LEFT: %27s\n", bp.str); | ||||
|     CHANNEL_DESCRIPTION(AV_CHAN_FRONT_RIGHT); | ||||
|     printf("With AV_CHAN_FRONT_RIGHT: %26s\n", bp.str); | ||||
|     CHANNEL_DESCRIPTION(63); | ||||
|     printf("With 63: %43s\n", bp.str); | ||||
|  | ||||
|     printf("\nTesting av_channel_from_string\n"); | ||||
|     printf("With \"FL\": %41d\n", av_channel_from_string("FL")); | ||||
|     printf("With \"FR\": %41d\n", av_channel_from_string("FR")); | ||||
|     printf("With \"USR63\": %38d\n", av_channel_from_string("USR63")); | ||||
|  | ||||
|     printf("\n==Native layouts==\n"); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_from_string\n"); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("0x3f"); | ||||
|     printf("With \"0x3f\": %39s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("63"); | ||||
|     printf("With \"63\": %41s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("6c"); | ||||
|     printf("With \"6c\": %41s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("6C"); | ||||
|     printf("With \"6C\": %41s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("6 channels"); | ||||
|     printf("With \"6 channels\": %33s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("6 channels (FL+FR+FC+LFE+BL+BR)"); | ||||
|     printf("With \"6 channels (FL+FR+FC+LFE+BL+BR)\": %12s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("FL+FR+FC+LFE+BL+BR"); | ||||
|     printf("With \"FL+FR+FC+LFE+BL+BR\": %25s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("5.1"); | ||||
|     printf("With \"5.1\": %40s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("FL+FR+USR63"); | ||||
|     printf("With \"FL+FR+USR63\": %32s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("FL+FR+FC+LFE+SL+SR"); | ||||
|     printf("With \"FL+FR+FC+LFE+SL+SR\": %25s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("5.1(side)"); | ||||
|     printf("With \"5.1(side)\": %34s\n", bp.str); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_from_mask\n"); | ||||
|     CHANNEL_LAYOUT_FROM_MASK(AV_CH_LAYOUT_5POINT1); | ||||
|     printf("With AV_CH_LAYOUT_5POINT1: %25s\n", bp.str); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_channel_from_index\n"); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(0); | ||||
|     printf("On 5.1(side) layout with 0: %24d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(1); | ||||
|     printf("On 5.1(side) layout with 1: %24d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(2); | ||||
|     printf("On 5.1(side) layout with 2: %24d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(3); | ||||
|     printf("On 5.1(side) layout with 3: %24d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(4); | ||||
|     printf("On 5.1(side) layout with 4: %24d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(5); | ||||
|     printf("On 5.1(side) layout with 5: %24d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(6); | ||||
|     printf("On 5.1(side) layout with 6: %24d\n", ret); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_index_from_channel\n"); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_FRONT_LEFT); | ||||
|     printf("On 5.1(side) layout with AV_CHAN_FRONT_LEFT: %7d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_FRONT_RIGHT); | ||||
|     printf("On 5.1(side) layout with AV_CHAN_FRONT_RIGHT: %6d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_FRONT_CENTER); | ||||
|     printf("On 5.1(side) layout with AV_CHAN_FRONT_CENTER: %5d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_LOW_FREQUENCY); | ||||
|     printf("On 5.1(side) layout with AV_CHAN_LOW_FREQUENCY: %4d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_SIDE_LEFT); | ||||
|     printf("On 5.1(side) layout with AV_CHAN_SIDE_LEFT: %8d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_SIDE_RIGHT); | ||||
|     printf("On 5.1(side) layout with AV_CHAN_SIDE_RIGHT: %7d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_BACK_CENTER); | ||||
|     printf("On 5.1(side) layout with AV_CHAN_BACK_CENTER: %6d\n", ret); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_channel_from_string\n"); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("FL"); | ||||
|     printf("On 5.1(side) layout with \"FL\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("FR"); | ||||
|     printf("On 5.1(side) layout with \"FR\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("FC"); | ||||
|     printf("On 5.1(side) layout with \"FC\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("LFE"); | ||||
|     printf("On 5.1(side) layout with \"LFE\": %20d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("SL"); | ||||
|     printf("On 5.1(side) layout with \"SL\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("SR"); | ||||
|     printf("On 5.1(side) layout with \"SR\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("BC"); | ||||
|     printf("On 5.1(side) layout with \"BC\": %21d\n", ret); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_index_from_string\n"); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("FL"); | ||||
|     printf("On 5.1(side) layout with \"FL\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("FR"); | ||||
|     printf("On 5.1(side) layout with \"FR\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("FC"); | ||||
|     printf("On 5.1(side) layout with \"FC\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("LFE"); | ||||
|     printf("On 5.1(side) layout with \"LFE\": %20d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("SL"); | ||||
|     printf("On 5.1(side) layout with \"SL\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("SR"); | ||||
|     printf("On 5.1(side) layout with \"SR\": %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("BC"); | ||||
|     printf("On 5.1(side) layout with \"BC\": %21d\n", ret); | ||||
|  | ||||
|     printf("\n==Custom layouts==\n"); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_from_string\n"); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("FL+FR+FC+BL+BR+LFE"); | ||||
|     printf("With \"FL+FR+FC+BL+BR+LFE\": %34s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("2 channels (FR+FL)"); | ||||
|     printf("With \"2 channels (FR+FL)\": %34s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("FL@Foo+FR@Bar"); | ||||
|     printf("With \"FL@Foo+FR@Bar\": %39s\n", bp.str); | ||||
|     CHANNEL_LAYOUT_FROM_STRING("FR+FL@Foo+USR63@Foo"); | ||||
|     printf("With \"FR+FL@Foo+USR63@Foo\": %33s\n", bp.str); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_index_from_string\n"); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("FR"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"FR\": %18d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("FL"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"FL\": %18d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("USR63"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"USR63\": %15d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"Foo\": %17d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("@Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"@Foo\": %16d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("FR@Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"FR@Foo\": %14d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("FL@Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"FL@Foo\": %14d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("USR63@Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"USR63@Foo\": %11d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_STRING("BC"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"BC\": %18d\n", ret); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_channel_from_string\n"); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("FR"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"FR\": %18d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("FL"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"FL\": %18d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("USR63"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"USR63\": %15d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"Foo\": %17d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("@Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"@Foo\": %16d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("FR@Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"FR@Foo\": %14d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("FL@Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"FL@Foo\": %14d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("USR63@Foo"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"USR63@Foo\": %11d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_STRING("BC"); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with \"BC\": %18d\n", ret); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_index_from_channel\n"); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_FRONT_RIGHT); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with AV_CHAN_FRONT_RIGHT: %3d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_FRONT_LEFT); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with AV_CHAN_FRONT_LEFT: %4d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(63); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with 63: %20d\n", ret); | ||||
|     CHANNEL_LAYOUT_INDEX_FROM_CHANNEL(AV_CHAN_BACK_CENTER); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with AV_CHAN_BACK_CENTER: %3d\n", ret); | ||||
|  | ||||
|     printf("\nTesting av_channel_layout_channel_from_index\n"); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(0); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with 0: %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(1); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with 1: %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(2); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with 2: %21d\n", ret); | ||||
|     CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(3); | ||||
|     printf("On \"FR+FL@Foo+USR63@Foo\" layout with 3: %21d\n", ret); | ||||
|  | ||||
|     av_channel_layout_uninit(&layout); | ||||
|     av_bprint_finalize(&bp, NULL); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
| @@ -23,6 +23,10 @@ fate-cast5: libavutil/tests/cast5$(EXESUF) | ||||
| fate-cast5: CMD = run libavutil/tests/cast5$(EXESUF) | ||||
| fate-cast5: CMP = null | ||||
|  | ||||
| FATE_LIBAVUTIL += fate-channel_layout | ||||
| fate-channel_layout: libavutil/tests/channel_layout$(EXESUF) | ||||
| fate-channel_layout: CMD = run libavutil/tests/channel_layout$(EXESUF) | ||||
|  | ||||
| FATE_LIBAVUTIL += fate-audio_fifo | ||||
| fate-audio_fifo: libavutil/tests/audio_fifo$(EXESUF) | ||||
| fate-audio_fifo: CMD = run libavutil/tests/audio_fifo$(EXESUF) | ||||
|   | ||||
							
								
								
									
										109
									
								
								tests/ref/fate/channel_layout
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								tests/ref/fate/channel_layout
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | ||||
| Testing av_channel_name | ||||
| With AV_CHAN_FRONT_LEFT:                          FL | ||||
| With AV_CHAN_FRONT_RIGHT:                         FR | ||||
| With 63:                                       USR63 | ||||
| Testing av_channel_description | ||||
| With AV_CHAN_FRONT_LEFT:                  front left | ||||
| With AV_CHAN_FRONT_RIGHT:                front right | ||||
| With 63:                                     user 63 | ||||
|  | ||||
| Testing av_channel_from_string | ||||
| With "FL":                                         0 | ||||
| With "FR":                                         1 | ||||
| With "USR63":                                     63 | ||||
|  | ||||
| ==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 | ||||
|  | ||||
| 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 | ||||
|  | ||||
| ==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 "FL@Foo+FR@Bar":              2 channels (FL@Foo+FR@Bar) | ||||
| With "FR+FL@Foo+USR63@Foo":  3 channels (FR+FL@Foo+USR63@Foo) | ||||
|  | ||||
| Testing av_channel_layout_index_from_string | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "FR":                  0 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "FL":                  1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "USR63":               2 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "Foo":                -1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "@Foo":                1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "FR@Foo":             -1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "FL@Foo":              1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "USR63@Foo":           2 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "BC":                 -1 | ||||
|  | ||||
| Testing av_channel_layout_channel_from_string | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "FR":                  1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "FL":                  0 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "USR63":              63 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "Foo":                -1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "@Foo":                0 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "FR@Foo":             -1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "FL@Foo":              0 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "USR63@Foo":          63 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with "BC":                 -1 | ||||
|  | ||||
| Testing av_channel_layout_index_from_channel | ||||
| On "FR+FL@Foo+USR63@Foo" layout with AV_CHAN_FRONT_RIGHT:   0 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with AV_CHAN_FRONT_LEFT:    1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with 63:                    2 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with AV_CHAN_BACK_CENTER:  -1 | ||||
|  | ||||
| Testing av_channel_layout_channel_from_index | ||||
| On "FR+FL@Foo+USR63@Foo" layout with 0:                     1 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with 1:                     0 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with 2:                    63 | ||||
| On "FR+FL@Foo+USR63@Foo" layout with 3:                    -1 | ||||
		Reference in New Issue
	
	Block a user