libvlc: simplify and clean up external logging API (fixes #8129)
- Scope the callback to its instance.
- Avoid leaking the layout of an internal data structure.
- Future-proof passing of extra informations through an opaque pointer.
Martin Storsjö [Mon, 18 Mar 2013 19:37:15 +0000 (21:37 +0200)]
omxil: Feed input data in multiple buffers if needed
This fixes decoding of higher resolution content on the raspberry
pi, where the decoder defaults to 80 KB input buffers and doesn't
react if trying to enlarge them in
ImplementationSpecificWorkarounds().
Unfortunately, since the modules bank uses logging, and provides the
configuration, the message settings cannot be stored in the
configuration file. All messages could be removed from the bank but
that would hurt debugging in some cases :-/
Martin Storsjö [Mon, 11 Mar 2013 14:52:21 +0000 (16:52 +0200)]
omxil: Use the alternative 64 bit integer ABI on the raspberry pi
This changes how some structs are laid out.
Most of OMX API implementation on the raspberry pi runs on the
VideoCore processor and not on the normal ARM thar runs the
userland. Some OMX structs are passed over to this processor as
whole blocks, so the OMX ABI used in the userland is tied to be the
same as the one used by the VideoCore firmware.
Martin Storsjö [Mon, 11 Mar 2013 14:52:13 +0000 (16:52 +0200)]
omxil: Signal OMX version 1.1.2 when targeting raspberry pi
The broadcom OMX IL core requires this in order to respond to
requests.
In principle, this shouldn't probably break other OMX implementations,
unless they are picky about it in the same way, requiring version
1.1.1, but still keeping it behind ifdefs just in case.
Martin Storsjö [Mon, 11 Mar 2013 14:51:47 +0000 (16:51 +0200)]
omxil: Try to load the broadcom OMX IL core and host library on the raspberry pi
The host library is intentionally not unloaded, since it starts
background threads when initialized, and the deinit function does
not stop the threads. Therefore, this library cannot be unloaded
once loaded and initialized.
Martin Storsjö [Mon, 11 Mar 2013 14:52:20 +0000 (16:52 +0200)]
omxil: Add an omxil based video output module
This is kept under modules/codes/omxil due to sharing much code
with the omxil codec.
This is only tested with the OMX.broadcom.video_render component
on the Raspberry Pi so far, which in itself doesn't advertise any
roles at all, so this could possibly use the "iv_renderer.yuv.overlay"
role instead of plan "iv_renderer".
But it should be possible to generalize this further and adapt it to
any OMX IL video renderer component.
Martin Storsjö [Mon, 11 Mar 2013 14:51:41 +0000 (16:51 +0200)]
omxil: Split omx core management to a separate file
The point of the omx core management is to try to load and init the
OMX core once, even if there's multiple e.g. decoder instances. The
reason for this is that there are OMX cores where the deinit function
will deinitialize the whole core on the first deinit call, even if
init has been called twice.
If this file is to be built as part of multiple separate shared
plugins, each of the plugins will initialize the OMX core separately,
which could cause issues with such OMX cores.
Since the second plugin that uses the OMX core, an OMX vout plugin,
isn't used automatically, and the only OMX implementation it currently
is tested to actually work with (the Broadcom OMX core on Raspberry
Pi) doesn't have issues with being uninitialized multiple times,
there's no need to jump through hoops to fix this theoretical issue
right now though.
For reference, if we really want to make sure the omx core is loaded
and initialized only once, the plugins need to be loaded with
RTLD_GLOBAL and all the variables in omxil_core.c need to be marked
with __attribute__ ((visibility ("default"))). But that's generally
not an option, and shouldn't be necessary right now at least.
Ilkka Ollakka [Sun, 17 Mar 2013 15:45:46 +0000 (17:45 +0200)]
livehttp: tell if playlist is vod
Mark EXT-X-PLAYLSIT-TYPE:EVENT if it's still under generating and at the
end, mark it as VOD in cases where we keep all the segments and those
are in playlist.
Martin Storsjö [Tue, 12 Mar 2013 14:02:55 +0000 (16:02 +0200)]
opengl: Fix the ES 1 vs 2 version check
The version string for ES 1 is "OpenGL ES-CM 1.x" or
"OpenGL ES-CL 1.x". For ES 2 it is "OpenGL ES 2.0", while it
seems to be only "3.x" for ES 3.
Since the code is mostly built for either ES 1 or ES 2 (only
Apple support targeting both at the same time, from the same
built object code - but we only use ES 2 on iOS), simplify
this down to a compile time decision.
Martin Storsjö [Mon, 11 Mar 2013 19:25:30 +0000 (21:25 +0200)]
omxil: Convert the khronos provided headers to unix newlines
All headers except OMX_Component.h seemed to be stored with dos
newlines for some unknown reason. In the OpenMAX IL 1.1.2 header
zip file provided by Khronos, they are provided with unix newlines,
which also is the norm for the VLC codebase.
Martin Storsjö [Mon, 11 Mar 2013 14:52:09 +0000 (16:52 +0200)]
omxil: Convert from/to OMX_TICKS via helper functions
The 64 bit timestamp fields can be defined either as 64 bit
integers or as structs with two 32 bit members. If the
struct variant is being used, we need to convert to/from it
with helper functions.
Stephen Parry [Wed, 6 Mar 2013 19:36:07 +0000 (19:36 +0000)]
vimeo playback now hides user agent automatically
Vimeo injects garbage into pages fetched by any user agent recognisable as
being VLC. Amended parse routine to check the current user agent; if the user
agent is set to VLC then parse returns a replacement playlist entry with the
same url but with an option setting the user agent to something that vimeo will
not trash.
The main playlist parsing loop then re-opens the stream with the correct agent
and calls vimeo.lua a second time; the stream is then parsed as before to get
the actual shortlived video url.
Before dictionaries there was a loop, so if-else way was ok, but not now. Also, locale-dependent atof().
Remove unnecessary replaygain stuff from flac demuxer.