* src/audio_output/input.c: simplified VisualizationCallback() and don't restart the aout inputs in there but rather set the b_restart flag so they automatically get restarted on the next aout_InputPlay().
automatically discarding audio samples that were above AOUT_MAX_ADVANCE_TIME
in the future. Problem is that p_input->i_pts_delay isn't a fixed value. We
now fetch this value from the input thread when we create an aout_instance_t.
This solves problems with the http access plugin.
bandlimited interpolation resampler.
It is not yet enabled by default because it requires a bit more works
(not fully stable yet because of buffer overflows under certain conditions).
* src/audio_output/input.c: the resamplers are now always active (expcept
in spdif mode).
* modules/audio_filter/resampler/*: modified the resampler to return the
input buffer when no resampling is needed.
audio output. Consequently, the first argument can be any vlc_object_t.
* modules/gui/macosx/*: greatly simplified volume functions ; you can now
call aout_Volume* even when there is no audio output, and the volume
will be saved for later use.
warnings than real ones.
* audio output: New intf-change variable to know when audio-channels
and audio-device have changed.
* video output: New intf-change variable and vout_VarCallback, to know
when video-device has changed (OS X port).
* modules/gui/macosx/*: Menus for audio channels, implemented volume
management, added a menu for screen selection.
and is replaced by two members : i_physical_channels and i_original_channels.
i_physical_channels describes the channels which are effectively present
in the stream (at the current point of the aout pipeline), whereas
i_original_channels represents the channels we used to constitute the
stream. For instance a mono stream (FRONT_CENTER) may emanate from a
FRONT_LEFT channel of a STEREO stream.
Additionally, this contains hooks to dynamically select the audio device
and the channels configuration. In order to do that, all aout plugins,
and all interface plug-ins need to be adapted. Currently only SDL
(partially OSS) and the rc interface have been adapted, please use them
as a guide. Other aout plug-ins have been temporarily disabled.
IMPORTANT : if you need a working sound output, DO NOT UPDATE YOUR TREE
for several days until we fix that.
* modules/misc/network/ipv4.c: Fixed a long-standing segfault when saving
preferences and asking for multicast.
it simply outputs a usage message.
* ./src/*: fixed a bunch of (legitimate) warnings under VC++.
* ./evc/*, ./msvc/*: split the workspaces into three projects (libvlc, vlc
and plugins -- plugins doesn't build anything yet).
modules/audio_filter/resampler/*: Changes that allow the resamplers to set
the start and end date of the frame it outputs.
This allows us for instance to output a smaller frame than what we should, and
keep the rest of the data to compute the resampling of the next frame.
In short, we can implement much more complex resampling algorithms than before.
* modules/audio_filter/resampler/linear.c: rewrote the linear resampler. The audio
quality doesn't seem to be better than the ugly resampler, maybe I shouldn't
have wasted my time on this...
* include/aout_internal.h src/audio_output/input.c: major change to the
resampling algorithm. When resampling is requested to keep the audio stream
synchronised to the main clock, we trigger it but we change the resampling
rate only progressively so it doesn't get noticed too much by the listener.
file from the makefile.
* ./msvc/*: moved the MSVC files here.
* ./src/extras/*: moved the extra code here (used to be in src/misc,
extras/GNUgetopt and extras/Win32_msvc).
* ./include/*: a few warning fixes.
aout_FifoFirstDate() that allows the aout plugin to schedule the first
play.
* src/audio_output/output.c: fixed another problem affecting the audio quality.
* modules/audio_output/directx.c: improvements. The buffering scheme has been
changed to be less affected by temporary starving. We also schedule the first sample to play.
* include/vlc_threads.h: Avoid locking the interface,
* ALL: reworked all audio output plug-ins to correctly take into account
i_channels. At present this is known to break OSS, probably others.
for information on how to use it in your interface plug-ins. In the
SDL vout, b and n are mapped to sound down/sound up.
* Fixed a major in the mad plug-in with wrong dates.
* Fixed a compilation bug.
* modules/codec/a52.c: Fixed detection of A/52 sound.
* modules/audio_filter/converter/a52tofloat32.c: Fixed a bug related to
downmixing.
* ALL: Added hooks for audio volume management.
autodetect S/PDIF hardware support and the audio output plug-in chooses
the best one. Of course it probably breaks existing output modules, see
oss.c for hints :).
Also include minor tweaks which will entitle us to decode and output 5.1
audio. It may break existing plug-ins, too. See
audio_output.c:aout_FormatNbChannels for hints.
pf_setformat disappears (it was never called independantly of Open). If
the format needs to be changed, we will have Close/Open. This is much
simpler than before. Please check that I didn't break some plug-ins.
(see my last mail).
* aout: Rewrote our whole lock policy. The output thread now doesn't require
the mixer_lock, which might avoid delays. We will also be able to change
the filter pipelines at runtime.
prototype change; it looks like we won't need it after all.
* ./src/audio_output/output.c: if audio output is too slow, but we
know there is no next packet, then we play it anyway. Rationale behind
this is: better play a slightly wrongly dated packet than play silence,
because it might be wrongly dated but there are chances it won't break
audio continuity.
* ./modules/audio_output/sdl.c: workaround for SDL's crap audio output
system (callback gets called at random times, and no way to know the
latency of the samples being played). Audio output is now rather good
here, but please give feedback.
* ./modules/audio_output/oss.c: we delay a bit before asking for a new
buffer to avoid starvation.
which lets the audio output module give a timeout value for buffer
delivery. This fixes a few issues with aout modules which were calling
aout_OutputNextBuffer way too early.
* Audio and video should now _always_ be perfectly in sync.
* Changes in a52.c (end_date management) must be ported to other codecs,
otherwise mixer errors will appear.
* Audio output plug-in can now tell whether they can handle a little
clock drift (for instance, inserting zeroes after a pause).
* Major changes in the handling of dates in the audio output ; still buggy,
but differently.
* Fixed a major bug in the aout pre-filters, preventing to run any other
decoder than liba52.
* p_aout->output.pf_play now has only one argument.
received does not start exactly at the given date, it indicates if the
output plug-in is able to compensate for the drift (for instance on
startup, or with S/PDIF packets), or if we need the aout core to
resample the coming buffers. It is currently unimplemented.
p_buffer now has a i_nb_bytes member. It is possible to indicate for a
format its byterate (necessary for AC3 and SPDIF).
* S/PDIF output seems to be working at last (tested with the file output).