/*****************************************************************************
* Preamble
*****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <vlc/vlc.h>
-#include <vlc/decoder.h>
+#include <vlc_aout.h>
+#include <vlc_codec.h>
/*****************************************************************************
* Module descriptor
struct decoder_sys_t
{
- int16_t *p_logtos16; /* used with m/alaw to int16_t */
+ const int16_t *p_logtos16; /* used with m/alaw to int16_t */
audio_date_t end_date;
};
-static int pi_channels_maps[] =
+static const int pi_channels_maps[] =
{
0,
AOUT_CHAN_CENTER,
| AOUT_CHAN_MIDDLELEFT | AOUT_CHAN_MIDDLERIGHT | AOUT_CHAN_LFE
};
-static int16_t ulawtos16[256] =
+static const int16_t ulawtos16[256] =
{
-32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956,
-23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764,
56, 48, 40, 32, 24, 16, 8, 0
};
-static int16_t alawtos16[256] =
+static const int16_t alawtos16[256] =
{
-5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736,
-7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784,
case VLC_FOURCC('s','1','6','b'):
case VLC_FOURCC('s','8',' ',' '):
case VLC_FOURCC('u','8',' ',' '):
+ case VLC_FOURCC('i','n','2','4'): /* Quicktime in24, bigendian int24 */
+ case VLC_FOURCC('4','2','n','i'): /* Quicktime in24, little-endian int24 */
+ case VLC_FOURCC('i','n','3','2'): /* Quicktime in32, bigendian int32 */
break;
default:
if( p_dec->fmt_in.audio.i_channels <= 0 ||
p_dec->fmt_in.audio.i_channels > 8 )
{
- msg_Err( p_dec, "bad channels count (1-8)" );
+ msg_Err( p_dec, "bad channels count (1-8): %i",
+ p_dec->fmt_in.audio.i_channels );
return VLC_EGENERIC;
}
p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec;
p_dec->fmt_in.audio.i_bitspersample = 32;
}
+ else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'i', 'n', '3', '2' ) )
+ {
+ /* FIXME: mplayer uses bigendian for in24 .... but here it works
+ * with little endian ... weird */
+ p_dec->fmt_out.i_codec = VLC_FOURCC( 's', '3', '2', 'l' );
+ p_dec->fmt_in.audio.i_bitspersample = 32;
+ }
else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '2', '4', 'l' ) ||
p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '2', '4', 'b' ) )
{
p_dec->fmt_out.i_codec = p_dec->fmt_in.i_codec;
p_dec->fmt_in.audio.i_bitspersample = 24;
}
+ else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 'i', 'n', '2', '4' ) )
+ {
+ p_dec->fmt_out.i_codec = VLC_FOURCC( 's', '2', '4', 'b' );
+ p_dec->fmt_in.audio.i_bitspersample = 24;
+ }
+ else if( p_dec->fmt_in.i_codec == VLC_FOURCC( '4', '2', 'n', 'i' ) )
+ {
+ p_dec->fmt_out.i_codec = VLC_FOURCC( 's', '2', '4', 'l' );
+ p_dec->fmt_in.audio.i_bitspersample = 24;
+ }
else if( p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '1', '6', 'l' ) ||
p_dec->fmt_in.i_codec == VLC_FOURCC( 's', '1', '6', 'b' ) )
{
else if( p_enc->fmt_out.i_codec == VLC_FOURCC('u','2','4','l') ||
p_enc->fmt_out.i_codec == VLC_FOURCC('u','2','4','b') ||
p_enc->fmt_out.i_codec == VLC_FOURCC('s','2','4','l') ||
- p_enc->fmt_out.i_codec == VLC_FOURCC('s','2','4','b') )
+ p_enc->fmt_out.i_codec == VLC_FOURCC('s','2','4','b') ||
+ p_enc->fmt_out.i_codec == VLC_FOURCC('i','n','2','4') )
{
p_enc->fmt_out.audio.i_bitspersample = 24;
}
p_enc->fmt_out.i_codec == VLC_FOURCC('u','3','2','b') ||
p_enc->fmt_out.i_codec == VLC_FOURCC('s','3','2','l') ||
p_enc->fmt_out.i_codec == VLC_FOURCC('s','3','2','b') ||
+ p_enc->fmt_out.i_codec == VLC_FOURCC('i','n','3','2') ||
p_enc->fmt_out.i_codec == VLC_FOURCC('f','i','3','2') ||
p_enc->fmt_out.i_codec == VLC_FOURCC('f','l','3','2') )
{
p_sys->i_s16tolog = ULAW;
}
+ p_enc->fmt_out.i_bitrate =
+ p_enc->fmt_in.audio.i_channels *
+ p_enc->fmt_in.audio.i_rate *
+ p_enc->fmt_in.audio.i_bitspersample;
+
msg_Dbg( p_enc, "samplerate:%dHz channels:%d bits/sample:%d",
p_enc->fmt_out.audio.i_rate, p_enc->fmt_out.audio.i_channels,
p_enc->fmt_out.audio.i_bitspersample );
*****************************************************************************/
static void EncoderClose ( vlc_object_t *p_this )
{
- return;
+ VLC_UNUSED(p_this);
}
/*****************************************************************************