summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-06-28 16:32:02 +0200
committerSebastian Dröge <sebastian@centricular.com>2015-06-28 16:32:02 +0200
commit45ab256e544b299c2e00350789bf51877d3c5cc6 (patch)
tree94f513b528c85dcfb5e43efccf8d9803e9d4dcd9
parent6998d982c7c5b92399d8ad758ed8ea88e397c863 (diff)
av{aud,vid}enc: Create wrapped output buffers with GST_MEMORY_FLAG_READONLY
libav might still have references to the buffers itself and uses a writability system similar to ours based on reference counts.
-rw-r--r--ext/libav/gstavaudenc.c4
-rw-r--r--ext/libav/gstavvidenc.c8
2 files changed, 6 insertions, 6 deletions
diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c
index a11dba7..d5c5263 100644
--- a/ext/libav/gstavaudenc.c
+++ b/ext/libav/gstavaudenc.c
@@ -587,8 +587,8 @@ gst_ffmpegaudenc_encode_audio (GstFFMpegAudEnc * ffmpegaudenc,
GST_LOG_OBJECT (ffmpegaudenc, "pushing size %d", pkt->size);
outbuf =
- gst_buffer_new_wrapped_full (0, pkt->data, pkt->size, 0, pkt->size,
- pkt, gst_ffmpegaudenc_free_avpacket);
+ gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, pkt->data,
+ pkt->size, 0, pkt->size, pkt, gst_ffmpegaudenc_free_avpacket);
codec = ffmpegaudenc->context->codec;
if ((codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE) || !buffer) {
diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c
index 3676eda..185f784 100644
--- a/ext/libav/gstavvidenc.c
+++ b/ext/libav/gstavvidenc.c
@@ -673,8 +673,8 @@ gst_ffmpegvidenc_handle_frame (GstVideoEncoder * encoder,
frame = gst_video_encoder_get_oldest_frame (encoder);
outbuf =
- gst_buffer_new_wrapped_full (0, pkt->data, pkt->size, 0, pkt->size, pkt,
- gst_ffmpegvidenc_free_avpacket);
+ gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, pkt->data,
+ pkt->size, 0, pkt->size, pkt, gst_ffmpegvidenc_free_avpacket);
frame->output_buffer = outbuf;
/* buggy codec may not set coded_frame */
@@ -748,8 +748,8 @@ gst_ffmpegvidenc_flush_buffers (GstFFMpegVidEnc * ffmpegenc, gboolean send)
if (send && have_data) {
outbuf =
- gst_buffer_new_wrapped_full (0, pkt->data, pkt->size, 0, pkt->size,
- pkt->data, gst_ffmpegvidenc_free_avpacket);
+ gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, pkt->data,
+ pkt->size, 0, pkt->size, pkt->data, gst_ffmpegvidenc_free_avpacket);
frame->output_buffer = outbuf;
if (ffmpegenc->context->coded_frame->key_frame)