var_Create (mp, "mute", VLC_VAR_BOOL);
var_Create (mp, "volume", VLC_VAR_FLOAT);
var_Create (mp, "corks", VLC_VAR_INTEGER);
+ var_Create (mp, "audio-filter", VLC_VAR_STRING);
var_Create (mp, "amem-data", VLC_VAR_ADDRESS);
var_Create (mp, "amem-setup", VLC_VAR_ADDRESS);
var_Create (mp, "amem-cleanup", VLC_VAR_ADDRESS);
/* Equalizer */
var_Create (mp, "equalizer-preamp", VLC_VAR_FLOAT);
+ var_Create (mp, "equalizer-vlcfreqs", VLC_VAR_BOOL);
var_Create (mp, "equalizer-bands", VLC_VAR_STRING);
mp->p_md = NULL;
{
libvlc_media_t *p_m;
- lock(p_mi);
+ lock( p_mi );
p_m = p_mi->p_md;
if( p_m )
- libvlc_media_retain( p_mi->p_md );
- unlock(p_mi);
- return p_mi->p_md;
+ libvlc_media_retain( p_m );
+ unlock( p_mi );
+
+ return p_m;
}
/**************************************************************************
var_SetAddress( mp, "amem-drain", drain_cb );
var_SetAddress( mp, "amem-data", opaque );
var_SetString( mp, "aout", "amem,none" );
+
+ input_resource_ResetAout(mp->input.p_resource);
}
void libvlc_audio_set_volume_callback( libvlc_media_player_t *mp,
libvlc_audio_set_volume_cb cb )
{
var_SetAddress( mp, "amem-set-volume", cb );
+
+ input_resource_ResetAout(mp->input.p_resource);
}
void libvlc_audio_set_format_callbacks( libvlc_media_player_t *mp,
{
var_SetAddress( mp, "amem-setup", setup );
var_SetAddress( mp, "amem-cleanup", cleanup );
+
+ input_resource_ResetAout(mp->input.p_resource);
}
void libvlc_audio_set_format( libvlc_media_player_t *mp, const char *format,
var_SetString( mp, "amem-format", format );
var_SetInteger( mp, "amem-rate", rate );
var_SetInteger( mp, "amem-channels", channels );
+
+ input_resource_ResetAout(mp->input.p_resource);
}
}
}
+/**
+ * Private lookup table to get subpicture alignment flag values corresponding
+ * to a libvlc_position_t enumerated value.
+ */
+static const unsigned char position_subpicture_alignment[] = {
+ [libvlc_position_center] = 0,
+ [libvlc_position_left] = SUBPICTURE_ALIGN_LEFT,
+ [libvlc_position_right] = SUBPICTURE_ALIGN_RIGHT,
+ [libvlc_position_top] = SUBPICTURE_ALIGN_TOP,
+ [libvlc_position_top_left] = SUBPICTURE_ALIGN_TOP | SUBPICTURE_ALIGN_LEFT,
+ [libvlc_position_top_right] = SUBPICTURE_ALIGN_TOP | SUBPICTURE_ALIGN_RIGHT,
+ [libvlc_position_bottom] = SUBPICTURE_ALIGN_BOTTOM,
+ [libvlc_position_bottom_left] = SUBPICTURE_ALIGN_BOTTOM | SUBPICTURE_ALIGN_LEFT,
+ [libvlc_position_bottom_right] = SUBPICTURE_ALIGN_BOTTOM | SUBPICTURE_ALIGN_RIGHT
+};
+
void libvlc_media_player_set_video_title_display( libvlc_media_player_t *p_mi, libvlc_position_t position, unsigned timeout )
{
+ assert( position >= libvlc_position_disable && position <= libvlc_position_bottom_right );
+
if ( position != libvlc_position_disable )
{
var_SetBool( p_mi, "video-title-show", true );
- var_SetInteger( p_mi, "video-title-position", position );
+ var_SetInteger( p_mi, "video-title-position", position_subpicture_alignment[position] );
var_SetInteger( p_mi, "video-title-timeout", timeout );
}
else
int libvlc_media_player_set_equalizer( libvlc_media_player_t *p_mi, libvlc_equalizer_t *p_equalizer )
{
- float f_preamp;
- char *psz_bands;
+ char bands[EQZ_BANDS_MAX * EQZ_BAND_VALUE_SIZE + 1];
- if ( p_equalizer )
+ if( p_equalizer != NULL )
{
- f_preamp = p_equalizer->f_preamp;
-
- psz_bands = malloc( EQZ_BANDS_MAX * EQZ_BAND_VALUE_SIZE + 1 );
- if ( unlikely( psz_bands == NULL ) )
- return -1;
-
- char *p = psz_bands;
- int c;
- for ( int i = 0; i < EQZ_BANDS_MAX; i++ )
+ for( unsigned i = 0, c = 0; i < EQZ_BANDS_MAX; i++ )
{
- c = snprintf( p, EQZ_BAND_VALUE_SIZE + 1, " %.07f", p_equalizer->f_amp[i] );
- if ( unlikely( c >= EQZ_BAND_VALUE_SIZE + 1 ) )
- {
- free( psz_bands );
+ c = snprintf( bands + c, sizeof(bands) - c, " %.07f",
+ p_equalizer->f_amp[i] );
+ if( unlikely(c >= sizeof(bands)) )
return -1;
- }
-
- p += c;
}
- }
- else
- {
- f_preamp = 0.f;
- psz_bands = NULL;
- }
- var_SetFloat( p_mi, "equalizer-preamp", f_preamp );
- var_SetString( p_mi, "equalizer-bands", psz_bands );
+ var_SetFloat( p_mi, "equalizer-preamp", p_equalizer->f_preamp );
+ var_SetString( p_mi, "equalizer-bands", bands );
+ }
+ var_SetString( p_mi, "audio-filter", p_equalizer ? "equalizer" : "" );
audio_output_t *p_aout = input_resource_HoldAout( p_mi->input.p_resource );
- if ( p_aout )
+ if( p_aout != NULL )
{
- var_SetFloat( p_aout, "equalizer-preamp", f_preamp );
- var_SetString( p_aout, "equalizer-bands", psz_bands );
+ if( p_equalizer != NULL )
+ {
+ var_SetFloat( p_aout, "equalizer-preamp", p_equalizer->f_preamp );
+ var_SetString( p_aout, "equalizer-bands", bands );
+ }
+ var_SetString( p_mi, "audio-filter", p_equalizer ? "equalizer" : "" );
vlc_object_release( p_aout );
}
- free( psz_bands );
return 0;
}