diff --git a/libavformat/asf.c b/libavformat/asf.c index 18eafdedbe..5ff54c782f 100644 --- a/libavformat/asf.c +++ b/libavformat/asf.c @@ -559,10 +559,9 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) * * @return <0 in case of an error */ -static int asf_get_packet(AVFormatContext *s) +static int asf_get_packet(AVFormatContext *s, ByteIOContext *pb) { ASFContext *asf = s->priv_data; - ByteIOContext *pb = s->pb; uint32_t packet_length, padsize; int rsize = 8; int c, d, e, off; @@ -634,9 +633,8 @@ static int asf_get_packet(AVFormatContext *s) * * @return <0 if error */ -static int asf_read_frame_header(AVFormatContext *s){ +static int asf_read_frame_header(AVFormatContext *s, ByteIOContext *pb){ ASFContext *asf = s->priv_data; - ByteIOContext *pb = s->pb; int rsize = 1; int num = get_byte(pb); int64_t ts0, ts1; @@ -711,11 +709,10 @@ static int asf_read_frame_header(AVFormatContext *s){ * @returns 0 if data was stored in pkt, <0 on error or 1 if more ASF * packets need to be loaded (through asf_get_packet()) */ -static int asf_parse_packet(AVFormatContext *s, AVPacket *pkt) +static int asf_parse_packet(AVFormatContext *s, ByteIOContext *pb, AVPacket *pkt) { ASFContext *asf = s->priv_data; ASFStream *asf_st = 0; - ByteIOContext *pb = s->pb; for (;;) { if(url_feof(pb)) return AVERROR(EIO); @@ -735,7 +732,7 @@ static int asf_parse_packet(AVFormatContext *s, AVPacket *pkt) return 1; } if (asf->packet_time_start == 0) { - if(asf_read_frame_header(s) < 0){ + if(asf_read_frame_header(s, s->pb) < 0){ asf->packet_segments= 0; continue; } @@ -887,9 +884,9 @@ static int asf_read_packet(AVFormatContext *s, AVPacket *pkt) int ret; /* parse cached packets, if any */ - if ((ret = asf_parse_packet(s, pkt)) <= 0) + if ((ret = asf_parse_packet(s, s->pb, pkt)) <= 0) return ret; - if ((ret = asf_get_packet(s)) < 0) + if ((ret = asf_get_packet(s, s->pb)) < 0) assert(asf->packet_size_left < FRAME_HEADER_SIZE || asf->packet_segments < 1); asf->packet_time_start = 0; }