summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Update RELEASE_NOTESrelease/0.7Diogo Franco (Kovensky)2015-02-031-1/+23
|
* win32: don't resize when window is minimizedwm42015-02-031-5/+6
| | | | | | | | At least the opengl-hq VO allocates additional resources when downscaling a lot, which is just a waste. Also see #1547 (although I doubt that this is the cause; if it is, a real fix will be required).
* options: slightly improve help output for choice and flag optionswm42015-02-031-9/+12
|
* build: disable pdf build by defaultwm42015-02-031-0/+1
| | | | | rst2pdf keeps having sporadic layouting failures, causing build failures.
* build: fix v4l2 support on NetBSDwm42015-02-031-5/+12
| | | | | It was accidentally broken. Tested by a NetBSD user. May help with other BSDs.
* player: print desync message on negative A/V-sync toowm42015-02-031-1/+1
| | | | | | | | At least there is _some_ problem if this happens. It would mean that audio is playing slower than video. Normally, video is synced to audio, so if audio stops playback completely, video will not advance at all. But using things like --autosync, it's well possible that this kind of desync happens.
* player: use correct type for some relative timeswm42015-02-031-3/+3
| | | | | | We use double for these things everywhere, just this code didn't. It likely doesn't matter much, and this code is for an optional feature too.
* av_common: add comment about using now-deprecated libavcodec fieldwm42015-02-031-1/+2
| | | | | | | | | | FFmpeg and Libav have the stupid practice of replacing and deprecating API symbols on the same day. So with FFmpeg git, this is useless and will print a compile time warning, while it's required with all stable releases, and might lead to decoding errors with xvid/avi (apparently). Add a comment before someone writes a patch and I have to explain it all over again.
* README: mention that youtube-dl integration requires Luawm42015-02-031-1/+1
|
* manpage: fix rst2pdf buildMartin Herkt2015-02-031-0/+5
| | | | Uhhh… What???
* Release v0.7.3v0.7.3Diogo Franco (Kovensky)2015-01-271-1/+1
|
* Update RELEASE_NOTESDiogo Franco (Kovensky)2015-01-271-1/+2
|
* player: fix framestep over timeline segment boundarieswm42015-01-271-0/+2
| | | | | | | | | | | This was subtly broken by commit a937ba20. Instead of framestepping over the timeline segment boundary, it would just unpause playback, because seeking now resets mpctx->step_frames. This was especially apparent when doing something like "mpv *.jpg --merge-files". Fix by restoring the step_frames field specifically if the seek is done for switching segment boundaries. Hopefully the number fields which need such an exception on seeking won't grow and turn this code into a mess.
* options: list correct default value for --screenshot-templatewm42015-01-272-1/+2
| | | | | | Make the default value part of the option metadata, instead of doing this in the screenshot code. Makes more sense with --list-options and the command.c option metadata properties.
* manpage: fix typoDiogo Franco (Kovensky)2015-01-261-1/+1
|
* manpage: describe some more config directory artifactswm42015-01-261-9/+27
| | | | | Conflicts: DOCS/man/mpv.rst
* Update RELEASE_NOTESDiogo Franco (Kovensky)2015-01-261-0/+78
|
* ao_pulse: plug a memory leakBen Boeckel2015-01-261-0/+3
|
* lua: do not use math.pow()wm42015-01-261-1/+1
| | | | | It's the first thing that breaks with Lua 5.3. I don't know if there are other failures because I don't care enough.
* input: fix dangling pointerwm42015-01-261-0/+1
| | | | Removes undefined behavior that showed up as crap when running with -v.
* ytdl: implement user-agent and cookie overrideswm42015-01-261-5/+34
| | | | | | | | | | | | | | | | For some sites, youtube-dl sends a special user-agent. If we don't send the same user-agent, the server will reject mpv's connection attempt. This was observed with trailers.apple.com. Fix it by forcing the user-agent youtube-dl uses. Some sites set cookies when doing a website access, and require the client to provide these cookies when downloading the actual media. This is needed at least by nicovideo.jp. Fix by adding youtube-dl's cookies to our request headers. Both of these require a very recent youtube-dl version (youtube-dl added the necessary headers a few hours ago). The script still works with older youtube-dl versions, though.
* youtube-dl_mpv.sh: unquote ${video_url}Vítor Galvão2015-01-251-1/+1
|
* input: handle mixing key press and up/down events betterwm42015-01-251-4/+5
|
* ao_wasapi: fix try_format logic in shared modeJames Ross-Gowan2015-01-251-2/+1
| | | | | | | | | | | | | | | | | The MSDN documentation for IsFormatSupported says a return code of AUDCLNT_E_UNSUPPORTED_FORMAT means the function "succeeded but the specified format is not supported in exclusive mode." This seems to imply that the format is supported in shared mode, and that's what the old code assumed, however try_format would incorrectly return success with some drivers. The remarks section of the documentation contradicts that assumption. It says that in shared mode, if the audio engine does not support the caller-specified format or any similar format, ppClosestMatch is set to NULL and the function returns AUDCLNT_E_UNSUPPORTED_FORMAT. This is the same as in exclusive mode, so treat AUDCLNT_E_UNSUPPORTED_FORMAT the same regardless of opt_exclusive. In shared mode, the format selection code will fall back to the mix format, which should always be supported.
* player: some fixes for property notificationxylosper2015-01-252-4/+4
| | | | | | | | | | | | | `core-idle` depends on seeking state `mpctx->restart_complete`, so make `core-idle` notified whenever `seeking` is notified, too. `paused-for-cache` can be changed on MPV_EVENT_CACHE_UPDATE obviously. Finally, `MPV_EVENT_PLAYBACK_RESTART` should be notified after `mpctx->restart_complete` changed. Conflicts: player/command.c
* youtube-dl_mpv.sh: use curly braces and double quotes consistentlyVítor Galvão2015-01-251-8/+8
|
* vo_opengl: improve terminal messages with lscale suboption errorswm42015-01-251-5/+13
| | | | Make it more apparent what the hell the user did wrong.
* vo_opengl: guarantee correct reinitialization on setting optionswm42015-01-251-0/+1
| | | | | | At least the scale_sep_fbo could have been uninitialized or initialized incorrectly when switching between scalers (e.g. from bilinear to lanczos). Calling check_resize() should take care of this.
* vo_vdpau: don't render to an output surface if it could be busywm42015-01-251-6/+6
| | | | | | There was a case when we could have rendered to an output surface while it's still used for display. Not sure why the API doesn't do this automatically.
* vo_direct3d: disable shaders if unavailablewm42015-01-251-23/+24
| | | | | | | | | | | | | Apparently, extremely crappy graphics drivers don't allow you to use shaders. Simply disable use of shaders if this happens, and use the "old" method instead. One unexpectedly tricky thing is that you need a d3d_device to create a shader, which in turn requires a window, so the initialization order changes. Conflicts: video/out/vo_direct3d.c
* vo: never autoselect vo_nullwm42015-01-251-0/+2
| | | | | | | Same deal as with commit d44b4ccb. Conflicts: video/out/vo.c
* ao_alsa: reinitialize if device got brokenwm42015-01-251-0/+3
| | | | | | | | | Apparently, physically disconnecting the audio device (consider USB audio) breaks the ALSA device handle forever. It will signal ENODEV. Fortunately, it's easy for us to handle this, and we can just use existing mechanisms that will make the playback core close and reopen the AO. Whether the immediate reopening will actually succeeds really is ALSA's problem, though.
* vf_scale: replace ancient fallback image format selectionwm42015-01-253-141/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If video output and VO don't support the same format, a conversion filter needs to be insert. Since a VO can support multiple formats, and the filter chain also can deal with multiple formats, you basically have to pick from a huge matrix of possible conversions. The old MPlayer code had a quite naive algorithm: it first checked whether any conversion from the list of preferred conversions matched, and if not, it was falling back on checking a hardcoded list of output formats (more or less sorted by quality). This had some unintended side- effects, like not using obvious "replacement" formats, selecting the wrong colorspace, selecting a bit depth that is too high or too low, and more. Use avcodec_find_best_pix_fmt_of_list() provided by FFmpeg instead. This function was made for this purpose, and should select the "best" format. Libav provides a similar function, but with a different name - there is a function with the same name in FFmpeg, but it has different semantics (I'm not sure if Libav or FFmpeg fucked up here). This also removes handling of VFCAP_CSP_SUPPORTED vs. VFCAP_CSP_SUPPORTED_BY_HW, which has no meaning anymore, except possibly for filter chains with multiple scale filters. Fixes #1494.
* stream: reject overly long URLswm42015-01-251-0/+4
|
* stream_lavf: escape disallowed characters in http URLswm42015-01-252-5/+24
| | | | | | | | | | | | | | | | | In my opinion, libavformat should be doing this. But a patch handling a very safe case rejected, so I suppose we have to do it manually. (This patch was only escaping spaces, which can never work because they break the basic syntax of the HTTP protocol.) This commit attempts to do 2 things: - Try to guess whether libavformat will use the URL for http. This is not always trivial, because some protocols will recursively pass part of the user URL to http in some way. - Try to fix invalid URLs. We fix only the simplest case: only characters that are never valid are escaped. This excludes invalid escape codes, which happen with freestanding '%' characters. Fixes #1495.
* vo_opengl: fix typowm42015-01-251-1/+1
|
* build: reduce worst case with mismatching FFmpeg pkg-config fileswm42015-01-251-12/+12
| | | | | | | | | | | | | | | | | | | | | | Handles mismatching libavfilter/libavdevice and libavcodec slightly better. libavfilter and libavdevice are optional, and thus are checked separately and at a later point of the build. But if a user system has at least 2 FFmpeg installations, and one of them lacks libavfilter or libavdevice, the build script will pick up the libavfilter/libavdevice package of the "other" FFmpeg installation. The moment waf picks these up, all include paths will start pointing at the "wrong" FFmpeg, and the FFmpeg API checks done earlier might be wrong too, leading to obscure and hard to explain compilation failures. Just moving the libavfilter/libavdevice checks before the FFmpeg API checks somewhat deals with this issue. Certainly not a proper solution, but since the change is harmless, and there is no proper solution, and the change doesn't actually add anything new, why not. Conflicts: wscript
* README: extend dependecy list, link Windows compilation docswm42015-01-252-5/+13
| | | | | | | Also, fix vo.rst, don't want to waste a separate commit on this. Conflicts: DOCS/man/vo.rst
* audio: don't force any parameters if spdif is usedwm42015-01-251-5/+3
| | | | | | The existing code only ignored --audio-channels, but not --audio-rate or --audio-format if spdif passthrough is used. Setting these makes no sense.
* ao_coreaudio: reset possibly random errno valuewm42015-01-251-1/+2
| | | | | | | | | | In general, you need to check errno when using strtol(), but as far as I know, strtol() won't reset errno on success. This has to be done manually. The code could have failed sporadically if strtol() succeeded, and errno was already set to one of the checked values. (This strtol() still isn't fully error checked, but I don't know if it's intentional, e.g. for parsing a numeric prefix only.)
* vo: restore framedropwm42015-01-251-1/+1
| | | | Fix inverted condition in commit 234d6329.
* player: mention mpv encoding support for transcoding in desync. warningwm42015-01-251-1/+1
|
* video: fix waiting for last frame/format reconfigwm42015-01-252-1/+2
| | | | | | | | | | | We still need to send the VO a duration in these cases. Disabling framedrop has logically absolutely nothing to do with these cases; it was overlooked in commit 918b06c4. So we always send the frame duration (or a guess for it), and check whether framedropping is actually enabled in the VO code. (It would be cleaner to send framedrop as a flag, but I don't care about that right now.)
* demux: return EOF when reading from unselected streamwm42015-01-251-1/+1
| | | | | | | | | | | | | | | | | Normally the player doesn't read from unselected streams, so this should be a no-op. But unfortunately, some broken files can severely confuse the player, and assign the same demuxer stream to multiple front-end tracks. Then selecting one of the tracks would deselect the other track, with the end result that the demuxer stream for the selected track is deselected. This could happen with mkv files that use the same track number (which is of course broken). timeline_set_part() sets the tracks using demuxer_stream_by_demuxer_id(), using the broken non-unique IDs. The observable effect was that the player never quit, because demux_read_packet_async() told the caller to wait some longer for new packets. Fix by returning EOF instead. Fixes #1481.
* cocoa: don't set application icon in libmpvStefano Pigozzi2015-01-251-2/+4
|
* player: respect --untimed on last framewm42015-01-251-1/+1
| | | | | | | | | | | | | | The last video frame is another case that has a separate code path, although it's pretty similar to the one in commit 73e5aa87. Fix this in a different way, which also takes care of the last frame case, although without context the code becomes slightly more tricky. As further cleanup, move the decision about framedropping itself to the same place, so the check in vo.c becomes much simpler. The check for the vo->driver->encode flag, which is remvoed completely, was redundant too. Fixes #1480.
* manpage: fix osd-ass-cc exampleswm42015-01-251-1/+4
| | | | | | | | The "\\" escape was rendered as "\" on the website. I'm hoping quoting this in ``...`` will render it correctly. Also add an example for show_text, which awkwardly does not require escaping the "\".
* player: respect --untimed on video format changeswm42015-01-251-1/+1
| | | | | | | | | | | If the video format changes (e.g. different frame size), a special code path is entered to wait until the currently displayed frame is done. Otherwise, the frame before the change would be destroyed by the vo_reconfig() call. This code path didn't respect --untimed; correct this. Fixes #1475.
* OSC: Reset all styles for idle messageChrisK22015-01-251-6/+6
|
* osc: fix disabling OSCwm42015-01-251-1/+5
| | | | | | | Upon the "DEL" key binding or the "disable-osc" message, the OSC should stay permanently invisible. This was recently broken (not sure by what), because other code accidentally reenables it anyway, which resulted in the OSC appearing again when moving the mouse.
* ao_alsa: fix a small memory leakwm42015-01-251-0/+2
|
* player: fallback to seek time for percent-pos propertywm42015-01-251-2/+2
| | | | | | | | | | | | | The percent-pos property normally goes by time, except for file formats like .ts or .ogg, where you can't trust the timestamps and duration info to compute the position in the overall files. These use the byte position and size instead. When the file position was unavailable (e.g. due to an ongoing seek), the percent-pos was unknown. Change it to use the time position instead. In most cases, it's actually accurate enough, and the temporary unavailability of the property can be annoying, e.g. on the terminal status line.
* wayland: implement key modifierswm42015-01-251-18/+24
| | | | Includes shift, ctrl, alt, meta.
* wayland: don't compute absurd window sizewm42015-01-251-3/+6
| | | | | | | | | For some reason, schedule_resize() can be called with everything set to 0. The code couldn't handle wl->window.aspect set to 0, converting NaNs to integers. Just work this around. (I have no idea what I'm doing. This is probably a corner case caused by my broken-ish wayland setup.)
* manpage: improve --title descriptionwm42015-01-251-5/+6
| | | | | It might be rather surprising that --title also sets the audio stream title (for PulseAudio and wasapi), so it certainly should be mentioned.
* client API: reasonable behavior if window is closedwm42015-01-251-0/+2
| | | | | | | | | | | | | | | | Closing the video window sends CLOSE_WIN, which is normally mapped to the "quit" command. The client API normally disables all key bindings, and closing the window does nothing. It's simply left to the application to handle this. This is fine - an embedded window can not be destroyed by user interaction. But sometimes, the window might be destroyed anyway, for example because the containing window is destroyed. If this happens, CLOSE_WIN should better not be ignored. We can't expect client API users to handle this specially (by providing their own input.conf), so provide some fallback for this pseudo key binding. The "quit" command might be too intrusive (not every client necessarily handles "unexpected" MPV_EVENT_SHUTDOWN), but I think it's still reasonable.
* player: enable demuxer thread for external audio fileswm42015-01-251-0/+9
| | | | | | | | | | | | | | Enable asynchronous reading for external files. This excludes subtitle files (so it's effectively enabled for audio files only), because most subtitle files are fully read on loading, and running a thread for them would just cause slowdowns and increase resource usage, without having any advantages. In theory, an external file could provide multiple tracks from the same demuxer, but demux_start_thread() is idempotent, so the code can be kept simple. Should help with playing DASH with ytdl_hook.
* ao_alsa: fix dtshd passthroughwm42015-01-251-2/+6
| | | | | | | We must not try to remap channels with this. Whethever ALSA gives us, and whatever we do with it, the result will probably be nonsense. Untested, as I don't have the required hardware.
* tl_matroska: check chapter boundswm42015-01-251-6/+9
| | | | | | | | | | I have no idea what this does, but it's without doubt a sufficient fix for the issue at hand. Fixes #1445. Conflicts: player/timeline/tl_matroska.c
* ao_pulse: disable latency calculation hacks by defaultwm42015-01-252-3/+7
| | | | | | | | | | | | | | This used to be required to workaround PulseAudio bugs. Even later, when the bugs were (partially?) fixed in PulseAudio, I had the feeling the hacks gave better behavior. On the other hand, I couldn't actually reproduce any bad behavior without the hacks lately. On top of this, it seems our hacks sometimes perform much worse than PulseAudio's native implementation (see #1430). So disable the hacks by default, but still leave the code and the option in case it still helps somewhere. Also, being able to blame PulseAudio's code by using its native API is much easier than trying to debug our own (mplayer2-derived) hacks.
* win32: request UTF-16 API variants, Vista+ APIs, and COM C macroswm42015-01-2512-26/+10
| | | | | | | | | Put the Vista+ (_WIN32_WINNT) and the COM C (COBJMACROS) defines into the build system, instead of defining them over and over in the code. Conflicts: video/out/w32_common.c waftools/checks/custom.py
* terminal: always print to stderr with --no-input-terminalwm42015-01-251-5/+6
| | | | | | | | | | | | | | | | | The function terminal_in_background() reports whether the player was backgrounded. In this case, we don't want to annoy the user by still printing the status to stderr. If no terminal interaction is assumed, this mechanism is disabled, and stderr is always used. The read_terminal variable signals this case. Oddly, just redirecting stderr will disable output to stderr, because the background check with tcgetpgrp() is done on stderr, but read_terminal is still true (because that one depends on stdin and stdout). Explicitly disable this mechanism if --no-input-terminal is used by setting read_terminal to true only if terminal input is actually initialized.
* TOOLS/zsh.pl: complete options based on typesPhilip Sequeira2015-01-251-31/+70