summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <[email protected]>2014-04-21 16:56:56 +0200
committerMichael Niedermayer <[email protected]>2014-04-21 16:57:01 +0200
commit260f37ee4d036f61633ccaf03e5d96f448d723ea (patch)
tree4854690c7cea79471f6b0671b438281a84640f5b
parentda32e3c3981983ba8cc40eb3041500ed4d1d7ff8 (diff)
parentd946e4c1bcfb6accd97f6d4cbfa324ef01913c8d (diff)
Merge commit 'd946e4c1bcfb6accd97f6d4cbfa324ef01913c8d' into release/1.1
* commit 'd946e4c1bcfb6accd97f6d4cbfa324ef01913c8d': bytestream: add bytestream2_copy_buffer() functions Merged-by: Michael Niedermayer <[email protected]>
-rw-r--r--libavcodec/bytestream.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/libavcodec/bytestream.h b/libavcodec/bytestream.h
index af7f75bd45..41d68cffaf 100644
--- a/libavcodec/bytestream.h
+++ b/libavcodec/bytestream.h
@@ -325,6 +325,32 @@ static av_always_inline unsigned int bytestream2_get_eof(PutByteContext *p)
return p->eof;
}
+static av_always_inline unsigned int bytestream2_copy_bufferu(PutByteContext *p,
+ GetByteContext *g,
+ unsigned int size)
+{
+ memcpy(p->buffer, g->buffer, size);
+ p->buffer += size;
+ g->buffer += size;
+ return size;
+}
+
+static av_always_inline unsigned int bytestream2_copy_buffer(PutByteContext *p,
+ GetByteContext *g,
+ unsigned int size)
+{
+ int size2;
+
+ if (p->eof)
+ return 0;
+ size = FFMIN(g->buffer_end - g->buffer, size);
+ size2 = FFMIN(p->buffer_end - p->buffer, size);
+ if (size2 != size)
+ p->eof = 1;
+
+ return bytestream2_copy_bufferu(p, g, size2);
+}
+
static av_always_inline unsigned int bytestream_get_buffer(const uint8_t **b,
uint8_t *dst,
unsigned int size)