summaryrefslogtreecommitdiff
path: root/libavformat/asf.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2008-12-18 01:25:43 +0000
committerRonald S. Bultje <rsbultje@gmail.com>2008-12-18 01:25:43 +0000
commitd7fb5a18fcf95fa36304b3428628a9cb8d0b5022 (patch)
tree288d5766ca38d96488cf4f423a11aafd1a06e736 /libavformat/asf.c
parent49c084a7451f05219568b246aa17cd8153290a50 (diff)
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
Diffstat (limited to 'libavformat/asf.c')
-rw-r--r--libavformat/asf.c15
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;
}