Mercurial > libavformat.hg
changeset 4120:a22587bda6cf libavformat
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.
author | rbultje |
---|---|
date | Thu, 18 Dec 2008 01:25:43 +0000 |
parents | a2cc7cc40810 |
children | 55e94f2a8ac1 |
files | asf.c |
diffstat | 1 files changed, 6 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/asf.c Wed Dec 17 11:22:51 2008 +0000 +++ b/asf.c Thu Dec 18 01:25:43 2008 +0000 @@ -559,10 +559,9 @@ * * @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 @@ * * @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 @@ * @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 @@ 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 @@ 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; }