aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* DOCS/man: update man pages to describe ReplayGain fallbackHEADmasterGravatar Benjamin Barenblat2018-12-18
| | | | | | Describe ReplayGain album-to-track fallback behavior introduced in commits e392d6610d1e35cc0190c794c151211b0aae83e6 and be90f2c8dd0431e252e43d5249e89446309113af.
* demux: make ALBUM ReplayGain tags optional when using libavformatGravatar Benjamin Barenblat2018-12-18
| | | | | | | Commit e392d6610d1e35cc0190c794c151211b0aae83e6 modified the native demuxer to use track gain as a fallback for album gain if the latter is not present. This commit makes functionally equivalent changes in the libavformat demuxer.
* stream_dvb: Correct range for dvbin-card option.Gravatar Oliver Freyermuth2018-12-12
| | | | | | Adapt documentation accordingly and also, fix an off-by-one check in the code. closes #6371
* spirv: remove --spirv-compiler=nvidiaGravatar Niklas Haas2018-12-01
| | | | | | | | | | | | This option has been deprecated upstream for a long time, probably doesn't even work anymore, and won't work moving forwards as we replace the vulkan code by libplacebo wrappers. I haven't removed the option completely yet since in theory we could still add support for e.g. a native glslang wrapper in the future. But most likely the future of this code is deletion. As an aside, fix an issue where the man page didn't mention d3d11.
* drm: rename plane options to better, invariant, namesGravatar Anton Kindestam2018-12-01
| | | | | | | | | | | | | | | | | | | | | This commit bumps the libmpv version to 1.102 drm-osd-plane -> drm-draw-plane drm-video-plane -> drm-drmprime-video-plane drm-osd-size -> drm-draw-surface-size "draw plane", as in the plane that OpenGL draws to, whether it be video + OSD or just OSD. "drmprime video plane", as in the plane used for hwdec video imported via drmprime. "draw surface size", as in the size of the surface used for the draw plane The new names are invariant whether or not hwdec_drmprime_drm is being used or not. The original naming was very confusing, as when doing regular rendering (swdec or vaapi) the video would be displayed on the "OSD plane", and the "Video plane" would remain unused.
* drm_atomic: Add general primary/overlay plane optionGravatar Anton Kindestam2018-12-01
| | | | | | | | | | Add general primary/overlay plane option to drm-osd-plane-id and drm-video-plane-id, so that the user can just request any usable primary or overlay plane for either of these two options. This should be somewhat more user-friendly (especially as neither of these two options currently have a useful help function), as usually you would only be interested in the type of the plane, and not exactly which plane gets picked.
* man: fix --watch-later-directory formattingGravatar TheAMM2018-11-28
| | | | | Extra line prevents the sub-title formatting. Removing it, the option is formatted like the others.
* gpu: prefer wayland context on autodetectGravatar dudemanguy2018-11-19
|
* vulkan: slightly improve vsync jitter measurementsGravatar Niklas Haas2018-11-19
| | | | | | | | | | | | | | | By design, some vulkan implementations block until vsync during vkAcquireNextImageKHR. Since mpv only considers the time that `swap_buffers` spent blocking as constituting part of the vsync, we can help it out a bit by pre-emptively calling this function here in order to improve the accuracy of vsync jitter measurements on vulkan. (If it fails, we just ignore the error and have the user call it a second time later - maybe it will work then) On my system this drops vsync-jitter from ~0.030 to ~0.007, an accuracy of +/- 100μs. (Which *might* have something to do with the fact that this is the polling interval for command polling)
* vo_gpu: vulkan: only rotate the queues on swapGravatar Niklas Haas2018-11-19
| | | | | | | | Makes performance slightly better when using multiple queues by avoiding unnecessary semaphores due to bad queue selection. Also remove an aeons-old workaround for an nvidia bug that only ever existed in the earliest beta vulkan drivers anyway.
* wayland: remove KDE server-decoration supportGravatar emersion2018-11-19
|
* wayland: use xdg-decoration if availableGravatar emersion2018-11-19
|
* filters: Add cuda/nvdec deinterlacing auto-filter using vf_yadif_cudaGravatar Philip Langdale2018-11-19
| | | | | | | | | | | Historically, there's been no way to offer deinterlacing with nvdec, and for cuviddec, it required a command line flag, with no way to toggle while playing. Now that we have a cuda deinterlacing filter in ffmpeg, we can hook it up hook it up as the cuda auto-deinterlacer. In practice, this isn't going to be present very often, due to the licensing mess with the cuda sdk, but we can support it when it is there.
* vo_gpu: hwdec_cuda: Guard GL and Vulkan headers properlyGravatar Philip Langdale2018-11-18
| | | | | | | | We are currently unnecessarily including vulkan headers even when not building with vulkan support. I also guarded the GL header inclusion even though this doesn't appear to break anything today. Fixes #6330.
* w32_common: use the screen working area when resizing the windowGravatar pavelxdd2018-11-18
| | | | | | | | | | | | | | | | | | | | | | This makes the default fit on screen, autofit and window-scale changing behavior to use the screen working area, instead of the whole screen area. As a result mpv window doesn't cover the taskbar now when opening videos with size larger than the screen size. The actual behavior now is the same as expected behavior for usecases 1-4 from #4363. This commit also removes the screenrc from w32 struct. The screen rect can now be retrieved via `get_screen_area` function, which was renamed from `update_screen_rect`. On a multi-monitor system, if the user moved the window between monitors, this function will return the current screen area under the window, and not the screen area from monitor specified by `--screen` option. The `--screen` option sets the initial monitor the mpv window is displayed on.
* vo_x11: fix return value in resize() error pathsGravatar Rikard Falkeborn2018-11-17
| | | | | | Returning -1 in a function with return type bool is the same as returning true. In the error paths, false should be returned to indicate that something went wrong.
* vo_gpu: opengl: disable compute shaders for old GLSLGravatar Niklas Haas2018-11-17
| | | | Fixes #6272.
* cocoa: fix drawing on macOS 10.14Gravatar Akemi2018-11-13
|
* cocoa-cb: add logging for CGL pixel format attributesGravatar Akemi2018-11-13
| | | | | | | | depending on the capabilities of the system and testing of various attributes the resulting CGL pixel format can change. due to that probing it can be helpful to know which pixel format is used to create the CGL context. added some verbose logging that outputs final pixel format.
* vo_libmpv: support render performance dataGravatar Akemi2018-11-13
|
* cocoa-cb: use libmpv's advanced rendering control and timingGravatar Akemi2018-11-13
| | | | | | | | this adds support for GPU rendered screenshots, DR (theoretically) and possible other advanced functions in the future that need to be executed from the rendering thread. additionally frames that would be off screen or not be displayed when on screen are being dropped now.
* build: add a version requirement for vulkan pkg-config checkGravatar Jan Ekström2018-11-04
| | | | | | | | | | | `vkGetPhysicalDeviceProperties2KHR` was added in Vulkan 1.0.39, but 1.0.61 from Ubuntu Xenial (16.04) was the lowest anyone tried to build mpv with as of late, so we are marking that as the minimum required version. This fixes issues arising during build time from having too old version of vulkan available on a system, instead of causing a failure to build.
* vo_gpu: vulkan: Always use KHR suffix types and definesGravatar Philip Langdale2018-11-03
| | | | | | | | | I was inconsistent about this originally, as the functionality was moved into the core spec in 1.1 and so both suffixed and unsuffixed versions of everything exist and can be mixed together. There's no reason to fail to build with 1.0.39+ so I'm fixing the names.
* ipc-unix: don't blow up on readonly fd://Gravatar Niklas Haas2018-10-31
| | | | | | On my system, when trying to use mpv with a read-only fd created by python 3.7, `send` triggers ENOTSOCK, not EBADF. Extend the logic to detect non-writable fds by this `errno`.
* audio: increase a buffer sizeGravatar Ben Boeckel2018-10-31
| | | | | | The buffer is written to in `audio_config_to_str_buf` using `snprintf` with a `%s` formatting of a 128-byte buffer. This can overflow the target buffer of 80 causing a truncated output.
* ipc-unix: leave room for a NUL terminatorGravatar Ben Boeckel2018-10-31
| | | | | | | The `strncpy` function will not always place a terminating `NUL` if the source is longer than the destination buffer. Instead, let `strncpy` truncate as it normally would, but leave the last byte alone (it is zero-initialized when declared).
* vo_gpu: hwdec_cuda: Clean up init() error handlingGravatar Philip Langdale2018-10-31
| | | | | | | | | | | | Currently, the error paths in init() are a bit confusing, and we can end up trying to pop the current context when there is no context, which leads to distracting error messages. I also added an explicit path to return early if the GPU backend is not OpenGL or Vulkan. It's pointless to do any other cuda init after that point. (Of course, someone could write more interops.) Fixes #6256
* ad_spdif: cosmetic alignmentGravatar Jan Ekström2018-10-30
|
* ad_spdif: fix DTS-HD HRA handlingGravatar Jan Ekström2018-10-30
| | | | | | | | | | | | Apparently, for bit streaming DTS-HD MA is specified to be handled as an eight channel (7.1) bit stream, while DTS-HD HRA is specified to be handled as a stereo bit stream. Define a variable for this, and utilize it to set the correct values for both the DTS-HD bit streaming rate, as well as the channel count for the SPDIF encoder. Fixes #6148
* build: pass include paths as a list instead of a string in cocoa checkGravatar Akemi2018-10-28
| | | | | | when passed as a string check_cc tries to split that string, since it assumes that several include paths can be passed to it. instead we just use a list to make it unambiguous.
* build: don't hardcode swift module nameGravatar Akemi2018-10-28
|
* build: use an argument list for the Swift build argsGravatar Akemi2018-10-28
| | | | | | that way we don't need to quote or escape anything. Fixes #6220
* hwdec_drmprime_drm: Missing NULL-check on drm_atomic_context video_planeGravatar Anton Kindestam2018-10-25
| | | | | | | | | Since 810acf32d6cf0dfbad66c602689ef1218fc0a6e3 video_plane can be NULL under some circumstances. While there is a check in init, init treats this as an error condition and would call uninit, which in turn calls disable_video_plane, which would then segfault. Fix this by including a NULL check inside disable_video_plane, so that it doesn't try to disable what isnt' there.
* stream_smb: make sure the string is NULL-terminated after strncpyGravatar pavelxdd2018-10-25
| | | | strncpy does not guarantee that the string will be NULL-terminated.
* vo_gpu: vulkan: hwdec_cuda: Add support for Vulkan interopGravatar Philip Langdale2018-10-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Despite their place in the tree, hwdecs can be loaded and used just fine by the vulkan GPU backend. In this change we add Vulkan interop support to the cuda/nvdec hwdec. The overall process is mostly straight forward, so the main observation here is that I had to implement it using an intermediate Vulkan buffer because the direct VkImage usage is blocked by a bug in the nvidia driver. When that gets fixed, I will revist this. Nevertheless, the intermediate buffer copy is very cheap as it's all device memory from start to finish. Overall CPU utilisiation is pretty much the same as with the OpenGL GPU backend. Note that we cannot use a single intermediate buffer - rather there is a pool of them. This is done because the cuda memcpys are not explicitly synchronised with the texture uploads. In the basic case, this doesn't matter because the hwdec is not asked to map and copy the next frame until after the previous one is rendered. In the interpolation case, we need extra future frames available immediately, so we'll be asked to map/copy those frames and vulkan will be asked to render them. So far, harmless right? No. All the vulkan rendering, including the upload steps, are batched together and end up running very asynchronously from the CUDA copies. The end result is that all the copies happen one after another, and only then do the uploads happen, which means all textures are uploaded the same, final, frame data. Whoops. Unsurprisingly this results in the jerky motion because every 3/4 frames are identical. The buffer pool ensures that we do not overwrite a buffer that is still waiting to be uploaded. The ra_buf_pool implementation automatically checks if existing buffers are available for use and only creates a new one if it really has to. It's hard to say for sure what the maximum number of buffers might be but we believe it won't be so large as to make this strategy unusable. The highest I've seen is 12 when using interpolation with tscale=bicubic. A future optimisation here is to synchronise the CUDA copies with respect to the vulkan uploads. This can be done with shared semaphores that would ensure the copy of the second frames only happens after the upload of the first frame, and so on. This isn't trivial to implement as I'd have to first adjust the hwdec code to use asynchronous cuda; without that, there's no way to use the semaphore for synchronisation. This should result in fewer intermediate buffers being required.
* vo_gpu: vulkan: Add a function to get the device UUIDGravatar Philip Langdale2018-10-22
| | | | We need this to do device matching for the cuda interop.
* vo_gpu: vulkan: Add arbitrary user data for an ra_vk_bufGravatar Philip Langdale2018-10-22
| | | | | | | | | This is arguably a little contrived, but in the case of CUDA interop, we have to track additional state on the cuda side for each exported buffer. If we want to be able to manage buffers with an ra_buf_pool, we need some way to keep that CUDA state associated with each created buffer. The easiest way to do that is to attach it directly to the buffers.
* vo_gpu: vulkan: Add support for exporting buffer memoryGravatar Philip Langdale2018-10-22
| | | | | | | | | | | | | | | | | | | | The CUDA/Vulkan interop works on the basis of memory being exported from Vulkan and then imported by CUDA. To enable this, we add a way to declare a buffer as being intended for export, and then add a function to do the export. For now, we support the fd and Handle based exports on Linux and Windows respectively. There are others, which we can support when a need arises. Also note that this is just for exporting buffers, rather than textures (VkImages). Image import on the CUDA side is supposed to work, but it is currently buggy and waiting for a new driver release. Finally, at least with my nvidia hardware and drivers, everything seems to work even if we don't initialise the buffer with the right exportability options. Nevertheless I'm enforcing it so that we're following the spec.
* build: more reliable way of getting the Swift version from a stringGravatar Akemi2018-10-22
| | | | Fixes #6212
* vo_gpu: vulkan: suppress bogus error message on --vulkan-deviceGravatar Niklas Haas2018-10-21
| | | | | | Since the code just broke out of the loop on a match rather than jumping straight to the end of the function body, it ended up hitting the code path for when the end of the list was reached.
* cocoa-cb: fix double clicking the title barGravatar Akemi2018-10-21
| | | | | | | | | since we draw our own title bar we lose the standard functionality of the system provided title bar. because of that we have to reimplement the functionality of double clicking the title bar. depending on the system preferences we want to minimize, zoom or do nothing. Fixes #6223
* vo_gpu: vulkan: fix strncpy truncation in spirv_compiler_initGravatar BtbN2018-10-21
| | | | | | Fixes GCC8 warning ../video/out/gpu/spirv.c: In function 'spirv_compiler_init': ../video/out/gpu/spirv.c:68:9: warning: 'strncpy' specified bound 32 equals destination size [-Wstringop-truncation]
* x11: fix icc profile when the window goes near off screenGravatar slatchurie2018-10-21
| | | | | | | | On a multi monitor setup, when the center of the window was going off screen, the icc profile would always switch to the profile of the first screen. This fixes the issue by defaulting the value to the current screen.
* vo_gpu: vulkan: fix the buffer size on partial uploadGravatar Niklas Haas2018-10-19
| | | | | | | | | | | This was pased on the texture height, which was a mistake. In some cases it could exceed the actual size of the buffer, leading to a vulkan API error. This didn't seem to cause any problems in practice, since a too-large synchronization is just bad for performance and shouldn't do any harm internally, but either way, it was still undefined behavior to submit a barrier outside of the buffer size. Fix the calculation, thus fixing this issue.
* vo_gpu: split --linear-scaling into two separate optionsGravatar Niklas Haas2018-10-19
| | | | | | | | | | | | | | | | | | Since linear downscaling makes sense to handle independently from linear/sigmoid upscaling, we split this option up. Now, linear-downscaling is its own option that only controls linearization when downscaling and nothing more. Likewise, linear-upscaling / sigmoid-upscaling are two mutually exclusive options (the latter overriding the former) that apply only to upscaling and no longer implicitly enable linear light downscaling as well. The old behavior was very confusing, as evidenced by issues such as #6213. The current behavior should make much more sense, and only minimally breaks backwards compatibility (since using linear-scaling directly was very uncommon - most users got this for free as part of gpu-hq and relied only on that). Closes #6213.
* x11_common: replace atoi with strtoulGravatar Nicolas F2018-10-19
| | | | | | Using strtol and strtoul is allegedly better practice, and I'm going for strtoul here because I'm pretty sure X11 displays cannot be in the negative.
* vo_gpu: opengl: fix segfault when gl->DeleteSync is unavailableGravatar Niklas Haas2018-10-16
| | | | | | | This deinit code was never checked, so this line would always crash on implementations without support for sync objects. Fixes #6197.
* man: mention stats in interactive controlGravatar Nicolas F2018-10-14
| | | | | | | Someone on IRC pointed out that the default stats bindings weren't documented in the interactive control section of the manual, so let's add them with a short mention and a reference to the STATS section of the manual.
* cocoa-cb: fix side by side Split ViewGravatar Akemi2018-10-02
| | | | | | | | | | when entering a Split View a windowDidEnterFullScreen event happens without a previous toggleFullScreen call. in that case it tries to stop an animation that was never initiated by us and basically breaks the system initiated fullscreen, or in this case the Split View. immediately after entering the fullscreen it tries top stop the animation and resizes the window, which causes the window to exit fullscreen. only try to stop an animation that was initiated by us and is safe to stop.
* {mac,cocoa}: trim trailing null out of macosx_icon when loading itGravatar Rodger Combs2018-10-02
| | | | | | This prevents crashes when loading the application icon image. Suggested-by: Akemi <der.richter@gmx.de>