|
Packit |
971217 |
/* GStreamer
|
|
Packit |
971217 |
* Copyright (C) 2009 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
|
Packit |
971217 |
*
|
|
Packit |
971217 |
* This library is free software; you can redistribute it and/or
|
|
Packit |
971217 |
* modify it under the terms of the GNU Library General Public
|
|
Packit |
971217 |
* License as published by the Free Software Foundation; either
|
|
Packit |
971217 |
* version 2 of the License, or (at your option) any later version.
|
|
Packit |
971217 |
*
|
|
Packit |
971217 |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
971217 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
971217 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
971217 |
* Library General Public License for more details.
|
|
Packit |
971217 |
*
|
|
Packit |
971217 |
* You should have received a copy of the GNU Library General Public
|
|
Packit |
971217 |
* License along with this library; if not, write to the
|
|
Packit |
971217 |
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
|
Packit |
971217 |
* Boston, MA 02110-1301, USA.
|
|
Packit |
971217 |
*/
|
|
Packit |
971217 |
|
|
Packit |
971217 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
971217 |
#include "config.h"
|
|
Packit |
971217 |
#endif
|
|
Packit |
971217 |
|
|
Packit |
971217 |
#include "gstvorbiscommon.h"
|
|
Packit |
971217 |
|
|
Packit |
971217 |
/* http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9 */
|
|
Packit |
971217 |
const GstAudioChannelPosition gst_vorbis_channel_positions[][8] = {
|
|
Packit |
971217 |
{ /* Mono */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_MONO},
|
|
Packit |
971217 |
{ /* Stereo */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT},
|
|
Packit |
971217 |
{ /* Stereo + Centre */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT},
|
|
Packit |
971217 |
{ /* Quadraphonic */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
|
|
Packit |
971217 |
},
|
|
Packit |
971217 |
{ /* Stereo + Centre + rear stereo */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
|
|
Packit |
971217 |
},
|
|
Packit |
971217 |
{ /* Full 5.1 Surround */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_LFE1,
|
|
Packit |
971217 |
},
|
|
Packit |
971217 |
{ /* 6.1 Surround, in Vorbis spec since 2010-01-13 */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_LFE1},
|
|
Packit |
971217 |
{ /* 7.1 Surround, in Vorbis spec since 2010-01-13 */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_LFE1},
|
|
Packit |
971217 |
};
|
|
Packit |
971217 |
|
|
Packit |
971217 |
const GstAudioChannelPosition gst_vorbis_default_channel_positions[][8] = {
|
|
Packit |
971217 |
{ /* Mono */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_MONO},
|
|
Packit |
971217 |
{ /* Stereo */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT},
|
|
Packit |
971217 |
{ /* Stereo + Centre */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER},
|
|
Packit |
971217 |
{ /* Quadraphonic */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
|
|
Packit |
971217 |
},
|
|
Packit |
971217 |
{ /* Stereo + Centre + rear stereo */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
|
|
Packit |
971217 |
},
|
|
Packit |
971217 |
{ /* Full 5.1 Surround */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_LFE1,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
|
|
Packit |
971217 |
},
|
|
Packit |
971217 |
{ /* 6.1 Surround, in Vorbis spec since 2010-01-13 */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_LFE1,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT,
|
|
Packit |
971217 |
},
|
|
Packit |
971217 |
{ /* 7.1 Surround, in Vorbis spec since 2010-01-13 */
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_LFE1,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT,
|
|
Packit |
971217 |
GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT,
|
|
Packit |
971217 |
},
|
|
Packit |
971217 |
};
|
|
Packit |
971217 |
|
|
Packit |
971217 |
#ifndef USE_TREMOLO
|
|
Packit |
971217 |
/* gst[i] = vorbis[reorder_map[i]] */
|
|
Packit |
971217 |
const gint gst_vorbis_reorder_map[][8] = {
|
|
Packit |
971217 |
{0},
|
|
Packit |
971217 |
{0, 1},
|
|
Packit |
971217 |
{0, 2, 1},
|
|
Packit |
971217 |
{0, 1, 2, 3},
|
|
Packit |
971217 |
{0, 2, 1, 3, 4},
|
|
Packit |
971217 |
{0, 2, 1, 5, 3, 4},
|
|
Packit |
971217 |
{0, 2, 1, 6, 5, 3, 4},
|
|
Packit |
971217 |
{0, 2, 1, 7, 5, 6, 3, 4}
|
|
Packit |
971217 |
};
|
|
Packit |
971217 |
#endif
|