[vlc-commits] avcodec: move audio-specific code to audio.c
Rémi Denis-Courmont
git at videolan.org
Thu Sep 11 21:19:16 CEST 2014
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Sep 11 22:04:15 2014 +0300| [c779bd781c9484941139bcde0fb3cc741389c62f] | committer: Rémi Denis-Courmont
avcodec: move audio-specific code to audio.c
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c779bd781c9484941139bcde0fb3cc741389c62f
---
modules/codec/avcodec/audio.c | 38 ++++++++++++++++++++++++++++++++++----
modules/codec/avcodec/avcodec.c | 27 ---------------------------
2 files changed, 34 insertions(+), 31 deletions(-)
diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
index 254c06d..75957ac 100644
--- a/modules/codec/avcodec/audio.c
+++ b/modules/codec/avcodec/audio.c
@@ -115,6 +115,38 @@ static void InitDecoderConfig( decoder_t *p_dec, AVCodecContext *p_context )
}
}
+static int OpenAudioCodec( decoder_t *p_dec )
+{
+ decoder_sys_t *p_sys = p_dec->p_sys;
+
+ if( p_sys->p_context->extradata_size <= 0 )
+ {
+ if( p_sys->i_codec_id == AV_CODEC_ID_VORBIS ||
+ ( p_sys->i_codec_id == AV_CODEC_ID_AAC &&
+ !p_dec->fmt_in.b_packetized ) )
+ {
+ msg_Warn( p_dec, "waiting for extra data for codec %s",
+ p_sys->psz_namecodec );
+ return 1;
+ }
+ }
+
+ p_sys->p_context->sample_rate = p_dec->fmt_in.audio.i_rate;
+ p_sys->p_context->channels = p_dec->fmt_in.audio.i_channels;
+ p_sys->p_context->block_align = p_dec->fmt_in.audio.i_blockalign;
+ p_sys->p_context->bit_rate = p_dec->fmt_in.i_bitrate;
+ p_sys->p_context->bits_per_coded_sample =
+ p_dec->fmt_in.audio.i_bitspersample;
+
+ if( p_sys->i_codec_id == AV_CODEC_ID_ADPCM_G726 &&
+ p_sys->p_context->bit_rate > 0 &&
+ p_sys->p_context->sample_rate > 0)
+ p_sys->p_context->bits_per_coded_sample = p_sys->p_context->bit_rate
+ / p_sys->p_context->sample_rate;
+
+ return ffmpeg_OpenCodec( p_dec );
+}
+
/**
* Allocates decoded audio buffer for libavcodec to use.
*/
@@ -231,9 +263,8 @@ int InitAudioDec( decoder_t *p_dec, AVCodecContext *p_context,
InitDecoderConfig( p_dec, p_context);
/* ***** Open the codec ***** */
- if( ffmpeg_OpenCodec( p_dec ) < 0 )
+ if( OpenAudioCodec( p_dec ) < 0 )
{
- msg_Err( p_dec, "cannot open codec (%s)", p_sys->psz_namecodec );
av_free( p_sys->p_context->extradata );
free( p_sys );
return VLC_EGENERIC;
@@ -274,8 +305,7 @@ block_t * DecodeAudio ( decoder_t *p_dec, block_t **pp_block )
if( !ctx->extradata_size && p_dec->fmt_in.i_extra && p_sys->b_delayed_open)
{
InitDecoderConfig( p_dec, ctx );
- if( ffmpeg_OpenCodec( p_dec ) )
- msg_Err( p_dec, "Cannot open decoder %s", p_sys->psz_namecodec );
+ OpenAudioCodec( p_dec );
}
if( p_sys->b_delayed_open )
diff --git a/modules/codec/avcodec/avcodec.c b/modules/codec/avcodec/avcodec.c
index fd43240..bc5ece0 100644
--- a/modules/codec/avcodec/avcodec.c
+++ b/modules/codec/avcodec/avcodec.c
@@ -368,33 +368,6 @@ static void CloseDecoder( vlc_object_t *p_this )
int ffmpeg_OpenCodec( decoder_t *p_dec )
{
decoder_sys_t *p_sys = p_dec->p_sys;
-
- if( p_sys->p_context->extradata_size <= 0 )
- {
- if( p_sys->i_codec_id == AV_CODEC_ID_VORBIS ||
- ( p_sys->i_codec_id == AV_CODEC_ID_AAC &&
- !p_dec->fmt_in.b_packetized ) )
- {
- msg_Warn( p_dec, "waiting for extra data for codec %s",
- p_sys->psz_namecodec );
- return 1;
- }
- }
- if( p_dec->fmt_in.i_cat == AUDIO_ES )
- {
- p_sys->p_context->sample_rate = p_dec->fmt_in.audio.i_rate;
- p_sys->p_context->channels = p_dec->fmt_in.audio.i_channels;
-
- p_sys->p_context->block_align = p_dec->fmt_in.audio.i_blockalign;
- p_sys->p_context->bit_rate = p_dec->fmt_in.i_bitrate;
- p_sys->p_context->bits_per_coded_sample = p_dec->fmt_in.audio.i_bitspersample;
- if( p_sys->i_codec_id == AV_CODEC_ID_ADPCM_G726 &&
- p_sys->p_context->bit_rate > 0 &&
- p_sys->p_context->sample_rate > 0)
- p_sys->p_context->bits_per_coded_sample = p_sys->p_context->bit_rate /
- p_sys->p_context->sample_rate;
- }
-
char *psz_opts = var_InheritString( p_dec, "avcodec-options" );
AVDictionary *options = NULL;
int ret;
More information about the vlc-commits
mailing list