gint i;
GstBuffer *buf;
GstFFMpegDec *ffmpegdec = (GstFFMpegDec *) context->opaque;
-
+
g_return_if_fail (buf != NULL);
g_return_if_fail (picture->type == FF_BUFFER_TYPE_USER);
if (buf == ffmpegdec->last_buffer)
ffmpegdec->last_buffer = NULL;
gst_buffer_unref (buf);
-
+
picture->opaque = NULL;
/* zero out the reference in ffmpeg */
"Dropping frame for synctime %" GST_TIME_FORMAT
", expected(next_ts) %" GST_TIME_FORMAT,
GST_TIME_ARGS (ffmpegdec->synctime),
- GST_TIME_ARGS (ffmpegdec->next_ts));
+ GST_TIME_ARGS (ffmpegdec->next_ts));
- if (ffmpegdec->picture->opaque != NULL) {
- outbuf = (GstBuffer *) ffmpegdec->picture->opaque;
- gst_buffer_unref (outbuf);
- }
+ if (ffmpegdec->picture->opaque != NULL) {
+ outbuf = (GstBuffer *) ffmpegdec->picture->opaque;
+ gst_buffer_unref (outbuf);
+ }
have_data = 0;
/* don´t break here! Timestamps are updated below */
GstFFMpegDec *ffmpegdec = (GstFFMpegDec *) GST_OBJECT_PARENT (pad);
GstFFMpegDecClass *oclass =
(GstFFMpegDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
- gboolean unlock = FALSE;
gboolean ret;
GST_DEBUG_OBJECT (ffmpegdec, "Handling %s event",
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_EOS:{
- GST_STREAM_LOCK (pad);
- unlock = TRUE;
-
if (oclass->in_plugin->capabilities & CODEC_CAP_DELAY) {
gint have_data, len, try = 0;
}
break;
}
- case GST_EVENT_TAG:{
- GST_STREAM_LOCK (pad);
- unlock = TRUE;
- break;
- }
case GST_EVENT_FLUSH_STOP:{
- GST_STREAM_LOCK (pad);
- unlock = TRUE;
-
if (ffmpegdec->opened) {
avcodec_flush_buffers (ffmpegdec->context);
}
gdouble rate;
GstFormat fmt;
- GST_STREAM_LOCK (pad);
- unlock = TRUE;
-
gst_event_parse_newsegment (event, NULL, &rate, &fmt, &start, &end,
&base);
if (fmt == GST_FORMAT_TIME) {
ret = gst_pad_event_default (ffmpegdec->sinkpad, event);
- if (unlock)
- GST_STREAM_UNLOCK (pad);
-
return ret;
}