1
mirror of https://github.com/mpv-player/mpv synced 2025-03-15 03:14:30 +01:00

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".
This commit is contained in:
Uoti Urpala 2011-02-11 19:52:44 +02:00
parent 5177b24b25
commit f7643ddde6
3 changed files with 66 additions and 83 deletions

View File

@ -1177,9 +1177,7 @@ Plays a Matroska file in Japanese.
Force audio demuxer type for \-audiofile. Force audio demuxer type for \-audiofile.
Use a '+' before the name to force it, this will skip some checks! Use a '+' before the name to force it, this will skip some checks!
Give the demuxer name as printed by \-audio\-demuxer help. Give the demuxer name as printed by \-audio\-demuxer help.
For backward compatibility it also accepts the demuxer ID as defined in \-audio\-demuxer audio forces MP3.
libmpdemux/\:demuxer.h.
\-audio\-demuxer audio or \-audio\-demuxer 17 forces MP3.
. .
.TP .TP
.B \-audiofile <filename> .B \-audiofile <filename>
@ -1356,8 +1354,6 @@ This nullifies stream delays.
Force demuxer type. Force demuxer type.
Use a '+' before the name to force it, this will skip some checks! Use a '+' before the name to force it, this will skip some checks!
Give the demuxer name as printed by \-demuxer help. Give the demuxer name as printed by \-demuxer help.
For backward compatibility it also accepts the demuxer ID as defined in
libmpdemux/\:demuxer.h.
. .
.TP .TP
.B \-dumpaudio .B \-dumpaudio
@ -2416,8 +2412,6 @@ intensity of the color.
Force subtitle demuxer type for \-subfile. Force subtitle demuxer type for \-subfile.
Use a '+' before the name to force it, this will skip some checks! Use a '+' before the name to force it, this will skip some checks!
Give the demuxer name as printed by \-sub\-demuxer help. Give the demuxer name as printed by \-sub\-demuxer help.
For backward compatibility it also accepts the demuxer ID as defined in
subreader.h.
. .
.TP .TP
.B \-sub\-fuzziness <mode> .B \-sub\-fuzziness <mode>

View File

@ -881,19 +881,18 @@ void demuxer_help(void)
int i; int i;
mp_msg(MSGT_DEMUXER, MSGL_INFO, "Available demuxers:\n"); 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"); mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_DEMUXERS\n");
for (i = 0; demuxer_list[i]; i++) { 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; continue;
if (demuxer_list[i]->comment && strlen(demuxer_list[i]->comment)) if (demuxer_list[i]->comment && strlen(demuxer_list[i]->comment))
mp_msg(MSGT_DEMUXER, MSGL_INFO, "%10s %2d %s (%s)\n", mp_msg(MSGT_DEMUXER, MSGL_INFO, "%10s %s (%s)\n",
demuxer_list[i]->name, demuxer_list[i]->type, demuxer_list[i]->name, demuxer_list[i]->info,
demuxer_list[i]->info, demuxer_list[i]->comment); demuxer_list[i]->comment);
else else
mp_msg(MSGT_DEMUXER, MSGL_INFO, "%10s %2d %s\n", mp_msg(MSGT_DEMUXER, MSGL_INFO, "%10s %s\n",
demuxer_list[i]->name, demuxer_list[i]->type, demuxer_list[i]->name, demuxer_list[i]->info);
demuxer_list[i]->info);
} }
} }
@ -908,30 +907,20 @@ void demuxer_help(void)
*/ */
static int get_demuxer_type_from_name(char *demuxer_name, int *force) 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]) if (!demuxer_name || !demuxer_name[0])
return DEMUXER_TYPE_UNKNOWN; return DEMUXER_TYPE_UNKNOWN;
if (force) if (force)
*force = demuxer_name[0] == '+'; *force = demuxer_name[0] == '+';
if (demuxer_name[0] == '+') if (demuxer_name[0] == '+')
demuxer_name = &demuxer_name[1]; demuxer_name = &demuxer_name[1];
for (i = 0; demuxer_list[i]; i++) { for (int i = 0; demuxer_list[i]; i++) {
if (demuxer_list[i]->type > DEMUXER_TYPE_MAX) // Can't select special demuxers from commandline if (demuxer_list[i]->type >= DEMUXER_TYPE_END)
// Can't select special demuxers from commandline
continue; continue;
if (strcmp(demuxer_name, demuxer_list[i]->name) == 0) if (strcmp(demuxer_name, demuxer_list[i]->name) == 0)
return demuxer_list[i]->type; 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; return -1;
} }

View File

@ -42,60 +42,60 @@ struct MPOpts;
#define MAX_PACKS 4096 #define MAX_PACKS 4096
#define MAX_PACK_BYTES 0x8000000 // 128 MiB #define MAX_PACK_BYTES 0x8000000 // 128 MiB
#define DEMUXER_TYPE_UNKNOWN 0 enum demuxer_type {
#define DEMUXER_TYPE_MPEG_ES 1 DEMUXER_TYPE_UNKNOWN = 0,
#define DEMUXER_TYPE_MPEG_PS 2 DEMUXER_TYPE_MPEG_ES,
#define DEMUXER_TYPE_AVI 3 DEMUXER_TYPE_MPEG_PS,
#define DEMUXER_TYPE_AVI_NI 4 DEMUXER_TYPE_AVI,
#define DEMUXER_TYPE_AVI_NINI 5 DEMUXER_TYPE_AVI_NI,
#define DEMUXER_TYPE_ASF 6 DEMUXER_TYPE_AVI_NINI,
#define DEMUXER_TYPE_MOV 7 DEMUXER_TYPE_ASF,
#define DEMUXER_TYPE_VIVO 8 DEMUXER_TYPE_MOV,
#define DEMUXER_TYPE_TV 9 DEMUXER_TYPE_VIVO,
#define DEMUXER_TYPE_FLI 10 DEMUXER_TYPE_TV,
#define DEMUXER_TYPE_REAL 11 DEMUXER_TYPE_FLI,
#define DEMUXER_TYPE_Y4M 12 DEMUXER_TYPE_REAL,
#define DEMUXER_TYPE_FILM 14 DEMUXER_TYPE_Y4M,
#define DEMUXER_TYPE_ROQ 15 DEMUXER_TYPE_FILM,
#define DEMUXER_TYPE_MF 16 DEMUXER_TYPE_ROQ,
#define DEMUXER_TYPE_AUDIO 17 DEMUXER_TYPE_MF,
#define DEMUXER_TYPE_OGG 18 DEMUXER_TYPE_AUDIO,
#define DEMUXER_TYPE_RAWAUDIO 20 DEMUXER_TYPE_OGG,
#define DEMUXER_TYPE_RTP 21 DEMUXER_TYPE_RAWAUDIO,
#define DEMUXER_TYPE_RAWDV 22 DEMUXER_TYPE_RTP,
#define DEMUXER_TYPE_PVA 23 DEMUXER_TYPE_RAWDV,
#define DEMUXER_TYPE_SMJPEG 24 DEMUXER_TYPE_PVA,
#define DEMUXER_TYPE_XMMS 25 DEMUXER_TYPE_SMJPEG,
#define DEMUXER_TYPE_RAWVIDEO 26 DEMUXER_TYPE_XMMS,
#define DEMUXER_TYPE_MPEG4_ES 27 DEMUXER_TYPE_RAWVIDEO,
#define DEMUXER_TYPE_GIF 28 DEMUXER_TYPE_MPEG4_ES,
#define DEMUXER_TYPE_MPEG_TS 29 DEMUXER_TYPE_GIF,
#define DEMUXER_TYPE_H264_ES 30 DEMUXER_TYPE_MPEG_TS,
#define DEMUXER_TYPE_MATROSKA 31 DEMUXER_TYPE_H264_ES,
#define DEMUXER_TYPE_REALAUDIO 32 DEMUXER_TYPE_MATROSKA,
#define DEMUXER_TYPE_MPEG_TY 33 DEMUXER_TYPE_REALAUDIO,
#define DEMUXER_TYPE_LMLM4 34 DEMUXER_TYPE_MPEG_TY,
#define DEMUXER_TYPE_LAVF 35 DEMUXER_TYPE_LMLM4,
#define DEMUXER_TYPE_NSV 36 DEMUXER_TYPE_LAVF,
#define DEMUXER_TYPE_VQF 37 DEMUXER_TYPE_NSV,
#define DEMUXER_TYPE_AVS 38 DEMUXER_TYPE_VQF,
#define DEMUXER_TYPE_AAC 39 DEMUXER_TYPE_AVS,
#define DEMUXER_TYPE_MPC 40 DEMUXER_TYPE_AAC,
#define DEMUXER_TYPE_MPEG_PES 41 DEMUXER_TYPE_MPC,
#define DEMUXER_TYPE_MPEG_GXF 42 DEMUXER_TYPE_MPEG_PES,
#define DEMUXER_TYPE_NUT 43 DEMUXER_TYPE_MPEG_GXF,
#define DEMUXER_TYPE_LAVF_PREFERRED 44 DEMUXER_TYPE_NUT,
#define DEMUXER_TYPE_RTP_NEMESI 45 DEMUXER_TYPE_LAVF_PREFERRED,
#define DEMUXER_TYPE_MNG 46 DEMUXER_TYPE_RTP_NEMESI,
DEMUXER_TYPE_MNG,
// This should always match the higest demuxer type number. /* Values after this are for internal use and can not be selected
// Unless you want to disallow users to force the demuxer to some types * as demuxer type by the user (-demuxer option). */
#define DEMUXER_TYPE_MIN 0 DEMUXER_TYPE_END,
#define DEMUXER_TYPE_MAX 46
#define DEMUXER_TYPE_DEMUXERS (1 << 16) DEMUXER_TYPE_DEMUXERS,
// A virtual demuxer type for the network code DEMUXER_TYPE_PLAYLIST,
#define DEMUXER_TYPE_PLAYLIST (2 << 16) };
enum timestamp_type { enum timestamp_type {
TIMESTAMP_TYPE_PTS, TIMESTAMP_TYPE_PTS,
@ -191,7 +191,7 @@ typedef struct demuxer_desc {
const char *author; // Demuxer author(s) const char *author; // Demuxer author(s)
const char *comment; // Comment, printed with -demuxer help 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 // If 1 detection is safe and fast, do it before file extension check
int safe_check; int safe_check;
@ -249,14 +249,14 @@ typedef struct demuxer {
double reference_clock; double reference_clock;
char *filename; // Needed by avs_check_file char *filename; // Needed by avs_check_file
int synced; // stream synced (used by mpeg) 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. /* 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 * There are 2 exceptions I noticed. Internal demux_avi may force
* ->type to DEMUXER_TYPE_AVI_[NI|NINI] while leaving ->file_format at * ->type to DEMUXER_TYPE_AVI_[NI|NINI] while leaving ->file_format at
* DEMUXER_TYPE_AVI. Internal demux_mov may set ->type to * DEMUXER_TYPE_AVI. Internal demux_mov may set ->type to
* DEMUXER_TYPE_PLAYLIST and also return that from the check function * DEMUXER_TYPE_PLAYLIST and also return that from the check function
* or not (looks potentially buggy). */ * or not (looks potentially buggy). */
int file_format; enum demuxer_type file_format;
int seekable; // flag int seekable; // flag
/* Set if using absolute seeks for small movements is OK (no pts resets /* Set if using absolute seeks for small movements is OK (no pts resets
* that would make pts ambigious, preferably supports back/forward flags */ * that would make pts ambigious, preferably supports back/forward flags */