omxvideodec: Add API for subclasses to prepare/convert frames

This commit is contained in:
Sebastian Dröge 2011-09-29 10:37:32 +02:00
parent febb83ec54
commit bb1dd8aaba
2 changed files with 14 additions and 0 deletions

View file

@ -1134,18 +1134,31 @@ gst_omx_video_dec_handle_frame (GstBaseVideoDecoder * decoder,
{
GstOMXAcquireBufferReturn acq_ret = GST_OMX_ACQUIRE_BUFFER_ERROR;
GstOMXVideoDec *self;
GstOMXVideoDecClass *klass;
GstOMXBuffer *buf;
GstBuffer *codec_data = NULL;
guint offset = 0;
GstClockTime timestamp, duration, timestamp_offset = 0;
self = GST_OMX_VIDEO_DEC (decoder);
klass = GST_OMX_VIDEO_DEC_GET_CLASS (self);
GST_DEBUG_OBJECT (self, "Handling frame");
timestamp = frame->presentation_timestamp;
duration = frame->presentation_duration;
if (klass->prepare_frame) {
GstFlowReturn ret;
ret = klass->prepare_frame (self, frame);
if (ret != GST_FLOW_OK) {
GST_ERROR_OBJECT (self, "Preparing frame failed: %s",
gst_flow_get_name (ret));
return ret;
}
}
while (offset < GST_BUFFER_SIZE (frame->sink_buffer)) {
/* Make sure to release the base class stream lock, otherwise
* _loop() can't call _finish_frame() and we might block forever

View file

@ -77,6 +77,7 @@ struct _GstOMXVideoDecClass
gboolean (*is_format_change) (GstOMXVideoDec * self, GstOMXPort * port, GstVideoState * state);
gboolean (*set_format) (GstOMXVideoDec * self, GstOMXPort * port, GstVideoState * state);
GstFlowReturn (*prepare_frame) (GstOMXVideoDec * self, GstVideoFrame *frame);
};
GType gst_omx_video_dec_get_type (void);