From efb9892a8576e78d4049b71b3ea68d80d83eb423 Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Sun, 2 May 2010 00:01:06 +0200 Subject: [PATCH] Moved out avcodec SampleFormat -> VLC formats to its own function. (cherry picked manually from commit cc4676bf4ad78c0d0db56cd4eb687478bd2bb190) --- modules/codec/avcodec/audio.c | 38 ++++++++++++++++++++++---------------- modules/codec/avcodec/avcodec.h | 1 + 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c index 0aaacee66d..b303fef5f3 100644 --- a/modules/codec/avcodec/audio.c +++ b/modules/codec/avcodec/audio.c @@ -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) diff --git a/modules/codec/avcodec/avcodec.h b/modules/codec/avcodec/avcodec.h index 3cfc0d7dd7..b14b9572e0 100644 --- a/modules/codec/avcodec/avcodec.h +++ b/modules/codec/avcodec/avcodec.h @@ -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 ** ); -- 2.11.4.GIT