mpegdemux: move private stream 1 handling out of mpegps_read_pes_header

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-07-31 19:43:20 +02:00
parent afa6afcc9f
commit ce7cf600be

View File

@ -349,18 +349,6 @@ static int mpegps_read_pes_header(AVFormatContext *s,
if (startcode == PRIVATE_STREAM_1) {
startcode = avio_r8(s->pb);
len--;
if (startcode >= 0x80 && startcode <= 0xcf) {
/* audio: skip header */
avio_r8(s->pb);
avio_r8(s->pb);
avio_r8(s->pb);
len -= 3;
if (startcode >= 0xb0 && startcode <= 0xbf) {
/* MLP/TrueHD audio has a 4-byte header */
avio_r8(s->pb);
len--;
}
}
}
if(len<0)
goto error_redo;
@ -397,6 +385,22 @@ static int mpegps_read_packet(AVFormatContext *s,
if (len < 0)
return len;
if (startcode >= 0x80 && startcode <= 0xcf) {
if(len < 4)
goto skip;
/* audio: skip header */
avio_r8(s->pb);
avio_r8(s->pb);
avio_r8(s->pb);
len -= 3;
if (startcode >= 0xb0 && startcode <= 0xbf) {
/* MLP/TrueHD audio has a 4-byte header */
avio_r8(s->pb);
len--;
}
}
/* now find stream */
for(i=0;i<s->nb_streams;i++) {
st = s->streams[i];