Even though the source provides a (source) projection, this new
parameters provides a way to specify how the projection should be
rendered on-screen. The current goal is not to provide projection
filtering (eg. changing from cubemap to equirectangular) but mostly to
be able to enforce a rectangular projection rendering and avoid the
mapping to 3D objects on the display.
This change prepare the viewpoint structure to use quaternions in
the core, while still using Euler angles in the current clients.
Euler angles have singularity issues, which in the convention
we chosed happens at the north and south poles. It didn't matter
when using usual yaw/pitch controllers since there are not a lot
of way to do this, but it definitively matters when the orientation
is already described by a quaternion. In particular, phone devices
or HMD headset with gyroscopes can easily reach the north and south
poles while having a different roll-like rotation, so can trigger
those bugs.
Using quaternions from the start won't trigger those issues in
cases where the control is not done through the euler-angle-like
paradigm, while still allowing clients to use it as long as they
handle the problem themselves.
The commits afterwards will make use of the function to interact with
the viewpoint.
This will avoid to parse/decode the same video more than one times when
generating more than one thumbnail from one video (when generating
thumbnails with different sizes, like it is already done by the
medialibrary)
This is in the continuity of aad952ea38.
The previous commit added an internal error code for preparsing
cancellation that wasn't handled in libvlc, the API stopped reporting
preparsing termination, which resulted in a medialibrary regression.
Previously, the cancellation was reported as a timeout event which is
misleading. This patch introduces a new status code to properly match
libvlc's internals.
You should now use a preparser to generate thumbnails.
One single preparser is able to:
- Parse
- Fetch meta
- Generate thumbnails
Using 3 different queues. It is also possible to create a preparser for
only one type of processing.
In order to behave like the vlc_preparser.h API.
vlc_thumbnailer_SetTimeout Will be used by libvlc_media_t, temporarily,
waiting for the future libvlc_parser_t API.
This id can be used to cancel a task.
vlc_thumbnailer_DestroyRequest() had been renamed to
vlc_thumbnailer_Cancel(). The new function is optional and can be used
to cancel a task. The user doesn't have the responsibility to free the
request anymore.
And rework input_item_meta_request_option_t:
- META_REQUEST_OPTION_SCOPE_LOCAL and META_REQUEST_OPTION_SCOPE_NETWORK
are merged into META_REQUEST_OPTION_PARSE
A preparser API that does not preparse item is weird...