aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* audio: don't wait when draining and pausedGravatar wm42014-06-12
| | | | | A corner case that could possibly lead to infinite waiting. Though I'm not aware that this actually happened in practice.
* encode: make the central lock recursiveGravatar wm42014-06-12
| | | | | | | | Unfortunately, there's a recursive function call in ao_lavc.c (play function), leading to a deadlock. The locking is getting a bit messy, so just make the lock recursive. This fixes #844.
* options: fix for compilation when encoding disabledGravatar xylosper2014-06-12
| | | | | HAVE_* flags are always defined so ifdef will never work. They should be checked with their values.
* tv: use correct timestampsGravatar iive2014-06-12
| | | | | | | | | | | | | | | | | | Squashed from the following mplayer-svn commits. The '#' is removed from the bug ID to prevent github from doing something stupid. Instead of adding the mplayer configure check for clock_gettime(), the POSIX identifiers are used for checking presence of the function. Use correct type of timestamps when recording from v4l2. Fix 2176 Patch by Jarek Czekalski <jarekczek at poczta onet pl>. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@37222 b3059339-0415-0410-9bf9-f77b7e298cf2 Allow building of v4l2 without clock_gettime(). Add overly verbose message in case monotone timestamps are required by the kernel. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@37223 b3059339-0415-0410-9bf9-f77b7e298cf2
* encode: make option struct localGravatar wm42014-06-11
| | | | Similar to previous commits.
* input: make option struct localGravatar wm42014-06-11
| | | | | | | | | Similar to previous commits. This also renames --doubleclick-time to --input-doubleclick-time, and --key-fifo-size to --input-key-fifo-size. We could keep the old names, but these options are very obscure, and renaming them seems better for consistency.
* demux_lavf: make option struct localGravatar wm42014-06-11
| | | | Similar to previous commits.
* ad_lavc: make option struct localGravatar wm42014-06-11
| | | | Similar to previous commit.
* vd_lavc: make option struct localGravatar wm42014-06-11
| | | | | Removes specifics from options.h and options.c, and puts everything into vd_lavc.c.
* options: remove a global variableGravatar wm42014-06-11
| | | | This is probably the last one, at least with my current configuration.
* vf_noise: remove global variablesGravatar wm42014-06-11
|
* vf_divtc: remove a global variableGravatar wm42014-06-11
|
* Add more constGravatar wm42014-06-11
| | | | | | | While I'm not very fond of "const", it's important for declarations (it decides whether a symbol is emitted in a read-only or read/write section). Fix all these cases, so we have writeable global data only when we really need.
* vo_caca: remove global variablesGravatar wm42014-06-11
| | | | The shit I put up with...
* demux_raw: remove global option variablesGravatar wm42014-06-11
|
* demux_mf: remove global option variablesGravatar wm42014-06-11
|
* options: remove global variables for swscale options; rename themGravatar wm42014-06-11
| | | | | | Additionally to removing the global variables, this makes the options more uniform. --ssf-... becomes --sws-..., and --sws becomes --sws- scaler. For --sws-scaler, use choices instead of magic integer values.
* stream_dvd: minor cleanupsGravatar wm42014-06-11
| | | | | We don't need a separate stream_dvd.h header file anymore. Some dead functions become apparent; remove them.
* stream_dvd, stream_dvdnav, stream_bluray: remove global option variablesGravatar wm42014-06-11
|
* stream_dvb: remove global option variablesGravatar wm42014-06-11
|
* stream_cdda: remove global option variablesGravatar wm42014-06-11
|
* stream: add a generic way to setup stream priv defaultsGravatar wm42014-06-11
| | | | | | | | | | | | | | | Usually, each stream driver declares the size and option list of its private data. This was pretty natural for when most streams still used global variables to setup their defaults. They did by pointing priv_defaults to the (mutable) struct containing the option values. But falls short when storing the option values in MPOpts. So provide a somewhat inelegant but simple way to let the stream implementation setup the priv struct at initialization time. This is done with the get_defaults callback. It should return a copy of the struct used in MPOpts. (A copy, because if MPOpts is changed, string fields might be deallocated, and if that field is not described by stream_info.options, it won't be copied on init.)
* stream_pvr: remove global option variablesGravatar wm42014-06-11
|
* tv: remove printing of useless comment informationGravatar wm42014-06-11
|
* tv: remove global option variablesGravatar wm42014-06-11
| | | | | | Pretty much nothing changes, but using -tv-scan with suboptions doesn't work anymore (instead of "-tv-scan x" it's "-tv scan-x" now). Flat options ("-tv-scan-x") stay compatible.
* m_config: add function to copy subopt-structGravatar wm42014-06-11
|
* command: redo ancient TV/DVB/PVR commandsGravatar wm42014-06-11
| | | | | | | | | | | | | | | | | | Convert all these commands to properties. (Except tv_last_channel, not sure what to do with this.) Also, internally, don't access stream details directly, but dispatch commands with stream ctrls. Many of the new properties are a bit strange, because they're write- only. Also remove some OSD output these commands produced, because I couldn't be bothered to port these. In general, this makes everything much cleaner, and will also make it easier to e.g. move the demuxer to its own thread. Don't bother updating input.conf, but changes.rst documents how old commands map to the new ones. Mostly untested, due to lack of hardware.
* osd: Center the volume icon in the osd fontGravatar ChrisK22014-06-10
|
* build: disable zsh completions by default, fixes e.g. cross compilationGravatar wm42014-06-09
| | | | | | | | The Perl script generating the completions actually invokes mpv, and it runs during the build. This is not sane and breaks at least cross compilation. As a workaround, disable the completions by default for now.
* player: hide some messages in verbose modeGravatar wm42014-06-09
| | | | This started getting annoying.
* video: fix another cover art corner caseGravatar wm42014-06-09
| | | | | | | Playing a video and then an audio file with cover art kept displaying the last frame of the video. This was because the hasframe flag was set, perhaps due to redrawing the last video frame before the cover art image is decoded.
* client API: disable LIRC input by defaultGravatar wm42014-06-09
| | | | | | Not only should using libmpv hog such global resources; it's also very unlikely an application embedding mpv will ever want to make use of this.
* audio: add a "weak" gapless mode, and make it defaultGravatar wm42014-06-09
| | | | | | | | | | | | | | Basically, this allows gapless playback with similar files (including the ordered chapter case), while still being robust in general. The implementation is quite simplistic on purpose, in order to avoid all the weird corner cases that can occur when creating the filter chain. The consequence is that it might do not-gapless playback in more cases when needed, but if that bothers you, you still can use the normal gapless mode. Just using "--gapless-audio" or "--gapless-audio=yes" selects the old mode.
* player: show "neutral" position markers for OSD barsGravatar wm42014-06-08
| | | | This commit implements them for volume and some video properties.
* build: generate and install zsh completion scriptGravatar Alessandro Ghedini2014-06-08
|
* TOOLS: add script for generating a zsh completion scriptGravatar Alessandro Ghedini2014-06-08
| | | | As discussed in #775
* client API: minor documentation fixes/enhancementsGravatar wm42014-06-08
|
* client API: trigger wakeup when creating wakeup pipe/callbackGravatar wm42014-06-08
| | | | | | | | | Since redundant wakeups are avoided now, it's easy to miss a wakeup when creating/setting the pipe/callback after the client API was signalled. If the client API is signalled, need_wakeup is set to true, and wakeup_client skips writing to the pipe or calling the client API. That this can happen is not very obvious to the client API, so trigger a wakeup right on start in order to remove this special case.
* manpage: document new --sub-file semanticsGravatar wm42014-06-08
| | | | This was forgotten in the previous commit.
* options: change --sub-file behaviorGravatar wm42014-06-08
| | | | | | | | | | | | | | | | | | | --sub-file is actually a string list, so you can add multipel external subtitle files. But to be able to set a list, the option value was split on ",". This made it impossible to add filenames. One possible solution would be adding escaping. That's probably a good idea (and some other options already do this), but it's also complicated both to implement and for the user. The simpler solution is making --sub-file appending, and make it take only a single entry. I'm not quite sure about this yet. It breaks the invariant that if a value is printed and parsed, you get the same value back. So for now, just go with the simple solution. Fixes #840.
* client API: restructure waiting, do log msg wakeup properlyGravatar wm42014-06-07
| | | | | | | | | | | | | | | | | | | | | | | | | | Until now, availability of new log messages (through the mechanism associated with mpv_request_log_messages()) did not wakeup the client API properly. Commit 3b7402b5 was basically a hack to improve that somewhat, but it wasn't a solution. The main problem is that the client API itself is producing messages, so the message callback would attempt to lock the client API lock, resulting in a deadlock. Even if the lock was recursive, we'd run into lock-order issues. Solve this by using a separate lock for waiting and wakeup. Also, since it's a natural addition, avoid redundant wakeups. This means the wakeup callback as well as the wakeup pipe will be triggered only once until the next mpv_wait_event() call happens. This might make the wakeup callback be invoked in a reentrant way for the first time, for example if a mpv_* function prints to a log. Adjust the docs accordingly. (Note that non-reentrant beheavior was never guaranteed - basically the wakeup callback is somewhat dangerous and inconvenient.) Also remove some traces of unneeded code. ctx->shutdown for one was never set, and probably a leftover of an abandoned idea.
* client API: rename mpv_destroy() to mpv_detach_destroy()Gravatar wm42014-06-07
| | | | | | A bit verbose, but less misleading. In most cases, the API user probably actually wants mpv_terminate_destroy() instead, so the less-useful function shouldn't have a simnpler name anyway.
* client API: clarify mpv_get_wakeup_pipe docsGravatar wm42014-06-07
| | | | | | | | | | | It wasn't necessarily clear how this works. Especially make clear that the API user shouldn't expect that there's one byte per readable event in the wakeup pipe. Actually, the reason why this currently won't work is because property notifications can generate more events than wakeups. The limit of 4096 is a more fundamental issue, but the event ringbuffer is currently limited to 1000 entries anyway. Also add some important comments to mpv_set_wakeup_callback.
* client API: add API function that ensures total destructionGravatar wm42014-06-07
| | | | | | | | | | | | mpv_destroy() should perhaps better be called mpv_detach(), because it destroys only the handle, not necessarily the player. The player is only terminated if a quit command is sent. This function quits automatically, and additionally waits until the player is completely destroyed. It removes the possibility that the player core is still uninitializing, while all client handles are already destroyed. (Although in practice, the difference is usually not important.)
* client API: docs: some clarificationsGravatar wm42014-06-07
|
* client API: change mpv_wait_event() timeout semanticsGravatar wm42014-06-07
| | | | | | | | | Now a negative timeout mean an infinite timeout. This is similar to the poll() system call. Apparently this is more intuitive and less confusing than specifying a "very high" value as timeout if you want to wait forever. For callers that never pass negative timeouts, nothing changes.
* build: prevent installation of client API exampleGravatar wm42014-06-06
| | | | | | | | This was never intended to be installed; waf just picked it up automagically. There's also a closed ticket on github where someone complains that the program "simple" is installed, and I didn't realize at this point that it was actually installed by default when enabling the client API.
* client API: enlarge the message buffer if log level is highGravatar wm42014-06-06
|
* client API: call wakeup callback if there are new messagesGravatar wm42014-06-06
| | | | | | | | | | | | | | | | | | Listening on messages currently uses polling (every time mpv_wait_event() has no new events, the message buffer is polled and a message event is possibly created). Improve this situation a bit, and call the user-supplied wakeup callback. This will increase the frequency with which the wakeup callback is called, but the client is already supposed to be able to deal with this situation. Also, as before, calling mpv_wait_event() from the wakeup callback is forbidden, so the client can't read new messages from the callback directly. The wakeup pipe is written either. Since the wakeup pipe is created lazily, we can't access the pipe handle without creating a race condition or a deadlock. (This is actually very silly, since in practice the race condition won't matter, but for now let's keep it clean.)
* x11: cleanup motif hints handlingGravatar wm42014-06-06
| | | | | | | | It seems we can't really get rid of this. There are no other hints to remove decorations that work across all reasonable WMs, so we're stuck with the ugly motif stuff. But at least we can make the code for it less ugly.