diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-07-13 22:15:18 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-07-13 22:15:44 +0200 |
commit | 08385fe94425cb935f22dfa8cb399ac5589cbab0 (patch) | |
tree | 9158a65332bab8c765af8400b796ce3d8a786433 /omx/gstomxaudiodec.c | |
parent | 03cf0bc9a40c44e35add8c8a139cc0e954d29a6e (diff) | |
download | gst-omx-08385fe94425cb935f22dfa8cb399ac5589cbab0.tar.gz |
omxaudiodec: Implement setting of fallback channel positions
Diffstat (limited to 'omx/gstomxaudiodec.c')
-rw-r--r-- | omx/gstomxaudiodec.c | 8 |
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); |