aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* ytdl_hook: add pre-parsed chapters, if availableGravatar Ricardo Constantino2017-07-02
| | | | Available since 2017.05.07 but only on certain extractors.
* m_option: deprecate multiple items for -add etc.Gravatar wm42017-07-02
| | | | | | | | This is more confusing than it helps, and forces escaping more stuff. For example, for string lists we could remove all need for escaling with -add and -pre. The user can simply use multiple of those options.
* options: change everything againGravatar wm42017-07-02
| | | | Fucking bullshit.
* m_option: remove unused error codeGravatar wm42017-07-02
| | | | | The situation in the str_list_* functions can never happen, and they were the only users of this error code.
* x11: add 128x128 sized icon supportGravatar Xu Zhao2017-07-02
|
* m_option: remove redundant indirectionsGravatar wm42017-07-02
| | | | | | Remove the various redundant m_config_set_option* calls, rename the remaining one to m_config_set_option_cli(), and merge the m_config_parse_option() function.
* bstr: short-circuit bstr_equals()Gravatar wm42017-07-02
|
* misc/json: avoid redundant conditionGravatar Raúl Peñacoba2017-07-01
| | | | Closes #4415
* demux/demux: avoid redundant conditionGravatar Raúl Peñacoba2017-07-01
| | | | Closes #4414
* x11: load icon differentlyGravatar wm42017-07-01
| | | | | | | | Now it's sourced from the etc/ PNG files directly, instead of preprocessing them with imagemagick. Add some ad-hoc code to decode PNG files with libavcodec. At least we can drop the zlib code in exchange.
* sws_utils: switch back to GPLGravatar wm42017-07-01
| | | | | | Actually contains some code fragments by Michael Niedermayer (command line stuff, video equalizer), thus it can be LGPL only once the formal requirement of mpv's core being LGPL is fulfilled.
* vo_opengl: describe vdpau reinterleaving passGravatar Niklas Haas2017-07-01
| | | | This shows up as (unknown pass) otherwise.
* vo_opengl: fix some more pass_info_reset issuesGravatar Niklas Haas2017-07-01
| | | | | | | | | | | | 2f41c4e8 exposed some other edge cases as well. Globally resetting the pass info was not the right way to go about it, because we don't know in advance what the frame type is going to be - at least not with the current code structure. (In principle, we could separately indicate the frame type and the pass type and then only reset it on the first actual pass_describe call, but that's annoying as well) Also fixes a latent issue where p->pass was never initialized, which broke the MP_DBG debugging code in some cases.
* vo_opengl: call pass_info_reset earlierGravatar Niklas Haas2017-07-01
| | | | | Omitting this call resulted in a crash when has_frame was false. But we can just call it way earlier, because there's really no reason not to.
* vo_opengl: merge uploading and renderingGravatar Niklas Haas2017-07-01
| | | | | | Since all existing code does gl_video_upload immediately followed by pass_render_frame, we can just move the upload into pass_render_frame itself, which arguably makes more sense anyway.
* vo_opengl: refactor vo performance subsystemGravatar Niklas Haas2017-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This replaces `vo-performance` by `vo-passes`, bringing with it a number of changes and improvements: 1. mpv users can now introspect the vo_opengl passes, which is something that has been requested multiple times. 2. performance data is now measured per-pass, which helps both development and debugging. 3. since adding more passes is cheap, we can now report information for more passes (e.g. the blit pass, and the osd pass). Note: we also switch to nanosecond scale, to be able to measure these passes better. 4. `--user-shaders` authors can now describe their own passes, helping users both identify which user shaders are active at any given time as well as helping shader authors identify performance issues. 5. the timing data per pass is now exported as a full list of samples, so projects like Argon-/mpv-stats can immediately read out all of the samples and render a graph without having to manually poll this option constantly. Due to gl_timer's design being complicated (directly reading performance data would block, so we delay the actual read-back until the next _start command), it's vital not to conflate different passes that might be doing different things from one frame to another. To accomplish this, the actual timers are stored as part of the gl_shader_cache's sc_entry, which makes them unique for that exact shader. Starting and stopping the time measurement is easy to unify with the gl_sc architecture, because the existing API already relies on a "generate, render, reset" flow, so we can just put timer_start and timer_stop in sc_generate and sc_reset, respectively. The ugliest thing about this code is that due to the need to keep pass information relatively stable in between frames, we need to distinguish between "new" and "redrawn" frames, which bloats the code somewhat and also feels hacky and vo_opengl-specific. (But then again, this entire thing is vo_opengl-specific)
* d3d: UWP support for D3D11VAGravatar wm42017-06-30
| | | | | | | For some braindead reason, Microsoft decided to prevent you from dynamically loading system libraries. This makes portability harder. And we're talking about portability between Microsoft OSes!
* d3d: make DXVA2 support optionalGravatar wm42017-06-30
| | | | | | | | | | | | This partially reverts the change from a longer time ago to always build DXVA2 and D3D11VA together. To make it simpler, we change the following: - building with ANGLE headers is now required to build D3D hwaccels - if DXVA2 is enabled, D3D11VA is still forcibly built - the CLI vo_opengl ANGLE backend is now under --egl-angle-win32 This is done to reduce the dependency mess slightly.
* img_format: drop some unused thingsGravatar wm42017-06-30
|
* mp_image: use new code for determining RGB/XYZ exceptionsGravatar wm42017-06-30
| | | | | | Slightly cleaner, possibly slightly more correct. (The last case should be dead code now. In general, we can't know the implied colorspace from a AV_PIX_FMT, at least not if FFmpeg adds a new one.)
* vo_direct3d: remove non-working nv12 shader supportGravatar wm42017-06-30
| | | | | | | | | It never worked. It relied on some obscure texture format to provide the equivalent of GL_RG or GL_LUMINANCE_ALPHA, but no hardware seemed to report support for it ever. No idea what's the correct way to do this. On D3D11 it exists, of course. (Actually I'd like to remove the whole VO.)
* video: get rid of swapped packed YUVGravatar wm42017-06-30
| | | | | | Another legacy annoyance. The only place where packed YUV is still important is slightly older Apple hardware or drivers, which require it for efficient hardware decoding.
* vo_opengl: remove mp_imgfmt_desc and IMGFLAG_ usageGravatar wm42017-06-30
| | | | | These were weird due to their past, and often undefined or ill-defined. Time to get rid of them.
* vo_opengl: restructure format setupGravatar wm42017-06-30
| | | | | | | | | | | | Instead of setting up a weird swizzle (which is linked to how the internal renderer code works, rather than the generic format code), add per-component mapping to gl_imgfmt_desc. The renderer still computes the weird swizzle, but at least it's confined to itself. Also, it appears the hwdec backends don't need this anymore. It's really nice that the messy init_format() goes away too.
* options: change path list options, and document list optionsGravatar wm42017-06-30
| | | | | | | | | | | | | | | | | | | | | | | The changes to path list options is basically getting rid of the need to pass multiple paths to a single option. Instead, you can use the option multiple times. The old behavior can be used by using the -set suffix with the option. Change some options to path lists. For example --script is now append by default, and if you use --script-set, you need to use ":"/";" as separator instead of ",". --sub-paths/--audio-file-paths is a deprecated alias now, and will break if the user tries to pass multiple paths to it. I'm assuming that if these are used, most users will pass only 1 path anyway. --opengl-shaders has more compatibility handling, since it's probably rather common that users pass multiple options to it. Also document all that in the manpage. I'll probably regret this later, as it somewhat increases the complexity of the option parser, rather than increasing it.
* scripting: add wrapper to load scripts with user pathsGravatar Ricardo Constantino2017-06-30
| | | | | Fixes regression since b2f756c80e, which broke load-script command when used with user paths (ex: ~~/script.lua)
* client API: change mpv_create() behavior, run init always on mpv threadGravatar wm42017-06-30
| | | | | | This takes car eof unsubtle bugs if something at init does not work (specifically if mp_new_client() returns NULL). It also removes the need for that PMP MF hack.
* ao_coreaudio: insane hack for passing through AC3 as float PCMGravatar wm42017-06-30
| | | | | This uses the same hack as Kodi uses, and I suspect MPlayer/ancient mpv also did this (but didn't research that).
* vo_direct3d: fix buildGravatar wm42017-06-29
| | | | That format is worthless anyway.
* video: change --video-aspect-method default value againGravatar wm42017-06-29
| | | | | | I noticed that the previous default, bitstream, actually breaks with some shitty anamorphic DVD rips that signal square pixel aspect in the bitstream. So I think the "container" method is a better default.
* video: drop some more IMGFMT aliasesGravatar wm42017-06-29
| | | | | | | | | | | For vo_opengl and vo_direct3d, these are supported in a generic way. For vf_vapoursynth, we could probably map its VSFormat struct in a generic way, but for now do some bullshit. vf_eq.c actually loses support for these formats. We could add generic support too (anything that has 8 bit planes will work), but why bother. The filter is deprecated anyway.
* video: drop some unused IMGFMT aliasesGravatar wm42017-06-29
| | | | | | These formats are supported in a generic way. To get rid of IMGFMT_NV21, remove support from vo_direct3d.c completely.
* vo_opengl: rely on FFmpeg pixdesc a bit moreGravatar wm42017-06-29
| | | | | | | | | | | | | Add something that allows is to extract the component order from various RGBA formats. In fact, also handle YUV, GBRP, and XYZ formats with this. It introduces a new struct mp_regular_imgfmt, that hopefully will eventually replace struct mp_imgfmt_desc. The latter is still needed by a lot of code though, especially generic code. Also vo_opengl still uses the old one, so this commit is sort of incomplete. Due to its genericness, it's also possible that this commit introduces rendering bugs, or accepts formats it shouldn't accept.
* DOCS/tech-overview.txt: updatesGravatar wm42017-06-29
| | | | Oh, this file still exists.
* manpage: fix unfinished sentenceGravatar wm42017-06-29
| | | | | | | No idea what I intended to write here, so I'm finishing it in some way that makes sense (going by the commit that added it). Fixes #4525.
* Copyright: the build system is now LGPLGravatar wm42017-06-29
| | | | | | All relevant authors have agreed. mpv as a whole is still GPL.
* build: allow --disable-zlibGravatar wm42017-06-29
| | | | | Since strictly speaking, it's still optional. It's just very much recommended not to disable it.
* ao_wasapi: UWP wrapper hack supportGravatar wm42017-06-29
| | | | | | | | | | | UWP does not support the whole IMMDevice API. Instead, you need to use a new API (available starting from Windows 8), which is in addition not in MinGW, and extremely unpleasant to use. The wasapiuwp2.dll wrapper is a small custom MSVC DLL, which does this instead, and returns a normal IAudioClient. Before this, ao_wasapi did not initialize on UWP.
* Universal Windows Plaform (UWP) supportGravatar Pedro Pombeiro2017-06-29
| | | | | | | | libmpv only. Some things are still missing. Heavily reworked. Signed-off-by: wm4 <wm4@nowhere>
* ao_wasapi: do not use deprecated wchar functionsGravatar Pedro Pombeiro2017-06-29
| | | | These break on UWP. Based on a patch by Pedro Pombeiro.
* Avoid calling close(-1)Gravatar wm42017-06-29
| | | | | | | | | | While this is perfectly OK on Unix, it causes annoying valgrind warnings, and might be otherwise confusing to others. On Windows, the runtime can actually abort the process if this is called. push.c part taken from a patch by Pedro Pombeiro.
* build: change how some OS specific source files are selectedGravatar wm42017-06-29
| | | | | | | | | | | | | | | | | | In a bunch of cases, we emulate highly platform specific APIs on a higher level across all OSes, such as IPC, terminal, subprocess handling, and more. We have source files for each OS, and they implement all the same mpv internal API. Selecting which source file to use on an OS can be tricky, because there is partially overlapping and emulated APIs (consider Cygwin on Windows). Add a pick_first_matching_dep() function to make this slightly easier and more structured. Also add dummy backends in some cases, to deal with APIs not being available. Clarify the Windows dependency identifiers, as these are the most confusing.
* build: replace glob() check and assume it's always in POSIXGravatar wm42017-06-29
| | | | | POSIX requires glob(), so no need to check for it. Together with the fact that we can emulate glob() on Windows, glob() is always available.
* build: remove unnecessary dlopen checkGravatar wm42017-06-29
| | | | Probably became unnecessary with the vf_dlopen removal.
* ao_wasapi: remove subtly duplicated codeGravatar wm42017-06-28
| | | | Seems like this can be slightly simplified.
* ao_wasapi: remove duplicate code for creating IAudioClientGravatar wm42017-06-28
| | | | | | | | | | | | The code accounting for the terrible AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED semantics (which MSDN claims can happen "starting with Windows 7" - so probably on Windows 10 too) duplicated the call for creating the IAudioClient. That's not great, so get rid of it. Let wasapi_thread_init() handle this. It has a retry loop anyway. This redoes device lookup and format negotiation, but potential failures due to race conditions (what if the driver decides to change behavior) shouldn't be worse than before.
* ring: use 64 bit countersGravatar wm42017-06-28
| | | | | | | | | Apparently, this messes up on wraparound (although it shouldn't). After 2^32 bytes an audio "blip" happens with AOs that use this ringbuffer. Whatever, we can fix this by switching to a 64 bit counter. There's also a good chance the ringbuffer will be dropped completely, so don't waste more time on this.
* audio/out/pull: detect and log underflowsGravatar wm42017-06-28
| | | | Mostly for debugging, I guess.
* vo_opengl: unify user_shaders constantsGravatar Niklas Haas2017-06-28
| | | | | | | | | | | | | | | Commit 3fb6380 was supposed to increase MAX_TEXTURE_HOOKS but instead increased SHADER_MAX_HOOKS, since I forgot that they were separate (for whatever reason). To prevent this mistake from happening again, and to unify the location in which user_shader-specific #defines are placed, get rid of the two constants in opengl/video.c and move/reuse them from user_shaders.h instead. Also bump up MAX_SAVED_TEXTURES (now SHADER_MAX_SAVED) slightly as a precaution against adding more passes to vo_opengl. I think we're already flirting with the limit.
* terminal: remove unused return valueGravatar wm42017-06-27
|