audio_date_t end_date;
int i_last_block_size;
+ int i_input_rate;
+
/*
** Channel reordering
*/
/* recommended vorbis channel order for 6 channels */
static const uint32_t pi_6channels_in[] =
-{ AOUT_CHAN_LEFT, AOUT_CHAN_CENTER, AOUT_CHAN_RIGHT,
+{ AOUT_CHAN_LEFT, AOUT_CHAN_CENTER, AOUT_CHAN_RIGHT,
AOUT_CHAN_REARLEFT, AOUT_CHAN_REARRIGHT,AOUT_CHAN_LFE,0 };
/* recommended vorbis channel order for 4 channels */
set_description( _("Vorbis audio encoder") );
set_capability( "encoder", 100 );
#if defined(HAVE_VORBIS_VORBISENC_H)
- set_callbacks( OpenEncoder, CloseEncoder );
+ set_callbacks( OpenEncoder, CloseEncoder );
#endif
add_integer( ENC_CFG_PREFIX "quality", 0, NULL, ENC_QUALITY_TEXT,
p_sys->i_last_block_size = 0;
p_sys->b_packetizer = VLC_FALSE;
p_sys->i_headers = 0;
+ p_sys->i_input_rate = INPUT_RATE_DEFAULT;
/* Take care of vorbis init */
vorbis_info_init( &p_sys->vi );
/* Block to Ogg packet */
oggpacket.packet = (*pp_block)->p_buffer;
oggpacket.bytes = (*pp_block)->i_buffer;
+
+ if( (*pp_block)->i_rate > 0 )
+ p_sys->i_input_rate = (*pp_block)->i_rate;
}
else
{
/* Date management */
p_aout_buffer->start_date = aout_DateGet( &p_sys->end_date );
p_aout_buffer->end_date = aout_DateIncrement( &p_sys->end_date,
- i_samples );
+ i_samples * p_sys->i_input_rate / INPUT_RATE_DEFAULT );
return p_aout_buffer;
}
else
p_block->i_dts = p_block->i_pts = aout_DateGet( &p_sys->end_date );
if( p_sys->i_headers >= 3 )
- p_block->i_length = aout_DateIncrement( &p_sys->end_date, i_samples ) -
- p_block->i_pts;
+ p_block->i_length = aout_DateIncrement( &p_sys->end_date,
+ i_samples * p_sys->i_input_rate / INPUT_RATE_DEFAULT ) -
+ p_block->i_pts;
else
p_block->i_length = 0;
{
if( psz_value && ( *psz_value != '\0' ) )
{
- vlc_meta_SetArtist( p_item->p_meta,
- psz_value );
+ input_item_SetArtist( p_item, psz_value );
input_ItemAddInfo( p_item,
_(VLC_META_INFO_CAT),
_(VLC_META_ARTIST),
{
if( psz_value && ( *psz_value != '\0' ) )
{
- vlc_meta_SetTitle( p_item->p_meta,
- psz_value );
+ input_item_SetTitle( p_item, psz_value );
p_item->psz_name = strdup( psz_value );
}
}
{
if( psz_value && ( *psz_value != '\0' ) )
{
- vlc_meta_SetAlbum( p_item->p_meta,
- psz_value );
+ input_item_SetAlbum( p_item, psz_value );
}
}
else if( !strcasecmp( psz_name, "musicbrainz_trackid" ) )
{
if( psz_value && ( *psz_value != '\0' ) )
{
- vlc_meta_SetTrackID( p_item->p_meta,
- psz_value );
+ input_item_SetTrackID( p_item, psz_value );
}
}
+ else if( !strcasecmp( psz_name, "REPLAYGAIN_TRACK_GAIN" ) ||
+ !strcasecmp( psz_name, "RG_RADIO" ) )
+ {
+ audio_replay_gain_t *r = &p_dec->fmt_out.audio_replay_gain;
+
+ r->pb_gain[AUDIO_REPLAY_GAIN_TRACK] = VLC_TRUE;
+ r->pf_gain[AUDIO_REPLAY_GAIN_TRACK] = atof( psz_value );
+ }
+ else if( !strcasecmp( psz_name, "REPLAYGAIN_TRACK_PEAK" ) ||
+ !strcasecmp( psz_name, "RG_PEAK" ) )
+ {
+ audio_replay_gain_t *r = &p_dec->fmt_out.audio_replay_gain;
+
+ r->pb_peak[AUDIO_REPLAY_GAIN_TRACK] = VLC_TRUE;
+ r->pf_peak[AUDIO_REPLAY_GAIN_TRACK] = atof( psz_value );
+ }
+ else if( !strcasecmp( psz_name, "REPLAYGAIN_ALBUM_GAIN" ) ||
+ !strcasecmp( psz_name, "RG_AUDIOPHILE" ) )
+ {
+ audio_replay_gain_t *r = &p_dec->fmt_out.audio_replay_gain;
+
+ r->pb_gain[AUDIO_REPLAY_GAIN_ALBUM] = VLC_TRUE;
+ r->pf_gain[AUDIO_REPLAY_GAIN_ALBUM] = atof( psz_value );
+ }
+ else if( !strcasecmp( psz_name, "REPLAYGAIN_ALBUM_PEAK" ) )
+ {
+ audio_replay_gain_t *r = &p_dec->fmt_out.audio_replay_gain;
+
+ r->pb_peak[AUDIO_REPLAY_GAIN_ALBUM] = VLC_TRUE;
+ r->pf_peak[AUDIO_REPLAY_GAIN_ALBUM] = atof( psz_value );
+ }
#if 0 //not used
else if( !strcasecmp( psz_name, "musicbrainz_artistid" ) )
{
if( psz_value && ( *psz_value != '\0' ) )
{
- vlc_meta_SetArtistID( p_item->p_meta,
- psz_value );
+ vlc_meta_SetArtistID( p_item, psz_value );
}
}
else if( !strcasecmp( psz_name, "musicbrainz_albumid" ) )
{
if( psz_value && ( *psz_value != '\0' ) )
{
- vlc_meta_SetAlbumID( p_item->p_meta,
- psz_value );
+ input_item_SetAlbumID( p_item, psz_value );
}
}
#endif