Win32: implement variable cleanup more similar to POSIX...
...and less prone to deadlocks. This restarts until all keys are NULL,
in case cleaning up reset one key back to a non-NULL value.
There is still a slight difference with POSIX still. POSIX will restarts
only after all destructors have been invoked, not after the first one.
Erwan Tulou [Mon, 22 Nov 2010 20:10:52 +0000 (21:10 +0100)]
skins2: rework and simplify transparency
Several redraw were no longer needed
(tested successfully on Ubuntu/metacity and WinNT)
On Win32, switching back and forth between layered Window and not layered
window (case where only one of the two alpha parameters is < 255) was removed
because display was not satisfactory. (transition a bit weird)
Erwan Tulou [Mon, 22 Nov 2010 14:33:39 +0000 (15:33 +0100)]
skins2: improve the default skin placements
The default skins now benefits from relative positioning:
- main window centered
- playlist window centered with a 5% offset
- fullscreen controller centered at the bottom
of the screen with a 3% margin from the border
- other ancillary windows all centered
Erwan Tulou [Mon, 22 Nov 2010 14:38:56 +0000 (15:38 +0100)]
skins2: implement relative positioning
So far in skins2, all x, y, width and height were given in pixels, and
no reference to the screen resolution could be made.
This patch implements the following :
- all x, y, width, height can be given in pixels or in % of their container.
For windows, the container is the screen. For widgets, it can be the
layout or a panel.
- Five new tags eases up positioning
- position : relative position given as "Center", "West", "NorthWest", ...
- x/y-margin : margins to take into account (in px or %) wrt the borders.
- x/y-offset : additional offset to apply (in px or %).
- the image control can now accept a width and a height parameters.
Erwan Tulou [Mon, 22 Nov 2010 08:47:54 +0000 (09:47 +0100)]
skins2: some optimisation and cosmetics when moving/resizing windows
On most WM, move and resize are noop as long as the window is not visible, and
these calls have to be reissued once the window becomes visible.
- so avoid unnecessary calls when there are known to be noop.
- remove a move in TopWindow that appears hackish
(it hides a MoveResize and is actually needed for _all_ windows)
Erwan Tulou [Fri, 19 Nov 2010 18:31:14 +0000 (19:31 +0100)]
skins2(Win32 and Linux): Don't refresh a window forcefully
A good practice is to invalidate the window and leave it to the OS to decide if a repaint is or not needed.
As a side effect, this fixes some alternative task switchers (alt-tab) on WinNT (like TaskSwitcher or ATTv) that displayed a black rectangle instead of the preview of the skin, because the skin engine was not doing things the usual way.
libvlc_set_format_callbacks: dynamic video format selection
LibVLC applications can now select their video memory format when the
video output is created. In particular, this allows preservation of the
original pixel dimensions.
While untested, this should also enable planar YCbCr rendering. Until
this, vmem assumed that all planes had equal pitches, so that subsampled
planes would not really work.
Rafaël Carré [Sun, 7 Nov 2010 17:55:58 +0000 (18:55 +0100)]
x264: write first SEI NAL into first picture
It contains the x264 version info and options used for encoding
If we let it in extradata it will not be present in the final file
libavcodec does that already, and this makes it easier to compare x264
options used by VLC and FFmpeg.
Comparing FFmpeg and VLC with the exact same set of options might help
finding why mpeg (at least mpeg2/mpeg4/flv) encoding is 5 times slower
with vlc than with ffmpeg, supposedly for the same set of options.
Allow demux to select the PTS delay, fallback to access
This will allow the SDP parsers to set their PTS delay according
to rtsp-caching/rtp-caching rather than the caching value of the
access module. The access module is irrelevant in that particular
case.
This avoids iterating through all config items of each modules. On my
system, this cuts the vlcrc load time in half, and is also far simpler.
The loader is essentially ignoring the config section, which reflects
the architectural "limitation" of the VLC configuration.
This also avoids loosing settings during VLC upgrades if an option moves
from one module to another one (which did happen in the past).
Pierre Ynard [Tue, 16 Nov 2010 21:33:20 +0000 (22:33 +0100)]
Merge VoD module into RTP stream output module
Cleaner and better working solution for VoD than the bad hack that we
currently have. Instead of (badly) duplicating large portions of codes,
it reuses the existing RTSP stack and factorizes the RTP payload code,
and provides support for a number of ES not limited to one audio and one
video tracks, as well as for missing features in RTSP headers.
The VoD module is responsible for starting and running the RTSP stack.
When a VoD media instance is started, the VLM passes down media and
session parameters as variables to the RTP stream output object, that
uses them to hook back into the VoD code (and through it, into the RTSP
stack), to retrieve accurate, already set up parameters, and provide
playback data.
This calls a var_GetBool each time a menu is redrawn. This may be not
optimal. Maybe a callback on "play-and-exit" would be better?
Do we care about the performance on that part (menu display)?
Close #3842