static ssize_t Write( sout_access_out_t *, block_t * );
static int Seek ( sout_access_out_t *, off_t );
static ssize_t Read ( sout_access_out_t *, block_t * );
+static int Control( sout_access_out_t *, int, va_list );
struct sout_access_out_sys_t
{
p_access->pf_write = Write;
p_access->pf_read = Read;
p_access->pf_seek = Seek;
+ p_access->pf_control = Control;
p_access->p_sys = (void *)(intptr_t)fd;
msg_Dbg( p_access, "file access output opened (%s)", p_access->psz_path );
if (append)
lseek (fd, 0, SEEK_END);
- /* Update pace control flag */
- if( p_access->psz_access && !strcmp( p_access->psz_access, "stream" ) )
- p_access->p_sout->i_out_pace_nocontrol++;
-
return VLC_SUCCESS;
}
close( (intptr_t)p_access->p_sys );
- /* Update pace control flag */
- if( p_access->psz_access && !strcmp( p_access->psz_access, "stream" ) )
- p_access->p_sout->i_out_pace_nocontrol--;
-
msg_Dbg( p_access, "file access output closed" );
}
+static int Control( sout_access_out_t *p_access, int i_query, va_list args )
+{
+ switch( i_query )
+ {
+ case ACCESS_OUT_CONTROLS_PACE:
+ {
+ bool *pb = va_arg( args, bool * );
+ *pb = strcmp( p_access->psz_access, "stream" );
+ break;
+ }
+
+ default:
+ return VLC_EGENERIC;
+ }
+ return VLC_SUCCESS;
+}
+
/*****************************************************************************
* Read: standard read on a file descriptor.
*****************************************************************************/
static ssize_t Write( sout_access_out_t *, block_t * );
static int Seek ( sout_access_out_t *, off_t );
+static int Control( sout_access_out_t *, int, va_list );
struct sout_access_out_sys_t
{
p_access->pf_write = Write;
p_access->pf_seek = Seek;
-
-
- /* update p_sout->i_out_pace_nocontrol */
- p_access->p_sout->i_out_pace_nocontrol++;
+ p_access->pf_control = Control;
return VLC_SUCCESS;
}
bonjour_stop_service( p_sys->p_bonjour );
#endif
- /* update p_sout->i_out_pace_nocontrol */
- p_access->p_sout->i_out_pace_nocontrol--;
-
httpd_StreamDelete( p_sys->p_httpd_stream );
httpd_HostDelete( p_sys->p_httpd_host );
free( p_sys );
}
+static int Control( sout_access_out_t *p_access, int i_query, va_list args )
+{
+ (void)p_access;
+
+ switch( i_query )
+ {
+ case ACCESS_OUT_CONTROLS_PACE:
+ *va_arg( args, bool * ) = false;
+ break;
+
+ default:
+ return VLC_EGENERIC;
+ }
+ return VLC_SUCCESS;
+}
+
/*****************************************************************************
* Write:
*****************************************************************************/
*****************************************************************************/
static ssize_t Write( sout_access_out_t *, block_t * );
static int Seek ( sout_access_out_t *, off_t );
+static int Control( sout_access_out_t *, int, va_list );
struct sout_access_out_sys_t
{
p_access->pf_write = Write;
p_access->pf_seek = Seek;
+ p_access->pf_control = Control;
msg_Dbg( p_access, "shout access output opened (%s@%s:%i/%s)",
psz_user, psz_host, i_port, psz_mount );
msg_Dbg( p_access, "shout access output closed" );
}
+static int Control( sout_access_out_t *p_access, int i_query, va_list args )
+{
+ switch( i_query )
+ {
+ case ACCESS_OUT_CONTROLS_PACE:
+ {
+ bool *pb = va_arg( args, bool * );
+ *pb = strcmp( p_access->psz_access, "stream" );
+ break;
+ }
+
+ default:
+ return VLC_EGENERIC;
+ }
+ return VLC_SUCCESS;
+}
+
/*****************************************************************************
* Write: standard write
*****************************************************************************/
static ssize_t Write ( sout_access_out_t *, block_t * );
static int Seek ( sout_access_out_t *, off_t );
+static int Control( sout_access_out_t *, int, va_list );
static void* ThreadWrite( vlc_object_t * );
static block_t *NewUDPPacket( sout_access_out_t *, mtime_t );
p_access->pf_write = Write;
p_access->pf_seek = Seek;
-
- /* update p_sout->i_out_pace_nocontrol */
- p_access->p_sout->i_out_pace_nocontrol++;
+ p_access->pf_control = Control;
return VLC_SUCCESS;
}
vlc_object_detach( p_sys->p_thread );
vlc_object_release( p_sys->p_thread );
- /* update p_sout->i_out_pace_nocontrol */
- p_access->p_sout->i_out_pace_nocontrol--;
msg_Dbg( p_access, "UDP access output closed" );
free( p_sys );
}
+static int Control( sout_access_out_t *p_access, int i_query, va_list args )
+{
+ (void)p_access;
+
+ switch( i_query )
+ {
+ case ACCESS_OUT_CONTROLS_PACE:
+ *va_arg( args, bool * ) = false;
+ break;
+
+ default:
+ return VLC_EGENERIC;
+ }
+ return VLC_SUCCESS;
+}
+
/*****************************************************************************
* Write: standard write on a file descriptor.
*****************************************************************************/