From: Julien Isorce Date: Fri, 14 Oct 2016 14:14:14 +0000 (+0100) Subject: video: add gst_video_decoder_allocate_output_frame_with_params X-Git-Tag: 1.19.3~511^2~2580 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3bf893e12aa1161944f4fb1a1da7a1e14af92fdb;p=platform%2Fupstream%2Fgstreamer.git video: add gst_video_decoder_allocate_output_frame_with_params It adds a third argument to pass GstBufferPoolAcquireParams to gst_buffer_pool_acquire_buffer. If a user subclasses GstBufferPoolAcquireParams, this allows to pass an updated param to the underlying buffer pool at each gst_video_decoder_allocate_output_frame_with_params call. https://bugzilla.gnome.org/show_bug.cgi?id=773165 --- diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt index e82050b..81a37d4 100644 --- a/docs/libs/gst-plugins-base-libs-sections.txt +++ b/docs/libs/gst-plugins-base-libs-sections.txt @@ -2876,6 +2876,7 @@ GstVideoDecoderClass gst_video_decoder_add_to_frame gst_video_decoder_allocate_output_buffer gst_video_decoder_allocate_output_frame +gst_video_decoder_allocate_output_frame_full gst_video_decoder_get_allocator gst_video_decoder_get_buffer_pool gst_video_decoder_drop_frame diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c index eb9dd29..4b9209c 100644 --- a/gst-libs/gst/video/gstvideodecoder.c +++ b/gst-libs/gst/video/gstvideodecoder.c @@ -3956,6 +3956,27 @@ GstFlowReturn gst_video_decoder_allocate_output_frame (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) { + return gst_video_decoder_allocate_output_frame_with_params (decoder, frame, + NULL); +} + +/** + * gst_video_decoder_allocate_output_frame_with_params: + * @decoder: a #GstVideoDecoder + * @frame: a #GstVideoCodecFrame + * @params: a #GstBufferPoolAcquireParams + * + * Same as #gst_video_decoder_allocate_output_frame except it allows passing + * #GstBufferPoolAcquireParams to the sub call gst_buffer_pool_acquire_buffer. + * + * Returns: %GST_FLOW_OK if an output buffer could be allocated + * + * Since: 1.12 + */ +GstFlowReturn +gst_video_decoder_allocate_output_frame_with_params (GstVideoDecoder * + decoder, GstVideoCodecFrame * frame, GstBufferPoolAcquireParams * params) +{ GstFlowReturn flow_ret; GstVideoCodecState *state; int num_bytes; @@ -3988,7 +4009,7 @@ gst_video_decoder_allocate_output_frame (GstVideoDecoder * GST_LOG_OBJECT (decoder, "alloc buffer size %d", num_bytes); flow_ret = gst_buffer_pool_acquire_buffer (decoder->priv->pool, - &frame->output_buffer, NULL); + &frame->output_buffer, params); GST_VIDEO_DECODER_STREAM_UNLOCK (decoder); diff --git a/gst-libs/gst/video/gstvideodecoder.h b/gst-libs/gst/video/gstvideodecoder.h index 02e6753..b314c4f 100644 --- a/gst-libs/gst/video/gstvideodecoder.h +++ b/gst-libs/gst/video/gstvideodecoder.h @@ -391,6 +391,9 @@ gsize gst_video_decoder_get_pending_frame_size (GstVideoDecoder *decode GstBuffer *gst_video_decoder_allocate_output_buffer (GstVideoDecoder * decoder); +GstFlowReturn gst_video_decoder_allocate_output_frame_with_params (GstVideoDecoder *decoder, + GstVideoCodecFrame * frame, + GstBufferPoolAcquireParams *params); GstFlowReturn gst_video_decoder_allocate_output_frame (GstVideoDecoder *decoder, GstVideoCodecFrame *frame);