summaryrefslogtreecommitdiff
path: root/omx/gstomxaudiodec.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-07-13 22:15:18 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-07-13 22:15:44 +0200
commit08385fe94425cb935f22dfa8cb399ac5589cbab0 (patch)
tree9158a65332bab8c765af8400b796ce3d8a786433 /omx/gstomxaudiodec.c
parent03cf0bc9a40c44e35add8c8a139cc0e954d29a6e (diff)
downloadgst-omx-08385fe94425cb935f22dfa8cb399ac5589cbab0.tar.gz
omxaudiodec: Implement setting of fallback channel positions
Diffstat (limited to 'omx/gstomxaudiodec.c')
-rw-r--r--omx/gstomxaudiodec.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/omx/gstomxaudiodec.c b/omx/gstomxaudiodec.c
index ce79013..f894086 100644
--- a/omx/gstomxaudiodec.c
+++ b/omx/gstomxaudiodec.c
@@ -310,6 +310,7 @@ gst_omx_audio_dec_loop (GstOMXAudioDec * self)
OMX_PARAM_PORTDEFINITIONTYPE port_def;
OMX_AUDIO_PARAM_PCMMODETYPE pcm_param;
GstAudioChannelPosition omx_position[OMX_AUDIO_MAXCHANNELS];
+ GstOMXAudioDecClass *klass = GST_OMX_AUDIO_DEC_GET_CLASS (self);
gint i;
GST_DEBUG_OBJECT (self, "Port settings have changed, updating caps");
@@ -398,6 +399,13 @@ gst_omx_audio_dec_loop (GstOMXAudioDec * self)
&& omx_position[0] == GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER)
omx_position[0] = GST_AUDIO_CHANNEL_POSITION_MONO;
+ if (omx_position[0] == GST_AUDIO_CHANNEL_POSITION_NONE
+ && klass->get_channel_positions) {
+ GST_WARNING_OBJECT (self,
+ "Failed to get a valid channel layout, trying fallback");
+ klass->get_channel_positions (self, self->dec_out_port, omx_position);
+ }
+
memcpy (self->position, omx_position, sizeof (omx_position));
gst_audio_channel_positions_to_valid_order (self->position,
pcm_param.nChannels);