summaryrefslogtreecommitdiffstats
path: root/player
Commit message (Collapse)AuthorAgeFilesLines
* command: ignore chapter cycling if there's only 1 chapterwm42015-01-051-2/+5
| | | | | | If there's only 1 chapter, the seeking by chapter (using the chapter property) will either jump to the chapter point, or quit playback. This is as designed, but seems like a useless and annoying behavior.
* client API, vo_opengl_cb: properly uninit videowm42015-01-041-0/+1
| | | | | | | | | | | | mpv_opengl_cb_uninit_gl() can be called at any time; but then the decoder must be destroyed due to complications with hardware decoding. This is why kill_video() exists. To make things easier, there is the invariant that while vo_opengl_cb is active, the OpenGL state must exist. But kill_video() didn't actually destroy the VO; only the video decoder. This could trigger an assertion (vo_opengl_cb.c:187). Actually, the video output is always destroyed lazily at a later point if the decoder is destroyed, but not early enough for out purposes.
* video: batch query_format callswm42015-01-032-3/+4
| | | | | | | There are currently 568 pixel formats (actually fewer, but the namespace is this big), and for each format elaborate synchronization was done to call it synchronously on the VO. This is completely unnecessary, and we can do with just a single call.
* ytdl: silence "succeeded" messagewm42015-01-031-1/+1
| | | | Pretty useless by now.
* vf_vapoursynth: pass through container FPS valuewm42015-01-031-10/+8
| | | | | | | | This is basically a hack; but apparently a needed one, since many vapoursynth filters insist on having a FPS set. We need to apply the FPS override before creating the filters. Also change some terminal output related to the FPS value.
* x11: make display-names property observablewm42015-01-031-1/+1
| | | | Reuse MP_EVENT_WIN_STATE for this.
* video: better pipelining with vf_vapoursynthwm42015-01-033-4/+26
| | | | | | | | | | Most of this is explained in the code comments. This change should improve performance with vapoursynth, especially if concurrent requests are used. This should change nothing if vf_vapoursynth is not in the filter chain, since non-threaded filters obviously can not asynchronously finish filtering of frames.
* OSC: idlemessage: fix alignmentChrisK22015-01-021-3/+3
|
* OSC: add osc-message script command (wip)ChrisK22015-01-021-0/+5
|
* OSC: display "drop files here" message when idle + forced-windowChrisK22015-01-021-2/+52
| | | | This currently doesn't work properly on OSX due to some bugs.
* player: move terminal input init to a better placewm42015-01-021-3/+3
| | | | | | Mostly of cosmetic nature. Move initialization to the same place where another component (cocoa) will start accessing the input context from a foreign thread.
* player: print config.h contents in verbose modewm42015-01-021-6/+14
| | | | | | | | | It was requested that mpv should print what features etc. have been enabled at compile time. It can print the configure command line, but it obviously doesn't include autodetected features. I tried to think of a nicer way than dumping the config.h as text, but this was still the simplest way.
* command: make the "run" command work on Windows toowm42015-01-011-22/+35
| | | | | | | | | Do so by using mp_subprocess(). Although this uses completely different code on Unix too, you shouldn't notice a difference. A less ncie thing is that this reserves an entire thread while the command is running (which wastes some memory for stack, at least). But this is probably still the simplest way, and the fork() trick is apparently not implementable with posix_subprocess().
* Update copyright yearwm42015-01-011-1/+1
|
* client API: add function to create new mpv_handles from existing oneswm42014-12-311-0/+14
| | | | | | | This may or may not be useful for client API users. Fold this API extension into the previous API bump. The previous bump was only yesterday, so it's ok.
* vo_opengl_cb: simplify API uninitializationwm42014-12-312-2/+13
| | | | | | | | | | | Until now, calling mpv_opengl_cb_uninit_gl() at a "bad moment" could make the whole thing to explode. The API user was asked to avoid such situations by calling it only in "good moments". But this was probably a bit too subtle and could easily be overlooked. Integrate the approach the qml example uses directly into the implementation. If the OpenGL context is to be unitialized, forcefully disable video, and block until this is done.
* vo_opengl_cb: pass context directlywm42014-12-311-3/+1
| | | | | This is simpler than setting the context after VO creation, which requires the code to check for the context on every entrypoint.
* video: pass some VO params as structwm42014-12-312-6/+12
| | | | | Not particularly elegant, but better than adding more and more stuff to the relevant function signatures.
* command: make empty vf-metadata not an errorwm42014-12-301-11/+6
| | | | | | | | If a filter exists, but has no metadata, just return success. This allows the user to distinguish between no metadata available, and filter not inserted. See #1408.
* options: expand ~ for the include optionStefano Pigozzi2014-12-301-1/+5
| | | | Fixes #1406
* command: add filtered-metadata propertywm42014-12-291-1/+12
| | | | | Goes in hand with the previous commit; the main purpose is to easily show on OSD what is shown on terminal.
* player: filter tags, add --display-tags optionwm42014-12-292-7/+8
| | | | | | | | This attempts to increase user-friendliness by excluding useless tags. It should be especially helpful with mp4 files, because the FFmpeg mp4 demuxer adds tons of completely useless information to the metadata. Fixes #1403.
* player: make --shuffle/--merge-files affect runtime loaded playlistswm42014-12-294-15/+26
| | | | | | | Until now, these options took effect only at program start. This could be confusing when e.g. doing "mpv list.m3u --shuffle". Make them always take effect when a playlist is loaded either via a playlist file, or with the "loadlist" command.
* command: stip path from playlist OSD displaywm42014-12-271-2/+8
| | | | | | But only if it's not e.g. a http URL. Fixes #1388.
* player: force stereo as default when encodingwm42014-12-271-0/+1
| | | | | | I think the new default for this option might be rather bad in encoding mode. For starters, we don't even know what layers an encoder supports at all.
* player: fix random crashes on uninitializationwm42014-12-271-0/+1
| | | | | | | | | | | On uninitialization, the player will unselect all subtitles, and then destroy the subtitle decoder. But it didn't correctly remove the subtitle decoder from the OSD state, so it could happen that it would access it after the decoder was destroyed. Could lead to random crashes when switching files often. Fixes #1389.
* player: cosmetics: rename a functionwm42014-12-273-7/+7
| | | | | Something which has this many important sideffects shouldn't start have a "get" prefix.
* player: ordered chapters: cosmeticswm42014-12-261-54/+32
| | | | | | Drop some meaningless comments, fix codingstyle, fix some formatting victims of the mp_msg refactoring, replace some memcpys with assignments.
* player: ordered chapters: bullshit reductionwm42014-12-261-26/+5
| | | | | Nobody cares about these redundant messages, they make the code even more complicated than it has to be, and also they're annoying.
* player: ordered chapters: filter missing chapterswm42014-12-261-0/+9
| | | | | | | | | | | | Ever since someone (not me) added some Matroska features which nobody ever uses (ordered edition or some bullshit), I haven't had a fucking clue what the fuck is going on in this fucking file. (Still agreed to it, so it's my fault.) mplayer2 handled missing chapters correctly (and I suppose in a somewhat clean/simple manner), but the changed code doesn't. Since I can't even follow this code because it's so arcanely complicated, just add a hack that has the same effect.
* command: overlay_add: more flexible treatment of offset parameterwm42014-12-261-8/+12
| | | | | | | | | | | | | | Essentially, don't make it the mmap() argument, and just add it to the memory address. This hides tricky things like alignment reequirements from the user. Strictly speaking, this is not entirely backwards compatible: this adds the regression that you can't access past 2 or 4 GB of a file on 32 bit systems anymore. But I doubt anyone cared about this. In theory, we could be clever, and just align the offset manually and pass that to mmap(). This would also be transparent to the user, but minimally more effort, so this is left as exercise to the reader.
* win32: add mmap() emulationwm42014-12-261-9/+0
| | | | | | | | Makes all of overlay_add work on windows/mingw. Since we now don't explicitly check for mmap() anymore (it's always present), this also requires us to make af_export.c compile, but I haven't tested it.
* player: hack against --keep-open misbehaving with broken fileswm42014-12-241-0/+2
| | | | | | | | | | | | | | | | If a file (or a demuxer) is broken, seeking close to the end of the file doesn't work, and seek_to_last_frame() will be called over and over again, burning CPU for no reason. Observed with incomplete mp4 files. That this can happen was already mentioned in commit 090f6cfc, but I guess now I'll do something against it. hrseek_lastframe is cleared by reset_playback_state(), so it's only set if seek_to_last_frame() was called, and no other seek happened since then. If finding the last frame succeeds, no EOF will happen (unless the user unpauses, but then it will simply remain at the last frame). If it fails, then it will return immediately, without retrying.
* player: fix a typo in message outputwm42014-12-241-1/+1
| | | | This typo has been around for over a year. Oops.
* client API: fix compiler warning if openglcb API is disabledwm42014-12-221-1/+0
| | | | | The function is void, and of course you can't return anything from it. (Why does C or gcc even allow this?)
* vo_opengl_cb: free context on exitwm42014-12-221-0/+3
| | | | | | | Minor memory leak. Actually, this also exposes some problems in the QtQuick example. This will have to be fixed in the example.
* client API: fix mpv_wakeup()wm42014-12-221-2/+2
| | | | | | Of course this was going to get stuck in the retry loop. Fixes #1372.
* sub: reset sub decoder correctly when cycling subtitleswm42014-12-211-3/+1
| | | | | | | | | | reset_subtitles() works in mpctx->d_sub[], which is set to NULL before calling it from uninit_sub(). This fixes resetting the subtitle when cycling subtitle tracks. Actually, this was probably a feature, because it's annoying if subtitles don't show up when cycling them. But it also can have unintended consequences, so get rid of it.
* player: cosmetics: move code aroundwm42014-12-212-16/+15
| | | | Separate commit to reduce noise in the following one.
* player: don't show "0%" percentage in infinite streamswm42014-12-202-4/+9
|
* player: print only changed tagswm42014-12-192-4/+24
| | | | | | | | | | | | | | | | | The code in the demuxer etc. was changed to update all metadata/tags at once, instead of changing each metadata field. As a consequence, printing of the tags to the terminal was also changed to print everything on each change. Some users didn't like this. Add a very primitive way to avoid printing fields with the same value again if metadata is marked as changed. This is not always correct (could print unchanged fields anyway), but usually works. (In general, a rather roundabout way to reflect a changed title with ICY streaming...) Fixes #813 (let's call it a "policy change").
* player: cosmetics: remove ancient commentwm42014-12-171-3/+0
| | | | | The DVD horror was confined to specific parts of the player, instead of having it spread everywhere.
* command: extend revert_seek commandwm42014-12-171-2/+10
| | | | | "revert_seek mark" basically forces the seekback point. It's basically a one-way bookmark.
* command: format ${avsync} like on terminal status linewm42014-12-161-0/+4
| | | | | | Padding with spaces is very useless for OSD (because most fonts are variable width), but it's good when using it on the terminal, e.g. for reproducing the default terminal status line.
* client API: be more lenient about mpv_suspend/resume mismatcheswm42014-12-153-29/+53
| | | | | | | | | | | | Before this commit, this was defined to trigger undefined behavior. This was nice because it required less code; but on the other hand, Lua as well as IPC support had to check these things manually. Do it directly in the API to avoid code duplication, and to make the API more robust. (The total code size still grows, though...) Since all of the failure cases were originally meant to ruin things forever, there is no way to return error codes. So just print the errors.
* lua: cosmetics: fix some include directiveswm42014-12-151-3/+2
| | | | | | Apparently, the atomics were used by the win32 subprocess code. This code was moved to a separate file, but the atomics.h include was forgotten.
* scripting: fix/improve deprecation messagewm42014-12-151-3/+6
| | | | | | | | | The message was missing a '\n', so it was merged with the next line, which also typically caused it not to be printed with the colors for warnings. Print the full new path in the warning message. (Normally, cfg should never be NULL, so accounting for this case is just for robustness.)
* options: deprecate 'lua' based options/dirs for 'script'Avi Halachmi (:avih)2014-12-154-15/+32
| | | | | | | | | | | | - --lua and --lua-opts change to --script and --script-opts - 'lua' default script dirs change to 'scripts' - DOCS updated - 'lua-settings' dir was _not_ modified The old lua-based names/dirs still work, but display a warning. Signed-off-by: wm4 <wm4@nowhere>
* command, dvd: add property which returns list of DVD titleswm42014-12-131-0/+33
| | | | | | | | | This was requested. It seems libdvdread can't get the duration for titlesets other than the currently opened title. The data structures contain dangling pointers for these, and MPlayer works this around by opening every title separately for the purpose of dumping the title list.
* options: add option for ignoring patch in resume mechanismwm42014-12-131-4/+8
| | | | | | Whatever. Fixes #1281.
* player: add a --keep-open=always modewm42014-12-121-1/+2
| | | | | | | | The --keep-open behavior was recently changed to act only on the last file due to user requests (see commit 735a9c39). But the old behavior was useful too, so bring it back as an additional mode. Fixes #1332 (or rather, should help with it).
* command: add properties for current bitratewm42014-12-121-0/+23
| | | | Fixes #1192.
* lua: don't ignore key press events for script key bindingswm42014-12-101-2/+2
| | | | Meh.
* command: fix crash with some forms of script_bindingwm42014-12-101-1/+1
| | | | "script_binding name ..." just crashed it. Oops.
* player: update chapter marks when switching fileswm42014-12-101-0/+4
| | | | | This wasn't done, so the chapter marks of the previous file were visible. It's harmless, but looks unpolished, so fix it.
* command: add "idle" propertywm42014-12-101-2/+16
| | | | Yes, it's redundant with events.
* player: change interaction between revert_seek and ab-loopswm42014-12-091-0/+1
| | | | | | The result isn't quite what I imagined, because the A-point is never marked as a seek point (so you can't jump between A and B), but it's still slightly better than before.
* client API: expose OpenGL rendererwm42014-12-094-0/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds API to libmpv that lets host applications use the mpv opengl renderer. This is a more flexible (and possibly more portable) option to foreign window embedding (via --wid). This assumes that methods like context sharing and multithreaded OpenGL rendering are infeasible, and that a way is needed to integrate it with an application that uses a single thread to render everything. Add an example that does this with QtQuick/qml. The example is relatively lazy, but still shows how relatively simple the integration is. The FBO indirection could probably be avoided, but would require more work (and would probably lead to worse QtQuick integration, because it would have to ignore transformations like rotation). Because this makes mpv directly use the host application's OpenGL context, there is no platform specific code involved in mpv, except for hw decoding interop. main.qml is derived from some Qt example. The following things are still missing: - a way to do better video timing - expose GL renderer options, allow changing them at runtime - support for color equalizer controls - support for screenshots
* player: restore ab-loop settings with playback resumewm42014-12-091-0/+2
| | | | Fixes #1324.
* build: fix --disable-libasswm42014-12-081-2/+2
| | | | | | Still supported, but obviously untested. You shouldn't use this option anyway.
* player: make chapter seek to end jump to last frame with --keep-openwm42014-12-083-2/+7
| | | | | | | | There were complaints that a chapter seek past the last chapter was quitting the player. Change the behavior to what is expected: the last frame. If no chapters are available, this still does nothing.
* options: add a 'once' idle modeStefano Pigozzi2014-12-071-1/+1
| | | | | This allows to make mpv wait for file open events at start but close after it is done playing the first playlist.
* sub: remove assertionwm42014-12-071-2/+1
| | | | | | | | | | | This should clearly be impossible, but it seems to happen with ordered chapters for a user. Since I can't tell what the actual bug is and it seems impossible to know the details without downloading possibly huge files, this is probably the best we can do. Should at least partially fix #1319.
* player: when seeking past EOF with --keep-open, seek to last framewm42014-12-073-7/+47
| | | | | | | | | | | | | | | | | | | | | It feels strange that seeking past EOF with --keep-open actually leaves the player at a random position. You can't even unpause, because the demuxer is in the EOF state, and what you see on screen is just what was around before the seek. Improve this by attempting to seek to the last video frame if EOF happens. We explicitly don't do this if EOF was reached normally to increase robustness (if the VO got a frame since the last seek, it obviously means we had normal playback before EOF). If an error happens when trying to find the last frame (such as not actually finding a last frame because e.g. the demuxer misbehaves), this will probably turn your CPU into a heater. There is no logic to prevent reinitiating the last-frame search if the last-frame search reached EOF. (Pausing usually prevents that EOF is reached again after a successful last-frame search.) Fixes #819.
* osc: improve slimbox layout and minor code cleanupsChrisK22014-12-051-82/+92
|
* assdraw: Properly approximate circle for rounded boxChrisK22014-12-051-4/+5
| | | | source: http://spencermortensen.com/articles/bezier-circle/
*