Commit 032b437a authored by Christophe Massiot's avatar Christophe Massiot

* Desperate attempt to improve audio output ;

* Updated documentation.
parent 348f9662
...@@ -458,7 +458,7 @@ package-macosx: ...@@ -458,7 +458,7 @@ package-macosx:
# Copy relevant files # Copy relevant files
cp -R vlc.app tmp/ cp -R vlc.app tmp/
cp AUTHORS COPYING ChangeLog README README\ -\ Mac\ OS\ X.rtf FAQ TODO tmp/ cp AUTHORS COPYING ChangeLog README README.MacOSX.rtf FAQ TODO tmp/
# Create disk image # Create disk image
./macosx-dmg 0 "vlc-${VERSION}" tmp/* ./macosx-dmg 0 "vlc-${VERSION}" tmp/*
......
...@@ -6,100 +6,40 @@ ...@@ -6,100 +6,40 @@
\hyphauto1\hyphfactor90 \hyphauto1\hyphfactor90
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc \pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc
\f0\fs48 \cf0 VideoLAN Client (VLC) version 0.3\ \f0\fs48 \cf0 VideoLAN Client (VLC) version 0.4\
Mac OS X-specific information Mac OS X-specific information
\fs24 \ \fs24 \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
\cf0 \ \cf0 \
\ \
\pard\tx1440\tx2880\tx4320\tx5760\tx7200\qj \pard\tx1440\tx2880\tx4320\tx5760\tx7200\qj
\cf0 Welcome to the VideoLAN Client ! VLC is a multi-purpose mutimedia tool : it can play DVDs and VCDs, or read a stream from the network. VLC has originally been developed for GNU/Linux systems, but has been ported to numerous operating systems, including Mac OS X and Win32. The Mac OS X port is a bit young and immature, as you will notice, and there are many caveats. We are working hard to improve it, and if you think you can help us in any way, please drop us a line.\ \cf0 Welcome to the VideoLAN Client ! VLC is a multi-purpose mutimedia tool : it can play DVDs and VCDs, or read a stream from the network. It also supports DivX/MPEG-4 files, via the same codec as the QuickTime plug-in (and features the same bugs). VLC has originally been developed for GNU/Linux systems, but has been ported to numerous operating systems, including Mac OS X and Win32. The Mac OS X port is a bit young and immature, as you will notice, and there are many caveats. We are working hard to improve it, and if you think you can help us in any way, please drop us a line.\
\ \
You may find the following frequentely asked questions useful :\ You may find the following frequentely asked questions useful :\
\ \
\f1\b \ul 1. How do I read a DVD ? The menu item is disabled !\ \f1\b \ul 1. How do I read an SVCD ?
\f0\b0 \ulnone The menu item hasn't been implemented yet, but you can access all features of VLC using the command line. First open a terminal window (Terminal.app in your Applications folder) and change to the directory where you copied VLC - for instance if you copied it to your Applications folder, type :\
\f2 cd /Applications\
\f0 \
Then type :\
\f2 ./vlc.app/Contents/MacOS/vlc dvd:/dev/rdisk1\
\f0 \
VLC should play your DVD. On some configurations, /dev/rdisk1 isn't the DVD drive, and you will find it as /dev/rdisk2, /dev/rdisk3, etc. YMMV\
\
You can access all the capabilities of VLC through the command line (since the native interface support is still very poor), such as choosing audio channel, subtitles, and titles/chapters. To view all the options available, please type :\
\f2 ./vlc.app/Contents/MacOS/vlc --help\
\f0 \
For instance, if you want the audio channel #2 :\
\f2 ./vlc.app/Contents/MacOS/vlc --input_audio 2 dvd:/dev/rdisk1\
\f0 \
You can view all available channels and subtitles with :\
\f2 ./vlc.app/Contents/MacOS/vlc --stats dvd:/dev/rdisk1\
\f0 \
\
\f1\b \ul 2. How do I read a VCD ?\
\f0\b0 \ulnone The same way you read a DVD, except you replace
\f2 dvd
\f0 by
\f2 vcd
\f0 . Eg. :\
\f2 ./vlc.app/Contents/MacOS/vlc vcd:/dev/rdisk1\
\f0 \
\
\f1\b \ul 3. How do I read an SVCD ?
\f0\b0 \ulnone \ \f0\b0 \ulnone \
SVCDs contain plain MPEG-2 files and do not require any specific plug-in. just copy the .vob files in the SVCD onto your hard drive, and use the "Open File" menu item in VLC (drag and drop doesn't work yet).\ VLC is currently unable to read SVCD directly from the drive. SVCDs contain plain MPEG-2 files which can be directly read. Just copy the .dat files in the SVCD onto your hard drive, and use the "Open File" menu item in VLC (drag and drop doesn't work yet).\
\
\ \
\f1\b \ul 4. Audio and video are out of sync by 300 ms !\
\f0\b0 \ulnone This is a known issue, and we're working on it. In the meantime, launch the application with
\f2 --desync\'ca300
\f0 (the exact number depends on your machine), eg. :\
\f2 ./vlc.app/Contents/MacOS/vlc --desync 300 dvd:/dev/rdisk1\
\f0 \
\ \
\f1\b \ul 5. The video is choppy ! It's like we're dropping frames\ \f1\b \ul 2. The video is choppy ! It's like we're dropping frames\
\f0\b0 \ulnone That's the normal behavior when the CPU isn't fast enough to decode all frames. Though there is some room for improvement, do never expect VLC to be able to decode MPEG-2 streams on a low-end G3 machine. Apple DVD player uses specific hardware accelerations from the video board of those systems, and we currently lack documentation to do the same. If you think you have information which might help us, please contact us, otherwise please don't complain about this.\ \f0\b0 \ulnone That's the normal behavior when the CPU isn't fast enough to decode all frames. Though there is some room for improvement, do never expect VLC to be able to decode MPEG-2 streams on a low-end G3 machine. Apple DVD player uses specific hardware accelerations from the video board of those systems, and we currently lack documentation to do the same. If you think you have information which might help us, please contact us, otherwise please don't complain about this.\
\ \
If VLC is slow on your G4 system, try and quit or hide all running applications. See with If VLC is slow on your G4 system, try and quit or hide all running applications. See with
\f2 top \f2 top -u
\f0 in a terminal window which applications take the CPU. Minimizing the VLC controller window might help, too.\ \f0 in a terminal window which applications take the CPU. Minimizing the VLC controller window might help, too.\
\ \
\ \
\f1\b \ul 6. How do I play a DivX file ?\ \f1\b \ul 3. I only get a black picture !\
\f0\b0 \ulnone VLC doesn't support DivX or OpenDivX or MPEG-4 files at present. We are working on it too, but this isn't expected to happen in the near future.\
\
\
\f1\b \ul 7. The fullscreen menu item has disappeared. This sucks !\
\f0\b0 \ulnone The menu item has been temporarily removed for technical reasons. It doesn't mean that the feature has been removed. To turn on fullscreen mode, just hit 'f' in the video window. To go back to windowed mode, hit 'f' again.\ \f0\b0 \ulnone We haven't found the reason why some people get this problem. However, users have indicated a workaround : switch your screen depth to thousands of colors instead of millions. If you think you have information to help us find the bug, please drop us a mail.\
\ \
\ \
Thanks for reading this file. For additional information, subscribe to the vlc mailing list on \ul http://www.videolan.org/.\ulnone \ Thanks for reading this file. For additional information, subscribe to the vlc mailing list on \ul http://www.videolan.org/.\ulnone \
-- \ -- \
Christophe Massiot <massiot@via.ecp.fr>, 6 Apr 2002, for the VideoLAN team.} Christophe Massiot <massiot@via.ecp.fr>, for the VideoLAN team.\
\ No newline at end of file $Id: README.MacOSX.rtf,v 1.1 2002/05/19 00:34:54 massiot Exp $}
\ No newline at end of file
This diff is collapsed.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps .\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1) .\" other parameters are allowed: see man(7), man(1)
.TH VLC 1 "March 10, 2001" .TH VLC 1 "May 19, 2002"
.\" Please adjust this date whenever revising the manpage. .\" Please adjust this date whenever revising the manpage.
.\" .\"
.\" Some roff macros, for reference: .\" Some roff macros, for reference:
...@@ -32,6 +32,8 @@ recognizes several URL-style items: ...@@ -32,6 +32,8 @@ recognizes several URL-style items:
.TP .TP
.B *.mpg, *.vob .B *.mpg, *.vob
Plain MPEG-1/2 files Plain MPEG-1/2 files
.B *.avi
AVI files, such as DivX movies
.TP .TP
.B dvd:[<device>][@<raw device>][@[<title>][,[<chapter>][,<angle>]]] .B dvd:[<device>][@<raw device>][@[<title>][,[<chapter>][,<angle>]]]
DVD device (for instance dvd:/dev/dvd). The raw device is optional and DVD device (for instance dvd:/dev/dvd). The raw device is optional and
...@@ -40,7 +42,7 @@ must have been prepared beforehands. ...@@ -40,7 +42,7 @@ must have been prepared beforehands.
.B vcd:<device> .B vcd:<device>
VCD device (for instance dvd:/dev/cdrom). VCD device (for instance dvd:/dev/cdrom).
.TP .TP
.B udpstream:[<server>[:<server port>]][@[<bind address>][:<bind port>]] .B udpstream:[@[<multicast address>][:<local port>]]
UDP stream, such as one sent by VideoLAN Server or VideoLAN miniserver. UDP stream, such as one sent by VideoLAN Server or VideoLAN miniserver.
Usually "udpstream:" is enough. Usually "udpstream:" is enough.
.TP .TP
...@@ -56,161 +58,7 @@ Execute a play-list command. Commands are : ...@@ -56,161 +58,7 @@ Execute a play-list command. Commands are :
.B vlc .B vlc
follows the usual GNU command line syntax, with long follows the usual GNU command line syntax, with long
options starting with two dashes (`-'). options starting with two dashes (`-').
A summary of options is included below. For a precise description of options, please use "vlc --help".
.TP
.B \-I, \-\-intf <module>
Specify an interface module: "gnome", "curses", "qt", for instance.
.TP
.B \-v, \-\-verbose
Set
.B vlc
verbosity. This command is cumulative, you can use "-vv" or "-vvvv" for increased verbosity.
.TP
.B \-\-memcpy <module>
Specify a module for performing heavy memory copies: "memcpy", "sse" for instance.
.TP
.B \-\-noaudio
Disable audio output.
.TP
.B \-A, \-\-aout <module>
Specify an audio output module: "dsp", "esd", for instance.
.TP
.B \-\-stereo, \-\-mono
Choose stereo or mono audio output.
.TP
.B \-\-spdif
Activate hardware AC3 pass-through mode.
.TP
.B \-\-downmix <module>
Specify a module for AC3 downmix: "downmix", "sse" or "3dn" for instance.
.TP
.B \-\-imdct <module>
Specify a module for AC3 IMDCT: "imdct", sse" or "3dn" for instance.
.TP
.B \-\-volume [1..1024]
Change VLC output volume (default: 512).
.TP
.B \-\-desync <time in ms>
Compensate desynchronization of the audio (default: 0).
.TP
.B \-\-novideo
Disable video output.
.TP
.B \-V, \-\-vout <module>
Specify a video output module: "x11", "sdl", "fb", for instance.
.TP
.B \-\-motion <module>
Specify a module for motion compensation: "motion", "motionmmx", for instance.
.TP
.B \-\-idct <module>
Specify a module for IDCT: "idct", "idctmmx", for instance.
.TP
.B \-\-yuv <module>
Specify a YUV module: "yuv", "yuvmmx", for instance.
.TP
.B \-\-display <display>
Specify the display name.
.TP
.B \-\-width <w>, \-\-height <h>
Choose the display coordinates.
.TP
.B \-g, \-\-grayscale
Grayscale output.
.TP
.B \-\-fullscreen
Full screen output.
.TP
.B \-\-overlay
Overlay (hardware accelerated output), if available.
.TP
.B \-\-xvadaptor <port>
Select XVideo adaptor, if XVideo output is used.
.TP
.B \-\-color
Color output.
.TP
.B \-\-synchro <type>
Choose a fixed synchro value instead of the internal auto-adaptative
heuristics based on CPU usage.
`I' displays only I images, `IP' displays I and P images, `IP+'
displays I and P images and every second B image, and `IPB' forces
displaying of all images.
Note that vlc is not guaranteed to behave properly if you ask it to
display more images than your CPU can cope with.
.TP
.B \-a, \-\-input_audio [ ac3 | lpcm | mpeg | off ]
Choose the audio channel type. Most DVDs have AC3 audio channels, but
you can also have Linear PCM or MPEG layer 2 sound. Also, one might decide
not to activate the audio channel.
.TP
.B \-c, \-\-input_channel [ 0\-15 ]
Select the audio channel. Most DVDs only have one or two audio channels,
but some of them have a great number of available languages. Note that the
audio channel will also depend on the channel type.
.TP
.B \-s, \-\-input_subtitle [ 0\-31 ]
Select the subtitle channel, if there is one in the stream.
.TP
.B \-\-input <method>
Choose the input method, "dvd", "ps", "ts" for instance.
.TP
.B \-\-nommx, \-\-no3dnow, \-\-nommxext, \-\-nosse, \-\-noaltivec
Disable the CPU's MMX, 3D Now!, MMX EXT, SSE or AltiVec support. This may
be useful when you suspect a bug in an accelerated module.
.TP
.B \-h, \-\-help
Print help and exit.
.TP
.B \-H, \-\-longhelp
Print long help and exit.
.TP
.B \-\-version
Output version information and exit.
.SH PARAMETERS
.B vlc
also accepts a lot of parameters to customize its behaviour.
.TP
.B Interface parameters:
vlc_intf=<method name> interface method
.TP
.B Audio parameters:
vlc_aout=<method name> audio method
vlc_dsp=<filename> dsp device path
vlc_stereo={1|0} stereo or mono output
vlc_spdif={1|0} AC3 pass-through mode
vlc_downmix=<method name> AC3 downmix method
vlc_imdct=<method name> AC3 IMDCT method
vlc_volume=[0..1024] VLC output volume
vlc_audio_rate=<rate> output rate
.TP
.B Video parameters:
vlc_vout=<method name> display method
vlc_display=<display> display used
vlc_width=<width> display width
vlc_height=<height> dislay height
vlc_fb_dev=<filename> framebuffer device
vlc_grayscale={1|0} grayscale or color
vlc_fullscreen={1|0} full screen
vlc_overlay={1|0} overlay
vlc_xvport=<port> XVideo port
vlc_motion=<method name> motion compensation method
vlc_idct=<method name> IDCT method
vlc_yuv=<method name> YUV method
vlc_synchro={I|I+|IP|IP+|IPB} synchro algorithm
.TP
.B DVD parameters:
vlc_dvd_device=<device> DVD device
vlc_input_title=<title> title number
vlc_input_chapter=<chapter> chapter number
vlc_input_angle=<angle> angle number
vlc_input_audio={ac3|lpcm|mpeg|off} audio type
vlc_input_channel=[0-15] audio channel
vlc_input_subtitle=[0-31] subtitle channel
.TP
.B Input parameters:
vlc_iface=<interface> network interface
.SH SEE ALSO .SH SEE ALSO
.BR vls (1), vlms (1) .BR vls (1), vlms (1)
......
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
/* Duration between the time we receive the data packet, and the time we will /* Duration between the time we receive the data packet, and the time we will
* mark it to be presented */ * mark it to be presented */
#define DEFAULT_PTS_DELAY (mtime_t)(.35*CLOCK_FREQ) #define DEFAULT_PTS_DELAY (mtime_t)(.45*CLOCK_FREQ)
/***************************************************************************** /*****************************************************************************
* Audio configuration * Audio configuration
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* aout_macosx.c : CoreAudio output plugin * aout_macosx.c : CoreAudio output plugin
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: aout_macosx.m,v 1.1 2002/05/12 20:56:33 massiot Exp $ * $Id: aout_macosx.m,v 1.2 2002/05/19 00:34:54 massiot Exp $
* *
* Authors: Colin Delacroix <colin@zoy.org> * Authors: Colin Delacroix <colin@zoy.org>
* Jon Lech Johansen <jon-vl@nanocrew.net> * Jon Lech Johansen <jon-vl@nanocrew.net>
...@@ -326,13 +326,13 @@ static OSStatus CAIOCallback( AudioDeviceID inDevice, ...@@ -326,13 +326,13 @@ static OSStatus CAIOCallback( AudioDeviceID inDevice,
{ {
aout_thread_t *p_aout = (aout_thread_t *)threadGlobals; aout_thread_t *p_aout = (aout_thread_t *)threadGlobals;
aout_sys_t *p_sys = p_aout->p_sys; aout_sys_t *p_sys = p_aout->p_sys;
#if 0
AudioTimeStamp host_time; AudioTimeStamp host_time;
host_time.mFlags = kAudioTimeStampHostTimeValid; host_time.mFlags = kAudioTimeStampHostTimeValid;
AudioDeviceTranslateTime( inDevice, inOutputTime, &host_time ); AudioDeviceTranslateTime( inDevice, inOutputTime, &host_time );
intf_Msg( "%lld", AudioConvertHostTimeToNanos(host_time.mHostTime) / 1000 + p_aout->p_sys->clock_diff - p_aout->date ); //intf_Msg( "%lld", AudioConvertHostTimeToNanos(host_time.mHostTime) / 1000 + p_aout->p_sys->clock_diff - p_aout->date );
#endif p_aout->date = p_aout->p_sys->clock_diff + AudioConvertHostTimeToNanos(host_time.mHostTime) / 1000;
/* move data into output data buffer */ /* move data into output data buffer */
if( p_sys->b_buffer_data ) if( p_sys->b_buffer_data )
...@@ -430,7 +430,7 @@ static int CABeginFormat( aout_thread_t *p_aout ) ...@@ -430,7 +430,7 @@ static int CABeginFormat( aout_thread_t *p_aout )
kAudioDevicePropertyBufferSize, kAudioDevicePropertyBufferSize,
ui_param_size, ui_param_size,
&p_aout->p_sys->ui_buffer_size ); &p_aout->p_sys->ui_buffer_size );
p_aout->i_latency = p_aout->p_sys->ui_buffer_size / 2; //p_aout->i_latency = p_aout->p_sys->ui_buffer_size / 2;
if( err != noErr ) if( err != noErr )
{ {
...@@ -486,7 +486,9 @@ static int CABeginFormat( aout_thread_t *p_aout ) ...@@ -486,7 +486,9 @@ static int CABeginFormat( aout_thread_t *p_aout )
/* Let's pray for the following operation to be atomic... */ /* Let's pray for the following operation to be atomic... */
p_aout->p_sys->clock_diff = mdate() p_aout->p_sys->clock_diff = mdate()
- AudioConvertHostTimeToNanos(AudioGetCurrentHostTime()) / 1000; - AudioConvertHostTimeToNanos(AudioGetCurrentHostTime()) / 1000
+ (mtime_t)p_aout->p_sys->ui_buffer_size / 4 * 1000000 / (mtime_t)p_aout->i_rate
+ p_main->i_desync;
p_aout->p_sys->b_format = 1; p_aout->p_sys->b_format = 1;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* aout_pcm.c: PCM audio output functions * aout_pcm.c: PCM audio output functions
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2002 VideoLAN * Copyright (C) 1999-2002 VideoLAN
* $Id: aout_pcm.c,v 1.6 2002/05/18 17:47:47 sam Exp $ * $Id: aout_pcm.c,v 1.7 2002/05/19 00:34:54 massiot Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* Cyril Deguet <asmax@via.ecp.fr> * Cyril Deguet <asmax@via.ecp.fr>
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
/* Biggest difference allowed between scheduled playing date and actual date /* Biggest difference allowed between scheduled playing date and actual date
(in microseconds) */ (in microseconds) */
#define MAX_DELTA 10000 #define MAX_DELTA 50000
/***************************************************************************** /*****************************************************************************
* Local prototypes * Local prototypes
...@@ -130,7 +130,7 @@ void aout_PCMThread( aout_thread_t * p_aout ) ...@@ -130,7 +130,7 @@ void aout_PCMThread( aout_thread_t * p_aout )
case AOUT_FMT_S8: case AOUT_FMT_S8:
i_units = p_aout->pf_getbufinfo( p_aout, i_buffer_limit ); i_units = p_aout->pf_getbufinfo( p_aout, i_buffer_limit );
p_aout->date = mdate() + ((((mtime_t)((i_units + 4 * p_aout->date = mdate() + ((((mtime_t)((i_units +
p_aout->i_latency) / p_aout->i_channels)) * 1000000) / p_aout->i_latency) / p_aout->i_channels)) * 1000000) /
((mtime_t)p_aout->i_rate)) + p_main->i_desync; ((mtime_t)p_aout->i_rate)) + p_main->i_desync;
...@@ -144,8 +144,8 @@ void aout_PCMThread( aout_thread_t * p_aout ) ...@@ -144,8 +144,8 @@ void aout_PCMThread( aout_thread_t * p_aout )
case AOUT_FMT_S16_BE: case AOUT_FMT_S16_BE:
i_units = p_aout->pf_getbufinfo( p_aout, i_buffer_limit * 2 ) / 2; i_units = p_aout->pf_getbufinfo( p_aout, i_buffer_limit * 2 ) / 2;
p_aout->date = mdate() + ((((mtime_t)((i_units + 4 * p_aout->date = mdate() + ((((mtime_t)((i_units +
p_aout->i_latency) / (2 * p_aout->i_channels))) * 1000000) / p_aout->i_latency / 2) / p_aout->i_channels)) * 1000000) /
((mtime_t)p_aout->i_rate)) + p_main->i_desync; ((mtime_t)p_aout->i_rate)) + p_main->i_desync;
p_aout->pf_play( p_aout, (byte_t *)p_aout->buffer, p_aout->pf_play( p_aout, (byte_t *)p_aout->buffer,
...@@ -159,7 +159,6 @@ void aout_PCMThread( aout_thread_t * p_aout ) ...@@ -159,7 +159,6 @@ void aout_PCMThread( aout_thread_t * p_aout )
if( i_units > (i_buffer_limit/2) ) if( i_units > (i_buffer_limit/2) )
msleep( (i_units - i_buffer_limit/2) * AOUT_BUFFER_DURATION msleep( (i_units - i_buffer_limit/2) * AOUT_BUFFER_DURATION
/ i_buffer_limit ); / i_buffer_limit );
} }
vlc_mutex_lock( &p_aout->fifos_lock ); vlc_mutex_lock( &p_aout->fifos_lock );
...@@ -295,7 +294,7 @@ static int NextFrame( aout_thread_t * p_aout, aout_fifo_t * p_fifo, ...@@ -295,7 +294,7 @@ static int NextFrame( aout_thread_t * p_aout, aout_fifo_t * p_fifo,
mtime_t aout_date ) mtime_t aout_date )
{ {
int i_units, i_units_dist, i_rate; int i_units, i_units_dist, i_rate;
u64 i_delta; mtime_t i_delta;
/* We take the lock */ /* We take the lock */
vlc_mutex_lock( &p_fifo->data_lock ); vlc_mutex_lock( &p_fifo->data_lock );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment