BufferIdentification *best_id = NULL;
GST_OBJECT_LOCK (self);
- for (l = self->pending_frames; l; l = l->next) {
+ for (l = GST_BASE_VIDEO_CODEC (self)->frames; l; l = l->next) {
GstVideoFrame *tmp = l->data;
BufferIdentification *id = tmp->coder_hook;
guint64 timestamp, diff;
}
if (best_id) {
- for (l = self->pending_frames; l && l != best_l;) {
+ for (l = GST_BASE_VIDEO_CODEC (self)->frames; l && l != best_l;) {
GstVideoFrame *tmp = l->data;
BufferIdentification *id = tmp->coder_hook;
guint64 diff_ticks, diff_frames;
g_warning ("Too old frame, bug in decoder -- please file a bug");
gst_base_video_decoder_finish_frame (GST_BASE_VIDEO_DECODER (self),
tmp);
- self->pending_frames = g_list_delete_link (self->pending_frames, l);
- l = self->pending_frames;
+ l = GST_BASE_VIDEO_CODEC (self)->frames;
} else {
l = l->next;
}
}
}
- if (best_l)
- self->pending_frames = g_list_delete_link (self->pending_frames, best_l);
GST_OBJECT_UNLOCK (self);
return best;
gst_omx_component_get_state (self->component, 5 * GST_SECOND);
- g_list_free (self->pending_frames);
- self->pending_frames = NULL;
-
gst_buffer_replace (&self->codec_data, NULL);
return ret;
GST_PAD_STREAM_LOCK (GST_BASE_VIDEO_CODEC_SRC_PAD (self));
GST_PAD_STREAM_UNLOCK (GST_BASE_VIDEO_CODEC_SRC_PAD (self));
- g_list_free (self->pending_frames);
- self->pending_frames = NULL;
-
gst_omx_port_set_flushing (self->in_port, FALSE);
gst_omx_port_set_flushing (self->out_port, FALSE);
GST_DEBUG_OBJECT (self, "Handling frame");
- GST_OBJECT_LOCK (self);
- self->pending_frames = g_list_append (self->pending_frames, frame);
- GST_OBJECT_UNLOCK (self);
-
timestamp = frame->presentation_timestamp;
duration = frame->presentation_duration;