summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/avio.h8
-rw-r--r--libavformat/aviobuf.c14
2 files changed, 22 insertions, 0 deletions
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) {