|
|
|
@ -1229,6 +1229,11 @@ static int decode_frame(NUTContext *nut, AVPacket *pkt, int frame_code, int fram |
|
|
|
|
if(size < 0) |
|
|
|
|
return -1; |
|
|
|
|
|
|
|
|
|
if(s->streams[ stream_id ]->discard){ |
|
|
|
|
url_fskip(bc, size); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
av_new_packet(pkt, size); |
|
|
|
|
get_buffer(bc, pkt->data, size); |
|
|
|
|
pkt->stream_index = stream_id; |
|
|
|
@ -1243,7 +1248,7 @@ static int nut_read_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
{ |
|
|
|
|
NUTContext *nut = s->priv_data; |
|
|
|
|
ByteIOContext *bc = &s->pb; |
|
|
|
|
int i, frame_code=0; |
|
|
|
|
int i, frame_code=0, ret; |
|
|
|
|
|
|
|
|
|
for(;;){ |
|
|
|
|
int64_t pos= url_ftell(bc); |
|
|
|
@ -1281,8 +1286,11 @@ static int nut_read_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
|
reset(s, get_v(bc)); |
|
|
|
|
frame_code = get_byte(bc); |
|
|
|
|
case 0: |
|
|
|
|
if(decode_frame(nut, pkt, frame_code, frame_type, pos)>=0) |
|
|
|
|
ret= decode_frame(nut, pkt, frame_code, frame_type, pos); |
|
|
|
|
if(ret==0) |
|
|
|
|
return 0; |
|
|
|
|
else if(ret==1) //ok but discard packet
|
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
resync: |
|
|
|
|
av_log(s, AV_LOG_DEBUG, "syncing from %lld\n", nut->packet_start[2]+1); |
|
|
|
|