Commit efb9892a authored by Laurent Aimar's avatar Laurent Aimar Committed by Jean-Baptiste Kempf

Moved out avcodec SampleFormat -> VLC formats to its own function.

(cherry picked manually from commit cc4676bf)
parent b6082c50
......@@ -469,41 +469,47 @@ static const uint64_t pi_channels_map[][2] =
};
#endif
static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
void GetVlcAudioFormat( vlc_fourcc_t *pi_codec, unsigned *pi_bits, int i_sample_fmt )
{
decoder_sys_t *p_sys = p_dec->p_sys;
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 65, 0 )
switch( p_sys->p_context->sample_fmt )
switch( i_sample_fmt )
{
case SAMPLE_FMT_U8:
p_dec->fmt_out.i_codec = VLC_CODEC_U8;
p_dec->fmt_out.audio.i_bitspersample = 8;
*pi_codec = VLC_CODEC_U8;
*pi_bits = 8;
break;
case SAMPLE_FMT_S32:
p_dec->fmt_out.i_codec = VLC_CODEC_S32N;
p_dec->fmt_out.audio.i_bitspersample = 32;
*pi_codec = VLC_CODEC_S32N;
*pi_bits = 32;
break;
case SAMPLE_FMT_FLT:
p_dec->fmt_out.i_codec = VLC_CODEC_FL32;
p_dec->fmt_out.audio.i_bitspersample = 32;
*pi_codec = VLC_CODEC_FL32;
*pi_bits = 32;
break;
case SAMPLE_FMT_DBL:
p_dec->fmt_out.i_codec = VLC_CODEC_FL64;
p_dec->fmt_out.audio.i_bitspersample = 64;
*pi_codec = VLC_CODEC_FL64;
*pi_bits = 64;
break;
case SAMPLE_FMT_S16:
default:
p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
p_dec->fmt_out.audio.i_bitspersample = 16;
*pi_codec = VLC_CODEC_S16N;
*pi_bits = 16;
break;
}
}
static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
{
decoder_sys_t *p_sys = p_dec->p_sys;
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 51, 65, 0 )
GetVlcAudioFormat( &p_dec->fmt_out.i_codec,
&p_dec->fmt_out.audio.i_bitspersample,
p_sys->p_context->sample_fmt );
#else
p_dec->fmt_out.i_codec = VLC_CODEC_S16N;
p_dec->fmt_out.audio.i_bitspersample = 16;
#endif
p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate;
p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate;
/* */
#if defined(LIBAVCODEC_AUDIO_LAYOUT)
......
......@@ -29,6 +29,7 @@ int GetVlcFourcc( int i_ffmpeg_codec, int *pi_cat,
int TestFfmpegChroma( const int i_ffmpeg_id, const vlc_fourcc_t i_vlc_fourcc );
int GetFfmpegChroma( int *i_ffmpeg_chroma, const video_format_t fmt );
int GetVlcChroma( video_format_t *fmt, const int i_ffmpeg_chroma );
void GetVlcAudioFormat( vlc_fourcc_t *, unsigned *pi_bits, int i_sample_fmt );
picture_t * DecodeVideo ( decoder_t *, block_t ** );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment