aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* video: make IMGFMT_IS_HWACCEL() return 0 or 1Gravatar wm42018-01-18
| | | | Sometimes helps avoiding usage mistakes.
* video: add utility function to pick conversion image format from a listGravatar wm42018-01-18
|
* video: avoid some unnecessary vf.h includesGravatar wm42018-01-18
|
* options: simplify mp_get_config_group() memory managementGravatar wm42018-01-18
| | | | | | | | | | | | | | | | There is some craziness here: the function allocates m_config_cache, which in turn allocates the actual option struct, which is what the function returns. The user would expect to be able to use talloc_free() to deallocate everything. Of course this didn't work, because the returned pointer is not the root parent in the talloc tree. But with some additional talloc craziness, this can be fixed. We rearrange the parent pointers such that freeing the option struct will free m_config_cache first, which uninits the contents in the option struct, but fortunately not the option struct itself. This change should simplify API use on the caller side, and reduce surprises.
* options: don't warn when reading deprecated option as raw valueGravatar wm42018-01-18
| | | | | | mp_read_option_raw() should not print the deprecation warning if the option is deprecated. This change also means you can't pass an alias to the function, but all existing uses should be fine.
* manpage: reword some vf command examplesGravatar wm42018-01-18
| | | | Hopefully this is easier to read.
* Fix undefined preprocessor behaviorGravatar wm42018-01-18
| | | | | | | | | | | This commit eliminates the following clang warning: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined] Going by the clang commit message, this seems to be explicitly specified as UB by the standard, and they added this warning because MSVC apparently results in different behavior. Whatever, we can just avoid the warning with some small changes.
* client API: mention that SIGPIPE is sometimes blockedGravatar wm42018-01-18
| | | | | | ipc-unix.c does this out of convenience. Since signals are global process state, this deserves a mention, since applications could in theory rely on SIGPIPE being set to something else.
* vo_gpu: skip DR for unsupported image formatsGravatar wm42018-01-18
| | | | | | | | | | | | | | DR (direct rendering) works by having the decoder decode into the GPU staging buffers, instead of copying the video data on texture upload. We did this even for formats unsupported by the GPU or the renderer. This "worked" because the staging memory is untyped, and the video frame was converted by libswscale to a supported format, and then uploaded with a copy using the normal non-DR texture upload path. Even though it "works", we don't gain anything from using the staging buffers for decoding, since we can't use them for upload anyway. Also, staging memory might be potentially limited (what really happens is up to the driver). It's easy to avoid, so just skip it in these cases.
* vo_gpu: fix broken 10 bit via integer textures playbackGravatar wm42018-01-17
| | | | | | | | | | | The check_gl_features(p) call here checks whether dumb mode can be used. It uses the field use_integer_conversion, which is set _after_ the call in the same function. Move check_gl_features() to the end of the function, when use_integer_conversion is finally set. Fixes that it tried to use bilinear filtering with integer textures. The bug disabled the code that is supposed to convert it to non-integer textures.
* vo_gpu: rpi: defer gl_ctx_resize until after gl_ctx_initGravatar Niklas Haas2018-01-15
| | | | | | | | This segfaults otherwise. The conditional is needed to break a circular dependency (gl_init depends on mpgl_load_functions which depends on recreate_dispmanx which calls gl_ctx_resize). Fixes #5398
* af_rubberband: add af-command to multiply current pitchGravatar Vobe2018-01-15
| | | | | | | | | | | | | This commit introduces the multiply-pitch af-command. Users may bind keys to this command in order to incrementally adjust the pitch of a track. This will probably mostly be useful for musicians trying to transpose up and down by semi tones without having to calculate the correct ratio beforehand. As an example, here is an input.conf to test this feature: { af-command all multiply-pitch 0.9438743126816935 } af-command all multiply-pitch 1.059463094352953
* demux_lavf: add required format hacks for DASHGravatar sfan52018-01-15
|
* ytdl_hook: support native dash demuxer, if presentGravatar Ricardo Constantino2018-01-15
| | | | | | Uses track tbr instead of track disposition id for dash selection Works just as expected because youtube-dl also takes tbr from the manifests.
* libmpv/opengl_cb.h: mention OpenGL ES 2.0 supportGravatar Leo Izen2018-01-14
| | | | | opengl_cb.h should mention GLES 2.0 support, since this support is available. Now it does mention it.
* osc: leave only demuxer cache duration and limit its refresh rateGravatar Ricardo Constantino2018-01-14
| | | | Sorta requested in #5390
* osd: treat user provided term-status-msg the same as the defaultGravatar Kevin Mitchell2018-01-14
| | | | | | | | | | | This is achieved by adding the new function get_term_status_msg that returns the status message specified by the user, or the mpv default. Previously, term_osd_print_status_lazy would exit early as soon as a user status message had been set, which potentially skipped adding the term_osd_bar if the user also requested that. fixes #3280
* osd: reference local pointer to mpctx->optsGravatar Kevin Mitchell2018-01-13
| | | | For brevity, since it's already there. Result should be identical.
* af_lavrresample: deprecate this filterGravatar wm42018-01-13
| | | | | | The future direction might be not having such a user-visible filter at all, similar to how vf_scale went away (or actually, redirects to libavfilter's vf_scale).
* options: deprecate --vf-defaults and --af-defaultsGravatar wm42018-01-13
|
* audio: add global options for resampler defaultsGravatar wm42018-01-13
| | | | | | | | This is part of trying to get rid of --af-defaults, and the af resample filter. It requires a complicated mechanism to set the defaults on the resample filter for backwards compatibility.
* audio/aframe: add missing include statementsGravatar wm42018-01-13
| | | | Otherwise it doesn't compile if they are not indirectly included before.
* video: change some mp_image_pool semanticsGravatar wm42018-01-13
| | | | | | | | | | Remove the max_count creation parameter, because it's pointless and rarely ever did anything. Add a talloc parent parameter instead (which is something completely different, but convenient, and all callers needs to be changed anyway). Instead of clearing the pool when the now removed maximum is reached, clear it on image parameter changes instead.
* player: silence config file loading message on resumingGravatar wm42018-01-13
| | | | | | This is just an implementation detail; seems to be ugly to log it by default. Other cases of the try_load_config() function should be logged, though.
* client API: remove ytdl=no defaultGravatar wm42018-01-13
| | | | | | | | | | | | | | With the recent changes to the script it does not incur a startup delay by default due to starting youtube-dl and waiting for it. This was the main reason for making libmpv have a different default. Starting sub processes from a library can still be a bit fishy, but I think it's ok. Still mention it in the libmpv header. There were already other cases where libmpv would start its own processes, such as the X11 backend calling xdg-screensaver. (The reason why this is fishy is because UNIX process management sucks: SIGCHLD and the wait() syscall make sub processes non-transparent and could potentially introduce conflicts with code trying to use them.)
* manpage: remove stale vo_wayland entryGravatar wm42018-01-13
|
* ytdl_hook: look for the right ytdl binary according to systemGravatar Ricardo Constantino2018-01-12
| | | | | | | | package.config is available in 5.1, 5.2, 5.3 and luajit, so should be fine. The first character is the path separator, so it's '\' on windows and '/' on *nix. This should also prevent cases where users download the wrong binary.
* ytdl_hook: be more informative when youtube-dl failsGravatar Ricardo Constantino2018-01-12
|
* build: rpi: add missing linker flags to fix buildGravatar Ilya Tumaykin2018-01-10
| | | | | | | | See https://www.raspberrypi.org/forums/viewtopic.php?f=67&t=20005&p=194090 and https://github.com/raspberrypi/firmware/issues/110 Raspberry-pi upstream also adds '-lGLESv2' when EGL is used: https://github.com/raspberrypi/userland/blob/master/pkgconfig/egl.pc.in
* manpage: update references to gpu VOGravatar daschiller2018-01-10
|
* demux: include beginning of stream state in cached seekable rangeGravatar wm42018-01-10
| | | | | | | | | | | | Similar to 1eec7d2315, but for the beginning of the stream (named BOF in this commit). We can know this only if demuxing actually started from the beginning. If there is a seek to the beginning (even if you use --start=-1000), we don't know in general whether the demuxer truly returns the start of the file. We could probably make a heuristic with assuming that this is what happens if the seek target is before the start time or so, but this is not included in this commit.
* demux: fight libavformat cover art hack harderGravatar wm42018-01-10
| | | | | | | | | | | | | | | | | | | | | | | | | | libavformat's cover art hack (aka attached pictures) breaks the ability of the demuxer cache to keep multiple seek ranges. This happens because the cover art packet has neither position nor timestamp, and libavformat gives us the packet even though we intended to drop it. The cover art hack works by adding the cover art packet to the read packet stream once when demuxing starts (or after seeks). mpv treats cover art in a similar way internally, but we have to compensate for libavformat's shortcomings, and add the cover art packet ourselves when we need it. So we don't want libavformat to return the packet. We normally prevent this in demux_lavc.c/select_tracks() and explicitly disable cover art streams. (We add it in dequeue_packet() instead.) But libavformat will actually add the cover art packet even if we disable the cover art stream, because it adds it at initialization time, and does not bother to check again in av_read_frame() (apparently). The packet is actually read, and upsets the demuxer cache logic. In addition, this also means we probably decoded the cover art picture twice in some situations. Fix this by explicitly checking/discarding this in yet another place. (Screw this hack...)
* demux: add missing seekpoint when cached ranges are joinedGravatar wm42018-01-10
| | | | | | | | The impact was that you couldn't exactly seek to the join point with a keyframe seek, even though there was a keyframe. This commit fixes it by preserving the necessary metadata that got lost on cached range joining. This is so absurdly obscure that it gets a longer code comment.
* input: make command argument list a dynamic arrayGravatar wm42018-01-10
| | | | | | | | Replace the static array with dynamic memory allocation. This also requires some code to honor mp_cmd.nargs more strictly. Generally allocates more stuff. Fixes #5375 (although we could also just raise the static limit).
* stream_bluray: support detecting UHD BD directoriesGravatar Ricardo Constantino2018-01-11
| | | | Close #5325
* ytdl_hook: don't try to use webpage_url if non-existentGravatar Ricardo Constantino2018-01-11
|
* video, audio: don't actively wait for demuxer inputGravatar wm42018-01-09
| | | | | | | | | | | | If feed_packet() ended with DATA_WAIT, the player should have gone to sleep, until the demuxer wakes it up again when there is new data. But the call to read_frame() unconditionally overwrote this status code, so it never waited. The consequence was that the core burned CPU by effectively polling the demuxer status, which was noticeable especially when seeking in network streams (since seeking is async, decoders will start out with having to wait for network). Regression since commit 33e5755c.
* command: make pause display the same osd-msg-bar as seekGravatar Kevin Mitchell2018-01-07
| | | | | | Previously, toggling pause would generate no osd response, and changing that wasn't even configurable. This was surprising to users who generally expect to see *where* pause / unpause is taking place (#3028).
* command: default to osd-msg-bar for seeksGravatar Kevin Mitchell2018-01-07
| | | | | | | | The previous default was osd-bar (unless the user specified --no-osd-bar, in which case case it was osd-msg). Aside from requiring some twisted logic to implement, this surprised users since osd-msg3 wasn't displayed when seeking with the keyboard (#3028), so the time seeked to was never displayed.
* manpage: fix typos in osd level descriptionsGravatar Kevin Mitchell2018-01-07
|
* command: remove unnecessary whitespaceGravatar Kevin Mitchell2018-01-07
|
* ytdl_hook: actually use the script option from 87d3af6Gravatar Ricardo Constantino2018-01-07
|
* ytdl_hook: add script option to revert to trying youtube-dl firstGravatar Ricardo Constantino2018-01-07
| | | | | Should only make a difference if most of the URLs you open need youtube-dl parsing.
* player: handle audio playback restart in central playback start codeGravatar wm42018-01-07
| | | | | | | No idea why this wasn't done earlier. This makes playback start in audio only tracks closer to video-only or video/audio restart. It has the consequence that --cache-pause-initial now works for audio-only streams too.
* demux: silence pointless/confusing warningGravatar wm42018-01-07
| | | | | | | | | | | | | | | | | | | This warning was printed when the demuxer cache tried to join two adjacent seek ranges, but failed if the last keyframe in the second range was within the (overlapping) first range. This is a weird corner case which to support probably would not be worth it. So this code just printed a warning and discarded the second range. As it turns out, this can happen relatively often if you seek a lot, and the seek ranges are very tiny (such as consisting of only 1 keyframe). Dropping the second range in these cases is OK and probably cheaper than trying to actually join them. Change the warning to verbose level. (It seems this could actually be "supported", because if keyframe_latest is not set, there will be no other keyframes, so it could just be unset, with the exception that q1->keyframe_latest in the code below must not be overwritten. But still, too much trouble for a special case that likely does not matter, and it would have to be tested too.)
* cache: fix --cache-initial status messageGravatar wm42018-01-07
| | | | | | | | | | | | | | | For quite some time, msg.c hasn't output partial log messages anymore, and instead buffered them in memory. This means the MP_INFO() statement here just kept appending the message to memory, instead of outputting it. Easy enough to fix by abusing the status line (which means the frontend and this code will "fight" for the status line, but this code seems to win usually, as the frontend doesn't update it so often). Users should probably really switch to --cache-pause-initial. Fixes #5360.
* player: slightly refactor/simplify cache pausing logicGravatar wm42018-01-07
| | | | | | | | | | | | | | | | The underlying logic is still the same (basically pausing if the demuxer cache underruns), but clean up the higher level logic a bit. It goes from 3 levels of nested if statements to 1. Also remove the code duplication for the --cache-pause-initial logic. In addition, make sure an earlier buffering state has no influence on the new state after a seek (this is also why some of the state resetting can be removed from loadfile.c). Initialize cache_buffer always to 100. It basically means we start out assuming all buffers are filled enough. This actually matters for verbose messages only, but removes some weird special casing.
* demux_null: mark as seekableGravatar wm42018-01-06
| | | | | | No reason not to, and enables some strange constructions with --external-file (although the result is not too smooth for certain reasons).
* player: strictly never autoselect tracks from --external-filesGravatar wm42018-01-06
| | | | | | | | | | | | | | | | Before this commit, some autoselection of tracks coming from files loaded with --external-files was still done. This commit removes all of it, and the only way to select a track is via the explicit stream selection options like --vid/--sid/--aid. I think this was always the original intention. The change could in theory still unintentionally surprise some users, so add a changelog entry. This does not affect --audio-file/--sub-file, even if these contain mismatching track types. E.g. if audio files passed to --audio-file contain subtitles, these should still be selected. Past feature requests indicate that users want this.
* ytdl_hook: check for possible infinite loop in playlist generationGravatar Ricardo Constantino2018-01-06
|