diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-10-22 13:21:12 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-10-25 14:05:48 +0200 |
commit | 1d9d3c1c302d724a7a2a23e5f29ad4434f850906 (patch) | |
tree | 75c064da97dd7b5b5a13f0222b3af7c2b2a2c924 /sys/androidmedia/gstamcvideodec.c | |
parent | 079c68e4de878390304da28330c149508448fa6e (diff) | |
download | gstreamer-plugins-bad-1d9d3c1c302d724a7a2a23e5f29ad4434f850906.tar.gz |
androidmedia: Remember and use input state
Diffstat (limited to 'sys/androidmedia/gstamcvideodec.c')
-rw-r--r-- | sys/androidmedia/gstamcvideodec.c | 10 |
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 */ |