summaryrefslogtreecommitdiff
path: root/libavcodec/cbs_mpeg2_syntax_template.c
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2018-02-11 00:51:33 +0000
committerMark Thompson <sw@jkqxz.net>2018-02-20 22:04:12 +0000
commitce5870a3a8f2b10668ee4f04c2ae0287f66f31b2 (patch)
tree612022db516c9a96d051e9a55c89b503b99d5112 /libavcodec/cbs_mpeg2_syntax_template.c
parent13ca5d34ba5c473211daaae0a101123bcaada3e6 (diff)
downloadffmpeg-ce5870a3a8f2b10668ee4f04c2ae0287f66f31b2.tar.gz
cbs: Refcount all the things!
This makes it easier for users of the CBS API to get alloc/free right - all subelements use the buffer API so that it's clear how to free them. It also allows eliding some redundant copies: the packet -> fragment copy disappears after this change if the input packet is refcounted, and more codec-specific cases are now possible (but not included in this patch).
Diffstat (limited to 'libavcodec/cbs_mpeg2_syntax_template.c')
-rw-r--r--libavcodec/cbs_mpeg2_syntax_template.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libavcodec/cbs_mpeg2_syntax_template.c b/libavcodec/cbs_mpeg2_syntax_template.c
index 4aa1eb3c06..b61fc8bc24 100644
--- a/libavcodec/cbs_mpeg2_syntax_template.c
+++ b/libavcodec/cbs_mpeg2_syntax_template.c
@@ -71,9 +71,10 @@ static int FUNC(user_data)(CodedBitstreamContext *ctx, RWContext *rw,
av_assert0(k % 8 == 0);
current->user_data_length = k /= 8;
if (k > 0) {
- current->user_data = av_malloc(k);
- if (!current->user_data)
+ current->user_data_ref = av_buffer_alloc(k);
+ if (!current->user_data_ref)
return AVERROR(ENOMEM);
+ current->user_data = current->user_data_ref->data;
}
#endif