summaryrefslogtreecommitdiff
path: root/sys/androidmedia/gstamcvideodec.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2012-10-22 13:21:12 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-10-25 14:05:48 +0200
commit1d9d3c1c302d724a7a2a23e5f29ad4434f850906 (patch)
tree75c064da97dd7b5b5a13f0222b3af7c2b2a2c924 /sys/androidmedia/gstamcvideodec.c
parent079c68e4de878390304da28330c149508448fa6e (diff)
downloadgstreamer-plugins-bad-1d9d3c1c302d724a7a2a23e5f29ad4434f850906.tar.gz
androidmedia: Remember and use input state
Diffstat (limited to 'sys/androidmedia/gstamcvideodec.c')
-rw-r--r--sys/androidmedia/gstamcvideodec.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/androidmedia/gstamcvideodec.c b/sys/androidmedia/gstamcvideodec.c
index e316b34c3..5e702ee75 100644
--- a/sys/androidmedia/gstamcvideodec.c
+++ b/sys/androidmedia/gstamcvideodec.c
@@ -1242,6 +1242,9 @@ gst_amc_video_dec_stop (GstVideoDecoder * decoder)
g_mutex_unlock (self->drain_lock);
g_free (self->codec_data);
self->codec_data_size = 0;
+ if (self->input_state)
+ gst_video_codec_state_unref (self->input_state);
+ self->input_state = NULL;
GST_DEBUG_OBJECT (self, "Stopped decoder");
return TRUE;
}
@@ -1296,6 +1299,9 @@ gst_amc_video_dec_set_format (GstVideoDecoder * decoder,
/* Framerate or something minor changed */
self->input_state_changed = TRUE;
+ if (self->input_state)
+ gst_video_codec_state_unref (self->input_state);
+ self->input_state = gst_video_codec_state_ref (state);
GST_DEBUG_OBJECT (self,
"Already running and caps did not change the format");
return TRUE;
@@ -1317,6 +1323,9 @@ gst_amc_video_dec_set_format (GstVideoDecoder * decoder,
}
}
/* srcpad task is not running at this point */
+ if (self->input_state)
+ gst_video_codec_state_unref (self->input_state);
+ self->input_state = NULL;
g_free (self->codec_data);
self->codec_data = codec_data;
@@ -1366,6 +1375,7 @@ gst_amc_video_dec_set_format (GstVideoDecoder * decoder,
}
self->started = TRUE;
+ self->input_state = gst_video_codec_state_ref (state);
self->input_state_changed = TRUE;
/* Start the srcpad loop again */