summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* vd_lavc: fix device leak with copy-mode hwaccelswm42017-08-092-2/+4
| | | | | | | | | | | | Apparently this was broken by the "ctx->hwdec" check in the if condition guarding the destroy call, and "ctx->hwdec = NULL;" was moved up earlier, making this always dead code. This should probably be refcounted or so, although that could make it worse as well. For now, add a flag whether the device should be destroyed. Fixes #4735.
* vo_opengl: add a hack for Apple's broken iOS hwdec stuffwm42017-08-082-1/+11
| | | | | As seen in hwdec_ios.m, it insists on using the legacy luminance alpha formats for mapped textures.
* vo_opengl: go back to using GL_TIME_ELAPSEDNiklas Haas2017-08-082-16/+26
| | | | | | | | Less flexible than GL_TIMESTAMP but supported by more platforms. This will mean that nested queries have to be detected and silently omitted, but oh well. Not much use for them anyway. Fixes #4721.
* Revert "mp_image_pool: disallow adding read only frames"wm42017-08-081-6/+2
| | | | | | | | | | This reverts commit 0ce3dce03aaea3e777ebf68504d5afb3f5e3f9e1. We actually explicitly add read-only frames in some of the hwaccel code via mp_image_new_custom_ref(), which sets AV_BUFFER_FLAG_READONLY. It's probably better to keep it this way. Fixes #4652 (and some related issues with D3D).
* options: fix --includewm42017-08-081-0/+2
| | | | | | | | This is really obnoxious. --include parses into the default profile, but when used on the command line, it did never get applied. So we have to apply it when the exact conditions for this are met. Fixes #4673.
* demux_mkv: avoid an error message in a corner casewm42017-08-081-0/+1
| | | | | | | | If --demuxer-mkv-probe-start-time=no is used, and a seek is triggered on start, then cluster_start will be 0, and the packet reading code will print an error message about not finding valid data. This fixes itself since it invokes the resync code, but it's still pretty ugly. Avoid this by always initializing cluster_start.
* build: use main-fn-cocoa.c on OSXwm42017-08-081-1/+1
| | | | Broken by a434892208.
* player: fix confusion in audio resync codewm42017-08-081-2/+6
| | | | | | | | | | Just the audio resync code in its normal state: buggy. This time, AD_NO_PROGRESS was handled about the same as AD_WAIT. But it means the decoder didn't output data, even though input is still readily available. This happened in particular when the timeline code was used (potentially skipping many packets), and thus should fix #4688.
* player: fix --end with large valueswm42017-08-081-2/+5
| | | | | | Causea a simple integer overflow. Fixes #4650.
* vo_opengl: don't call glGetProgramBinary if GL_PROGRAM_BINARY_LENGTH==0wm42017-08-081-2/+4
| | | | Noticed in #4717, although the issue might be about something else.
* x11: drop xscrnsaver usewm42017-08-083-18/+1
| | | | | | | | | | | It's an ancient X11 protocol extension that apparently nobody uses anymore (desktop environments in particular have replaced it with equally bad protocols that require tons of dependencies). Users keep complaining about it being a required dependency. The impact is likely minimal to none. Fixes #4706 and other annoying people.
* build: fix dependencies for Cygwin environmentfeixm12017-08-082-3/+3
| | | | | This replaces previous commit with same intentions. This time, with proper formating (no tabs in code).
* vo_opengl: cosmetics to commentswm42017-08-081-5/+3
|
* player: readd smi subtitle extensionwm42017-08-081-1/+1
| | | | | | | Fixes #4626. Previously removed because the original smi entry was added by someone who did not agree to LGPL relicensing. I'm not sure if the original change was copyrightable, but this commit for sure does not fall under that author's copyright.
* ao_wasapi: remove old commentKevin Mitchell2017-08-071-1/+1
|
* ao_wasapi: reorganize wasapi.hKevin Mitchell2017-08-072-12/+8
| | | | | Remove dead declarations. Move macro only used in wasapi_utils.c closer to use. Rearrange declaration order.
* ao_wasapi: deduplicate wasapi sample format selectionKevin Mitchell2017-08-071-49/+40
|
* ao_wasapi: clean up find_formats logicKevin Mitchell2017-08-071-75/+45
| | | | | There were too many functions within functions, too much going on in if clauses and duplicated code. Fix it.
* ao_wasapi: return bool instead of HRESULT from thread_initKevin Mitchell2017-08-073-38/+48
| | | | | | | | Any bad HRESULTs should have been printed already and lots of failure modes don't have an HRESULT leading to awkward hr = E_FAIL business. This also checks the exit status of GetBufferSize in the align hack. A final fatal message is added if either of the retry hacks fail.
* vo_opengl: call ra_free() in the correct contextwm42017-08-072-1/+1
| | | | This also fixes a double free in vo_opengl_cb.c.
* vf_vapoursynth: fix inverted sign and restore 10 bit supportwm42017-08-071-1/+1
| | | | Fixes #4720, I think.
* client API: more opengl_cb clarificationswm42017-08-072-5/+8
| | | | Also fix a typo in ra_gl.c. Too greedy for a separate commit.
* vo_opengl: add another ra_format field to exclude insane formatswm42017-08-073-2/+6
| | | | | | Generic description of pixel formats is hard. In this case, the Apple special format for packed YUV could have been interpreted as a RGB format with funny packing.
* vo_opengl: further GL API use separationwm42017-08-0715-122/+172
| | | | | | | | | | | | | | | Move multiple GL-specific things from the renderer to other places like vo_opengl.c, vo_opengl_cb.c, and ra_gl.c. The vp_w/vp_h parameters to gl_video_resize() make no sense anymore, and are implicitly part of struct fbodst. Checking the main framebuffer depth is moved to vo_opengl.c. For vo_opengl_cb.c it always assumes 8. The API user now has to override this manually. The previous heuristic didn't make much sense anyway. The only remaining dependency on GL is the hwdec stuff, which is harder to change.
* vo_opengl: fix minor memory leakwm42017-08-071-1/+4
| | | | Don't leak the buffer if glGetProgramBinary() fails.
* vo_opengl: nuke ra_gl->first_runNiklas Haas2017-08-072-7/+12
| | | | | | Completely unnecessary, we can just update the uniforms immediately after creating the program. In theory, for GLSL 4.20+, we could even skip this, but oh well.
* vo_opengl: better formatting for enum RA_CAPNiklas Haas2017-08-071-7/+7
| | | | | Also fixes an issue where 1 << 5 was used twice, probably because of the terrible formatting obscuring this bug
* vo_opengl: also support RA_VARTYPE_INT vertex attribsNiklas Haas2017-08-071-0/+3
| | | | No reason not to.
* vo_opengl: simplify mirroring and fix it if glBlitFramebuffer is usedwm42017-08-077-65/+76
| | | | | | | | | | | | | | | | | | The vp_w/vp_h variables and parameters were not really used anymore (they were redundant with ra_tex w/h) - but vp_h was still used to identify whether rendering should be done mirrored. Simplify this by adding a fbodst struct (some bad naming), which contains the render target texture, and some parameters how it should be rendered to (for now only flipping). It would not be appropriate to make this a member of ra_tex, so it's a separate struct. Introduces a weird regression for the first frame rendered after interpolation is toggled at runtime, but seems to work otherwise. This is possibly due to the change that blit() now mirrors, instead of just copying. (This is also why ra_fns.blit is changed.) Fixes #4719.
* travis: install missing x11 depsRicardo Constantino2017-08-071-1/+1
|
* travis: print config.log on failure like appveyorRicardo Constantino2017-08-071-0/+1
|
* vo_opengl: drop pointless fbotex_init() functionwm42017-08-073-13/+2
|
* vo_opengl: generalize ra_buf to support other buffer objectsNiklas Haas2017-08-077-111/+182
| | | | | This allows us to integrate PBOs and SSBOs into the same abstraction, with the potential to easily add UBOs if the need arises.
* acompressor.lua: Convert to use mp.options and lavfi filter bridgeJan Janssen2017-08-071-79/+108
|
* cocoa: add an option to disable the native macOS fullscreenAkemi2017-08-066-10/+46
| | | | Fixes #4014
* ytdl_hook: support fragments with relative pathsRicardo Constantino2017-08-061-5/+16
| | | | | | | Unbreaks segmented DASH with the change in https://github.com/rg3/youtube-dl/commit/1141e9104 which made each segment URL only use relative path from fragment_base_url with a different key.
* vo_opengl: only mark frames as fresh if they contain a new imageNiklas Haas2017-08-061-1/+1
| | | | | | | When using dumb mode, we can actually redraw a frame without uploading it. Marking this as fresh as well results in unpredictable pass behavior, which is confusing and makes debugging harder. So mark it as a redraw instead, in that case.
* vo_opengl: drop ra_gl.h from shader_cache.cNiklas Haas2017-08-066-25/+23
| | | | | | Since the GL *gl is no longer needed for the timers, we can get rid of the sc->gl dependency. This requires moving a utility function (which is not GL-specific anyway) out of gl_utils.h and into utils.h
* vo_opengl: measure pass_draw_osd as a wholeNiklas Haas2017-08-061-1/+8
| | | | | | | | | | | | | | In the past, this always measured the per-shader execution times of the individual OSD parts, which was thrown off because the shader was reused anyway. (And apparently recording the OSD shader execution times was removed completely, probably because of them being so unrealiably anyway) Since ra_timer no longer has the restriction of not allowing timers to run concurrently, we can just wrap the entire OSD block inside a single osd_timer now, and record that. (Technically, this can still be off when using --blend-subtitles=video/yes and showing a full-screen OSD at the same time. Maybe this can be done better?)
* vo_opengl: move timers to struct raNiklas Haas2017-08-069-168/+247
| | | | | | | In order to prevent code duplication and keep the ra abstraction as small as possible, `ra` only implements the actual timer queries, it does not do pooling/averaging of the results. This is instead moved to a ra-neutral struct timer_pool in utils.c.
* wscript: fix build of videotoolbox hwaccel for iOSAman Gupta2017-08-051-2/+2
|
* vo_opengl: ra_gl: make getting GL ptr slightly less tediouswm42017-08-051-35/+20
|
* vo_opengl: move GL state resetting to vo_opengl_cbwm42017-08-054-23/+16
| | | | | | | | | This code is pretty much for the sake of vo_opengl_cb API users. It resets certain state that either the user or our code doesn't reset correctly. This is somewhat outdated. With GL implicit state being so awfully large, it seems more reasonable require that any code restores the default state when returning to the caller. Some exceptions are defined in opengl_cb.h.
* vo_opengl: move shader handling to rawm42017-08-0511-617/+1016
| | | | | | | | | | | | | Now all GL-specifics of shader compilation are abstracted through ra. Of course we still have everything hardcoded to GLSL - that isn't going to change. Some things will probably change later - in particular, the way we pass uniforms and textures to the shader. Currently, there is a confusing mismatch between "primitive" uniforms like floats, and others like textures. Also, SSBOs are not abstracted yet.
* vo_opengl: organize ra PBO flag slightly differentlywm42017-08-055-19/+8
| | | | | | | | Instead of having a mutable ra_tex field (and the only one), move the flag to struct ra, since we have only 2 tex_upload user calls anyway, and both want the same PBO behavior. (At first I considered making it a RA_TEX_UPLOAD_ flag, but why bother. PBOs are a terribly GL-specific thing, so we can't expect a reasonable abstraction of it anyway.)
* vo_opengl: make OSD code use ra for textureswm42017-08-055-44/+78
| | | | | | | | | | | | This requires a silly extension to ra_fns.tex_upload: since the OSD texture can be much larger than the actual OSD image data to upload, a mechanism for uploading only to a small part of the texture is needed. Otherwise, we'd have to realloc/copy the data, just to pad it, and then pay for uploading the padding too. The RA_TEX_UPLOAD_DISCARD flag is not interpreted by GL (not sure how you'd tell GL about this), but it clarifies the API and might be helpful if we support other backend APIs in the future.
* vo_opengl: restore OSX "old" hwdecwm42017-08-051-1/+1
| | | | Probably. Untested.
* vo_opengl: split utils.c/hwm42017-08-0513-1602/+1647
| | | | | | | | | Actually GL-specific parts go into gl_utils.c/h, the shader cache (gl_sc*) into shader_cache.c/h. No semantic changes of any kind, except that the VAO helper is made public again as part of gl_utils.c (all while the goal for gl_utils.c itself is to be included by GL-specific code).
* vo_opengl: always use GL_TRIANGLES for all primitiveswm42017-08-051-2/+5
| | | | Will make the ra layer _slightly_ simpler.
* vo_opengl: pass ra objects during rendering instead of GL objectswm42017-08-054-144/+274
| | | | | | | | | Another "small" step towards removing GL dependencies from the renderer. This commit generally passes ra_tex objects instead of GL FBO integer IDs to various rendering functions. video.c still manually binds the FBOs when calling shaders. This also happens to fix a memory leak with output_fbo.
* vo_opengl: make fbotex helper use rawm42017-08-059-135/+161
| | | | | | | | Further work removing GL dependencies from the actual video renderer, and moving them into ra backends. Use of glInvalidateFramebuffer() falls away. I'd like to keep this, but it's better to readd it once shader runs are in ra.
* vo_opengl: drop unused custom texture filter for FBO helperwm42017-08-052-19/+2
|
* {demux_mf,osdep/io}: disable glob usage when it is not availableJan Ekström2017-08-052-1/+3
| | | | | | | | This currently is only limited to Android. Its stdlib contains the things that mpv's POSIX check checks for, but unfortunately not glob(). This fixes Android compilation broken in 70a70b9da .
* build: re-add and re-structurize the glob() checksJan Ekström2017-08-051-0/+10
| | | | | | | | * If we have glob() supported, we have `HAVE_GLOB = 1'. * If we have specifically POSIX glob(), we have `HAVE_GLOB_POSIX = 1`. * If we have specifically Win32 glob(), we have `HAVE_GLOB_WIN32 = 1`
* build: move Android environment check to main dependenciesJan Ekström2017-08-051-4/+4
| | | | | | Additionally change the description to better match what Android is, which is an "environment". The original positioning of this check was unfortunate.
* w32_common: handle media keysJames Ross-Gowan2017-08-058-3/+58
| | | | | | | | | | | | | | | | | This was attempted before in fc9695e63b5b, but it was reverted in 1b7ce759b1f4 because it caused conflicts with other software watching the same keys (See #2041.) It seems like some PCs ship with OEM software that watches the volume keys without consuming key events and this causes them to be handled twice, once by mpv and once by the other software. In order to prevent conflicts like this, use the WM_APPCOMMAND message to handle media keys. Returning TRUE from the WM_APPCOMMAND handler should indicate to the operating system that we consumed the key event and it should not be propogated to the shell. Also, we now only listen for keys that are directly related to multimedia playback (eg. the APPCOMMAND_MEDIA_* keys.) Keys like APPCOMMAND_VOLUME_* are ignored, so they can be handled by the shell, or by other mixer software.
* vo_opengl: always print when getting embedded ICC profile dataRostislav Pehlivanov2017-08-041-1/+2
| | | | | | The printout in get_vid_profile() gets skipped if icc caching has been enabled, so always print if an embedded ICC profile has been provided.
* TOOLS/lua/status-line: improve and updateRostislav Pehlivanov2017-08-041-6/+27
| | | | | | | Updates the line once per second rather than once per frame, saving quite a bit of CPU. Also completely stops the script while paused. That aside, fixes the swapped checks for video and audio-only files and adds bitrate printing.
* bstr: short-circuit bstr_equals on pointer equalityNiklas Haas2017-08-031-1/+4
| | | | | More efficient in cases where we're comparing a bstr against itself, which can happen in e.g. the ICC profile code.
* vo_opengl: support embedded ICC profilesNiklas Haas2017-08-034-13/+76
| | | | | | | | | | | | | | | | This currently only works when using lcms-based color management (--icc-profile-*). In principle, we could also support using lcms even when the user has not specified an ICC profile, by generating the profile against a fixed reference (--target-prim/--target-trc) instead. I still might do that some day, simply because 3dlut provides a higher quality conversion than our simple gamut mapping does for stuff like BT.2020, and also because it's now needed to enable embedded ICC profiles. But that would be a separate change, so preserve the status quo for now. (Besides, my opinion is still that you should be using an ICC profile if you care about colors being accurate _at all_)
* vd_lavc: decode embedded ICC profilesNiklas Haas2017-08-034-0/+28
| | | | | | | | | Since these need to be refcounted, we throw them directly into struct mp_image instead of being part of mp_colorspace. Even though they would semantically make more sense in mp_colorspace, having them there is really awkward because mp_colorspace is passed around and stored a lot, and this way their lifetime is exactly tied to the lifetime of the mp_image associated with it.
* vo_opengl: use GL_CLIENT_STORAGE_BIT for DRNiklas Haas2017-08-031-1/+1
| | | | | | | | | mesa won't pick client storage unless this bit is set, and we *absolutely* want to be using client storage for our DR PBOs. Performance is shit on AMD otherwise. (Nvidia always uses client storage for persistent coherent buffers whether you tell it it or not, probably because it's way faster and nvidia doesn't trust users to figure that out on their own)
* vo_opengl: remove unused ra_mapped_buffer.preferred_align fieldwm42017-08-032-2/+0
| | | | | | | | | | | It makes no sense to have this on an already created buffer. If anything, the ra backend would have to export this as a global value (e.g. struct ra field), so that whatever allocates the buffer can account for the required alignment. Since this code is in vo_opengl.c in the first place, and since GL doesn't dictate any special alignment here, it doesn't make sense in the first place to export this. (Maybe something like this will be required later.)
* vo_opengl: don't hardcode texmap0 for polar computeNiklas Haas2017-08-031-1/+3
| | | | | This was an oversight. The ID shouldn't be hard-coded here, so add it to sampler_prelude instead.
* vo_opengl: don't precompute texcoord in global scopeNiklas Haas2017-08-031-1/+1
| | | | | | | | | | | Breaks on mesa for whatever reason... even though it doesn't generate a GLSL shader compiler error Shouldn't make a performance difference for us because we cache `pos` anyway, and most compute shaders will probably cache all of their samples to shmem. Might have to re-visit this when we have an actual use case for repeated sampling inside CS though. (RAVU + anti-ringing is a possible candidate for that)
* vo_opengl: make compute shaders more flexibleNiklas Haas2017-08-036-39/+69
| | | | | | This allows users to do their own custom sample writing, mainly meant to address use cases such as RAVU. Also clean up the compute shader code a bit.
* vo_opengl: add legend for texture format debug dumpwm42017-08-031-0/+4
|
* vo_opengl: give special Apple name a more appropriate namewm42017-08-031-1/+1
| | | | | | | | Or less appropriate, as some would argue. The new name