From 25f0498660e8c335ddad8aa2019de0e94a2f156b Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 7 Nov 2009 11:09:23 +0000 Subject: Remove an empty program if the one requested by IDENTIFY_PROGRAM does not exist instead of incorrectly claiming that the demuxer does not support programs. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29845 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_lavf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libmpdemux/demux_lavf.c') diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 4bff317b9b..11bf988347 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -711,8 +711,9 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg) int p, i; int start; - if(priv->avfc->nb_programs < 2) - return DEMUXER_CTRL_NOTIMPL; + prog->vid = prog->aid = prog->sid = -2; //no audio and no video by default + if(priv->avfc->nb_programs < 1) + return DEMUXER_CTRL_DONTKNOW; if(prog->progid == -1) { @@ -727,10 +728,9 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg) if(priv->avfc->programs[i]->id == prog->progid) break; if(i==priv->avfc->nb_programs) - return DEMUXER_CTRL_NOTIMPL; + return DEMUXER_CTRL_DONTKNOW; p = i; } - prog->vid = prog->aid = prog->sid = -2; //no audio and no video by default start = p; redo: program = priv->avfc->programs[p]; -- cgit v1.2.3 From 1698db0726e4b7c11f4dc47dfc823df5ab1cd80d Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 7 Nov 2009 11:15:26 +0000 Subject: Remove pointless and broken (e.g. does not set aid and vid) -tsprog handling from lavf demuxer, mplayer.c makes sure IDENTIFY_PROGRAM is called with the right arguments, and that code actually works in contrast to the one in demux_open_lavf. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29847 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_lavf.c | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) (limited to 'libmpdemux/demux_lavf.c') diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 11bf988347..5609c2840a 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -50,7 +50,6 @@ static unsigned int opt_probesize = 0; static unsigned int opt_analyzeduration = 0; static char *opt_format; static char *opt_cryptokey; -extern int ts_prog; static char *opt_avopt = NULL; const m_option_t lavfdopts_conf[] = { @@ -493,30 +492,12 @@ static demuxer_t* demux_open_lavf(demuxer_t *demuxer){ for(i=0; inb_streams; i++) handle_stream(demuxer, avfc, i); if(avfc->nb_programs) { - int p, start=0, found=0; - - if(ts_prog) { - for(p=0; pnb_programs; p++) { - if(avfc->programs[p]->id == ts_prog) { - start = p; - found = 1; - break; - } - } - if(!found) { - mp_msg(MSGT_HEADER,MSGL_ERR,"DEMUX_LAVF: program %d doesn't seem to be present\n", ts_prog); - return NULL; - } - } - p = start; - do { + int p; + for (p = 0; p < avfc->nb_programs; p++) { AVProgram *program = avfc->programs[p]; t = av_metadata_get(program->metadata, "title", NULL, 0); mp_msg(MSGT_HEADER,MSGL_INFO,"LAVF: Program %d %s\n", program->id, t ? t->value : ""); - if(!priv->cur_program && (demuxer->video->sh || demuxer->audio->sh)) - priv->cur_program = program->id; - p = (p + 1) % avfc->nb_programs; - } while(p!=start); + } } mp_msg(MSGT_HEADER,MSGL_V,"LAVF: %d audio and %d video streams found\n",priv->audio_streams,priv->video_streams); -- cgit v1.2.3 From 419e4f684af2a885804f54f403b41d9761e1052f Mon Sep 17 00:00:00 2001 From: cehoyos Date: Sat, 7 Nov 2009 12:55:07 +0000 Subject: Allow demuxer lavf to export CODEC_ID_DVB_TELETEXT. Patch by Francesco Lavra, francescolavra interfree it git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29849 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_lavf.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'libmpdemux/demux_lavf.c') diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 5609c2840a..d954378295 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -383,6 +383,8 @@ static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) { type = 'a'; else if(codec->codec_id == CODEC_ID_DVD_SUBTITLE) type = 'v'; + else if(codec->codec_id == CODEC_ID_DVB_TELETEXT) + type = 'd'; else break; sh_sub = new_sh_sub_sid(demuxer, i, priv->sub_streams); -- cgit v1.2.3 From 085f35f4b48766a5740c7802e4a9a7d809f73441 Mon Sep 17 00:00:00 2001 From: reimar Date: Tue, 10 Nov 2009 16:49:00 +0000 Subject: Allow lavf demuxer to also probe and play files < 32 kB (full probe buffer size). Based on patch by On2. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29882 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_lavf.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libmpdemux/demux_lavf.c') diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index d954378295..4d4137babd 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -133,6 +133,7 @@ static int lavf_check_file(demuxer_t *demuxer){ AVProbeData avpd; uint8_t buf[PROBE_BUF_SIZE]; lavf_priv_t *priv; + int probe_data_size; if(!demuxer->priv) demuxer->priv=calloc(sizeof(lavf_priv_t),1); @@ -154,11 +155,12 @@ static int lavf_check_file(demuxer_t *demuxer){ return DEMUXER_TYPE_LAVF; } - if(stream_read(demuxer->stream, buf, PROBE_BUF_SIZE)!=PROBE_BUF_SIZE) + probe_data_size = stream_read(demuxer->stream, buf, PROBE_BUF_SIZE); + if(probe_data_size <= 0) return 0; avpd.filename= demuxer->stream->url; avpd.buf= buf; - avpd.buf_size= PROBE_BUF_SIZE; + avpd.buf_size= probe_data_size; priv->avif= av_probe_input_format(&avpd, 1); if(!priv->avif){ -- cgit v1.2.3