|
|
|
@@ -432,7 +432,7 @@ static int mpeg_mux_read_header(AVFormatContext *s, |
|
|
|
{ |
|
|
|
MpegDemuxContext *m; |
|
|
|
int size, startcode, c, rate_bound, audio_bound, video_bound, mux_rate, val; |
|
|
|
int codec_id, n, i, type; |
|
|
|
int codec_id, n, i, type, seems_dvd; |
|
|
|
AVStream *st; |
|
|
|
offset_t start_pos; |
|
|
|
|
|
|
|
@@ -440,25 +440,26 @@ static int mpeg_mux_read_header(AVFormatContext *s, |
|
|
|
if (!m) |
|
|
|
return -ENOMEM; |
|
|
|
s->priv_data = m; |
|
|
|
|
|
|
|
seems_dvd = 0; |
|
|
|
|
|
|
|
/* search first pack header */ |
|
|
|
m->header_state = 0xff; |
|
|
|
size = MAX_SYNC_SIZE; |
|
|
|
start_pos = url_ftell(&s->pb); /* remember this pos */ |
|
|
|
for(;;) { |
|
|
|
while (size > 0) { |
|
|
|
/*while (size > 0) { |
|
|
|
startcode = find_start_code(&s->pb, &size, &m->header_state); |
|
|
|
if (startcode == PACK_START_CODE) |
|
|
|
goto found; |
|
|
|
} |
|
|
|
}*/ |
|
|
|
/* System Header not found find streams searching through file */ |
|
|
|
fprintf(stderr,"libav: MPEG-PS System Header not found!\n"); |
|
|
|
//fprintf(stderr,"libav: MPEG-PS System Header not found!\n"); |
|
|
|
url_fseek(&s->pb, start_pos, SEEK_SET); |
|
|
|
video_bound = 0; |
|
|
|
audio_bound = 0; |
|
|
|
c = 0; |
|
|
|
s->nb_streams = 0; |
|
|
|
size = 15*MAX_SYNC_SIZE; |
|
|
|
//size = 15*MAX_SYNC_SIZE; |
|
|
|
while (size > 0) { |
|
|
|
type = 0; |
|
|
|
codec_id = 0; |
|
|
|
@@ -477,6 +478,7 @@ static int mpeg_mux_read_header(AVFormatContext *s, |
|
|
|
audio_bound++; |
|
|
|
n = 1; |
|
|
|
c = startcode; |
|
|
|
seems_dvd = 1; |
|
|
|
} |
|
|
|
} else if (startcode == 0x1e0 && !check_stream_id(s, startcode)) { |
|
|
|
//fprintf(stderr,"Found MPEGVIDEO stream ID: 0x%x\n", startcode); |
|
|
|
@@ -485,14 +487,14 @@ static int mpeg_mux_read_header(AVFormatContext *s, |
|
|
|
n = 1; |
|
|
|
c = startcode; |
|
|
|
video_bound++; |
|
|
|
} /*else if (startcode >= 0x1c0 && startcode <= 0x1df && !check_stream_id(s, startcode)) { |
|
|
|
fprintf(stderr,"Found MPEGAUDIO stream ID: 0x%x\n", startcode); |
|
|
|
} else if (startcode >= 0x1c0 && startcode <= 0x1df && !seems_dvd && !check_stream_id(s, startcode)) { |
|
|
|
//fprintf(stderr,"Found MPEGAUDIO stream ID: 0x%x\n", startcode); |
|
|
|
type = CODEC_TYPE_AUDIO; |
|
|
|
codec_id = CODEC_ID_MP2; |
|
|
|
n = 1; |
|
|
|
c = startcode; |
|
|
|
audio_bound++; |
|
|
|
} */ |
|
|
|
} |
|
|
|
for(i=0;i<n;i++) { |
|
|
|
st = av_mallocz(sizeof(AVStream)); |
|
|
|
if (!st) |
|
|
|
|