mirror of https://github.com/mpv-player/mpv
Add lavf_preferred demuxer for lavf formats we want to be probed
before our native demuxers and remove some now unneeded file-extension hacks. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22989 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
d6e8921486
commit
ef91f5aad8
|
@ -210,6 +210,29 @@ static int lavf_check_file(demuxer_t *demuxer){
|
|||
|
||||
return DEMUXER_TYPE_LAVF;
|
||||
}
|
||||
|
||||
static const char *preferred_list[] = {
|
||||
"dxa",
|
||||
"wv",
|
||||
"nuv",
|
||||
"nut",
|
||||
"gxf",
|
||||
"mxf",
|
||||
NULL
|
||||
};
|
||||
|
||||
static int lavf_check_preferred_file(demuxer_t *demuxer){
|
||||
if (lavf_check_file(demuxer)) {
|
||||
char **p = preferred_list;
|
||||
lavf_priv_t *priv = demuxer->priv;
|
||||
while (*p) {
|
||||
if (strcmp(*p, priv->avif->name) == 0)
|
||||
return DEMUXER_TYPE_LAVF_PREFERRED;
|
||||
p++;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static demuxer_t* demux_open_lavf(demuxer_t *demuxer){
|
||||
AVFormatContext *avfc;
|
||||
|
@ -609,3 +632,18 @@ demuxer_desc_t demuxer_desc_lavf = {
|
|||
demux_lavf_control
|
||||
};
|
||||
|
||||
demuxer_desc_t demuxer_desc_lavf_preferred = {
|
||||
"libavformat preferred demuxer",
|
||||
"lavfpref",
|
||||
"libavformat",
|
||||
"Michael Niedermayer",
|
||||
"supports many formats, requires libavformat",
|
||||
DEMUXER_TYPE_LAVF_PREFERRED,
|
||||
0, // Check after other demuxer
|
||||
lavf_check_preferred_file,
|
||||
demux_lavf_fill_buffer,
|
||||
demux_open_lavf,
|
||||
demux_close_lavf,
|
||||
demux_seek_lavf,
|
||||
demux_lavf_control
|
||||
};
|
||||
|
|
|
@ -64,6 +64,7 @@ extern demuxer_desc_t demuxer_desc_xmms;
|
|||
extern demuxer_desc_t demuxer_desc_mpeg_ty;
|
||||
extern demuxer_desc_t demuxer_desc_rtp;
|
||||
extern demuxer_desc_t demuxer_desc_lavf;
|
||||
extern demuxer_desc_t demuxer_desc_lavf_preferred;
|
||||
extern demuxer_desc_t demuxer_desc_aac;
|
||||
extern demuxer_desc_t demuxer_desc_nut;
|
||||
|
||||
|
@ -74,6 +75,7 @@ demuxer_desc_t* demuxer_list[] = {
|
|||
&demuxer_desc_tv,
|
||||
#endif
|
||||
&demuxer_desc_mf,
|
||||
&demuxer_desc_lavf_preferred,
|
||||
&demuxer_desc_avi,
|
||||
&demuxer_desc_y4m,
|
||||
&demuxer_desc_asf,
|
||||
|
|
|
@ -55,11 +55,12 @@
|
|||
#define DEMUXER_TYPE_MPEG_PES 41
|
||||
#define DEMUXER_TYPE_MPEG_GXF 42
|
||||
#define DEMUXER_TYPE_NUT 43
|
||||
#define DEMUXER_TYPE_LAVF_PREFERRED 44
|
||||
|
||||
// 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 43
|
||||
#define DEMUXER_TYPE_MAX 44
|
||||
|
||||
#define DEMUXER_TYPE_DEMUXERS (1<<16)
|
||||
// A virtual demuxer type for the network code
|
||||
|
|
|
@ -57,20 +57,16 @@ static struct {
|
|||
#ifdef USE_WIN32DLL
|
||||
{ "avs", DEMUXER_TYPE_AVS },
|
||||
#endif
|
||||
{ "nut", DEMUXER_TYPE_LAVF },
|
||||
{ "swf", DEMUXER_TYPE_LAVF },
|
||||
{ "flv", DEMUXER_TYPE_LAVF },
|
||||
{ "302", DEMUXER_TYPE_LAVF },
|
||||
{ "264", DEMUXER_TYPE_H264_ES },
|
||||
{ "26l", DEMUXER_TYPE_H264_ES },
|
||||
{ "ac3", DEMUXER_TYPE_LAVF },
|
||||
{ "wv", DEMUXER_TYPE_LAVF },
|
||||
|
||||
// At least the following are hacks against broken autodetection
|
||||
// that should not be there
|
||||
|
||||
// demux_audio is too greedy
|
||||
{ "dxa", DEMUXER_TYPE_LAVF },
|
||||
};
|
||||
|
||||
int demuxer_type_by_filename(char* filename){
|
||||
|
|
Loading…
Reference in New Issue