X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fcodec%2Fmpeg_audio.c;h=9c8a5d2db54fe0828944831805c3cf64285def7f;hb=248e6e1a202788c837b1a4376fb2212074c07f3a;hp=0e3e2a301cfc24e847ad61082c8ab6db94929184;hpb=ff5c0f9d7c674637849a3f2d74666af671a1b28f;p=vlc diff --git a/modules/codec/mpeg_audio.c b/modules/codec/mpeg_audio.c index 0e3e2a301c..9c8a5d2db5 100644 --- a/modules/codec/mpeg_audio.c +++ b/modules/codec/mpeg_audio.c @@ -2,12 +2,12 @@ * mpeg_audio.c: parse MPEG audio sync info and packetize the stream ***************************************************************************** * Copyright (C) 2001-2003 VideoLAN - * $Id: mpeg_audio.c,v 1.27 2004/03/02 16:44:21 hartman Exp $ + * $Id$ * * Authors: Laurent Aimar * Eric Petit * Christophe Massiot - * Gildas Bazin + * Gildas Bazin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -104,8 +104,10 @@ static int SyncInfo( uint32_t i_header, unsigned int * pi_channels, *****************************************************************************/ vlc_module_begin(); set_description( _("MPEG audio layer I/II/III parser") ); -#if defined(SYS_DARWIN) - set_capability( "decoder", 5 ); + set_category( CAT_INPUT ); + set_subcategory( SUBCAT_INPUT_ACODEC ); +#if defined(SYS_DARWIN) || defined(UNDER_CE) + set_capability( "decoder", 5 ); #else set_capability( "decoder", 100 ); #endif @@ -130,6 +132,13 @@ static int OpenDecoder( vlc_object_t *p_this ) return VLC_EGENERIC; } + /* HACK: Don't use this codec if we don't have an mpga audio filter */ + if( p_dec->i_object_type == VLC_OBJECT_DECODER && + !config_FindModule( p_this, "mpgatofixed32" ) ) + { + return VLC_EGENERIC; + } + /* Allocate the memory needed to store the decoder's structure */ if( ( p_dec->p_sys = p_sys = (decoder_sys_t *)malloc(sizeof(decoder_sys_t)) ) == NULL ) @@ -147,6 +156,7 @@ static int OpenDecoder( vlc_object_t *p_this ) /* Set output properties */ p_dec->fmt_out.i_cat = AUDIO_ES; p_dec->fmt_out.i_codec = VLC_FOURCC('m','p','g','a'); + p_dec->fmt_out.audio.i_rate = 0; /* So end_date gets initialized */ /* Set callback */ p_dec->pf_decode_audio = (aout_buffer_t *(*)(decoder_t *, block_t **)) @@ -193,7 +203,7 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block ) return NULL; } - if( (*pp_block)->i_flags&BLOCK_FLAG_DISCONTINUITY ) + if( (*pp_block)->i_flags&(BLOCK_FLAG_DISCONTINUITY|BLOCK_FLAG_CORRUPTED) ) { p_sys->i_state = STATE_NOSYNC; } @@ -463,7 +473,7 @@ static uint8_t *GetOutBuffer( decoder_t *p_dec, void **pp_out_buffer ) if( p_dec->fmt_out.audio.i_rate != p_sys->i_rate ) { - msg_Info( p_dec, "MPGA channels:%d samplerate:%d bitrate:%d", + msg_Dbg( p_dec, "MPGA channels:%d samplerate:%d bitrate:%d", p_sys->i_channels, p_sys->i_rate, p_sys->i_bit_rate ); aout_DateInit( &p_sys->end_date, p_sys->i_rate ); @@ -480,7 +490,7 @@ static uint8_t *GetOutBuffer( decoder_t *p_dec, void **pp_out_buffer ) p_dec->fmt_out.audio.i_physical_channels = p_sys->i_channels_conf & AOUT_CHAN_PHYSMASK; - p_dec->fmt_out.i_bitrate = p_sys->i_bit_rate; + p_dec->fmt_out.i_bitrate = p_sys->i_bit_rate * 1000; if( p_sys->b_packetizer ) {