Commit 5d4d67e0 authored by Nico Sabbi's avatar Nico Sabbi

added support for DVHS (192) packet size

Originally committed as revision 4801 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent f007d358
...@@ -246,17 +246,19 @@ static int analyze(const uint8_t *buf, int size, int packet_size, int *index){ ...@@ -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 */ /* autodetect fec presence. Must have at least 1024 bytes */
static int get_packet_size(const uint8_t *buf, int size) 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)) if (size < (TS_FEC_PACKET_SIZE * 5 + 1))
return -1; return -1;
score = analyze(buf, size, TS_PACKET_SIZE, NULL); 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); 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; if (score > fec_score && score > dvhs_score) return TS_PACKET_SIZE;
else if(score < fec_score) return TS_FEC_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; else return -1;
} }
...@@ -1094,18 +1096,20 @@ static int mpegts_probe(AVProbeData *p) ...@@ -1094,18 +1096,20 @@ static int mpegts_probe(AVProbeData *p)
{ {
#if 1 #if 1
const int size= p->buf_size; const int size= p->buf_size;
int score, fec_score; int score, fec_score, dvhs_score;
#define CHECK_COUNT 10 #define CHECK_COUNT 10
if (size < (TS_FEC_PACKET_SIZE * CHECK_COUNT)) if (size < (TS_FEC_PACKET_SIZE * CHECK_COUNT))
return -1; return -1;
score = analyze(p->buf, TS_PACKET_SIZE *CHECK_COUNT, TS_PACKET_SIZE, NULL); 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); 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 // 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 if( fec_score > 6) return AVPROBE_SCORE_MAX + fec_score - CHECK_COUNT;
else return -1; else return -1;
#else #else
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
*/ */
#define TS_FEC_PACKET_SIZE 204 #define TS_FEC_PACKET_SIZE 204
#define TS_DVHS_PACKET_SIZE 192
#define TS_PACKET_SIZE 188 #define TS_PACKET_SIZE 188
#define NB_PID_MAX 8192 #define NB_PID_MAX 8192
#define MAX_SECTION_SIZE 4096 #define MAX_SECTION_SIZE 4096
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment