diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt index 87d5d83d68..f0b17b9173 100644 --- a/docs/libs/gst-plugins-base-libs-sections.txt +++ b/docs/libs/gst-plugins-base-libs-sections.txt @@ -2541,6 +2541,7 @@ gst_video_decoder_get_max_decode_time gst_video_decoder_get_max_errors gst_video_decoder_get_oldest_frame gst_video_decoder_get_packetized +gst_video_decoder_get_pending_frame_size gst_video_decoder_get_qos_proportion gst_video_decoder_have_frame gst_video_decoder_get_latency diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c index d3370a7b3d..78558163da 100644 --- a/gst-libs/gst/video/gstvideodecoder.c +++ b/gst-libs/gst/video/gstvideodecoder.c @@ -2766,6 +2766,33 @@ gst_video_decoder_add_to_frame (GstVideoDecoder * decoder, int n_bytes) GST_VIDEO_DECODER_STREAM_UNLOCK (decoder); } +/** + * gst_video_decoder_get_pending_frame_size: + * @decoder: a #GstVideoDecoder + * + * Returns the number of bytes previously added to the current frame + * by calling gst_video_decoder_add_to_frame(). + * + * Returns: The number of bytes pending for the current frame + * + * Since: 1.4 + */ +gsize +gst_video_decoder_get_pending_frame_size (GstVideoDecoder * decoder) +{ + GstVideoDecoderPrivate *priv = decoder->priv; + gsize ret; + + GST_VIDEO_DECODER_STREAM_LOCK (decoder); + ret = gst_adapter_available (priv->output_adapter); + GST_VIDEO_DECODER_STREAM_UNLOCK (decoder); + + GST_LOG_OBJECT (decoder, "Current pending frame has %" G_GSIZE_FORMAT "bytes", + ret); + + return ret; +} + static guint64 gst_video_decoder_get_frame_duration (GstVideoDecoder * decoder, GstVideoCodecFrame * frame) diff --git a/gst-libs/gst/video/gstvideodecoder.h b/gst-libs/gst/video/gstvideodecoder.h index a08dc7e808..f3724b320c 100644 --- a/gst-libs/gst/video/gstvideodecoder.h +++ b/gst-libs/gst/video/gstvideodecoder.h @@ -363,6 +363,7 @@ GList * gst_video_decoder_get_frames (GstVideoDecoder *decoder void gst_video_decoder_add_to_frame (GstVideoDecoder *decoder, int n_bytes); GstFlowReturn gst_video_decoder_have_frame (GstVideoDecoder *decoder); +gsize gst_video_decoder_get_pending_frame_size (GstVideoDecoder *decoder); GstBuffer *gst_video_decoder_allocate_output_buffer (GstVideoDecoder * decoder); diff --git a/win32/common/libgstvideo.def b/win32/common/libgstvideo.def index 3a82e46614..cdb6e9f7fa 100644 --- a/win32/common/libgstvideo.def +++ b/win32/common/libgstvideo.def @@ -99,6 +99,7 @@ EXPORTS gst_video_decoder_get_oldest_frame gst_video_decoder_get_output_state gst_video_decoder_get_packetized + gst_video_decoder_get_pending_frame_size gst_video_decoder_get_qos_proportion gst_video_decoder_get_type gst_video_decoder_have_frame