summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authornicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-09 18:20:21 +0000
committernicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-09 18:20:21 +0000
commit990b33b1c28d6b604a85e588689ad7fb6de59354 (patch)
tree97441ac003a8959839c464ef6409a01a58c0aea8 /libmpdemux
parentc263afa4af4c6a76eceb79d336f0bedf9724ef67 (diff)
downloadmpv-990b33b1c28d6b604a85e588689ad7fb6de59354.tar.bz2
mpv-990b33b1c28d6b604a85e588689ad7fb6de59354.tar.xz
init ts_probe to 0 and probe up to TS_MAX_PROBE_SIZE if the parameter
is not explicitly set by the user; make the code that checks audio-only stream files respect -tsprobe git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23529 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_ts.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c
index ba318297b0..d15fbcaf4f 100644
--- a/libmpdemux/demux_ts.c
+++ b/libmpdemux/demux_ts.c
@@ -59,7 +59,7 @@
int ts_prog;
int ts_keep_broken=0;
-off_t ts_probe = TS_MAX_PROBE_SIZE;
+off_t ts_probe = 0;
extern char *dvdsub_lang, *audio_lang; //for -alang
typedef enum
@@ -621,7 +621,7 @@ static off_t ts_detect_streams(demuxer_t *demuxer, tsdemux_init_t *param)
int video_found = 0, audio_found = 0, sub_found = 0, i, num_packets = 0, req_apid, req_vpid, req_spid;
int is_audio, is_video, is_sub, has_tables;
int32_t p, chosen_pid = 0;
- off_t pos=0, ret = 0, init_pos;
+ off_t pos=0, ret = 0, init_pos, end_pos;
ES_stream_t es;
unsigned char tmp[TS_FEC_PACKET_SIZE];
ts_priv_t *priv = (ts_priv_t*) demuxer->priv;
@@ -641,7 +641,8 @@ static off_t ts_detect_streams(demuxer_t *demuxer, tsdemux_init_t *param)
memset(pes_priv1, 0, sizeof(pes_priv1));
init_pos = stream_tell(demuxer->stream);
mp_msg(MSGT_DEMUXER, MSGL_V, "PROBING UP TO %"PRIu64", PROG: %d\n", (uint64_t) param->probe, param->prog);
- while((pos <= init_pos + param->probe) && (! demuxer->stream->eof))
+ end_pos = init_pos + (param->probe ? param->probe : TS_MAX_PROBE_SIZE);
+ while((pos <= end_pos) && (! demuxer->stream->eof))
{
pos = stream_tell(demuxer->stream);
if(ts_parse(demuxer, &es, tmp, 1))
@@ -777,7 +778,7 @@ static off_t ts_detect_streams(demuxer_t *demuxer, tsdemux_init_t *param)
}
- if(((req_vpid == -2) || (num_packets >= NUM_CONSECUTIVE_AUDIO_PACKETS)) && audio_found)
+ if(((req_vpid == -2) || (num_packets >= NUM_CONSECUTIVE_AUDIO_PACKETS)) && audio_found && !param->probe)
{
//novideo or we have at least 348 audio packets (64 KB) without video (TS with audio only)
param->vtype = 0;