aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/mpegts.c
diff options
context:
space:
mode:
authorNico Sabbi <nicola.sabbi@poste.it>2006-01-02 20:13:24 +0000
committerNico Sabbi <nicola.sabbi@poste.it>2006-01-02 20:13:24 +0000
commit5d4d67e0ffdf273cf67136c08751e65d157d611e (patch)
treef9db1409126f6f9b6a9cd86b36522458c1d46545 /libavformat/mpegts.c
parentf007d3586563b34bad9d4b89e32f212b7af761bb (diff)
downloadffmpeg-5d4d67e0ffdf273cf67136c08751e65d157d611e.tar.gz
added support for DVHS (192) packet size
Originally committed as revision 4801 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/mpegts.c')
-rw-r--r--libavformat/mpegts.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 321cad8510..2a98338a91 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -246,17 +246,19 @@ static int analyze(const uint8_t *buf, int size, int packet_size, int *index){
/* autodetect fec presence. Must have at least 1024 bytes */
static int get_packet_size(const uint8_t *buf, int size)
{
- int score, fec_score;
+ int score, fec_score, dvhs_score;
if (size < (TS_FEC_PACKET_SIZE * 5 + 1))
return -1;
score = analyze(buf, size, TS_PACKET_SIZE, NULL);
+ dvhs_score = analyze(buf, size, TS_DVHS_PACKET_SIZE, NULL);
fec_score= analyze(buf, size, TS_FEC_PACKET_SIZE, NULL);
-// av_log(NULL, AV_LOG_DEBUG, "score: %d, fec_score: %d \n", score, fec_score);
+// av_log(NULL, AV_LOG_DEBUG, "score: %d, dvhs_score: %d, fec_score: %d \n", score, dvhs_score, fec_score);
- if (score > fec_score) return TS_PACKET_SIZE;
- else if(score < fec_score) return TS_FEC_PACKET_SIZE;
+ if (score > fec_score && score > dvhs_score) return TS_PACKET_SIZE;
+ else if(dvhs_score > score && dvhs_score > fec_score) return TS_DVHS_PACKET_SIZE;
+ else if(score < fec_score && dvhs_score < fec_score) return TS_FEC_PACKET_SIZE;
else return -1;
}
@@ -1094,18 +1096,20 @@ static int mpegts_probe(AVProbeData *p)
{
#if 1
const int size= p->buf_size;
- int score, fec_score;
+ int score, fec_score, dvhs_score;
#define CHECK_COUNT 10
if (size < (TS_FEC_PACKET_SIZE * 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);
-// av_log(NULL, AV_LOG_DEBUG, "score: %d, fec_score: %d \n", score, fec_score);
+// 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
- if (score > fec_score && score > 6) return AVPROBE_SCORE_MAX + score - CHECK_COUNT;
+ if (score > fec_score && score > dvhs_score && score > 6) return AVPROBE_SCORE_MAX + score - CHECK_COUNT;
+ else if(dvhs_score > score && dvhs_score > fec_score && dvhs_score > 6) return AVPROBE_SCORE_MAX + dvhs_score - CHECK_COUNT;
else if( fec_score > 6) return AVPROBE_SCORE_MAX + fec_score - CHECK_COUNT;
else return -1;
#else