+ access_sys_t *p_sys = p_access->p_sys;
+ bool *pb_bool;
+ bool b_bool;
+ int64_t *pi_64;
+ int i_int;
+
+ switch( i_query )
+ {
+ /* */
+ case ACCESS_CAN_SEEK:
+ pb_bool = (bool*)va_arg( args, bool* );
+ *pb_bool = p_sys->b_seekable;
+ break;
+
+ case ACCESS_CAN_FASTSEEK:
+ pb_bool = (bool*)va_arg( args, bool* );
+ *pb_bool = false;
+ break;
+
+ case ACCESS_CAN_PAUSE:
+ pb_bool = (bool*)va_arg( args, bool* );
+ *pb_bool = true;
+ break;
+
+ case ACCESS_CAN_CONTROL_PACE:
+ pb_bool = (bool*)va_arg( args, bool* );
+
+#if 0 /* Disable for now until we have a clock synchro algo
+ * which works with something else than MPEG over UDP */
+ *pb_bool = false;
+#endif
+ *pb_bool = true;
+ break;
+
+ /* */
+ case ACCESS_GET_PTS_DELAY:
+ pi_64 = (int64_t*)va_arg( args, int64_t * );
+ *pi_64 = (int64_t)var_GetInteger( p_access, "mms-caching" ) * INT64_C(1000);
+ break;
+
+ case ACCESS_GET_PRIVATE_ID_STATE:
+ i_int = (int)va_arg( args, int );
+ pb_bool = (bool *)va_arg( args, bool * );
+
+ if( i_int < 0 || i_int > 127 )
+ return VLC_EGENERIC;
+ *pb_bool = p_sys->asfh.stream[i_int].i_selected ? true : false;
+ break;
+
+ /* */
+ case ACCESS_SET_PAUSE_STATE:
+ b_bool = (bool)va_arg( args, int );
+ if( b_bool )
+ MMSStop( p_access );
+ else
+ Seek( p_access, p_access->info.i_pos );
+
+ if( p_sys->p_keepalive )
+ {
+ vlc_mutex_lock( &p_sys->p_keepalive->lock );
+ p_sys->p_keepalive->b_paused = b_bool;
+ if( b_bool )
+ vlc_cond_signal( &p_sys->p_keepalive->wait );
+ vlc_mutex_unlock( &p_sys->p_keepalive->lock );
+ }
+ break;
+
+ case ACCESS_GET_TITLE_INFO:
+ case ACCESS_SET_TITLE:
+ case ACCESS_SET_SEEKPOINT:
+ case ACCESS_SET_PRIVATE_ID_STATE:
+ case ACCESS_GET_CONTENT_TYPE:
+ return VLC_EGENERIC;
+
+
+ default:
+ msg_Warn( p_access, "unimplemented query in control" );
+ return VLC_EGENERIC;