+ /* change viewport for running vout */
+ vout_Control( p_vout , VOUT_SET_VIEWPORT,
+ view->top, view->left, view->bottom, view->right,
+ clip->top, clip->left, clip->bottom, clip->right );
+ vlc_object_release( p_vout );
+ }
+ libvlc_media_player_release(p_mi);
+ }
+}
+
+char *libvlc_video_get_aspect_ratio( libvlc_media_player_t *p_mi,
+ libvlc_exception_t *p_e )
+{
+ char *psz_aspect = 0;
+ vout_thread_t *p_vout = GetVout( p_mi, p_e );
+
+ if( !p_vout ) return 0;
+
+ psz_aspect = var_GetNonEmptyString( p_vout, "aspect-ratio" );
+ vlc_object_release( p_vout );
+ return psz_aspect ? psz_aspect : strdup("");
+}
+
+void libvlc_video_set_aspect_ratio( libvlc_media_player_t *p_mi,
+ char *psz_aspect, libvlc_exception_t *p_e )
+{
+ vout_thread_t *p_vout = GetVout( p_mi, p_e );
+ int i_ret = -1;
+
+ if( !p_vout ) return;
+
+ i_ret = var_SetString( p_vout, "aspect-ratio", psz_aspect );
+ if( i_ret )
+ libvlc_exception_raise( p_e,
+ "Unexpected error while setting aspect-ratio value" );
+
+ vlc_object_release( p_vout );
+}
+
+int libvlc_video_get_spu( libvlc_media_player_t *p_mi,
+ libvlc_exception_t *p_e )
+{
+ input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e );
+ vlc_value_t val_list;
+ vlc_value_t val;
+ int i_spu = -1;
+ int i_ret = -1;
+ int i;
+
+ if( !p_input_thread ) return -1;
+
+ i_ret = var_Get( p_input_thread, "spu-es", &val );
+ if( i_ret < 0 )
+ {
+ libvlc_exception_raise( p_e, "Getting subtitle information failed" );
+ vlc_object_release( p_input_thread );
+ return i_ret;
+ }
+
+ var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL );
+ for( i = 0; i < val_list.p_list->i_count; i++ )
+ {
+ vlc_value_t spu_val = val_list.p_list->p_values[i];
+ if( val.i_int == spu_val.i_int )
+ {
+ i_spu = i;
+ break;
+ }
+ }
+ vlc_object_release( p_input_thread );
+ return i_spu;
+}
+
+void libvlc_video_set_spu( libvlc_media_player_t *p_mi, int i_spu,
+ libvlc_exception_t *p_e )
+{
+ input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e );
+ vlc_value_t val_list;
+ int i_ret = -1;
+ int i;
+
+ if( !p_input_thread ) return;
+
+ var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL );
+ for( i = 0; i < val_list.p_list->i_count; i++ )
+ {
+ vlc_value_t val = val_list.p_list->p_values[i];
+ if( i_spu == val.i_int )
+ {
+ vlc_value_t new_val;
+
+ new_val.i_int = val.i_int;
+ i_ret = var_Set( p_input_thread, "spu-es", new_val );
+ if( i_ret < 0 )