* rc.c : remote control stdin/stdout plugin for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: rc.c,v 1.37 2003/07/28 07:16:50 fenrir Exp $
+ * $Id: rc.c,v 1.38 2003/09/07 22:53:09 fenrir Exp $
*
* Authors: Peter Surda <shurdeek@panorama.sth.ac.at>
*
vlc_value_t oldval, vlc_value_t newval, void *p_data )
{
input_thread_t * p_input;
+ vlc_value_t val;
p_input = vlc_object_find( p_this, VLC_OBJECT_INPUT, FIND_ANYWHERE );
/* Parse commands that only require an input */
if( !strcmp( psz_cmd, "pause" ) )
{
- input_SetStatus( p_input, INPUT_STATUS_PAUSE );
+ val.i_int = PAUSE_S;
+
+ var_Set( p_input, "state", val );
vlc_object_release( p_input );
return VLC_SUCCESS;
}
if( strlen( newval.psz_string ) > 0 &&
newval.psz_string[strlen( newval.psz_string ) - 1] == '%' )
{
- input_Seek( p_input, atoi( newval.psz_string ),
- INPUT_SEEK_PERCENT | INPUT_SEEK_SET );
+ val.f_float = (float)atoi( newval.psz_string ) / 100.0;
+ var_Set( p_input, "position", val );
}
else
{
- input_Seek( p_input, atoi( newval.psz_string ),
- INPUT_SEEK_SECONDS | INPUT_SEEK_SET );
+ val.i_time = (int64_t)atoi( newval.psz_string ) * 1000000ULL;
+ var_Set( p_input, "time", val );
}
vlc_object_release( p_input );
return VLC_SUCCESS;
!strcmp( psz_cmd, "chapter_n" ) ||
!strcmp( psz_cmd, "chapter_p" ) )
{
- unsigned int i_chapter = 0;
-
if( !strcmp( psz_cmd, "chapter" ) )
{
if ( *newval.psz_string )
{
/* Set. */
- i_chapter = atoi( newval.psz_string );
+ val.i_int = atoi( newval.psz_string );
+ var_Set( p_input, "chapter", val );
}
else
{
+ vlc_value_t val_list;
+
/* Get. */
- vlc_mutex_lock( &p_input->stream.stream_lock );
- printf( "Currently playing chapter %d/%d\n",
- p_input->stream.p_selected_area->i_part,
- p_input->stream.p_selected_area->i_part_nb - 1 );
- vlc_mutex_unlock( &p_input->stream.stream_lock );
-
- vlc_object_release( p_input );
- return VLC_SUCCESS;
+ var_Get( p_input, "chapter", &val );
+ var_Change( p_input, "chapter", VLC_VAR_GETCHOICES, &val_list, NULL );
+ printf( "Currently playing chapter %d/%d\n", val.i_int, val_list.p_list->i_count );
+ var_Change( p_this, "chapter", VLC_VAR_FREELIST, &val_list, NULL );
}
}
else if( !strcmp( psz_cmd, "chapter_n" ) )
{
- vlc_mutex_lock( &p_input->stream.stream_lock );
- i_chapter = p_input->stream.p_selected_area->i_part + 1;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
+ val.b_bool = VLC_TRUE;
+ var_Set( p_input, "next-chapter", val );
}
else if( !strcmp( psz_cmd, "chapter_p" ) )
{
- vlc_mutex_lock( &p_input->stream.stream_lock );
- i_chapter = p_input->stream.p_selected_area->i_part - 1;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
- }
-
- vlc_mutex_lock( &p_input->stream.stream_lock );
- if( ( i_chapter > 0 ) && ( i_chapter <
- p_input->stream.p_selected_area->i_part_nb ) )
- {
- input_area_t *p_area = p_input->stream.p_selected_area;
- p_input->stream.p_selected_area->i_part = i_chapter;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
- input_ChangeArea( p_input, p_area );
- input_SetStatus( p_input, INPUT_STATUS_PLAY );
- vlc_mutex_lock( &p_input->stream.stream_lock );
+ val.b_bool = VLC_TRUE;
+ var_Set( p_input, "prev-chapter", val );
}
- vlc_mutex_unlock( &p_input->stream.stream_lock );
vlc_object_release( p_input );
return VLC_SUCCESS;
!strcmp( psz_cmd, "title_n" ) ||
!strcmp( psz_cmd, "title_p" ) )
{
- unsigned int i_title = 0;
-
if( !strcmp( psz_cmd, "title" ) )
{
if ( *newval.psz_string )
{
/* Set. */
- i_title = atoi( newval.psz_string );
+ val.i_int = atoi( newval.psz_string );
+ var_Set( p_input, "title", val );
}
else
{
+ vlc_value_t val_list;
+
/* Get. */
- vlc_mutex_lock( &p_input->stream.stream_lock );
- printf( "Currently playing title %d/%d\n",
- p_input->stream.p_selected_area->i_id,
- p_input->stream.i_area_nb - 1 );
- vlc_mutex_unlock( &p_input->stream.stream_lock );
-
- vlc_object_release( p_input );
- return VLC_SUCCESS;
+ var_Get( p_input, "title", &val );
+ var_Change( p_input, "title", VLC_VAR_GETCHOICES, &val_list, NULL );
+ printf( "Currently playing title %d/%d\n", val.i_int, val_list.p_list->i_count );
+ var_Change( p_this, "title", VLC_VAR_FREELIST, &val_list, NULL );
}
}
else if( !strcmp( psz_cmd, "title_n" ) )
{
- vlc_mutex_lock( &p_input->stream.stream_lock );
- i_title = p_input->stream.p_selected_area->i_id + 1;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
+ val.b_bool = VLC_TRUE;
+ var_Set( p_input, "next-title", val );
}
else if( !strcmp( psz_cmd, "title_p" ) )
{
- vlc_mutex_lock( &p_input->stream.stream_lock );
- i_title = p_input->stream.p_selected_area->i_id - 1;
- vlc_mutex_unlock( &p_input->stream.stream_lock );
- }
-
- vlc_mutex_lock( &p_input->stream.stream_lock );
- if( ( i_title > 0 ) && ( i_title < p_input->stream.i_area_nb ) )
- {
- input_area_t *p_area = p_input->stream.pp_areas[i_title];
- vlc_mutex_unlock( &p_input->stream.stream_lock );
- input_ChangeArea( p_input, p_area );
- input_SetStatus( p_input, INPUT_STATUS_PLAY );
- vlc_mutex_lock( &p_input->stream.stream_lock );
+ val.b_bool = VLC_TRUE;
+ var_Set( p_input, "prev-title", val );
}
- vlc_mutex_unlock( &p_input->stream.stream_lock );
vlc_object_release( p_input );
return VLC_SUCCESS;
* InterfaceWindow.cpp: beos interface
*****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: InterfaceWindow.cpp,v 1.42 2003/06/22 00:40:18 titer Exp $
+ * $Id: InterfaceWindow.cpp,v 1.43 2003/09/07 22:53:09 fenrir Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
if (playback_status > UNDEF_S)
{
p_wrapper->PlaylistStop();
- p_mediaControl->SetStatus(NOT_STARTED_S, DEFAULT_RATE);
+ p_mediaControl->SetStatus(UNDEF_S, DEFAULT_RATE);
}
break;
bool InterfaceWindow::QuitRequested()
{
p_wrapper->PlaylistStop();
- p_mediaControl->SetStatus(NOT_STARTED_S, DEFAULT_RATE);
+ p_mediaControl->SetStatus(UNDEF_S, DEFAULT_RATE);
_StoreSettings();
* MediaControlView.cpp: beos interface
*****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: MediaControlView.cpp,v 1.19 2003/06/22 00:40:18 titer Exp $
+ * $Id: MediaControlView.cpp,v 1.20 2003/09/07 22:53:09 fenrir Exp $
*
* Authors: Tony Castley <tony@castley.net>
* Stephan Aßmus <stippi@yellowbites.com>
case PLAYING_S:
case FORWARD_S:
case BACKWARD_S:
- case START_S:
fPlayPause->SetPlaying();
break;
case PAUSE_S:
fPlayPause->SetPaused();
break;
case UNDEF_S:
- case NOT_STARTED_S:
default:
fPlayPause->SetStopped();
break;
* VlcWrapper.cpp: BeOS plugin for vlc (derived from MacOS X port)
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: VlcWrapper.cpp,v 1.36 2003/07/23 01:13:47 gbazin Exp $
+ * $Id: VlcWrapper.cpp,v 1.37 2003/09/07 22:53:09 fenrir Exp $
*
* Authors: Florian G. Pflug <fgp@phlo.org>
* Jon Lech Johansen <jon-vl@nanocrew.net>
case PLAYING_S:
case FORWARD_S:
case BACKWARD_S:
- case START_S:
playing = true;
break;
case PAUSE_S:
case UNDEF_S:
- case NOT_STARTED_S:
default:
break;
}
* interface.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
- * $Id: interface.cpp,v 1.59 2003/08/30 13:59:15 gbazin Exp $
+ * $Id: interface.cpp,v 1.60 2003/09/07 22:53:09 fenrir Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
if( p_playlist->i_size )
{
+ vlc_value_t state;
+
input_thread_t *p_input = (input_thread_t *)vlc_object_find( p_intf,
VLC_OBJECT_INPUT,
FIND_ANYWHERE );
return;
}
- if( p_input->stream.control.i_status != PAUSE_S )
+ var_Get( p_input, "state", &state );
+
+ if( state.i_int != PAUSE_S )
{
/* A stream is being played, pause it */
- input_SetStatus( p_input, INPUT_STATUS_PAUSE );
- TogglePlayButton( PAUSE_S );
- vlc_object_release( p_playlist );
- vlc_object_release( p_input );
- return;
+ state.i_int = PAUSE_S;
}
+ else
+ {
+ /* Stream is paused, resume it */
+ state.i_int = PLAYING_S;
+ }
+ var_Set( p_input, "state", state );
- /* Stream is paused, resume it */
- input_SetStatus( p_input, INPUT_STATUS_PLAY );
- TogglePlayButton( PLAYING_S );
+ TogglePlayButton( state.i_int );
vlc_object_release( p_input );
vlc_object_release( p_playlist );
}
if( p_intf->p_sys->i_slider_pos != event.GetPosition()
&& p_intf->p_sys->p_input )
{
- p_intf->p_sys->i_slider_pos = event.GetPosition();
- input_Seek( p_intf->p_sys->p_input, p_intf->p_sys->i_slider_pos *
- 100 / SLIDER_MAX_POS,
- INPUT_SEEK_PERCENT | INPUT_SEEK_SET );
+ vlc_value_t pos;
+ pos.f_float = (float)event.GetPosition() / (float)SLIDER_MAX_POS;
+
+ var_Set( p_intf->p_sys->p_input, "position", pos );
}
#ifdef WIN32
FIND_ANYWHERE );
if( p_input )
{
- input_SetStatus( p_input, INPUT_STATUS_SLOWER );
+ vlc_value_t val; val.b_bool = VLC_TRUE;
+
+ var_Set( p_input, "rate-slower", val );
vlc_object_release( p_input );
}
}
FIND_ANYWHERE );
if( p_input )
{
- input_SetStatus( p_input, INPUT_STATUS_FASTER );
+ vlc_value_t val; val.b_bool = VLC_TRUE;
+
+ var_Set( p_input, "rate-faster", val );
vlc_object_release( p_input );
}
}
* playlist.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
- * $Id: messages.cpp,v 1.15 2003/08/30 16:34:12 gbazin Exp $
+ * $Id: messages.cpp,v 1.16 2003/09/07 22:53:09 fenrir Exp $
*
* Authors: Olivier Teulière <ipkiss@via.ecp.fr>
*
b_verbose = VLC_FALSE;
SetIcon( *p_intf->p_sys->p_icon );
save_log_dialog = NULL;
+ b_verbose = VLC_FALSE;
/* Create a panel to put everything in */
wxPanel *messages_panel = new wxPanel( this, -1 );
* timer.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
- * $Id: timer.cpp,v 1.31 2003/08/28 15:59:04 gbazin Exp $
+ * $Id: timer.cpp,v 1.32 2003/09/07 22:53:09 fenrir Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
#include "wxwindows.h"
#include <wx/timer.h>
-void DisplayStreamDate( wxControl *, intf_thread_t *, int );
+//void DisplayStreamDate( wxControl *, intf_thread_t *, int );
/* Callback prototype */
static int PopupMenuCB( vlc_object_t *p_this, const char *psz_variable,
/* Manage the slider */
if( p_input->stream.b_seekable && p_intf->p_sys->b_playing )
{
- stream_position_t position;
-
/* Update the slider if the user isn't dragging it. */
if( p_intf->p_sys->b_slider_free )
{
+ vlc_value_t pos;
+ char psz_time[ OFFSETTOTIME_MAX_SIZE ];
+ vlc_value_t time;
+ mtime_t i_seconds;
+
/* Update the value */
- vlc_mutex_unlock( &p_input->stream.stream_lock );
- input_Tell( p_input, &position );
- vlc_mutex_lock( &p_input->stream.stream_lock );
- if( position.i_size )
+ var_Get( p_input, "position", &pos );
+ if( pos.f_float >= 0.0 )
{
- p_intf->p_sys->i_slider_pos =
- ( SLIDER_MAX_POS * position.i_tell ) / position.i_size;
+ p_intf->p_sys->i_slider_pos = (int)(SLIDER_MAX_POS * pos.f_float);
+
+ p_main_interface->slider->SetValue( p_intf->p_sys->i_slider_pos );
+
+ var_Get( p_intf->p_sys->p_input, "time", &time );
+ i_seconds = time.i_time / 1000000;
- p_main_interface->slider->SetValue(
- p_intf->p_sys->i_slider_pos );
+ sprintf( psz_time, "%d:%02d:%02d",
+ (int) (i_seconds / (60 * 60)),
+ (int) (i_seconds / 60 % 60),
+ (int) (i_seconds % 60) );
- DisplayStreamDate( p_main_interface->slider_box,p_intf,
- p_intf->p_sys->i_slider_pos );
+
+ p_main_interface->slider_box->SetLabel(wxU( psz_time ) );
}
}
}
vlc_mutex_unlock( &p_intf->change_lock );
}
-/*****************************************************************************
- * DisplayStreamDate: display stream date
- *****************************************************************************
- * This function displays the current date related to the position in
- * the stream. It is called whenever the slider changes its value.
- * The lock has to be taken before you call the function.
- *****************************************************************************/
-void DisplayStreamDate( wxControl *p_slider_frame, intf_thread_t * p_intf ,
- int i_pos )
-{
- if( p_intf->p_sys->p_input )
- {
-#define p_area p_intf->p_sys->p_input->stream.p_selected_area
- char psz_time[ OFFSETTOTIME_MAX_SIZE ];
-
- p_slider_frame->SetLabel(
- wxU(input_OffsetToTime( p_intf->p_sys->p_input,
- psz_time, p_area->i_size * i_pos / SLIDER_MAX_POS )) );
-#undef p_area
- }
-}
-
/*****************************************************************************
* PopupMenuCB: callback triggered by the intf-popupmenu playlist variable.
* We don't show the menu directly here because we don't want the
* input_dummy.c: dummy input plugin, to manage "vlc:***" special options
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: input.c,v 1.3 2003/04/16 11:47:08 gbazin Exp $
+ * $Id: input.c,v 1.4 2003/09/07 22:53:09 fenrir Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
int i_len = strlen( psz_name );
struct demux_sys_t * p_method;
int i_arg;
-
+
p_input->stream.b_seekable = 0;
p_input->pf_demux = Demux;
p_input->pf_rewind = NULL;
+ p_input->pf_demux_control = demux_vaControlDefault;
p_method = malloc( sizeof( struct demux_sys_t ) );
if( p_method == NULL )
SOURCES_stream_out_duplicate = duplicate.c
SOURCES_stream_out_es = es.c
SOURCES_stream_out_display = display.c
+SOURCES_stream_out_gather = gather.c