#include "rtpdec_formats.h"
#include "rtsp.h"
#include "asf.h"
+#include "avio_internal.h"
/**
* From MSDN 2.2.1.4, we learn that ASF data packets over RTP should not
static void init_packetizer(AVIOContext *pb, uint8_t *buf, int len)
{
- init_put_byte(pb, buf, len, 0, NULL, packetizer_read, NULL, NULL);
+ ffio_init_context(pb, buf, len, 0, NULL, packetizer_read, NULL, NULL);
/* this "fills" the buffer with its current content */
pb->pos = len;
if (ret < 0)
return ret;
av_metadata_copy(&s->metadata, rt->asf_ctx->metadata, 0);
- rt->asf_pb_pos = url_ftell(&pb);
+ rt->asf_pb_pos = avio_tell(&pb);
av_free(buf);
rt->asf_ctx->pb = NULL;
}
av_freep(&asf->buf);
- init_put_byte(pb, buf, len, 0, NULL, NULL, NULL, NULL);
+ ffio_init_context(pb, buf, len, 0, NULL, NULL, NULL, NULL);
- while (url_ftell(pb) + 4 < len) {
- int start_off = url_ftell(pb);
+ while (avio_tell(pb) + 4 < len) {
+ int start_off = avio_tell(pb);
- mflags = get_byte(pb);
+ mflags = avio_r8(pb);
if (mflags & 0x80)
flags |= RTP_FLAG_KEY;
- len_off = get_be24(pb);
+ len_off = avio_rb24(pb);
if (mflags & 0x20) /**< relative timestamp */
- url_fskip(pb, 4);
+ avio_skip(pb, 4);
if (mflags & 0x10) /**< has duration */
- url_fskip(pb, 4);
+ avio_skip(pb, 4);
if (mflags & 0x8) /**< has location ID */
- url_fskip(pb, 4);
- off = url_ftell(pb);
+ avio_skip(pb, 4);
+ off = avio_tell(pb);
if (!(mflags & 0x40)) {
/**
* ASF packet. This is used to spread one ASF packet over
* multiple RTP packets.
*/
- if (asf->pktbuf && len_off != url_ftell(asf->pktbuf)) {
+ if (asf->pktbuf && len_off != avio_tell(asf->pktbuf)) {
uint8_t *p;
- url_close_dyn_buf(asf->pktbuf, &p);
+ avio_close_dyn_buf(asf->pktbuf, &p);
asf->pktbuf = NULL;
av_free(p);
}
if (!len_off && !asf->pktbuf &&
- (res = url_open_dyn_buf(&asf->pktbuf)) < 0)
+ (res = avio_open_dyn_buf(&asf->pktbuf)) < 0)
return res;
if (!asf->pktbuf)
return AVERROR(EIO);
- put_buffer(asf->pktbuf, buf + off, len - off);
- url_fskip(pb, len - off);
+ avio_write(asf->pktbuf, buf + off, len - off);
+ avio_skip(pb, len - off);
if (!(flags & RTP_FLAG_MARKER))
return -1;
- out_len = url_close_dyn_buf(asf->pktbuf, &asf->buf);
+ out_len = avio_close_dyn_buf(asf->pktbuf, &asf->buf);
asf->pktbuf = NULL;
} else {
/**
asf->buf = av_realloc(asf->buf, out_len);
memcpy(asf->buf + prev_len, buf + off,
FFMIN(cur_len, len - off));
- url_fskip(pb, cur_len);
+ avio_skip(pb, cur_len);
}
}
int i;
res = av_read_packet(rt->asf_ctx, pkt);
- rt->asf_pb_pos = url_ftell(pb);
+ rt->asf_pb_pos = avio_tell(pb);
if (res != 0)
break;
for (i = 0; i < s->nb_streams; i++) {
{
if (asf->pktbuf) {
uint8_t *p = NULL;
- url_close_dyn_buf(asf->pktbuf, &p);
+ avio_close_dyn_buf(asf->pktbuf, &p);
asf->pktbuf = NULL;
av_free(p);
}