diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2011-02-11 19:52:44 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2011-02-22 15:16:41 +0200 |
commit | f7643ddde624451b01f2cab688b733326b7b8ca5 (patch) | |
tree | 3ae4f888acc1431bc76caebdd3780dacefee9454 /libmpdemux | |
parent | 5177b24b25931b83adea9de6f9c578654640346c (diff) | |
download | mpv-f7643ddde624451b01f2cab688b733326b7b8ca5.tar.bz2 mpv-f7643ddde624451b01f2cab688b733326b7b8ca5.tar.xz |
options: drop support for numeric -demuxer values
Drop support for specifying demuxer types by numeric ID (options
-demuxer, -audio-demuxer and -sub-demuxer). Stop printing the numeric
values in "-demuxer help" output. Convert the list of DEMUXER_TYPE_XXX
defines to "enum demuxer_type".
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/demuxer.c | 31 | ||||
-rw-r--r-- | libmpdemux/demuxer.h | 114 |
2 files changed, 67 insertions, 78 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 2383deb73d..bbcce939be 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -881,19 +881,18 @@ void demuxer_help(void) int i; mp_msg(MSGT_DEMUXER, MSGL_INFO, "Available demuxers:\n"); - mp_msg(MSGT_DEMUXER, MSGL_INFO, " demuxer: type info: (comment)\n"); + mp_msg(MSGT_DEMUXER, MSGL_INFO, " demuxer: info: (comment)\n"); mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_DEMUXERS\n"); for (i = 0; demuxer_list[i]; i++) { - if (demuxer_list[i]->type > DEMUXER_TYPE_MAX) // Don't display special demuxers + if (demuxer_list[i]->type >= DEMUXER_TYPE_END) // internal type continue; if (demuxer_list[i]->comment && strlen(demuxer_list[i]->comment)) - mp_msg(MSGT_DEMUXER, MSGL_INFO, "%10s %2d %s (%s)\n", - demuxer_list[i]->name, demuxer_list[i]->type, - demuxer_list[i]->info, demuxer_list[i]->comment); + mp_msg(MSGT_DEMUXER, MSGL_INFO, "%10s %s (%s)\n", + demuxer_list[i]->name, demuxer_list[i]->info, + demuxer_list[i]->comment); else - mp_msg(MSGT_DEMUXER, MSGL_INFO, "%10s %2d %s\n", - demuxer_list[i]->name, demuxer_list[i]->type, - demuxer_list[i]->info); + mp_msg(MSGT_DEMUXER, MSGL_INFO, "%10s %s\n", + demuxer_list[i]->name, demuxer_list[i]->info); } } @@ -908,30 +907,20 @@ void demuxer_help(void) */ static int get_demuxer_type_from_name(char *demuxer_name, int *force) { - int i; - long type_int; - char *endptr; - if (!demuxer_name || !demuxer_name[0]) return DEMUXER_TYPE_UNKNOWN; if (force) *force = demuxer_name[0] == '+'; if (demuxer_name[0] == '+') demuxer_name = &demuxer_name[1]; - for (i = 0; demuxer_list[i]; i++) { - if (demuxer_list[i]->type > DEMUXER_TYPE_MAX) // Can't select special demuxers from commandline + for (int i = 0; demuxer_list[i]; i++) { + if (demuxer_list[i]->type >= DEMUXER_TYPE_END) + // Can't select special demuxers from commandline continue; if (strcmp(demuxer_name, demuxer_list[i]->name) == 0) return demuxer_list[i]->type; } - // No match found, try to parse name as an integer (demuxer number) - type_int = strtol(demuxer_name, &endptr, 0); - if (*endptr) // Conversion failed - return -1; - if ((type_int > 0) && (type_int <= DEMUXER_TYPE_MAX)) - return (int) type_int; - return -1; } diff --git a/libmpdemux/demuxer.h b/libmpdemux/demuxer.h index 86523c3df0..a4f62ec822 100644 --- a/libmpdemux/demuxer.h +++ b/libmpdemux/demuxer.h @@ -42,60 +42,60 @@ struct MPOpts; #define MAX_PACKS 4096 #define MAX_PACK_BYTES 0x8000000 // 128 MiB -#define DEMUXER_TYPE_UNKNOWN 0 -#define DEMUXER_TYPE_MPEG_ES 1 -#define DEMUXER_TYPE_MPEG_PS 2 -#define DEMUXER_TYPE_AVI 3 -#define DEMUXER_TYPE_AVI_NI 4 -#define DEMUXER_TYPE_AVI_NINI 5 -#define DEMUXER_TYPE_ASF 6 -#define DEMUXER_TYPE_MOV 7 -#define DEMUXER_TYPE_VIVO 8 -#define DEMUXER_TYPE_TV 9 -#define DEMUXER_TYPE_FLI 10 -#define DEMUXER_TYPE_REAL 11 -#define DEMUXER_TYPE_Y4M 12 -#define DEMUXER_TYPE_FILM 14 -#define DEMUXER_TYPE_ROQ 15 -#define DEMUXER_TYPE_MF 16 -#define DEMUXER_TYPE_AUDIO 17 -#define DEMUXER_TYPE_OGG 18 -#define DEMUXER_TYPE_RAWAUDIO 20 -#define DEMUXER_TYPE_RTP 21 -#define DEMUXER_TYPE_RAWDV 22 -#define DEMUXER_TYPE_PVA 23 -#define DEMUXER_TYPE_SMJPEG 24 -#define DEMUXER_TYPE_XMMS 25 -#define DEMUXER_TYPE_RAWVIDEO 26 -#define DEMUXER_TYPE_MPEG4_ES 27 -#define DEMUXER_TYPE_GIF 28 -#define DEMUXER_TYPE_MPEG_TS 29 -#define DEMUXER_TYPE_H264_ES 30 -#define DEMUXER_TYPE_MATROSKA 31 -#define DEMUXER_TYPE_REALAUDIO 32 -#define DEMUXER_TYPE_MPEG_TY 33 -#define DEMUXER_TYPE_LMLM4 34 -#define DEMUXER_TYPE_LAVF 35 -#define DEMUXER_TYPE_NSV 36 -#define DEMUXER_TYPE_VQF 37 -#define DEMUXER_TYPE_AVS 38 -#define DEMUXER_TYPE_AAC 39 -#define DEMUXER_TYPE_MPC 40 -#define DEMUXER_TYPE_MPEG_PES 41 -#define DEMUXER_TYPE_MPEG_GXF 42 -#define DEMUXER_TYPE_NUT 43 -#define DEMUXER_TYPE_LAVF_PREFERRED 44 -#define DEMUXER_TYPE_RTP_NEMESI 45 -#define DEMUXER_TYPE_MNG 46 - -// This should always match the higest demuxer type number. -// Unless you want to disallow users to force the demuxer to some types -#define DEMUXER_TYPE_MIN 0 -#define DEMUXER_TYPE_MAX 46 - -#define DEMUXER_TYPE_DEMUXERS (1 << 16) -// A virtual demuxer type for the network code -#define DEMUXER_TYPE_PLAYLIST (2 << 16) +enum demuxer_type { + DEMUXER_TYPE_UNKNOWN = 0, + DEMUXER_TYPE_MPEG_ES, + DEMUXER_TYPE_MPEG_PS, + DEMUXER_TYPE_AVI, + DEMUXER_TYPE_AVI_NI, + DEMUXER_TYPE_AVI_NINI, + DEMUXER_TYPE_ASF, + DEMUXER_TYPE_MOV, + DEMUXER_TYPE_VIVO, + DEMUXER_TYPE_TV, + DEMUXER_TYPE_FLI, + DEMUXER_TYPE_REAL, + DEMUXER_TYPE_Y4M, + DEMUXER_TYPE_FILM, + DEMUXER_TYPE_ROQ, + DEMUXER_TYPE_MF, + DEMUXER_TYPE_AUDIO, + DEMUXER_TYPE_OGG, + DEMUXER_TYPE_RAWAUDIO, + DEMUXER_TYPE_RTP, + DEMUXER_TYPE_RAWDV, + DEMUXER_TYPE_PVA, + DEMUXER_TYPE_SMJPEG, + DEMUXER_TYPE_XMMS, + DEMUXER_TYPE_RAWVIDEO, + DEMUXER_TYPE_MPEG4_ES, + DEMUXER_TYPE_GIF, + DEMUXER_TYPE_MPEG_TS, + DEMUXER_TYPE_H264_ES, + DEMUXER_TYPE_MATROSKA, + DEMUXER_TYPE_REALAUDIO, + DEMUXER_TYPE_MPEG_TY, + DEMUXER_TYPE_LMLM4, + DEMUXER_TYPE_LAVF, + DEMUXER_TYPE_NSV, + DEMUXER_TYPE_VQF, + DEMUXER_TYPE_AVS, + DEMUXER_TYPE_AAC, + DEMUXER_TYPE_MPC, + DEMUXER_TYPE_MPEG_PES, + DEMUXER_TYPE_MPEG_GXF, + DEMUXER_TYPE_NUT, + DEMUXER_TYPE_LAVF_PREFERRED, + DEMUXER_TYPE_RTP_NEMESI, + DEMUXER_TYPE_MNG, + + /* Values after this are for internal use and can not be selected + * as demuxer type by the user (-demuxer option). */ + DEMUXER_TYPE_END, + + DEMUXER_TYPE_DEMUXERS, + DEMUXER_TYPE_PLAYLIST, +}; enum timestamp_type { TIMESTAMP_TYPE_PTS, @@ -191,7 +191,7 @@ typedef struct demuxer_desc { const char *author; // Demuxer author(s) const char *comment; // Comment, printed with -demuxer help - int type; // DEMUXER_TYPE_xxx + enum demuxer_type type; // If 1 detection is safe and fast, do it before file extension check int safe_check; @@ -249,14 +249,14 @@ typedef struct demuxer { double reference_clock; char *filename; // Needed by avs_check_file int synced; // stream synced (used by mpeg) - int type; // DEMUXER_TYPE_xxx + enum demuxer_type type; /* Normally the file_format field is just a copy of the type field above. * There are 2 exceptions I noticed. Internal demux_avi may force * ->type to DEMUXER_TYPE_AVI_[NI|NINI] while leaving ->file_format at * DEMUXER_TYPE_AVI. Internal demux_mov may set ->type to * DEMUXER_TYPE_PLAYLIST and also return that from the check function * or not (looks potentially buggy). */ - int file_format; + enum demuxer_type file_format; int seekable; // flag /* Set if using absolute seeks for small movements is OK (no pts resets * that would make pts ambigious, preferably supports back/forward flags */ |