summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-02-06 22:15:20 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-02-06 22:15:20 +0000
commit07b655f0e838e55a63b616db19b5d96df6ac8f00 (patch)
tree8a2894cdf61634d7660d25db2388ba6f8df5170d /libmpdemux
parent23f4a0d1e29254a0bcd6b3d85633ba37d824ea28 (diff)
downloadmpv-07b655f0e838e55a63b616db19b5d96df6ac8f00.tar.bz2
mpv-07b655f0e838e55a63b616db19b5d96df6ac8f00.tar.xz
Support selecting a specific lavf demuxer and listing available ones via -lavfdopts
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22168 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_lavf.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c
index f8e41c37ea..cc027c8e7c 100644
--- a/libmpdemux/demux_lavf.c
+++ b/libmpdemux/demux_lavf.c
@@ -46,9 +46,11 @@
extern char *audio_lang;
static unsigned int opt_probesize = 0;
+static char *opt_format;
m_option_t lavfdopts_conf[] = {
{"probesize", &(opt_probesize), CONF_TYPE_INT, CONF_RANGE, 32, INT_MAX, NULL},
+ {"format", &(opt_format), CONF_TYPE_STRING, 0, 0, 0, NULL},
{NULL, NULL, 0, 0, 0, 0, NULL}
};
@@ -156,6 +158,13 @@ static URLProtocol mp_protocol = {
mp_close,
};
+static void list_formats(void) {
+ AVInputFormat *fmt;
+ mp_msg(MSGT_DEMUX, MSGL_INFO, "Available lavf input formats:\n");
+ for (fmt = first_iformat; fmt; fmt = fmt->next)
+ mp_msg(MSGT_DEMUX, MSGL_INFO, "%15s : %s\n", fmt->name, fmt->long_name);
+}
+
static int lavf_check_file(demuxer_t *demuxer){
AVProbeData avpd;
uint8_t buf[PROBE_BUF_SIZE];
@@ -173,6 +182,19 @@ static int lavf_check_file(demuxer_t *demuxer){
avpd.buf= buf;
avpd.buf_size= PROBE_BUF_SIZE;
+ if (opt_format) {
+ if (strcmp(opt_format, "help") == 0) {
+ list_formats();
+ return 0;
+ }
+ priv->avif= av_find_input_format(opt_format);
+ if (!priv->avif) {
+ mp_msg(MSGT_DEMUX,MSGL_FATAL,"Unknown lavf format %s\n", opt_format);
+ return 0;
+ }
+ mp_msg(MSGT_DEMUX,MSGL_INFO,"Forced lavf %s demuxer\n", priv->avif->long_name);
+ return DEMUXER_TYPE_LAVF;
+ }
priv->avif= av_probe_input_format(&avpd, 1);
if(!priv->avif){
mp_msg(MSGT_HEADER,MSGL_V,"LAVF_check: no clue about this gibberish!\n");