Go to file
Marvin Scholz 879ca61f8c vout/caopengllayer: rewrite most of the module
Rewrites most of the layer vout code to have the same features as the
view based vout. Additionally fixes laggy resizing, fixes CGL context
creation bugs, adds support for CI filters and fixes various memory
management errors.

The CAOpenGLLayer based API is special and different from all other APIs
provided on other OSes as it is not a push-model API but a pull one,
where the OS calls a specific method when a new frame should be rendered.
This makes integration into VLC relatively tricky and the code a bit
harder to follow.
While the API is a pull-model, we can kind of trick it by just forcing
a re-display of the layer in the vouts display function. With views this
would be forbidden as views are supposed to be accessed from the main
thread only, but with layers this is possible if some care is taken.
When forcing the layer to render from a different thread, the implicitly
created CATransaction has to be flushed explicitly, as we do not have a
main loop at the end of which it would be flushed.

We do not force rendering all the time though, as doing that would break
resize animations given that VLC can not know the right time when display
refresh will happen, so resizing would look laggy and have glitches, as
during a resize both the OS and VLC would drive the rendering of the
layer, resulting in unexpected result.
To prevent that, when live resizing starts (the user resizing by dragging
a windows corner), the layer is set into asynchronous rendering mode
which makes the OS drive the rendering loop completely not only for
drawing the resize change. While the layer is in asynchronous mode, we
ignore all update requests from the core, as the layer is anyway updated
continuously by the OS and forcing rendering from another thread would
lead to artifacts. Additionally while in live resize, we do not report
the size changes to the core, as the event takes too long to reach the
vout Control() function, resulting in the layer content being displayed
at the wrong (old) size. Instead we take the current viewport size
as the size and display using that.

Another unusual thing compared to other vouts is that the VLC OpenGL
display functions to update the viewport and aspect ratio are not
called in the Control event handling callback, thats because before
the render callback is called, the OS sets the OpenGL viewport to match
the layer backing store size. So setting it in the Control callback
is useless as it does not make any difference.
2020-02-24 17:19:15 +01:00
autotools Fix .gitignore 2017-11-07 19:04:24 +02:00
bin winvlc: Work around lack of relocation table in vlc.exe 2018-08-09 16:48:25 +02:00
compat Remove old mail address from sources 2019-09-04 22:12:12 +03:00
contrib contrib: taglib: Bump to 1.11.1 2020-02-15 13:14:58 +01:00
doc doc: fix make distcheck with git worktrees 2020-01-20 17:27:45 +01:00
extras macosx: Use avaudiocapture module instead of qtsound 2020-02-11 18:58:46 +01:00
include vlc_es: add CLUT chroma info 2020-01-13 17:40:16 +01:00
lib lib: renderer_discoverer: Allow a renderer_discoverer to be stopped then released 2018-03-21 16:53:23 +01:00
m4 m4: fix false negative working iconv test 2017-11-14 18:59:50 +02:00
modules vout/caopengllayer: rewrite most of the module 2020-02-24 17:19:15 +01:00
po qtsound: Remove module 2020-02-11 18:58:46 +01:00
share youtube.lua: update signature descrambling javascript parsing 2020-01-23 22:56:40 +01:00
src darwin/thread: Ignore vlc_mutex_unlock failures 2020-02-21 13:05:27 +01:00
test test: hxxx: missing config.h 2017-12-26 23:51:30 +01:00
.gitattributes Supports $ rewrite via .gitattributes 2008-03-02 14:46:27 +01:00
.gitignore gitignore: Be more lax with the build folders 2015-10-09 14:19:25 +02:00
.mailmap mailmap: remove one former address of mine 2015-06-28 17:18:06 +03:00
AUTHORS AUTHORS: Add Doney den Ouden 2018-02-10 13:47:42 +01:00
COPYING COPYING.*: Use full versions of licenses. 2012-02-14 17:40:06 +04:00
COPYING.LIB COPYING.*: Use full versions of licenses. 2012-02-14 17:40:06 +04:00
INSTALL Update GCC version 2016-09-20 13:03:20 +03:00
Makefile.am extras/tools: add all files in the dist package 2017-12-21 10:52:52 +01:00
NEWS Update NEWS 2020-02-18 22:51:20 +01:00
README Update README 2013-04-20 18:44:59 +02:00
THANKS THANKS: Updated a few copyright dates 2017-02-01 22:02:59 +01:00
bootstrap Remove old mail address from sources 2019-09-04 22:12:12 +03:00
configure.ac configure.ac: Fix trailing whitespace 2020-02-11 18:58:46 +01:00
make-alias Take program prefix and suffix into account in the make-alias script. 2008-05-26 00:11:33 +02:00

README

README for the VLC media player
===============================

VLC is a popular libre and open source media player and multimedia engine,
used by a large number of individuals, professionals, companies and
institutions. Using open source technologies and libraries, VLC has been
ported to most computing platforms, including GNU/Linux, Windows, Mac OS X,
BSD, iOS and Android.
VLC can play most multimedia files, discs, streams, allows playback from
devices, and is able to convert to or stream in various formats.
The VideoLAN project was started at the university École Centrale Paris who
relicensed VLC under the GPLv2 license in February 2001. Since then, VLC has
been downloaded close to one billion times.

Links:
======

The VLC web site  . . . . . http://www.videolan.org/
Support . . . . . . . . . . http://www.videolan.org/support/
Forums  . . . . . . . . . . http://forum.videolan.org/
Wiki  . . . . . . . . . . . http://wiki.videolan.org/
The Developers site . . . . http://wiki.videolan.org/Developers_Corner
VLC hacking guide . . . . . http://wiki.videolan.org/Hacker_Guide
Bugtracker  . . . . . . . . http://trac.videolan.org/vlc/
The VideoLAN web site . . . http://www.videolan.org/

Source Code Content:
===================
ABOUT-NLS          - Notes on the Free Translation Project.
AUTHORS            - VLC authors.
COPYING            - The GPL license.
COPYING.LIB        - The LGPL license.
INSTALL            - Installation and building instructions.
NEWS               - Important modifications between the releases.
README             - This file.
THANKS             - VLC contributors.

bin/               - VLC binaries.
bindings/          - libVLC bindings to other languages.
compat/            - compatibility library for operating systems missing
                     essential functionalities.
contrib/           - Facilities for retrieving external libraries and building
                     them for systems that don't have the right versions.
doc/               - Miscellaneous documentation.
extras/analyser    - Code analyser and editor specific files.
extras/buildsystem - different buildsystems specific files.
extras/misc        - Files that don't fit in the other extras/ categories.
extras/package     - VLC packaging specific files such as spec files.
extras/tools/      - Facilities for retrieving external building tools needed
                     for systems that don't have the right versions.
include/           - Header files.
lib/               - libVLC source code.
modules/           - VLC plugins and modules. Most of the code is here.
po/                - VLC translations.
share/             - Common Resources files.
src/               - libvlccore source code.
test/              - testing system.