CFLAGS=$save_CFLAGS
LDFLAGS=$save_LDFLAGS
- PLUGINS="${PLUGINS} mad_adec"
+ BUILTINS="${BUILTINS} mad_adec"
fi
fi
])
CFLAGS=$save_CFLAGS
LDFLAGS=$save_LDFLAGS
- PLUGINS="${PLUGINS} mad_adec"
+ BUILTINS="${BUILTINS} mad_adec"
fi ])
dnl special case for BeOS
.B vcd:<device>
VCD device (for instance dvd:/dev/cdrom).
.TP
-.B udpstream:[<server>:[<server port>]][@[<bind address>][:<bind port>]]
+.B udpstream:[<server>[:<server port>]][@[<bind address>][:<bind port>]]
UDP stream, such as one sent by VideoLAN Server or VideoLAN miniserver.
Usually "udpstream:" is enough.
.TP
* Declaration and extern access to global program object.
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: main.h,v 1.23 2001/12/03 16:18:37 sam Exp $
+ * $Id: main.h,v 1.24 2001/12/06 10:53:42 massiot Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
boolean_t b_audio; /* is audio output allowed ? */
boolean_t b_video; /* is video output allowed ? */
boolean_t b_ac3;
+ int i_desync; /* relative desync of the audio ouput */
/* memcpy plugin used */
struct module_s * p_memcpy_module;
* vout_xvideo.c: Xvideo video output display method
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
- * $Id: vout_xvideo.c,v 1.34 2001/12/03 16:18:37 sam Exp $
+ * $Id: vout_xvideo.c,v 1.35 2001/12/06 10:53:42 massiot Exp $
*
* Authors: Shane Harper <shanegh@optusnet.com.au>
* Vincent Seguin <seguin@via.ecp.fr>
switch( ((XButtonEvent *)&xevent)->button )
{
case Button1:
- /* in this part we will eventually manage
- * clicks for DVD navigation for instance */
+ /* In this part we will eventually manage
+ * clicks for DVD navigation for instance. For the
+ * moment just pause the stream. */
+ input_SetStatus( p_main->p_intf->p_input,
+ INPUT_STATUS_PAUSE );
break;
}
}
#include "audio_output.h"
#include "aout_common.h"
+#include "main.h"
+
/*****************************************************************************
* Local prototypes
*****************************************************************************/
/* sizeof(s16) << (p_aout->b_stereo) == 4 */
p_aout->date = mdate() + ((((mtime_t)((l_bytes + 4 * p_aout->i_latency) / 4)) * 1000000)
- / ((mtime_t)p_aout->l_rate));
+ / ((mtime_t)p_aout->l_rate))
+ + p_main->i_desync;
p_aout->pf_play( p_aout, (byte_t *)p_aout->buffer,
l_buffer_limit * sizeof(s16) );
* aout_u8.c: 8 bit unsigned audio output functions
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
- * $Id: aout_u8.c,v 1.7 2001/11/28 15:08:06 massiot Exp $
+ * $Id: aout_u8.c,v 1.8 2001/12/06 10:53:42 massiot Exp $
*
* Authors: Michel Kaempf <maxx@via.ecp.fr>
*
#include "audio_output.h"
#include "aout_common.h"
+#include "main.h"
+
/*****************************************************************************
* Local prototypes
*****************************************************************************/
l_bytes = p_aout->pf_getbufinfo( p_aout, l_buffer_limit );
/* sizeof(u8) << (p_aout->b_stereo) == 1 */
p_aout->date = mdate() + ((((mtime_t)((l_bytes + 4 * p_aout->i_latency) / 1)) * 1000000)
- / ((mtime_t)p_aout->l_rate));
+ / ((mtime_t)p_aout->l_rate))
+ + p_main->i_desync;
p_aout->pf_play( p_aout, (byte_t *)p_aout->buffer, l_buffer_limit * sizeof(u8) );
if ( l_bytes > (l_buffer_limit * sizeof(u8) * 2) ) /* There are 2 channels (left & right) */
l_bytes = p_aout->pf_getbufinfo( p_aout, l_buffer_limit );
/* sizeof(u8) << (p_aout->b_stereo) == 2 */
p_aout->date = mdate() + ((((mtime_t)((l_bytes + 4 * p_aout->i_latency) / 2)) * 1000000)
- / ((mtime_t)p_aout->l_rate));
+ / ((mtime_t)p_aout->l_rate))
+ + p_main->i_desync;
p_aout->pf_play( p_aout, (byte_t *)p_aout->buffer, l_buffer_limit * sizeof(u8) );
if ( l_bytes > (l_buffer_limit * sizeof(u8)) )
* audio_output.c : audio output thread
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
- * $Id: audio_output.c,v 1.66 2001/11/28 15:08:06 massiot Exp $
+ * $Id: audio_output.c,v 1.67 2001/12/06 10:53:42 massiot Exp $
*
* Authors: Michel Kaempf <maxx@via.ecp.fr>
*
}
/* Rough estimate of the playing date */
- p_aout->date = mdate();
+ p_aout->date = mdate() + p_main->i_desync;
/* Launch the thread */
if ( vlc_thread_create( &p_aout->thread_id, "audio output",
* input_clock.c: Clock/System date convertions, stream management
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
- * $Id: input_clock.c,v 1.25 2001/12/05 03:31:04 jobi Exp $
+ * $Id: input_clock.c,v 1.26 2001/12/06 10:53:42 massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
#include "input_ext-dec.h"
#include "input_ext-plugins.h"
+#include "main.h"
+
/*
* DISCUSSION : SYNCHRONIZATION METHOD
*
if( p_pgrm->i_synchro_state == SYNCHRO_OK )
{
return( ClockToSysdate( p_input, p_pgrm, i_ts + p_pgrm->delta_cr )
- + DEFAULT_PTS_DELAY );
+ + DEFAULT_PTS_DELAY
+ + (p_main->i_desync > 0 ? p_main->i_desync : 0) );
}
else
{
* and spawn threads.
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
- * $Id: main.c,v 1.130 2001/12/05 10:30:25 massiot Exp $
+ * $Id: main.c,v 1.131 2001/12/06 10:53:42 massiot Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
#define OPT_MONO 152
#define OPT_SPDIF 153
#define OPT_VOLUME 154
+#define OPT_DESYNC 155
#define OPT_NOVIDEO 160
#define OPT_DISPLAY 161
{ "downmix", 1, 0, OPT_DOWNMIX },
{ "imdct", 1, 0, OPT_IMDCT },
{ "volume", 1, 0, OPT_VOLUME },
+ { "desync", 1, 0, OPT_DESYNC },
/* Video options */
{ "novideo", 0, 0, OPT_NOVIDEO },
p_main->i_warning_level = 0;
p_main->b_stats = 0;
+ p_main->i_desync = 0; /* No desynchronization by default */
p_main->p_channel = NULL;
case OPT_VOLUME: /* --volume */
main_PutIntVariable( AOUT_VOLUME_VAR, atoi(optarg) );
break;
+ case OPT_DESYNC: /* --desync */
+ p_main->i_desync = atoi(optarg);
+ break;
/* Video options */
case OPT_NOVIDEO: /* --novideo */
"\n --downmix <module> \tAC3 downmix method"
"\n --imdct <module> \tAC3 IMDCT method"
"\n --volume [0..1024] \tVLC output volume"
+ "\n --desync <time in ms> \tCompensate desynchronization of the audio"
"\n"
"\n --novideo \tdisable video"
"\n -V, --vout <module> \tvideo output method"
"\n"
"\n -h, --help \tprint help and exit"
"\n -H, --longhelp \tprint long help and exit"
- "\n --version \toutput version information and exit" );
+ "\n --version \toutput version information and exit"
+ "\n\nPlaylist items :"
+ "\n *.mpg, *.vob \tPlain MPEG-1/2 files"
+ "\n dvd:<device>[@<raw device>] \tDVD device"
+ "\n vcd:<device> \tVCD device"
+ "\n udpstream:[<server>[:<server port>]][@[<bind address>][:<bind port>]]"
+ "\n \tUDP stream sent by VLS"
+ "\n vlc:loop \tLoop execution of the playlist"
+ "\n vlc:pause \tPause execution of playlist items"
+ "\n vlc:quit \tQuit VLC");
if( i_fashion == SHORT_HELP )
return;
"\n " DOWNMIX_METHOD_VAR "=<method name> \tAC3 downmix method"
"\n " IMDCT_METHOD_VAR "=<method name> \tAC3 IMDCT method"
"\n " AOUT_VOLUME_VAR "=[0..1024] \tVLC output volume"
- "\n " AOUT_RATE_VAR "=<rate> \toutput rate" );
+ "\n " AOUT_RATE_VAR "=<rate> \toutput rate" );
/* Video parameters */
intf_MsgImm( "\nVideo parameters:"
if( setjmp( env ) == 0 )
{
asm volatile ("mtspr 256, %0\n\t"
- "vand %v0, %v0, %v0"
+ "vand %%v0, %%v0, %%v0"
:
: "r" (-1));
}