diff --git a/libavformat/avio.h b/libavformat/avio.h index 0957d9dbfc..9443cb017b 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -181,6 +181,14 @@ int init_put_byte(ByteIOContext *s, int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), offset_t (*seek)(void *opaque, offset_t offset, int whence)); +ByteIOContext *av_alloc_put_byte( + unsigned char *buffer, + int buffer_size, + int write_flag, + void *opaque, + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), + offset_t (*seek)(void *opaque, offset_t offset, int whence)); void put_byte(ByteIOContext *s, int b); void put_buffer(ByteIOContext *s, const unsigned char *buf, int size); diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 45248a95ab..507003184e 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -60,6 +60,20 @@ int init_put_byte(ByteIOContext *s, return 0; } +ByteIOContext *av_alloc_put_byte( + unsigned char *buffer, + int buffer_size, + int write_flag, + void *opaque, + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), + offset_t (*seek)(void *opaque, offset_t offset, int whence)) { + ByteIOContext *s = av_mallocz(sizeof(ByteIOContext)); + init_put_byte(s, buffer, buffer_size, write_flag, opaque, + read_packet, write_packet, seek); + return s; +} + static void flush_buffer(ByteIOContext *s) { if (s->buf_ptr > s->buffer) {