summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* win32: increase hires timer resolutionnanahi2024-03-195-21/+40
| | | | | | | | | | | timeBeginPeriod() only allows setting minimum timer resolution to 1 ms. However, modern x86 platforms support a minimum timer resolution of 0.5 ms. Use NtSetTimerResolution() instead for the increased resolution, which can be set with MPV_HRT_RES. Additionally, change the units of mp_start_hires_timers(), mp_end_hires_timer(), MPV_HRT_RES, and MPV_HRT_MAX to nanoseconds, in accordance with other functions used in timer.h.
* win32: avoid multi byte string to wide conversion if not neededKacper Michajłow2024-03-191-5/+18
|
* win32: add puts/fputs wrappersKacper Michajłow2024-03-196-15/+66
|
* win32: optimize mp_vfprintf a littleKacper Michajłow2024-03-195-24/+37
| | | | | | | | - remove redundant strlen/wcslen - reuse allocated temporary buffers The difference is not big, but it satisfies me to remove those redundancies.
* misc/bstr: add bstr_to_wchar for win32Kacper Michajłow2024-03-192-0/+26
| | | | Convenience to avoid strlen above other things.
* player/main: move terminal_uninit to the endKacper Michajłow2024-03-191-5/+6
| | | | | It is strange to do terminal_uninit() and still use terminal after. Even tho it has no side-effects.
* win32: cache GetConsoleMode state for stdout/stderrKacper Michajłow2024-03-195-33/+45
| | | | | | | GetConsoleMode() can be quite slow and in mpv the mode never changes, so we can just check it once. Fixes performance when writing lots of logs to terminal.
* win32: don't touch buffering optionsKacper Michajłow2024-03-191-1/+0
|
* win32-console-wrapper: fix printf specifiersKacper Michajłow2024-03-191-1/+1
| | | | | | | | | | | %s is evaluated as wchar_t only in "Windows classic" semantic. It is not C standard compliant. %ls is compatible with both and means the same wchar_t format. This commit fixes error output from mpv.com. See: https://devblogs.microsoft.com/oldnewthing/?p=102823
* win32: don't pass std handles if they are attached to consoleKacper Michajłow2024-03-191-15/+20
| | | | | | | | | | | This is default behavior to attach to existing console, passing custom handles is useful if we want to replace them, but in case they are already attached to console we want to attach to console directly. In theory, it should work out of the box because "console-like" handles should be managed by Windows internally, which works for INPUT and OUTPUT, but in certain cases, not for ERROR. This allows using VT features in those cases for stderr too.
* DOCS/options: improve wording of dither-depthllyyr2024-03-191-6/+6
|
* af_lavcac3enc: fix memory leak on 2ch audiomistraid1212024-03-191-3/+3
| | | | If processing is not required, the frame would be leaked as it is not used.
* various: use thread safe mp_strerror()nanahi2024-03-194-6/+9
|
* image_writer: refactor screenshot write functionsnanahi2024-03-191-50/+24
| | | | | | | | | | | | When 3cb9119984b88b31a5b958b1b83efe8d1cf0b818 introduced AVIF screenshot support, FILE * in write functions were replaced by filenames. This resulted in unnecessary duplication of FILE * handling code and the usage of avio_open API made it hard to use exclusive open with it. To unify file handling, use avio_open_dyn_buf instead which writes to memory instead. This way FILE * can be used for the write functions and file handling code can be deduplicated. Since we now control the file opening, exclusive open can now be used for AVIF screenshots.
* image_writer: fix TOCTOU in screenshot filename generationnanahi2024-03-195-16/+32
| | | | | | | | | | | | | | | | The screenshot command is documented to not overwrite existing files. However, there is a race window between the filename is generated with gen_fname and when the file is open to write. Specifically, the convert_image function in this window can be very time consuming depending on video and screenshot image format and size. This results in existing file being overwritten because the file writing functions don't check for the existance of file. Fix this be opening the file in exclusive mode. Add overwrite parameter to write_image for other operations that are documented to overwrite existing files, like screenshot-to-file. Note that for write_avif, checking existance is used instead because avio_open does not support exclusive open mode.
* Revert "osdep/io: ignore 'x' mode for mp_fopen"nanahi2024-03-191-1/+2
| | | | | | | | | This flag is a GNU extension in C99, but was standardrized in C11, so mpv should be able to use it. fopen is wrapped on win32 so non-compliant MSVCRT.dll isn't a concern. Since the upcoming commit uses this feature it can be brought back. This reverts commit c36e051470dceb24c75d36316490e063a77dacba.
* repack: add restrict qualifier to src/dst pointersKacper Michajłow2024-03-191-36/+36
| | | | | Allows compiler to do its job and optimize this code. We don't really want to repack in-place.
* win32: resolve dropped shell links (Windows shortcuts)nanahi2024-03-191-1/+3
| | | | | When a shell link is dropped onto the mpv window, the file name will be replaced by the file name of its target so that the linked file is played.
* win32: implement shell link target resolvingnanahi2024-03-192-0/+26
| | | | | Adds a function to resolve the target of a shell link (Windows shortcut) for use by other parts of mpv.
* video/image_writer: attach MDVC metadata and CLLI metadataLeo Izen2024-03-192-13/+8
| | | | | | | | This commit allows image_writer to attach HDR metadata to AVFrames via the corresponding AVFrameSideData attachments, if present. It does this by calling pl_avframe_set_color, already used by mp_image_to_avframe. Signed-off-by: Leo Izen <leo.izen@gmail.com>
* builtin.conf: remove debanding from the high-quality profileKacper Michajłow2024-03-192-1/+1
| | | | | | | | | | | | | | | Debanding is an inherently destructive process. It is not needed for most high-quality sources and only produces an adverse smoothing effect when applied to fine-detailed content, removing detail. It should only be applied when necessary, either manually with the `b` keybind or with an automatic profile. Additionally, it is quite computationally heavy with no real benefit for high-quality content. By default, and especially in the high-quality profile, mpv should preserve source detail and quality as much as possible. Additional processing should be opt-in.
* input.conf: add `b` to toggle debandingKacper Michajłow2024-03-192-0/+4
|
* vo_gpu_next: make `dither-depth=auto` mean 8 bpc for non-d3d11 SDRllyyr2024-03-192-3/+9
| | | | | | | Fixes the issue described in https://github.com/mpv-player/mpv/issues/11862 for SDR files for non-d3d11 gpu-api. We currently don't have a smarter way to get the real on-the-wire bpc for other APIs, so this is the best that can be done.
* vulkan: remove color_depth stubllyyr2024-03-191-6/+0
| | | | Needed for the next commit
* osdep/main-fn-win: fix implicit conversion warningnanahi2024-03-191-1/+1
|
* osdep/threads: fix warning: initializer element is not constantnanahi2024-03-192-2/+2
|
* ao_lavc: fix warning: ISO C forbids forward references to 'enum' typesnanahi2024-03-191-0/+1
|
* vo_gpu_next: fix -Wembedded-directive warningnanahi2024-03-192-18/+19
| | | | warning: embedding a directive within macro arguments has undefined behavior
* video/out/gpu/spirv: fix warning: zero size arrays are an extensionnanahi2024-03-191-0/+1
|
* common/msg: fix warning: void function should not return void expressionnanahi2024-03-191-4/+7
|
* common/msg: fix warning: use of non-standard escape character '\e'nanahi2024-03-191-1/+1
|
* options/m_config: fix no newline at end of filenanahi2024-03-191-1/+1
|
* various: fix -Wold-style-declaration warningnanahi2024-03-199-18/+18
| | | | warning: `static' is not at beginning of declaration
* video/out/placebo/utils: fix -Wignored-qualifiers warningnanahi2024-03-191-1/+1
| | | | warning: type qualifiers ignored on function return type
* demux/cache: fix -Wtype-limits warningsnanahi2024-03-191-5/+2
| | | | | warning: comparison of unsigned expression >= 0 is always true warning: comparison is always false due to limited range of data type
* meson: bump warning level to 2nanahi2024-03-191-1/+6
| | | | Ignore a few noisy warnings for now.
* vo_gpu_next: don't render ASS subtitles at HDR colorspaceKacper Michajłow2024-03-181-1/+1
| | | | | | | | | | | | Upstream ASS specification says that all subtitles should be rendered with color primaries and transfer matching their associated video. But as expected after further discussion the decision has been made to fallback to SDR mode in case of HDR video. See-Also: https://github.com/libass/libass/blob/649a7c2e1fc6f4188ea1a89968560715800b883d/libass/ass_types.h#L233-L237 See-Also: libass/libass#297 See-Also: mpv-player#13381 Fixes: mpv-player#13673
* mac/touchbar: simplify item and view creationder richter2024-03-181-70/+53
|
* mac/touchbar: optimise time item updateder richter2024-03-181-6/+3
|
* mac/touchbar: optimise constraint calculationder richter2024-03-181-5/+3
|
* mac/touchbar: use DateComponentsFormatter for time formattingder richter2024-03-181-9/+5
|
* mac/touchbar: simplify update items logicder richter2024-03-181-27/+8
|
* mac/touchbar: take playback speed into account for rate limitingder richter2024-03-181-1/+4
|
* mac/touchbar: rewrite touch bar in swiftder richter2024-03-185-398/+345
|
* win32: remove all NC area on Windows 10 with --title-bar=noKacper Michajłow2024-03-181-3/+12
| | | | | | | | | Windows 10 top bar height cannot be adjusted individually when WS_CAPTION is enabled due to buggy DWM NC drawing behavior. The issue is fixed in Windows 11. To keep consistent window look remove the border on each side, but only on Windows 10.
* win32: add helper function to check Windows 10 build numberKacper Michajłow2024-03-181-8/+20
|
* osc: add missing window controls for --title-bar=noKacper Michajłow2024-03-181-1/+7
|
* win32: adjust top border offset when title bar is disabledKacper Michajłow2024-03-181-18/+52
| | | | | | | | | | | | | | | Windows 11 draws border regardless, so we are 1px off on window size, blending border with one line of video. Fix that by adding the border to our internal windows size calculation. Windows 10 on the other hand has a bug where specifying left and top NC area will trigger title bar drawn in full height always. Keep old behaviour in this case. Also while there is similar "visible" border there, it seems to be transparent on Windows 10. For high contrast themes, don't adjust title bar height and instead remove WS_CAPTION to have the same border all around the window, as DWM doesn't make borders invisible in this case.
* win32: add DWMWA_VISIBLE_FRAME_BORDER_THICKNESS definitionKacper Michajłow2024-03-181-1/+8
|
* win32: use dpi aware GetSystemMetricsForDpiKacper Michajłow2024-03-181-9/+19
|
* win32: update maximized state when leaving fullscreennanahi2024-03-181-6/+7
| | | | | If the window-maximized is set while in fullscreen, it needs to be applied when leaving fullscreen, as noted in the comment.
* win32: fix window maximized state after setting window sizenanahi2024-03-181-0/+20
| | | | | | | | | | | With runtime geometry change, currently it only results in a SetWindowPos call to resize the window. However, SetWindowPos doesn't change the window maximized state, so Windows still thinks that the window is maximized even though it no longer covers the whole workspace. This results in visual glitches, and if the window is dragged afterwards it's "restored" again. Fix this by correctly setting the window maximized state in this case.
* various: use static assertions where appropriatesfan52024-03-175-5/+5
|
* DOCS/options: --x11-name sets the instance name, not the class'sGuido Cella2024-03-171-1/+1
|
* demux: add a format-name propertyDudemanguy2024-03-174-4/+14
| | | | | It can be useful to know the underlying format of any entry in the track list. Only applicable to the lavf demuxer.
* wayland_common: respect compositor's preferenced size on state changenanahi2024-03-171-4/+2
| | | | | | | | | | | Currently mpv always uses the previous window size when unmaximizing or exiting fullscreen. This disregards compositor's preferenced size in the configure event, resulting in wrong window size if changing window state and size are delivered in the same configure event. It's better to always respect the preferenced size instead, unless the state change is due to runtime geometry change, where we want to use our preference.
* DOCS/options: clarify --autofit-larger effectnanahi2024-03-171-2/+2
| | | | | | Clarify that --autofit-larger sets the maximum size of the window. The original wording was not written with runtime change in mind, so the implication of "not changing size" is ambiguous.
* wayland_common: always use the current geometry for prepare_resizenanahi2024-03-171-14/+12
| | | | | | | | | | | | | | | | | | | | In the xdg_toplevel_configure handler, in some cases the geometry is not equal to the width and height in the event. This can happen when runtime geometry change is requested (a new size is set), or in the case of wl->state_change || width == 0 || height == 0 (the old size is used). However, prepare_resize always uses the width and height in the event and not the corrected geometry here. This causes xdg_surface_set_window_geometry using the wrong value resulting in wrong size of window decoration. Amusingly, the debug message right above it uses the correct size. Fix this by using the updated geometry size instead. Since now all prepare_resize have parameters of 0, the width and height parameters are no longer needed. Fixes: 828dd65ef84b4d8e95e70752b9eb0833909d1d23
* x11_common: unmaximize window on runtime geometry changenanahi2024-03-171-9/+6
| | | | | | | | | | | | | 8e793bde78f00fbb64223db30851c6d080c4abeb made that changing geometry while maximized has no effect until the window is unmaximazed. However, this behavior is inconsistent with setting window-scale on all of win32, wayland, and x11, which always unmaximizes the window and sets the window size. Since setting geometry is conceptually similar to setting window-scale (both change the window size), they should have the same behavior. If not fullscreen, unmaximize window on runtime geometry change to keep the behavior consistent with window-scale.
* win32: support runtime geometry updatenanahi2024-03-171-5/+13
| | | | | Similar to other platforms. Also make sure that the x/y positions are set on geometry update.
* x11_common: fix window x/y position when updating geometry on runtimenanahi2024-03-172-4/+9
| | | | | | | | | | | Currently, setting geometry on runtime only changes the window size but not the position. This is because reset_size is only set if the window size is changed, and vo_x11_highlevel_resize doesn't set the window position without force_window_position enabled. Fix this by setting the related flags and perform a window move when geometry is updated. Fixes 8e793bde78f00fbb64223db30851c6d080c4abeb.
* github/issue_template: add note about --profile=fast and --hwdecKacper Michajłow2024-03-174-0/+16
|
* gpu-next: add support for --dither-depth=autoKacper Michajłow2024-03-171-3/+8
| | | | | On supported APIs. Fixes: https://github.com/mpv-player/mpv/issues/11862
* d3d11: get real on the wire bits per color channelKacper Michajłow2024-03-171-0/+5
|
* d3d11: add mp_get_dxgi_output_descKacper Michajłow2024-03-172-22/+25
|
* mac/view: optimise drag and drop event handlingder richter2024-03-161-17/+11
|
* mac/input: optimise scroll wheel event handlingder richter2024-03-161-35/+18
|
* mac/input: move scroll wheel event handling into input helperder richter2024-03-162-40/+41
|
* mac/input: optimise mouse movement enabled checkder richter2024-03-162-8/+5
|
* mac/input: fix switched mouse forward and back buttonder richter2024-03-161-2/+2
|
* mac/input: move mouse event handling into input helperder richter2024-03-162-47/+40
|
* ao_coreaudio: stop audio unit after idle timeoutVilius2024-03-161-2/+79
| | | | | | | | | | | | | | | | | | | | | | | | | Commit 39f7f83 changed ao_driver.reset to use AudioUnitReset instead of AudioOutputUnitStop. The problem with calling AudioOutputUnitStop was that AudioOutputUnitStart takes a significant amount of time after a stop when a wireless audio device is being used. This resulted in lagging that was noticeable to users during seeking and short pause/resume cycles. Switching to AudioUnitReset eliminated this lagging. However with the switch to AudioUnitReset the macOS daemon coreaudiod continued to consume CPU time and did not release a powerd assertion that it created on behalf of mpv, preventing macOS from sleeping. This commit will change ao_coreaudio.reset to call AudioOutputUnitStop after a delay if playback has not resumed. This preserves the faster restart of playback for seeking and short pause/resume cycles and avoids preventing sleep and needless CPU consumption. Fixes #11617 The code changes were authored by @orion1vi and @lhc70000. Co-authored-by: Collider LI <lhc199652@gmail.com>
* stream: enable caching for sockets, pipes and FIFOsbptato2024-03-161-1/+5
| | | | | | This is useful e.g. when the caller dup2's a socket into stdin, or passes a socket/pipe as /dev/fd/{fd}, because it is impossible to seek on sockets and pipes.
* vo_{drm,wlshm}: make query_format checks more correctsfan52024-03-162-6/+7
| | | | | We're using mp_sws here, so we should ask it for format support and not the underlying library (usually swscale) directly.
* vo_drm: add support for YUYV formatsfan52024-03-164-15/+29
| | | | | | | | | | As the first aligned format this required a fix to reconfig(). Adding the other component-swapped formats in this group would be trivial but I checked the DRM database [1] and no driver exists that supports one of those but not YUYV and this is quite fringe as-is, so I opted not to. [1] <https://drmdb.emersion.fr/formats>
* vo_{drm,wlshm,x11}: add support for video-target-paramssfan52024-03-163-0/+12
|
* vo: move target_params into responsibility of VOsfan52024-03-163-6/+5
| | | | | | | |