summaryrefslogtreecommitdiffstats
path: root/player
Commit message (Collapse)AuthorAgeFilesLines
* threads: use utility+POSIX functions instead of weird wrapperswm42015-05-151-2/+4
| | | | | | | | | There is not much of a reason to have these wrappers around. Use POSIX standard functions directly, and use a separate utility function to take care of the timespec calculations. (Course POSIX for using this weird format for time values.) (cherry picked from commit 92b9d75d7256be71d8c8b18438af9494b78f0e96)
* ytdl_hook: remove tabswm42015-05-151-5/+5
| | | | | | We don't allow tabs in normal source code. (cherry picked from commit 9438f811ae5713e59873931d167c8c8472dc12db)
* player: avoid undefined behavior when resumign DVD/BD playbackwm42015-05-151-3/+3
| | | | | | These device options can be NULL, and NULL can't be passed for %s. (cherry picked from commit 34ee78f2cba0510cc37162e89cbdc9d4a9514f92)
* m_config: make m_config_set_profile() use a namewm42015-05-081-2/+2
| | | | | | Is simpler and avoids exposing profile structs to a degree. (cherry picked from commit 036a49478ff6cc19abfa06b7807bd4653eb9ce33)
* ytdl_hook: Escape EDL URLsChrisK22015-05-081-1/+3
| | | | | | | Should prevent the EDL parser from tripping over = and , in the URL. (cherry picked from commit 6a0a67034d925a640a9239754c5f06e6e689c27d)
* win32: move platform specifics to osdepwm42015-05-071-25/+0
| | | | | | | This will probably disable this code for Cygwin. I don't know if this matters, since Cygwin should strictly behave like a Unix anyway. (cherry picked from commit 3508a3fbd12b93e0414acb7996417dd91f369170)
* build: move main-fn files to osdepwm42015-05-074-71/+1
| | | | | | | | And split the Cocoa and Unix cases. Simplify the Cocoa case slightly by calling mpv_main directly, instead of passing a function pointer. Also add a comment explaining why Cocoa needs a special case at all. (cherry picked from commit 1e7831070f6ae1af0a1a29b0d680ef2907bf8cf6)
* cocoa: always compile OSX application code with cocoawm42015-05-071-2/+2
| | | | | | | | | | | | | | | | This unbreaks compiling command line player and libmpv at the same time. The problem was that doing so silently disabled the OSX application thing - but the command line player can not use the vo_opengl Cocoa backend without it. The OSX application code is basically dead in libmpv, but it's not that much code anyway. If you want a mpv binary that does not create an OSX application singleton (and creates a menu etc.), you must disable cocoa completely, as cocoa can't be used anyway in this case. (cherry picked from commit 19a5b20752ecc7465cf17781f908e12bf4ca136d)
* player: handle hotplug events in idle mode toowm42015-05-071-0/+1
| | | | (cherry picked from commit d8e92322fa6eee44bb2713a202b84dfd32cf7ea1)
* player: properly destroy client context if thread can't be createdwm42015-05-071-1/+4
| | | | | | Minor leak in an obscure out of memory case. (cherry picked from commit d01228058b03df33a3c6be3acbf2757019a9cd83)
* player: log track list when adding or removing external fileswm42015-04-293-5/+16
| | | | | | | | | | | Should help with debugging, and might be slightly more userfriendly. Note that this is called manually in multiple entry-points, instead of the functions doing the actual work (like mp_remove_track()). This is done so that exiting the player or calling the sub_reload command won't print redundant in-between states. (cherry picked from commit 0c0c8cd44e42791b80e7de33b653aa9143865bbb)
* player: clamp display time to known time range on seekingwm42015-04-291-0/+7
| | | | | | | | | | | | | | | | | During seeking, and there is momemtarily no new data available yet, the player will display the seek target as current time. Clamp this time to the known time range as implied by the start time and the duration of the file. This improves behavior especially when seeking in audio files, for which this for some reason triggers rather often. There were some users complaining about this. This makes behavior worse for files with timestamp resets, or incorrectly reported duration. (The latter is relatively common, e.g. libavformat shortcomings, or incomplete files.) (cherry picked from commit 0ff93a83571ede54af87ebd1aed5736f428c48d4)
* osc: redo slider position translationChrisK22015-04-291-33/+55
| | | | | | | | Now done in one place instead of mulitple times all over the code. Fixes #1876 (cherry picked from commit 2fcf0e6183d569d61f904980c782f80cc50394ad)
* ytdl_hook.lua: Change format options when vid is "off"robin2015-04-281-6/+7
| | | | | | | | | | This will change the format option to "bestaudio/best" instead of passing the "-x" argument to yt-dl. Prevents the video still being downloaded in the new mpv versions where the yt-dl format is set to "best" by default. (cherry picked from commit 5555f6fc2ca7c418e23daa58413148c4267f6ad2)
* player: fix removing external tracks at runtimewm42015-04-281-1/+9
| | | | | | | | | | | | This could make the player crash on exit if the "sub_reload" command was used successfully. the reason was that the mpctx->sources array could have dangling pointers to the unloaded demuxers. Also fix a memory leak by actually always freeing the per-stream subtitle decoders (which are a hack to make ordered chapters behave better). (cherry picked from commit 4d2ed847ce8d2b4a8fde5673d0bd3accd2ccce6f)
* player: flush decoder even if cover art is decodedwm42015-04-241-1/+1
| | | | | | | | | | | | | | | Fixes PNG cover art not showing up immediately (for example when running with --pause). libavformat exports embedded cover art as a single packet. For example, a PNG attachment simply contains the PNG image, which can be sent to the decoder. Normally you would expect that the PNG decoder would return 1 frame for 1 packet, without any delays. But this stopped working, and it incurs a 1 frame delay. This is perfectly legal (even if unexpected), so let our code feed the decoder packets until we get something back. (In theory feeding the packet instead of a real flush packet is still somewhat questionable.)
* player: don't show A/V desync message in non-sense situationswm42015-04-241-2/+2
| | | | | | | last_av_difference can be MP_NOPTS_VALUE under certain circumstances (like no video timestamp yet). This triggered the desync message, because fabs(MP_NOPTS_VALUE) is quite a large value. We don't want to show a message in this situation.
* osc: add nil check for element.eventresponderwm42015-04-231-1/+1
| | | | Possibly fixes a crash (see #1101).
* demux_mkv: move global options to the demuxerwm42015-04-231-2/+0
| | | | | | | The options don't change, but they're now declared and used privately by demux_mkv.c. This also brings with it a minor refactor of the subpreroll seek handling - merge the code from playloop.c into demux_mkv.c. The change in demux.c is pretty much equivalent as well.
* lua: add utils.format_json() functionwm42015-04-221-0/+18
| | | | Requested. Why not.
* osc: paint over a crashwm42015-04-221-4/+6
| | | | | Sometimes tries to index a nil object when seeking close to the end of the file. See #1101.
* player: do not load encoding config files in non-encoding modewm42015-04-211-8/+6
| | | | | | | | It's annoying and unnecessary. They can be manually loaded if really needed (for things like previewing). Also remove the #if. It was for suppressing warnings, and we don't need to be so careful about this in the relatively obscure encoding mode.
* command: demuxer-cache-time propertyxylosper2015-04-211-1/+21
| | | | | | | | Approximate time of video buffered in the demuxer, in seconds. Same as `demuxer-cache-duration` but returns the last timestamp of bufferred data in demuxer. Signed-off-by: wm4 <wm4@nowhere>
* player: cleanup update_fps() functionwm42015-04-202-13/+5
| | | | | It was called only in 2 places, one of them redundant (the container FPS can not change).
* video: cleanup some old log messageswm42015-04-201-0/+2
| | | | | These are basically MPlayer leftovers, and barely useful due to being redundant with other messages. The FPS message is used somewhere else.
* client API: add a screenshot_raw commandwm42015-04-203-0/+52
| | | | | | | | | Requested. The wild code for setting up the mpv_node probably deserves to be cleaned up later. Fixes #1800.
* client API: add MPV_FORMAT_BYTE_ARRAY typewm42015-04-201-0/+3
| | | | | | | | | | | | This will be used in the following commit, which adds screenshot_raw. The reasoning is that this will be better for binding scripting languages. One could special-case the screenshot_raw commit and define fixed semantics for passing through a pointer using the current API, like formatting a pointer as string. But that would be ridiculous and unclean.
* client API: add glue for making full use of mpv_command_node()wm42015-04-204-10/+14
| | | | | Until now, the return value was always MPV_FORMAT_NONE. Now a command can actually set it. This will be used in one of the following commits.
* player: change video-bitrate and audio-bitrate propertieswm42015-04-201-47/+28
| | | | | | | | | | | | | | Remove the old implementation for these properties. It was never very good, often returned very innaccurate values or just 0, and was static even if the source was variable bitrate. Replace it with the implementation of "packet-video-bitrate". Mark the "packet-..." properties as deprecated. (The effective difference is different formatting, and returning the raw value in bits instead of kilobits.) Also extend the documentation a little. It appears at least some decoders (sipr?) need the AVCodecContext.bit_rate field set, so this one is still passed through.
* command: disc-mouse-on-button propertyxylosper2015-04-213-0/+33
| | | | | This property indicates whether mouse cursor is located on button or not for disc naviation.
* vf_screenshot: remove this filterwm42015-04-161-6/+1
| | | | | | It's entirely useless, especially now that vo.c handles screenshots in a generic way, and requires no special VO support. There are some potential weird use-cases, but actually I've never seen it being used.
* command: let screenshot_to_file command overwrite fileswm42015-04-161-5/+0
| | | | | | | The old behavior does not make too much sense after all. If you don't want to file to be overwritten, the user can check this manually. This is a change in behavior - let's hope nobody actually relied on it.
* video: do not show decoder framedrops if they're not requestedwm42015-04-161-1/+2
| | | | | | | | | | | libavcodec makes it impossible to distinguish dropped frames (requested with AVCodecContext.skip_frame), and cases when the decoder simply does not return a frame by default (such as with VP9, which has invisible reference frames). This confuses users when decoding VP9 video. It's basically a cosmetic issue, so just paint it over by ignoring them if framedropping is disabled.
* subprocess: move implementation for deatched subprocesseswm42015-04-151-34/+1
|
* player: silence spam in verbose mode when playing audio with cover artwm42015-04-141-1/+1
| | | | | | When playing cover art, it conceptually reaches EOF as soon as the image was put on the VO, causing the EOF message to be repeated every time new audio was decoded. Just silence the message.
* Update license headersMarcin Kurczewski2015-04-1314-70/+56
| | | | Signed-off-by: wm4 <wm4@nowhere>
* main-fn-win: fix handle validity check for XPJames Ross-Gowan2015-04-111-1/+2
| | | | | | | Apparently the standard handles can be set to bogus values on XP. Use GetFileType to check whether they refer to an actual file/pipe/etc. The logic used by is_valid_handle() is now pretty similar to what the CRT uses to check for valid stdio handles.
* win32: use pseudo-gui profile when started without stdioJames Ross-Gowan2015-04-111-6/+35
| | | | | | If mpv is started from Explorer or the Start Menu, it will have no console and no standard IO handles. In this case, it's fairly safe to enable the pseudo-gui profile.
* win32: only attach to the console from mpv.comJames Ross-Gowan2015-04-111-0/+5
| | | | | | | | | | | | | | | | | | | Previously, mpv.exe used the --terminal option to decide whether to attach to the parent process's console, which made it impossible to tell whether mpv would attach to the console before the config files were parsed. Instead, make mpv always attach to the console when launched from the console wrapper (mpv.com) and never attach otherwise. This will be useful for the next commit, which will use the presence of the console to decide whether to use the pseudo-gui profile. This change should also be an improvement in behavior. The old code would attach to the parent process's console, regardless of whether it was mpv.com or some other program like cmd.exe. This could be confusing, since mpv.exe is marked as a Windows GUI program and shouldn't write text to its parent process's console when launched directly. (See #768.) Visual Studio does something similar with its devenv.com wrapper. devenv.exe only attaches to the console when launched from devenv.com.
* win32: use a platform-specific unicode entry-pointJames Ross-Gowan2015-04-113-8/+24
| | | | | | | | | | Add a platform-specific entry-point for Windows. This will allow some platform-specific initialization to be added without the need for ugly ifdeffery in main.c. As an immediate advantage, mpv can now use a unicode entry-point and convert the command line arguments to UTF-8 before passing them to mpv_main, so osdep_preinit can be simplified a little bit.
* player: use config parser for setting up pseudo-gui profilewm42015-04-101-9/+7
|
* player: change pseudo-gui settingswm42015-04-101-2/+1
| | | | | | Remove --keep-open. Switch to --idle=once. This effectively makes the player quit after end of playback, but still shows the idle screen if it was started with no files.
* player: do not accidentally init terminalwm42015-04-101-2/+1
| | | | | | | Starting the command line player with --no-terminal, the terminal was sitll initialized. This happened because update_logging() used the option value before the options were parsed. Fix by moving down the initialization to before the point where it's actually needed.
* ytdl: set additional properties for rtmp streamsSebastian Mayr2015-04-091-3/+21
|
* ytdl_hook.lua: Disable video when vid option is "no"robin2015-04-091-0/+7
| | | | | | When setting options like --no-video, ytdl_hook adds the "-x" argument to youtube-dl, so that bandwith is saved by not downloading the video on some sites.
* vo_opengl_cb: deprecate mpv_opengl_cb_render()wm42015-04-091-1/+6
| | | | Its vp parameter made no sense anymore. Introduce a new one.
* vo_opengl_cb: add a function to report vsync timewm42015-04-091-0/+4
| | | | | | | And also let vo.c know of it. Currently, this does not help much, but will facilitate future improvements.
* audio: change a detail about filter insertionwm42015-04-071-18/+1
| | | | | | | | | | The af_add() function has a problem: if the inserted filter returns AF_DETACH during init, the function will have a dangling pointer. Until now this was avoided by making sure none of the used filters actually return AF_DETACH, but it's getting infeasible. Solve this by requiring passing an unique label to af_add(), which is then used instead of the pointer.
* audio: avoid one more redundant audio filter reinitwm42015-04-071-2/+2
| | | | | | Only reinit filters if it's actually needed. This is also slightly easier to understand: if you look at the code, it should now be more obvious why a reinit is needed (hopefully).
* screenshot: use GPU readback only for hardware decoded imageswm42015-04-071-1/+1
| | | | | | Avoids a confusing message printed by the vdpau code when taking a screenshot while using software decoding (because obviously GPU readback won't work on normal in-memory video frames).
* command: new subproperty for video-params: gammaNiklas Haas2015-04-041-0/+5
|
* video: cleanup stereo mode parsingwm42015-04-021-1/+1
| | | | | | | | | Use OPT_CHOICE_C() instead of the custom parser. The functionality is pretty much equivalent. (On a side note, it seems --video-stereo-mode can't be removed, because it controls whether to "reduce" stereo video to mono, which is also the default. In fact I'm not sure how this should be handled at all.)
* player: add --idle --keep-open to pseudo-gui profilewm42015-04-021-0/+2
|
* player: add "pseudo-gui" profilewm42015-04-021-0/+8
| | | | | | | | | | | | | | This can be set to select a number of default settings that help mpv pretend that it has a GUI. I haven't decided yet whether I really want to use the profile mechanism for this. There are a number of weird details that are not so easy to handle with profiles, such as disabling pseudo-gui mode again (you can't unset profiles directly). So this might change. But for now it will do. There also should be a better way to store builtin profiles. Unfortunately, the old crappy MPlayer config file parser needs on-disk files, so just use a bunch of function calls for now.
* lua: reject Lua 5.3wm42015-04-011-0/+5
| | | | | | | | | | | | | | It simply doesn't work, and is hard to make work. Lua 5.3 is a different language from 5.1 and 5.2, and is different enough to make adding support a major issue. Most importantly, 5.3 introduced integer types, which completely mess up any code which deals with numbers. I tried to make this a compile time check, but failed. Still at least try to avoid selecting the 5.3 pkg-config package when the generic "lua" name is used (why can't Lua upstream just provide an official .pc file...). Maybe this actually covers all cases. Fixes #1729 (kind of).
* command: remove unused functionwm42015-04-011-14/+0
|
* video: move colorspace overrides to vf_format, simplifywm42015-03-311-120/+21
| | | | | | | | | | | | | | | | | | | Remove the colorspace-related top-level options, add them to vf_format. They are rather obscure and not needed often, so it's better to get them out of the way. In particular, this gets rid of the semi-complicated logic in command.c (most of which was needed for OSD display and the direct feedback from the VO). It removes the duplicated color-related name mappings. This removes the ability to write the colormatrix and related properties. Since filters can be changed at runtime, there's no loss of functionality, except that you can't cycle automatically through the color constants anymore (but who needs to do this). This also changes the type of the mp_csp_names and related variables, so they can directly be used with OPT_CHOICE. This probably ended up a bit awkward, for the sake of not adding a new option type which would have used the previous format.
* build: make posix_spawn() mandatorywm42015-03-301-4/+0
| | | | | | | It was already accidentally used unconditionally by command.c. Apparently this worked well for us, so don't change anything about, but should it be unavailable, fail at configure time instead of compile time.
* video: fix seek-to-last-framewm42015-03-261-3/+1
| | | | | Accidentally broken in 79779616; we really need to check for true EOF, not just whether there are no frames yet.
* player: relax assertion on mp_set_playlist_entryNiklas Haas2015-03-261-1/+1
| | | | | This assertion crashed when e was NULL, which can happen when using force.
* video: make frame skipping code slightly more readablewm42015-03-251-13/+8
|
* video: refactor aspects of queue and EOF handlingwm42015-03-251-41/+62
| | | | | Instead of touching the 2-entry queue in mpctx->next_frame directly, move some of it to functions.
* lua: replace getcwd() implementationwm42015-03-242-14/+4
|
* command: add property returning current working directorywm42015-03-241-0/+20