David Fuhrmann [Sun, 2 Apr 2017 09:50:48 +0000 (11:50 +0200)]
macosx: Info.plist: Move vlc extension to UTI
David Fuhrmann [Sun, 2 Apr 2017 09:09:17 +0000 (11:09 +0200)]
macosx: Info.plist: Remove extension for mkv and mka
They are already defined in the linked UTIs.
David Fuhrmann [Sun, 2 Apr 2017 09:02:02 +0000 (11:02 +0200)]
macosx: Info.plist: Remove some system defined UTIs
Videolan should not declare UTIs under its own namespace if other
official UTI definitions already exist. Remove some UTIs which
are system defined.
David Fuhrmann [Sun, 19 Mar 2017 16:36:55 +0000 (17:36 +0100)]
macosx: Use more standard UTIs in Info.plist
Usage of CFBundleTypeExtensions, CFBundleTypeMIMETypes and
CFBundleTypeOSTypes is deprecated since a long time,
and LSItemContentTypes with a correct UTI should be used instead.
Switch to system defined UTIs if possible.
Francois Cartegnie [Sat, 1 Apr 2017 12:56:41 +0000 (14:56 +0200)]
demux: ps: fix h264 regression
Steve Lhomme [Thu, 30 Mar 2017 09:47:02 +0000 (11:47 +0200)]
contrib: ffmpeg: bump the revision to include a DXVA2 fix
backported
fabfbfe5710050812147f93a351a53fdda56ff8c could explain some
regressions we have with DXVA.
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Dennis Hamester [Wed, 22 Mar 2017 08:59:03 +0000 (09:59 +0100)]
compat: Add custom implementation of recvmsg/sendmsg on NaCl
On Pepper 49, recvmsg and sendmsg are implemented as stubs, which always
return ENOTSUP. Proper implementations for these functions will become
available in later Pepper versions, which should make these compat
functions obsolete.
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Dennis Hamester [Wed, 22 Mar 2017 08:58:59 +0000 (09:58 +0100)]
compat: Add pathconf dummy replacement for nacl
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Francois Cartegnie [Fri, 31 Mar 2017 12:51:23 +0000 (14:51 +0200)]
packetizer: h264: fix rate change test
Francois Cartegnie [Fri, 31 Mar 2017 12:33:17 +0000 (14:33 +0200)]
ps/dvdnav/dvdread set psm less config to default mpeg2 streams
otherwise streams are now not configured with dvd as we have
no packet for probing non mpeg2 streams.
Francois Cartegnie [Fri, 31 Mar 2017 12:32:26 +0000 (14:32 +0200)]
demux: ps: remove tautology
Francois Cartegnie [Fri, 31 Mar 2017 12:30:09 +0000 (14:30 +0200)]
access: dvdnav: always check es creation
can always fail, including missing decoder
Francois Cartegnie [Fri, 31 Mar 2017 12:26:33 +0000 (14:26 +0200)]
demux: ps: split seen / configured states
b_seen was misused for both stream presence
and after configuration
Francois Cartegnie [Thu, 30 Mar 2017 20:02:56 +0000 (22:02 +0200)]
codec: avcodec: don't drop late frames due to preroll
Francois Cartegnie [Thu, 30 Mar 2017 17:10:59 +0000 (19:10 +0200)]
packetizer: hevc: add poc computation
Francois Cartegnie [Thu, 30 Mar 2017 17:09:38 +0000 (19:09 +0200)]
packetizer: hevc: parse slices poc lsb
Francois Cartegnie [Thu, 30 Mar 2017 14:22:39 +0000 (16:22 +0200)]
packetizer: hevc: store nal properties in slice
will be used for decoding poc
Steve Lhomme [Thu, 30 Mar 2017 11:47:41 +0000 (13:47 +0200)]
codec: avcodec: copy the source mastering/light level into the output
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Steve Lhomme [Fri, 31 Mar 2017 09:07:56 +0000 (11:07 +0200)]
direct3d11: set the HDR metadata on the SwapChain when available
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Steve Lhomme [Thu, 30 Mar 2017 09:20:01 +0000 (11:20 +0200)]
contrib: d3d11: add dxgi1.5 to support HDR10 metadata
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Steve Lhomme [Fri, 31 Mar 2017 09:07:32 +0000 (11:07 +0200)]
packetizer: hevc: write the HDR metadata in the output video format
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Steve Lhomme [Fri, 31 Mar 2017 09:07:31 +0000 (11:07 +0200)]
hxxx_sei: add HDR10 metadata parsing
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Steve Lhomme [Fri, 31 Mar 2017 09:07:30 +0000 (11:07 +0200)]
vlc_es: add support for mastering colour volume data & content light level
As in HDR10 metadata speficied in SMPTE ST 2086 and CEA 861.3.
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Thomas Guillem [Fri, 31 Mar 2017 07:30:18 +0000 (09:30 +0200)]
codec: hxxx: fix invalid free
Thomas Guillem [Thu, 30 Mar 2017 15:36:19 +0000 (17:36 +0200)]
opengl: fix persistent performances on AMD
The GL_CLIENT_STORAGE_BIT flag indicates that the data should be on the CPU
side. This fixes high CPU usage with AMD GPUs and improve performances lightly
with others GPUs.
Fixes #18134
Hugo Beauzée-Luyssen [Thu, 30 Mar 2017 15:36:55 +0000 (17:36 +0200)]
lua: Don't expose a "goto" method in lua >= 5.2
It became a reserved keyword
Hugo Beauzée-Luyssen [Thu, 30 Mar 2017 14:50:44 +0000 (16:50 +0200)]
lua: lua_ExecuteFunctionVa: Cleanup the stack in case of error
Fix #5044
Francois Cartegnie [Thu, 30 Mar 2017 13:22:23 +0000 (15:22 +0200)]
packetizer: h264: allow change in color space
Francois Cartegnie [Thu, 30 Mar 2017 13:21:55 +0000 (15:21 +0200)]
packectizer: h264: don't override provided frame rate
And allow it to change if not provided
Francois Cartegnie [Thu, 30 Mar 2017 13:08:00 +0000 (15:08 +0200)]
packetizer: hevc: allow changing fmt.video params
Thomas Guillem [Thu, 30 Mar 2017 12:15:03 +0000 (14:15 +0200)]
mediacodec: handle adaptive for mp4v
Thomas Guillem [Thu, 30 Mar 2017 12:13:25 +0000 (14:13 +0200)]
mediacodec: refactor
Rename ParseVideoExtra to ParseExtra and handle CSD for every ES.
Thomas Guillem [Thu, 30 Mar 2017 12:10:05 +0000 (14:10 +0200)]
mediacodec: update vout when size is changed by mediacodec
Rename UpdateOpaqueVout() to UpdateVout(): this function is now used for non
opaque vouts.
In case of direct rendering, UpdateVout() is called at Open to initialize the
Android Surface. UpdateVout() can be called again from the Output thread if the
video size change.
Thomas Guillem [Thu, 30 Mar 2017 12:07:46 +0000 (14:07 +0200)]
mediacodec: remove useless check
This check is done from StartMediaCodec and is ignored if the device can do
adaptive.
Thomas Guillem [Thu, 30 Mar 2017 12:06:52 +0000 (14:06 +0200)]
mediacodec: late opening works only for hxxx
Thomas Guillem [Thu, 30 Mar 2017 12:06:05 +0000 (14:06 +0200)]
mediacodec: move size initialization
Thomas Guillem [Thu, 30 Mar 2017 12:05:09 +0000 (14:05 +0200)]
avcodec: fix flush when the codec is not opened
Francois Cartegnie [Thu, 30 Mar 2017 13:05:31 +0000 (15:05 +0200)]
packetizer: mpeg4video: check for oob read
Francois Cartegnie [Thu, 30 Mar 2017 13:02:39 +0000 (15:02 +0200)]
packetizer: mpeg4video: use defines
Francois Cartegnie [Thu, 30 Mar 2017 12:48:08 +0000 (14:48 +0200)]
packetizer: mpeg4video: parse/set color space
Hugo Beauzée-Luyssen [Thu, 30 Mar 2017 09:25:36 +0000 (11:25 +0200)]
lua: Mandate KillExtension to be called with command_lock locked
Otherwise the caller always unlocks the lock, only to have it acquire
again by KillExtension.
Hugo Beauzée-Luyssen [Thu, 30 Mar 2017 09:14:27 +0000 (11:14 +0200)]
lua: Remove dubious LockExtension/UnlockExtension
Hugo Beauzée-Luyssen [Thu, 30 Mar 2017 09:00:38 +0000 (11:00 +0200)]
lua: Ensure LuaGetState will always be called with a valid extension
Otherwise the returned state wouldn't be stored in the extension, and
would eventually be leaked
Hugo Beauzée-Luyssen [Thu, 30 Mar 2017 11:47:45 +0000 (13:47 +0200)]
lua: Use QueueDeactivateCommand when suitable
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 16:37:22 +0000 (18:37 +0200)]
lua: Don't attempt to deactivate the extension when killing it.
As the extension thread is holding the lock, and stuck while the lua
function is executing, when a timeout is detected, there's no way to
acquire the lock, not to execute the deactivate function in a thread
safe manner.
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 16:08:45 +0000 (18:08 +0200)]
lua: Split CMD_DEACTIVATE generation/queuing out of Deactivate
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 14:57:13 +0000 (16:57 +0200)]
lua: Properly support reactivation of the extension
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 14:27:39 +0000 (16:27 +0200)]
lua: Simplify activated extension detection
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 12:24:14 +0000 (14:24 +0200)]
lua: Don't deactivate the extension when failing to create its thread
This is a noop since b_exiting is true, but even if it wasn't, there's
no thread to pick up the command anyway.
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 12:00:07 +0000 (14:00 +0200)]
lua: Cleanup lua state once the thread has joined
Hugo Beauzée-Luyssen [Tue, 28 Mar 2017 14:04:05 +0000 (16:04 +0200)]
lua: PushCommand: Check for allocation failure
Hugo Beauzée-Luyssen [Tue, 28 Mar 2017 14:03:30 +0000 (16:03 +0200)]
lua: PushCommand: Reduce locked scope
Hugo Beauzée-Luyssen [Tue, 28 Mar 2017 13:54:00 +0000 (15:54 +0200)]
lua: Factorize timeout detection
Hugo Beauzée-Luyssen [Mon, 27 Mar 2017 15:01:24 +0000 (17:01 +0200)]
lua: Join all threads
Not only the active ones.
Hugo Beauzée-Luyssen [Mon, 27 Mar 2017 13:17:42 +0000 (15:17 +0200)]
lua: Fix deadlock when deactivating extension due to timeout.
lua_ExecuteFunctionVa is not meant to be called with the command_lock
held.
This partially reverts
7a94f2e6b22bad255ddcca6e095ed33bc4803e45
Fix #17565
Thomas Guillem [Thu, 30 Mar 2017 09:06:11 +0000 (11:06 +0200)]
codec: hxxx: add missing break
Thomas Guillem [Thu, 30 Mar 2017 08:23:01 +0000 (10:23 +0200)]
videotoolbox: remove stray debug log
Thomas Guillem [Thu, 30 Mar 2017 08:22:46 +0000 (10:22 +0200)]
codec: hxxx: fix debug logs
Thomas Guillem [Thu, 30 Mar 2017 08:16:44 +0000 (10:16 +0200)]
videotoolbox: fix build
Francois Cartegnie [Wed, 29 Mar 2017 17:08:18 +0000 (19:08 +0200)]
packetizer: hevc: only change format on sps activation
Francois Cartegnie [Wed, 29 Mar 2017 17:07:58 +0000 (19:07 +0200)]
packetizer: hevc: keep track of active xPS
Francois Cartegnie [Wed, 29 Mar 2017 17:00:05 +0000 (19:00 +0200)]
packetizer: hevc: use helper to get pps/sps/vps
Francois Cartegnie [Tue, 28 Mar 2017 18:10:08 +0000 (20:10 +0200)]
decoder: VideoToolbox: have adaptive DPB
Max DPB is wrong on some streams. What else can go wrong ?
Francois Cartegnie [Mon, 20 Mar 2017 16:27:23 +0000 (17:27 +0100)]
decoder: VideoToolBox: use POC for H264
Also fixes the PTS less playback
Filip Roséen [Tue, 11 Oct 2016 06:19:30 +0000 (08:19 +0200)]
libvlc-module: change preparsing options descriptions
There is nothing stating that we only preparse "files", as such the
usage of "file" has been changed to "item". Also, the previous text
did not mention in what unit the timeout was given - these changes
simply adds information stating that it is is milliseconds.
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Filip Roséen [Fri, 17 Mar 2017 13:03:33 +0000 (14:03 +0100)]
preparser: post-pone event until after art fetching is complete
Since one can request art to be fetched through
libvlc_media_parse_with_options, one would expect the event
originating from this request to be sent upon the completion of all
requested operations (not just the preparsing). The alternative would
be to monitor the libvlc_MediaMetaChanged, hoping for an artwork URL
change, but this can't account for error nor timeout.
--
The changes introduced were written after a discussion with Hugo
Beauzée-Luyssen where he expressed that he would, if possible, be able to
post-pone the preparsing events until the art fetching is complete.
Post-poning the event fixes issues that are currently reproducible where
medialibrary is used, and art is missing (because it listens to the preparse
event in order to generate the database contents).
It can be viewed as a follow-up to the below rejected patch (with the
same goal in mind):
- https://patches.videolan.org/patch/15810/
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Filip Roséen [Wed, 22 Mar 2017 14:57:25 +0000 (15:57 +0100)]
playlist: fix deadlock on destruction while preparser adds items to playlist
As we can have incoming requests to the preparser while we are
destroying libvlc, we can end up in a deadlock while we are removing
all playlist_item_t from the playlist, while an item being preparsed
tries to add additional items to the list.
These changes fixes the issue by introducing a preparser-deactivation
function, that will make sure that we:
1) clear out any pending preparsing requests
2) cancel the current item preparsing (blocking)
3) prevent further requests to the preparser
fixes: #18151
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Filip Roséen [Tue, 21 Mar 2017 01:02:38 +0000 (02:02 +0100)]
playlist: cancel preparsing upon playback
This will cancel any pending request for preparsing the relevant
playlist_item_t as preparsing the entity:
- is redundant since we are about to start playback,
- can remove metadata added during playback, and;
- can lead to duplicate entries in the playlist if the
playlist_item_t is a directory (as children are added each time
such entity is "played").
fixes: #17441
fixes: #17232
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Filip Roséen [Wed, 12 Oct 2016 20:01:52 +0000 (22:01 +0200)]
playlist/fetcher: refactor
The following changes refactors the fetcher to take advantange of the
newly introduced background_worker helper. The new implementation
should not only be easier to maintain, but it also adds some
advantages over the old implementation:
- The implementation has shrunk in size.
- A fetch-request can include a timeout.
- Given that there now is a background worker associated with each of
the different fetcher types (local, network, download):
- A slow download does not prevent the network-fetcher from
working the queue.
- A slow network-fetcher does not prevent further work in regards
of pending requests in the local fetcher.
- A fetch request can now be properly cancelled (most importantly
during VLC close).
- We no longer invoke modules with "meta fetcher" capability if the
item already has all metadata in terms of title, album, and artist.
- We no longer invoke modules with "art finder" capability of the
item already has vlc_meta_ArtworkUrl.
fixes: #18150
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Filip Roséen [Tue, 21 Mar 2017 01:12:37 +0000 (02:12 +0100)]
playlist/preparser: refactor
This refactoring should not only allow for easier maintenance as the
code size has shrunk, it also implements a few advantages over the
previous implementation:
- playlist_preparser_Cancel is now optionally blocking if the
referred to item is currently being preparsed (required in cases
where another action would race with the preparser, such as
playback (as preparsing and playing an entity at the same time can
lead to duplicate items in the playlist).
- the congestion in terms of interacting with the preparser, and the
preparsing itself, is lower. Meaning that we will finish a queue of
items to preparse faster than with the old implementation.
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Filip Roséen [Mon, 10 Oct 2016 23:36:25 +0000 (01:36 +0200)]
playlist/background_worker: introduce background-worker utility
This added utility will make it easier to handle a queue of tasks that
is to be finished in the order received. It allows for users of the
utility to focus on the end-goal instead of having to deal with
synchronization issues in terms of task-queue handling.
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
Francois Cartegnie [Tue, 28 Mar 2017 14:19:25 +0000 (16:19 +0200)]
codec hxxx: fix parsing avcc
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
Francois Cartegnie [Tue, 28 Mar 2017 13:29:51 +0000 (15:29 +0200)]
codec: hxxx: always use externally specified nal length size
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
Francois Cartegnie [Tue, 28 Mar 2017 15:02:04 +0000 (17:02 +0200)]
videotoolbox: missing hxxx cleanup
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
Thomas Guillem [Mon, 27 Mar 2017 15:19:39 +0000 (17:19 +0200)]
videotoolbox: drain output pictures before restarting
Thomas Guillem [Mon, 27 Mar 2017 14:52:33 +0000 (16:52 +0200)]
videotoolbox: restart in case of kVTVideoDecoderBadDataErr
Restart and try to decode the same block again.
Thomas Guillem [Mon, 27 Mar 2017 14:52:02 +0000 (16:52 +0200)]
videotoolbox: refactor error handling
Thomas Guillem [Tue, 28 Mar 2017 08:20:39 +0000 (10:20 +0200)]
mediacodec: increase hack delay to 2 seconds
Thomas Guillem [Mon, 27 Mar 2017 15:59:07 +0000 (17:59 +0200)]
mediacodec: drain before restart
This avoid to loose some frames when SPS/PPS change.
Thomas Guillem [Mon, 27 Mar 2017 15:51:07 +0000 (17:51 +0200)]
mediacodec: OutThread can be drained more than one time
Thomas Guillem [Mon, 27 Mar 2017 15:40:58 +0000 (17:40 +0200)]
mediacodec: refactor input block queue function
Thomas Guillem [Fri, 24 Mar 2017 11:02:22 +0000 (12:02 +0100)]
mediacodec: add adaptive playback support
Starting Android 4.4, devices can have the "adaptive-playback" capability. If a
device have such capability, we don't have to use hxxx_helper to detect SPS/PPS
change since the device is capable of handling it. It can also handle a video
size change.
Thomas Guillem [Fri, 24 Mar 2017 10:51:24 +0000 (11:51 +0100)]
mediacodec: setup block callbacks from PaseVideoExtra
Thomas Guillem [Thu, 23 Mar 2017 15:05:56 +0000 (16:05 +0100)]
mediacodec: add missing alloc check
Thomas Guillem [Tue, 21 Mar 2017 09:58:51 +0000 (10:58 +0100)]
mediacodec/videotoolbox: add hxxx_helper
hxxx_helper is a H264/HEVC helper used by mediacodec and videtoolbox. For
mediacodec, it's used to convert (and validate) xvcC to AnnexB or used to
detect SPS/PPS change when decoding AnnexB. For videotoolbox, it's used to
validate avcC or to convert AnnexB to avcC (and detect SPS/PPS change) when
decoding AnnexB.
Thomas Guillem [Fri, 24 Mar 2017 12:16:22 +0000 (13:16 +0100)]
videotoolbox: merge starts and stops functions
Merge StartVideoToolbox with StartVideoToolboxSession, and merge
StopVideoToolbox with StopVideoToolboxSession.
Thomas Guillem [Thu, 23 Mar 2017 15:37:05 +0000 (16:37 +0100)]
videotoolbox: split StartVideoToolbox
Split decoder extra configuration from StartVideoToolbox.
Thomas Guillem [Fri, 24 Mar 2017 07:16:22 +0000 (08:16 +0100)]
packetizer: h264: handle more than one SPS/PPS in h264_NAL_to_avcC
Thomas Guillem [Thu, 23 Mar 2017 16:36:19 +0000 (17:36 +0100)]
packetizer: h264: remove unused function
Thomas Guillem [Fri, 24 Mar 2017 15:36:14 +0000 (16:36 +0100)]
block: expose block_TryRealloc
Francois Cartegnie [Wed, 29 Mar 2017 09:52:24 +0000 (11:52 +0200)]
packetizer: dts: check header values range
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 09:48:35 +0000 (11:48 +0200)]
contrib: bump microdns to 0.0.5
Francois Cartegnie [Tue, 28 Mar 2017 14:16:32 +0000 (16:16 +0200)]
packetizer: h264: fix read check on total avcc size computation
Francois Cartegnie [Tue, 28 Mar 2017 19:47:23 +0000 (21:47 +0200)]
packetizer: dts: workaround incorrect FSIZE (fix #18166)
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 07:57:27 +0000 (09:57 +0200)]
playlist: sort: remove tabs
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 07:56:15 +0000 (09:56 +0200)]
playlist: sort: Fix potential null dereference
Fix CID #
1403397 #
1403398
Hugo Beauzée-Luyssen [Wed, 29 Mar 2017 07:46:48 +0000 (09:46 +0200)]
ram: Fix potential null dereference
Fix CID #
1403399
KO Myung-Hun [Tue, 28 Mar 2017 13:08:48 +0000 (22:08 +0900)]
vlc_network: move OS/2 stuffs to include/vlc_fixups.h
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Julian Scheel [Wed, 22 Mar 2017 08:58:54 +0000 (09:58 +0100)]
compat: Add sigwait dummy for NaCl
Implement a sigwait dummy for NaCl, which relies on:
- NaCl does never send SIGPIPE to to apps (see
https://codereview.chromium.org/
288063004/)
- VLC uses sigwait exclusively to wait for SIGPIPE
If sigwait is asked to wait for anything else than SIGPIPE it will run
into an assertion failure, so that breakage would not be silent.
Signed-off-by: Julian Scheel <julian@jusst.de>
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Julian Scheel [Wed, 22 Mar 2017 08:59:00 +0000 (09:59 +0100)]
nacl: vlc_fixups: Define TCP_NODELAY
netinet/tcp.h is broken in NaCl/Newlib. Define TCP_NODELAY for it.
Signed-off-by: Julian Scheel <julian@jusst.de>
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>