summaryrefslogtreecommitdiff
path: root/libavutil/frame.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2015-11-20 19:47:29 +0100
committerAnton Khirnov <anton@khirnov.net>2016-02-14 21:36:59 +0100
commit89923e418b494e337683442ab896d754bc07341a (patch)
tree37c62ad94c66c63dbe432c7512109984850aceae /libavutil/frame.c
parent721a4efc0545548a241080b53ab480e34f366240 (diff)
lavu: add a framework for handling hwaccel frames
Diffstat (limited to 'libavutil/frame.c')
-rw-r--r--libavutil/frame.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libavutil/frame.c b/libavutil/frame.c
index 15276fee49..542215a16b 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -251,6 +251,14 @@ int av_frame_ref(AVFrame *dst, const AVFrame *src)
}
}
+ if (src->hw_frames_ctx) {
+ dst->hw_frames_ctx = av_buffer_ref(src->hw_frames_ctx);
+ if (!dst->hw_frames_ctx) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+ }
+
/* duplicate extended data */
if (src->extended_data != src->data) {
int ch = av_get_channel_layout_nb_channels(src->channel_layout);
@@ -303,6 +311,9 @@ void av_frame_unref(AVFrame *frame)
for (i = 0; i < frame->nb_extended_buf; i++)
av_buffer_unref(&frame->extended_buf[i]);
av_freep(&frame->extended_buf);
+
+ av_buffer_unref(&frame->hw_frames_ctx);
+
get_frame_defaults(frame);
}