summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2011-02-11 19:52:44 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2011-02-22 15:16:41 +0200
commitf7643ddde624451b01f2cab688b733326b7b8ca5 (patch)
tree3ae4f888acc1431bc76caebdd3780dacefee9454 /libmpdemux
parent5177b24b25931b83adea9de6f9c578654640346c (diff)
downloadmpv-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.c31
-rw-r--r--libmpdemux/demuxer.h114
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 */