summaryrefslogtreecommitdiffstats
path: root/video/out
Commit message (Collapse)AuthorAgeFilesLines
* Remove compatibility thingswm42016-12-071-19/+0
| | | | | | Possible with bumped FFmpeg/Libav. These are just the simple cases.
* vo_opengl: hwdec_cuda: Don't include hwcontext headersPhilip Langdale2016-12-041-4/+0
| | | | | After various simplifications, these includes simply aren't needed now.
* vo_opengl: don't rely on viewport to contain window dimensionswm42016-12-023-9/+7
| | | | | | | | | | | | | Apparently we don't always set the viewport to window dimensions anymore, e.g. if nothing is actually rendered. This means the viewport can contain old values. The window screenshot code uses the viewport values to guess the default framebuffer dimensions. With --force-window --idle --no-osc (which draws nothing and issues a glClear() command only), taking a screenshot would yield an image with the wrong size and possibly garbage in it. Fix this by explicitly passing the currently known window dimensions. Abusing the values stored in the viewport was questionable anyway.
* wayland: destroy input before closing the display connection.Emmanuel Gil Peyrot2016-11-271-1/+1
| | | | | | Fixes a segfault introduced in libwayland e8ad23266f36521215dcd7cfcc524e0ef67d66dd, where a poison value has been introduced to catch this kind of use-after-free bug.
* options: remove deprecated sub-option handling for --vo and --aowm42016-11-2516-203/+68
| | | | | | | | Long planned. Leads to some sanity. There still are some rather gross things. Especially g_groups is ugly, and a hack that can hopefully be removed. (There is a plan for it, but whether it's implemented depends on how much energy is left.)
* angle_dynamic: silence warnings during compilationpavelxdd2016-11-251-4/+10
| | | | | | If Angle is statically linked there were some warnings during compilation. Fixes #3834
* vo_opengl: hwdec_cuda: Prefix cuda symbols to avoid collisionsPhilip Langdale2016-11-242-11/+18
| | | | | | We want to avoid causing problems if libmpv is used in an application that links cuda, or if the libav* libraries are linked with cuda, as might happen if the scale_npp filter is used.
* vo_opengl: hwdec_cuda: make some init errors verbosewm42016-11-241-2/+2
| | | | | Improves autoprobe behavior. This is equivalent to other hwdec interop wrappers. If CUDA is just not available, it should remain silent.
* vo_opengl: hwdec_cuda: fix crash when trying to use hwdec=cuda if cuda SDK ↵pavelxdd2016-11-241-0/+1
| | | | | | is not present If CUDA SDK wasn't installed, mpv crashed immediately with the message "Failed to load CUDA symbols"
* vo_opengl/cuda_dynamic: Use explicit cast to silence warnings on windowsPhilip Langdale2016-11-241-1/+1
| | | | Fixes #3834
* wscript: Fix cuda test to actually work when cuda SDK is not presentPhilip Langdale2016-11-231-1/+1
| | | | | | | | | | The test ended up failing if cuda.h wasn't present, even if cuda.h isn't used during the actual build. This test is attempting to establish if the ffmpeg being built against has dynlink_cuda support. While it might theoretically be possible to build against the older normally-linked-cuda version of ffmpeg, it seems more trouble than it's worth.
* angle_dynamic: minor simplificationwm42016-11-231-3/+3
| | | | Remove the inverted condition by swapping if branches.
* Support linking ANGLEMartin Herkt2016-11-231-0/+5
|
* vo_opengl: hwdec_d3d11egl: fix ANGLE fallback definewm42016-11-231-1/+1
| | | | | | This was a typo in the extensiuon spec and was probably always broken. Could have led to broken builds when used with ancient ANGLE headers (or possibly generic EGL headers).
* vo_opengl: hwdec_cuda: Use dynamic loading for cuda functionsPhilip Langdale2016-11-233-2/+211
| | | | | This change applies the pattern used in ffmpeg to dynamically load cuda, to avoid requiring the CUDA SDK at build time.
* vo_opengl: hwdec_cuda: Support P016 output surfacesPhilip Langdale2016-11-221-8/+45
| | | | | | | | | The latest 375.xx nvidia drivers add support for P016 output surfaces. In combination with an ffmpeg change to return those surfaces, we can display them. The bulk of the work is related to knowing which format you're dealing with at the right time. Once you know, it's straight forward.
* win32: fix some Clang warningsJames Ross-Gowan2016-11-172-2/+2
| | | | | | | | - win32-console-wrapper.c was inconsistently using the explicit Unicode versions of some Windows API functions and structures. - vo.c should use llabs for int64_t, since long is 32-bit on Windows. - vo_direct3d.c had a potential use of an uninitialized variable if it took the first goto error_exit.
* vo_opengl: blend against background color for --alpha=blendPhilip Sequeira2016-11-131-8/+14
| | | | | Do it after color management, etc. so that it matches the color drawn in the margins.
* cocoa: option to scale window by HiDPI scale factorAkemi2016-11-111-2/+9
| | | | | | | | | | Deactivating this options makes it possible to circumvent the default OS X behavior of using points. Windows on HiDPI resolutions won't open in double the size anymore and videos are display in their native resolution when windowed. Fixes #3716
* vo_opengl: fix --blend-subtitles handlingwm42016-11-071-2/+2
| | | | | | | | | | | | | The intention was that if --blend-subtitles is enabled, the frame should always be re-rendered instead of using e.g. a cached scaled frame. The reason is that subtitles can change anyway, e.g. if you pause and change subtitle size and such. On the other hand, if the frame is marked as repeated, it should always use the cached copy. Actually "simplify" this and drop the cache only if playback is paused (which frame->still indicates indirectly). Also see PR #3773.
* vo_opengl: fix redrawing with hardware decodingwm42016-11-071-0/+1
| | | | | | | | unmap_current_image() is called after rendering. This essentially invalidates the textures, so we can't assume that the image is still present. Also see PR #3773.
* Apply autofit-larger after autofit-smallerNils Maier2016-11-031-1/+1
| | | | | | This prevents the window scaling beyond screen dimensions Fixes #3753
* filter_kernels: add ability to taper kernels/windowsNiklas Haas2016-11-014-20/+42
| | | | | | | This allows us to define the tukey window (and other tapered windows). Also add a missing option definition for `wblur` while we're at it, to make testing out window-related stuff easier.
* vo: clear frame repeat flag when redrawingwm42016-11-011-0/+1
| | | | | | This makes no sense, as the flag is supposed to be used for vsync purposes only (when literally outputting the screen again with no changes at all), and redrawing is often used for OSD updates.
* vo_opengl: make frame reupload logic more robustwm42016-11-012-22/+39
| | | | | | | | | | It's not that easy to decide whether a frame needs to be reuploaded/rerendered. Using unique frame IDs for input makes it slightly easier and more robust. This also removes the use of video PTS in the interpolation path. This should also avoid reuploading the video frame if it's just redrawn in paused mode, or when using OSD/subtitles in cover art mode.
* vo_opengl_cb: fix a race conditionwm42016-10-301-2/+4
| | | | | | | | | | When pthread_cond_timedwait(), the condition we are checking for could be true or false. This code assumed it was always false. This should be an extremely obscure race condition, since it can happen only if timeout and the condition changing sort of happen at the same time, or the lock is held for a longer time (which it normally isn't). But I could observe it a few times.
* vo_opengl_cb: fix inverted conditionwm42016-10-301-1/+1
| | | | Commit e6291697 got this wrong.
* vo_opengl_cb: update current frame if a frame is droppedwm42016-10-301-1/+2
| | | | | | | Even if a frame is dropped due to the libmpv API user not drawing a frame, it should be set as current frame. This avoids dropping a frame forever in certain circumstances such as cover art of the API user was stuck at initialization or such.
* vo_tct: support also 256 colors outputAvi Halachmi (:avih)2016-10-251-9/+55
|
* vo_tct: optional custom size, support non-posix with 80x25 defaultAvi Halachmi (:avih)2016-10-252-7/+31
| | | | Also, replace the UTF8 half block char at the source code with C escape.
* vo_opengl: context_rpi: fix stdatomic usagewm42016-10-211-1/+1
| | | | | | atomic_bool is not supported with e.g. atomic_fetch_and. Fixes #3699. Untested.
* vo_opengl: partially re-enable glFlush() callswm42016-10-211-2/+7
| | | | | | | | | | | | It turns out the glFlush() call really helps in some cases, though only in audio timing mode (where we render, then wait for a while, then display the frame). Add a --opengl-early-flush=auto mode, which does exactly that. It's unclear whether this is fine on OSX (strange things going on there), but it should be. See #3670.
* vo: vo_tct is now available on non-POSIXwm42016-10-201-0/+2
| | | | Fixes Windows build.
* build: don't rely on "__thread" being always available with GCCDmitrij D. Czarkoff2016-10-201-1/+1
| | | | | | | | | | | | | Thread-local storage in GCC is platform-specific, and some platforms that are otherwise perfectly capable of running mpv may lack TLS support in GCC. This change adds a test for GCC variant of TLS and relies on its result instead of assumption. Provided that LLVM's `__thread` support is similar to GCC, the test is called "GCC/LLVM TLS". Signed-off-by: wm4 <wm4@nowhere>
* opengl: compile against iOS OpenGLES implementationAman Gupta2016-10-202-0/+20
|
* vo_tct: introduce modern caca alternativerr-2016-10-202-0/+236
|
* vo_drm: change CLI options + refactorsrr-2016-10-074-162/+274
| | | | | | | | | | - Change connector selection to accept human readable names (such as eDP-1, HDMI-A-2) rather than arbitrary numbers. - Change GPU selection to accept GPU number rather than device paths. - Merge connector and GPU selection into one --drm-connector. - Add support for --drm-connector=help. - Add support for --drm-* in EGL backend. - Refactor KMS; reduce state sharing across drm_common.
* vo_drm: fix segfault when using invalid cardrr-2016-10-061-2/+2
|
* cocoa: add glFlush() to cocoa backendAkemi2016-10-062-2/+1
| | | | | | | | | | | | The glFlush() call was made optional recently since it's not needed in most cases. On OSX though this is needed since we removed kCGLPFADoubleBuffer from the context creation, so the glFlush() call was added to the cocoa backend only. The CGLFlushDrawable() call can be safely removed since it only does something when a double buffered context is used. Also fixes a small typo. Fixes #3627.
* vo_opengl: apply --opengl-early-flush in dumb mode toowm42016-10-052-1/+1
| | | | | | | | In "dumb mode" (where most features are disabled and which only performs some basic rendering) we explicitly copy a set of whitelisted options, and leave all the other options at their default values. Add the new --opengl-early-flush option to this whitelist. Also remove an option field accidentally added in the commit adding --opengl-early-flush.
* vo_opengl_cb: don't wait for redrawn frameswm42016-10-052-3/+6
| | | | | | | This also removes some extra waiting if no video is active, at least in theory. Also clarify the vo_frame flag comments for redraw/repeat.
* vo_opengl: disable glFlush() by default, and add an option to enable itwm42016-10-052-1/+5
| | | | | | | | | | | It seems this can cause issues with certain platforms, so better to disable it by default. The original reason for this isn't overly justified, and display-sync mode should get rid of the need for it anyway. The new option is meant for testing, and will probably be removed if nobody comes up and reports that enabling the option actually improves anything.
* vo_opengl: hwdec_rpi: fix NULL pointer deref in certain caseswm42016-10-041-1/+3
| | | | | If a client API user provides the MPGetNativeDisplay callback, but returns NULL for "MPV_RPI_WINDOW", this would crash.
* vo_drm: fix tiny memory leakrr-2016-10-041-3/+8
|
* vo_drm: refactor getting display fpsrr-2016-10-044-10/+8
| | | | | | | | Reduces code duplication between OpenGL backend and DRM VO. (The control() for OpenGL backend isn't sufficiently similar to the VO's control() to consider merging it as a whole - I extracted only the FPS code.)
* vo_opengl: minor simplificationwm42016-10-011-4/+3
| | | | The extra gl_transform_trans() has no apparent use.
* vo_opengl: attempt to fix chroma offset under rotation and flippingwm42016-10-011-15/+48
| | | | | | Other than being overly convoluted, this seems to make sense to me. Except that to get the "rot" transform I have to set flip=true, which makes no sense at all to me.
* vo_opengl: add debugging options for testing with padded textureswm42016-10-012-4/+10
|
* vo_opengl: partially fix dumb-mode cropping with rotationwm42016-09-301-5/+23
| | | | | | | | | | | | Combining rotation and cropping didn't work. It was just completely broken. I'm still not sure if this is correct. Chroma positioning seems to be broken on rotation. There might also be a problem with non-mod-2 frame sizes. Still, strictly an improvement for both rotated and non-rotated rendering modes. Also, this could probably be written in a more elegant way.
* vo_opengl: vaegl: log more debugging infoswm42016-09-301-7/+12
|
* vo_opengl: rpi: remove dumb commentwm42016-09-301-1/+0
| | | | It's not even true anymore.
* vo_opengl: rpi: fix glaring memory leakwm42016-09-301-2/+5
| | | | | This was in previously inactive code (uploading yuv420p), so it did not matter.
* vo_opengl: rpi: use overlay for yuv420p toowm42016-09-301-1/+6
| | | | | | | | | | | | | | | | The video code can deal fine with feeding software image formats to hwdec interop drivers. In RPI's case, this is preferable for performance, working around OpenGL bugs (see RPI firmware issue #666), and because OpenGL rendering doesn't bring too many advantages due to RPI supporting GLES 2.0 only. Maybe a way to force the normal video path is needed later. But currently, this can be tested by just not loading the hwdec interop driver. If you run command-line mpv and set --hwdec to something that does not load the RPI interop layer, you'll even have to use --hwdec-preload manually to get it enabled.
* vo_opengl: allow hwdec interops to support multiple image formatswm42016-09-303-2/+17
|
* vo_opengl: egl: print EGL errors only if not probingwm42016-09-301-6/+9
| | | | | Avoids printing an error when trying to create a GLES 3.x context on a device which can do GLES 2.0 only.
* vo_opengl: rpi: raise the video layerwm42016-09-301-3/+8
| | | | | | Was intended to put the GL layer above the standard console. (But actually that was done already, and the oddness I'm seeing seems to be an unrelated bug.)
* w32_common: implement VOCTRL_GET_DISPLAY_NAMESJames Ross-Gowan2016-09-291-0/+52
| | | | | | | | This should make display-names usable on Windows. It returns a list of GDI monitor names like "\\.\DISPLAY1". Since it may be useful to get the monitor that Windows considers associated with the window (with MonitorFromWindow,) this will always be returned as the first argument. This monitor is the one used for display-fps and icc-profile-auto.
* win32: build with -DINITGUIDJames Ross-Gowan2016-09-285-5/+0
| | | | | | | | | | | | We always want to use __declspec(selectany) to declare GUIDs, but manually including <initguid.h> in every file that used GUIDs was error-prone. Since all <initguid.h> does is define INITGUID and include <guiddef.h>, we can remove all references to <initguid.h> and just compile with -DINITGUID to get the same effect. Also, this partially reverts 622bcb0 by re-adding libuuid.a to the build, since apparently some GUIDs (such as GUID_NULL) are not declared in the source file, even when INITGUID is set.
* vo_opengl: deprecate 'drm-egl' backend and introduce 'drm' insteadwm42016-09-272-1/+21
| | | | Just a name change. Requested.
* vo_drm: provide display fpsrr-2016-09-262-2/+27
|
* cocoa: fix fullscreen regression on 10.11 and newerAkemi2016-09-261-1/+0
| | | | Fixes #3364.
* vo_opengl: hwdec_cuda: get the cuda device from the GL contextPhilip Langdale2016-09-241-3/+3
| | | | | | | | | | Obviously, in the vast majority of cases, there's only one device in the system, but doing this means we're more likely to get a usable device in the multi-device case. cuda would support decoding on one device and displaying on another but the peer memory handling is not transparent and I have no way to test it so I can't really write it.
* vo_opengl: hwdec_cuda: directly map GL textures and skip using PBOsPhilip Langdale2016-09-241-65/+20
| | | | | | | | | | | | | | | | | | | The documentation around this stuff is poor, but I found an nvidia sample that demonstrates how to use the interop API most efficiently. (https://github.com/nvpro-samples/gl_cuda_interop_pingpong_st) Key lessons are: 1) you can register the texture itself and have cuda write to it, thereby skipping an additional copy through the PBO. 2) You don't have to be mapped when you do the copy - once you get a mapped pointer, it remains valid. Magic! This lets us throw out the PBOs as well as much of the explicit alignment and stride handling. CPU usage is slightly (~3%) lower for 4K content in one test case, so it makes a detectable difference, and presumably saves memory.
* vo_opengl: hwdec_rpi: remove copy&paste errorwm42016-09-231-1/+0
|
* vo: log framedropswm42016-09-231-1/+3
| | | | Seems useful. (This was possibly added ages ago and then removed.)
* x11: fix external fullscreen updatewm42016-09-232-13/+10
| | | | | | | | | | | | On x11, you can change the fullscreen via the window manager and without mpv's involvement. In these cases, the internal fullscreen flag has to be updated. The hack used for this didn't really work properly. Change it accordingly. The important thing is that the shadow copy of the option is updated. This is still not really ideal. Fixes #3570.
* aspect: use nominal width instead of actual width for video-unscaledNiklas Haas2016-09-221-3/+3
| | | | | | | | The documentation claims that --video-unscaled will still perform anamorphic adjustments, and it rightfully should. The current reality is that it does not, because the video-unscaled size was based on the wrong set of variables. (encoded width/height instead of nominal display width/height)
* vo: add a unique frame_id to vo_framewm42016-09-222-0/+9
| | | | | We think that this allows simpler logic than using the redraw and repeat fields. Not used yet.
* vo_opengl: apply 90° rotation to chroma texture sizewm4