vlc | branch: master | Laurent Aimar <[email protected]> | Tue Nov 1 14:34:24 2011 +0100| [16aec732663892527bc84f907d9b19fb784d9e1f] | committer: Laurent Aimar
Allowed to use mp2/mp3 to specify layer 2/3 for mpeg audio encoder. It might be better (dunno if it would be simpler) to have a way to specify some kind of profile. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=16aec732663892527bc84f907d9b19fb784d9e1f --- include/vlc_fourcc.h | 2 ++ modules/codec/avcodec/encoder.c | 14 +++++++++++++- modules/codec/shine/shine_mod.c | 4 ++-- modules/codec/twolame.c | 5 ++--- modules/stream_out/transcode/transcode.c | 3 ++- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/include/vlc_fourcc.h b/include/vlc_fourcc.h index 83ad3d3..32e113f 100644 --- a/include/vlc_fourcc.h +++ b/include/vlc_fourcc.h @@ -374,6 +374,8 @@ #define VLC_CODEC_MP1V VLC_FOURCC('m','p','1','v') /* MPEG-2 video */ #define VLC_CODEC_MP2V VLC_FOURCC('m','p','2','v') +/* MPEG-I/II layer 2 audio */ +#define VLC_CODEC_MP2 VLC_FOURCC('m','p','2',' ') /* MPEG-I/II layer 3 audio */ #define VLC_CODEC_MP3 VLC_FOURCC('m','p','3',' ') diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c index d038673..0823369 100644 --- a/modules/codec/avcodec/encoder.c +++ b/modules/codec/avcodec/encoder.c @@ -203,7 +203,19 @@ int OpenEncoder( vlc_object_t *p_this ) char *psz_val; int i_val; - if( !GetFfmpegCodec( p_enc->fmt_out.i_codec, &i_cat, &i_codec_id, + if( p_enc->fmt_out.i_codec == VLC_CODEC_MP3 ) + { + i_cat = AUDIO_ES; + i_codec_id = CODEC_ID_MP3; + psz_namecodec = "MPEG I/II Layer 3"; + } + else if( p_enc->fmt_out.i_codec == VLC_CODEC_MP2 ) + { + i_cat = AUDIO_ES; + i_codec_id = CODEC_ID_MP2; + psz_namecodec = "MPEG I/II Layer 2"; + } + else if( !GetFfmpegCodec( p_enc->fmt_out.i_codec, &i_cat, &i_codec_id, &psz_namecodec ) ) { if( TestFfmpegChroma( -1, p_enc->fmt_out.i_codec ) != VLC_SUCCESS ) diff --git a/modules/codec/shine/shine_mod.c b/modules/codec/shine/shine_mod.c index 37e2e98..54491ec 100644 --- a/modules/codec/shine/shine_mod.c +++ b/modules/codec/shine/shine_mod.c @@ -79,8 +79,8 @@ static int OpenEncoder( vlc_object_t *p_this ) encoder_t *p_enc = (encoder_t*)p_this; encoder_sys_t *p_sys; - /* FIXME: what about layers 1 and 2 ? shine is an 'MP3' encoder */ - if( p_enc->fmt_out.i_codec != VLC_CODEC_MP3 || + /* shine is an 'MP3' encoder */ + if( (p_enc->fmt_out.i_codec != VLC_CODEC_MP3 && p_enc->fmt_out.i_codec != VLC_CODEC_MPGA) || p_enc->fmt_out.audio.i_channels > 2 ) return VLC_EGENERIC; diff --git a/modules/codec/twolame.c b/modules/codec/twolame.c index 91bd55b..440e152 100644 --- a/modules/codec/twolame.c +++ b/modules/codec/twolame.c @@ -130,9 +130,8 @@ static int OpenEncoder( vlc_object_t *p_this ) encoder_sys_t *p_sys; int i_frequency; - if( p_enc->fmt_out.i_codec != VLC_CODEC_MPGA && - p_enc->fmt_out.i_codec != VLC_FOURCC('m','p','2','a') && - p_enc->fmt_out.i_codec != VLC_FOURCC('m','p','2',' ') && + if( p_enc->fmt_out.i_codec != VLC_CODEC_MP2 && + p_enc->fmt_out.i_codec != VLC_CODEC_MPGA && !p_enc->b_force ) { return VLC_EGENERIC; diff --git a/modules/stream_out/transcode/transcode.c b/modules/stream_out/transcode/transcode.c index 8df202a..1c81007 100644 --- a/modules/stream_out/transcode/transcode.c +++ b/modules/stream_out/transcode/transcode.c @@ -299,9 +299,10 @@ static int Open( vlc_object_t *p_this ) if( p_sys->i_acodec ) { if( ( p_sys->i_acodec == VLC_CODEC_MP3 || + p_sys->i_acodec == VLC_CODEC_MP2 || p_sys->i_acodec == VLC_CODEC_MPGA ) && p_sys->i_channels > 2 ) { - msg_Warn( p_stream, "%d channels invalid for mp3, forcing to 2", + msg_Warn( p_stream, "%d channels invalid for mp2/mp3, forcing to 2", p_sys->i_channels ); p_sys->i_channels = 2; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
