From 1558d0b9103394d7d7ca1eb41b1e85647e4d1cce Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 3 Feb 2009 11:01:57 +0000 Subject: Fix probe & demuxing of Topfield 58XXPVR and 68XXPVR (topfield.rec) Originally committed as revision 16968 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/mpegts.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'libavformat') diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 5d07e39c9f..e335bc6657 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -1177,14 +1177,15 @@ static int mpegts_probe(AVProbeData *p) #if 1 const int size= p->buf_size; int score, fec_score, dvhs_score; + int check_count= size / TS_FEC_PACKET_SIZE; #define CHECK_COUNT 10 - if (size < (TS_FEC_PACKET_SIZE * CHECK_COUNT)) + if (check_count < CHECK_COUNT) return -1; - score = analyze(p->buf, TS_PACKET_SIZE *CHECK_COUNT, TS_PACKET_SIZE, NULL); - dvhs_score = analyze(p->buf, TS_DVHS_PACKET_SIZE *CHECK_COUNT, TS_DVHS_PACKET_SIZE, NULL); - fec_score= analyze(p->buf, TS_FEC_PACKET_SIZE*CHECK_COUNT, TS_FEC_PACKET_SIZE, NULL); + score = analyze(p->buf, TS_PACKET_SIZE *check_count, TS_PACKET_SIZE , NULL)*CHECK_COUNT/check_count; + dvhs_score= analyze(p->buf, TS_DVHS_PACKET_SIZE*check_count, TS_DVHS_PACKET_SIZE, NULL)*CHECK_COUNT/check_count; + fec_score = analyze(p->buf, TS_FEC_PACKET_SIZE *check_count, TS_FEC_PACKET_SIZE , NULL)*CHECK_COUNT/check_count; // av_log(NULL, AV_LOG_DEBUG, "score: %d, dvhs_score: %d, fec_score: %d \n", score, dvhs_score, fec_score); // we need a clear definition for the returned score otherwise things will become messy sooner or later @@ -1235,7 +1236,7 @@ static int mpegts_read_header(AVFormatContext *s, { MpegTSContext *ts = s->priv_data; ByteIOContext *pb = s->pb; - uint8_t buf[1024]; + uint8_t buf[5*1024]; int len; int64_t pos; -- cgit v1.2.3