diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2008-12-18 01:25:43 +0000 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2008-12-18 01:25:43 +0000 |
commit | d7fb5a18fcf95fa36304b3428628a9cb8d0b5022 (patch) | |
tree | 288d5766ca38d96488cf4f423a11aafd1a06e736 | |
parent | 49c084a7451f05219568b246aa17cd8153290a50 (diff) | |
download | ffmpeg-d7fb5a18fcf95fa36304b3428628a9cb8d0b5022.tar.gz |
Add a ByteIOContext argument to ASF functions that will be shared with the
RTSP stack for RTSP-MS support. This way, they can read input from any given
input source. See discussion in "[PATCH] add gb argument to ASF functions of
interest to MS-RTSP" ML thread.
Originally committed as revision 16204 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/asf.c | 15 |
1 files changed, 6 insertions, 9 deletions
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; } |