/*****************************************************************************
* twolame.c: libtwolame encoder (MPEG-1/2 layer II) module
- * (using libtwolame from http://users.tpg.com.au/adslblvi/)
+ * (using libtwolame from http://www.twolame.org/)
*****************************************************************************
* Copyright (C) 2004-2005 the VideoLAN team
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
+ * 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_codec.h>
-#include <vlc_sout.h>
-#include <vlc_aout.h>
#include <twolame.h>
set_category( CAT_INPUT )
set_subcategory( SUBCAT_INPUT_ACODEC )
- add_float( ENC_CFG_PREFIX "quality", 0.0, NULL, ENC_QUALITY_TEXT,
+ add_float( ENC_CFG_PREFIX "quality", 0.0, ENC_QUALITY_TEXT,
ENC_QUALITY_LONGTEXT, false )
- add_integer( ENC_CFG_PREFIX "mode", 0, NULL, ENC_MODE_TEXT,
+ add_integer( ENC_CFG_PREFIX "mode", 0, ENC_MODE_TEXT,
ENC_MODE_LONGTEXT, false )
- change_integer_list( pi_stereo_values, ppsz_stereo_descriptions, NULL );
- add_bool( ENC_CFG_PREFIX "vbr", 0, NULL, ENC_VBR_TEXT,
+ change_integer_list( pi_stereo_values, ppsz_stereo_descriptions );
+ add_bool( ENC_CFG_PREFIX "vbr", false, ENC_VBR_TEXT,
ENC_VBR_LONGTEXT, false )
- add_integer( ENC_CFG_PREFIX "psy", 3, NULL, ENC_PSY_TEXT,
+ add_integer( ENC_CFG_PREFIX "psy", 3, ENC_PSY_TEXT,
ENC_PSY_LONGTEXT, false )
vlc_module_end ()
{
encoder_t *p_enc = (encoder_t *)p_this;
encoder_sys_t *p_sys;
- vlc_value_t val;
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;
twolame_set_in_samplerate( p_sys->p_twolame, p_enc->fmt_out.audio.i_rate );
twolame_set_out_samplerate( p_sys->p_twolame, p_enc->fmt_out.audio.i_rate );
- var_Get( p_enc, ENC_CFG_PREFIX "vbr", &val );
- if ( val.b_bool )
+ if( var_GetBool( p_enc, ENC_CFG_PREFIX "vbr" ) )
{
- float i_quality;
- var_Get( p_enc, ENC_CFG_PREFIX "quality", &val );
- i_quality = val.i_int;
- if ( i_quality > 50.0 ) i_quality = 50.0;
- if ( i_quality < 0.0 ) i_quality = 0.0;
+ float f_quality = var_GetFloat( p_enc, ENC_CFG_PREFIX "quality" );
+ if ( f_quality > 50.0 ) f_quality = 50.0;
+ if ( f_quality < 0.0 ) f_quality = 0.0;
twolame_set_VBR( p_sys->p_twolame, 1 );
- twolame_set_VBR_q( p_sys->p_twolame, i_quality );
+ twolame_set_VBR_q( p_sys->p_twolame, f_quality );
}
else
{
else
{
twolame_set_num_channels( p_sys->p_twolame, 2 );
- var_Get( p_enc, ENC_CFG_PREFIX "mode", &val );
- switch ( val.i_int )
+ switch( var_GetInteger( p_enc, ENC_CFG_PREFIX "mode" ) )
{
case 1:
twolame_set_mode( p_sys->p_twolame, TWOLAME_DUAL_CHANNEL );
}
}
- var_Get( p_enc, ENC_CFG_PREFIX "psy", &val );
- twolame_set_psymodel( p_sys->p_twolame, val.i_int );
+ twolame_set_psymodel( p_sys->p_twolame,
+ var_GetInteger( p_enc, ENC_CFG_PREFIX "psy" ) );
if ( twolame_init_params( p_sys->p_twolame ) )
{
int i_nb_samples = p_aout_buf->i_nb_samples;
block_t *p_chain = NULL;
- p_sys->i_pts = p_aout_buf->start_date -
+ p_sys->i_pts = p_aout_buf->i_pts -
(mtime_t)1000000 * (mtime_t)p_sys->i_nb_samples /
(mtime_t)p_enc->fmt_out.audio.i_rate;