Unified · Split
| @@ -1791,6 +1791,8 @@ static int opt_filter_complex(const char *opt, const char *arg) · 1790 unmodified lines | ||
| 1791 | 1791 | |
| 1792 | 1792 | void show_help_default(const char *opt, const char *arg) |
| 1793 | 1793 | { |
| 1794 | + /* per-file options have at least one of those set */ | |
| 1795 | + const int per_file = OPT_SPEC | OPT_OFFSET | OPT_FUNC2; | |
| 1794 | 1796 | int show_advanced = 0, show_avoptions = 0; |
| 1795 | 1797 | |
| 1796 | 1798 | if (opt) { |
| @@ -1812,27 +1814,35 @@ void show_help_default(const char *opt, const char *arg) · 15 unmodified lines | ||
| 1812 | 1814 | "\n", program_name); |
| 1813 | 1815 | |
| 1814 | 1816 | show_help_options(options, "Print help / information / capabilities:", |
| 1815 | − OPT_EXIT, 0); | |
| 1816 | − show_help_options(options, "Main options:", | |
| 1817 | − 0, OPT_EXPERT | OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE | | |
| 1818 | − OPT_EXIT); | |
| 1817 | + OPT_EXIT, 0, 0); | |
| 1818 | + | |
| 1819 | + show_help_options(options, "Global options (affect whole program " | |
| 1820 | + "instead of just one file:", | |
| 1821 | + 0, per_file | OPT_EXIT | OPT_EXPERT, 0); | |
| 1822 | + if (show_advanced) | |
| 1823 | + show_help_options(options, "Advanced global options:", OPT_EXPERT, | |
| 1824 | + per_file | OPT_EXIT, 0); | |
| 1825 | + | |
| 1826 | + show_help_options(options, "Per-file main options:", 0, | |
| 1827 | + OPT_EXPERT | OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE | | |
| 1828 | + OPT_EXIT, per_file); | |
| 1819 | 1829 | if (show_advanced) |
| 1820 | − show_help_options(options, "Advanced options:", | |
| 1821 | − OPT_EXPERT, OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE); | |
| 1830 | + show_help_options(options, "Advanced per-file options:", | |
| 1831 | + OPT_EXPERT, OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE, per_file); | |
| 1822 | 1832 | |
| 1823 | 1833 | show_help_options(options, "Video options:", |
| 1824 | − OPT_VIDEO, OPT_EXPERT | OPT_AUDIO); | |
| 1834 | + OPT_VIDEO, OPT_EXPERT | OPT_AUDIO, 0); | |
| 1825 | 1835 | if (show_advanced) |
| 1826 | 1836 | show_help_options(options, "Advanced Video options:", |
| 1827 | − OPT_EXPERT | OPT_VIDEO, OPT_AUDIO); | |
| 1837 | + OPT_EXPERT | OPT_VIDEO, OPT_AUDIO, 0); | |
| 1828 | 1838 | |
| 1829 | 1839 | show_help_options(options, "Audio options:", |
| 1830 | − OPT_AUDIO, OPT_EXPERT | OPT_VIDEO); | |
| 1840 | + OPT_AUDIO, OPT_EXPERT | OPT_VIDEO, 0); | |
| 1831 | 1841 | if (show_advanced) |
| 1832 | 1842 | show_help_options(options, "Advanced Audio options:", |
| 1833 | − OPT_EXPERT | OPT_AUDIO, OPT_VIDEO); | |
| 1843 | + OPT_EXPERT | OPT_AUDIO, OPT_VIDEO, 0); | |
| 1834 | 1844 | show_help_options(options, "Subtitle options:", |
| 1835 | − OPT_SUBTITLE, 0); | |
| 1845 | + OPT_SUBTITLE, 0, 0); | |
| 1836 | 1846 | printf("\n"); |
| 1837 | 1847 | |
| 1838 | 1848 | if (show_avoptions) { |
| @@ -2924,8 +2924,8 @@ void show_help_default(const char *opt, const char *arg) · 2923 unmodified lines | ||
| 2924 | 2924 | { |
| 2925 | 2925 | av_log_set_callback(log_callback_help); |
| 2926 | 2926 | show_usage(); |
| 2927 | − show_help_options(options, "Main options:", 0, OPT_EXPERT); | |
| 2928 | − show_help_options(options, "Advanced options:", OPT_EXPERT, 0); | |
| 2927 | + show_help_options(options, "Main options:", 0, OPT_EXPERT, 0); | |
| 2928 | + show_help_options(options, "Advanced options:", OPT_EXPERT, 0, 0); | |
| 2929 | 2929 | printf("\n"); |
| 2930 | 2930 | show_help_children(avcodec_get_class(), AV_OPT_FLAG_DECODING_PARAM); |
| 2931 | 2931 | show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); |
| @@ -872,7 +872,7 @@ void show_help_default(const char *opt, const char *arg) · 871 unmodified lines | ||
| 872 | 872 | { |
| 873 | 873 | av_log_set_callback(log_callback_help); |
| 874 | 874 | show_usage(); |
| 875 | − show_help_options(options, "Main options:", 0, 0); | |
| 875 | + show_help_options(options, "Main options:", 0, 0, 0); | |
| 876 | 876 | printf("\n"); |
| 877 | 877 | show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM); |
| 878 | 878 | } |
| @@ -4634,7 +4634,7 @@ void show_help_default(const char *opt, const char *arg) · 4633 unmodified lines | ||
| 4634 | 4634 | printf("usage: avserver [options]\n" |
| 4635 | 4635 | "Hyper fast multi format Audio/Video streaming server\n"); |
| 4636 | 4636 | printf("\n"); |
| 4637 | − show_help_options(options, "Main options:", 0, 0); | |
| 4637 | + show_help_options(options, "Main options:", 0, 0, 0); | |
| 4638 | 4638 | } |
| 4639 | 4639 | |
| 4640 | 4640 | static const OptionDef options[] = { |
| @@ -114,7 +114,7 @@ int64_t parse_time_or_die(const char *context, const char *timestr, · 113 unmodified lines | ||
| 114 | 114 | } |
| 115 | 115 | |
| 116 | 116 | void show_help_options(const OptionDef *options, const char *msg, int req_flags, |
| 117 | − int rej_flags) | |
| 117 | + int rej_flags, int alt_flags) | |
| 118 | 118 | { |
| 119 | 119 | const OptionDef *po; |
| 120 | 120 | int first; |
| @@ -124,6 +124,7 @@ void show_help_options(const OptionDef *options, const char *msg, int req_flags, · 3 unmodified lines | ||
| 124 | 124 | char buf[64]; |
| 125 | 125 | |
| 126 | 126 | if (((po->flags & req_flags) != req_flags) || |
| 127 | + (alt_flags && !(po->flags & alt_flags)) || | |
| 127 | 128 | (po->flags & rej_flags)) |
| 128 | 129 | continue; |
| 129 | 130 | |
| @@ -160,9 +160,10 @@ typedef struct { · 159 unmodified lines | ||
| 160 | 160 | * @param msg title of this group. Only printed if at least one option matches. |
| 161 | 161 | * @param req_flags print only options which have all those flags set. |
| 162 | 162 | * @param rej_flags don't print options which have any of those flags set. |
| 163 | + * @param alt_flags print only options that have at least one of those flags set | |
| 163 | 164 | */ |
| 164 | 165 | void show_help_options(const OptionDef *options, const char *msg, int req_flags, |
| 165 | − int rej_flags); | |
| 166 | + int rej_flags, int alt_flags); | |
| 166 | 167 | |
| 167 | 168 | /** |
| 168 | 169 | * Show help for all options with given flags in class and all its |