You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	cmdutils: add -layouts option.
Extract of the output: | Individual channels: | NAME DESCRIPTION | FL front left | FR front right | <snip> | SDR surround direct right | | Standard channel layouts: | NAME DECOMPOSITION | mono FC | stereo FL+FR | <snip> | octagonal FL+FR+FC+BL+BR+BC+SL+SR | downmix DL+DR
This commit is contained in:
		
							
								
								
									
										29
									
								
								cmdutils.c
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								cmdutils.c
									
									
									
									
									
								
							| @@ -1087,6 +1087,35 @@ int show_pix_fmts(const char *opt, const char *arg) | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| int show_layouts(const char *opt, const char *arg) | ||||
| { | ||||
|     int i = 0; | ||||
|     uint64_t layout, j; | ||||
|     const char *name, *descr; | ||||
|  | ||||
|     printf("Individual channels:\n" | ||||
|            "NAME        DESCRIPTION\n"); | ||||
|     for (i = 0; i < 63; i++) { | ||||
|         name = av_get_channel_name((uint64_t)1 << i); | ||||
|         if (!name) | ||||
|             continue; | ||||
|         descr = av_get_channel_description((uint64_t)1 << i); | ||||
|         printf("%-12s%s\n", name, descr); | ||||
|     } | ||||
|     printf("\nStandard channel layouts:\n" | ||||
|            "NAME        DECOMPOSITION\n"); | ||||
|     for (i = 0; !av_get_standard_channel_layout(i, &layout, &name); i++) { | ||||
|         if (name) { | ||||
|             printf("%-12s", name); | ||||
|             for (j = 1; j; j <<= 1) | ||||
|                 if ((layout & j)) | ||||
|                     printf("%s%s", (layout & (j - 1)) ? "+" : "", av_get_channel_name(j)); | ||||
|             printf("\n"); | ||||
|         } | ||||
|     } | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| int show_sample_fmts(const char *opt, const char *arg) | ||||
| { | ||||
|     int i; | ||||
|   | ||||
| @@ -359,6 +359,13 @@ int show_protocols(const char *opt, const char *arg); | ||||
|  */ | ||||
| int show_pix_fmts(const char *opt, const char *arg); | ||||
|  | ||||
| /** | ||||
|  * Print a listing containing all the standard channel layouts supported by | ||||
|  * the program. | ||||
|  * This option processing function does not utilize the arguments. | ||||
|  */ | ||||
| int show_layouts(const char *opt, const char *arg); | ||||
|  | ||||
| /** | ||||
|  * Print a listing containing all the sample formats supported by the | ||||
|  * program. | ||||
|   | ||||
| @@ -12,6 +12,7 @@ | ||||
|     { "protocols"  , OPT_EXIT, {.func_arg = show_protocols},    "show available protocols" }, | ||||
|     { "filters"    , OPT_EXIT, {.func_arg = show_filters  },    "show available filters" }, | ||||
|     { "pix_fmts"   , OPT_EXIT, {.func_arg = show_pix_fmts },    "show available pixel formats" }, | ||||
|     { "layouts"    , OPT_EXIT, {.func_arg = show_layouts  },    "show standard channel layouts" }, | ||||
|     { "sample_fmts", OPT_EXIT, {.func_arg = show_sample_fmts }, "show available audio sample formats" }, | ||||
|     { "loglevel"   , HAS_ARG,  {.func_arg = opt_loglevel},      "set libav* logging level", "loglevel" }, | ||||
|     { "v",           HAS_ARG,  {.func_arg = opt_loglevel},      "set libav* logging level", "loglevel" }, | ||||
|   | ||||
| @@ -119,6 +119,9 @@ Show available pixel formats. | ||||
| @item -sample_fmts | ||||
| Show available sample formats. | ||||
|  | ||||
| @item -layouts | ||||
| Show channel names and standard channel layouts. | ||||
|  | ||||
| @item -loglevel @var{loglevel} | -v @var{loglevel} | ||||
| Set the logging level used by the library. | ||||
| @var{loglevel} is a number or a string containing one of the following values: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user