summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* osxbundle: fonts.conf: only look for fonts in ~/.mpv/fontsStefano Pigozzi2013-09-182-5/+9
| | | | | | | | This is to avoid the 30s hang while mpv caches fonts. In practice all the fonts an average user is going to use are embedded in mkv files so there is no reason to build fontconfig's cache on all of OS X system directories. I might add something similar for terminal usage, but I am highly undecided.
* Config path functions can return NULLwm42013-09-182-3/+11
| | | | | | | It's quite unlikely, but functions like mp_find_user_config_file() can return NULL, e.g. if $HOME is unset. Fix all the code that didn't check for this correctly yet.
* osdep/path: remove ifdefswm42013-09-181-6/+0
| | | | They're not really needed, so kill them.
* macosx: move bundle path stuff to path-macosx.mStefano Pigozzi2013-09-185-40/+16
| | | | This makes the code uniform to how stuff was handled for Windows in 1cb55ceb.
* path, win32: redo user configfile path handlingwm42013-09-185-72/+102
| | | | | | | | | | | | | | | | | Remove the ifdef hell from mp_find_user_config_file(). Move the win32 specific code (for MinGW and Cygwin) to path-win.c. The behavior should be about the same, but I can't be sure due to lack of testing and because the old path.c code was hard to follow. (I expect those who care about windows will fix things, should issues pop up - sorry.) One difference is that the new code will always force MPV_HOME. It looks like the old code preferred the mpv config dir in the exe dir if it exists. Also, make sure MP_PATH_MAX has enough space, even if the equivalent wchar_t string is not 0-terminated with PATH_MAX (because apparently the winapi doesn't require this). (Actually, maybe we should just kill all uses of PATH_MAX/MP_PATH_MAX.)
* win32: add getenv() UTF-8 variantwm42013-09-182-0/+62
| | | | | | | This is a bit "hard", because getenv() returns a static string, and we can't just return an allocated string. We also want getenv() to be thread-safe if possible. (If the mpv core is going to be more threaded, we sure do want the lower layers to be thread-safe as well.)
* path: fix undefined behaviorwm42013-09-181-2/+2
| | | | | | | The homepath variable was static, and its value was set to a stack buffer. This means a second invocation of the function would trigger undefined behavior. Moreover the stack buffer always went out of scope before homepath was used.
* cocoa_common: signal a mouse movement when changing window sizeStefano Pigozzi2013-09-181-0/+8
| | | | | | | | | This is mainly to avoid spurious cursor states due to the mouse moving inside or outside the window as a result of the window resize (with cmd-0/1/2). This avoids complex logic and triggers a mouse move so that the player recomputes the correct cursor state based on the autohide configuration of the user.
* cocoa_common: override core's cursor visibility stateStefano Pigozzi2013-09-181-3/+5
| | | | | | | This keeps the state in sync with the current state in cocoa_common. Infact the cocoa code in mpv can decide wether it really wants to hide the cursor based on the result of the `canHideCursor` method (this is so that the cursor is only hidden when hovering on the video window).
* HIDRemote: remove OS X version checksStefano Pigozzi2013-09-171-44/+1
| | | | | | Turns out that these checks were for versions of OS X that mpv doesn't even support anymore. So just remove the checks since they cause a deprecation warning.
* find_subfiles: fix really dumb bug causing segfaultswm42013-09-171-1/+1
| | | | | | | NULL pointer deref when a .sub file with the same filename as the video file was present. I was probably half asleep when writing this code.
* macosx_application: remove deprecation warning on OS X 10.9Nyx0uf2013-09-161-15/+29
| | | | | | | | | | | | GetCurrentProcess() is deprecated on 10.9. Make a universal solution by checking OS version number. get_system_version() function is the recommended Apple way of getting the OS version, since Gestalt is also deprecated (and does pretty much the same thing anyway) Updating HIDRemote.m to use a similar function would allow to get rid of the 2 other warnings.
* gl_common: add wayland backend before x11 backendAndreas Sinz2013-09-161-3/+5
|
* gl_common: signal to GL backend whether we are probingwm42013-09-164-7/+16
| | | | | | | | | | | This is supposed to reduce the amount of useless error messages shown during initialization of vo_opengl. If multiple backends are compiled, usually only one of them will work. For example, on Linux both X and Wayland backends can be compiled, but usually either Wayland or X is running. Then, if Wayland is not running, but X is, trying to initialize the Wayland backend should not spam the terminal with error messages. Signed-off-by: Andreas Sinz <andreas.sinz@aon.at>
* mplayer: read subtitle packets as soon as possiblewm42013-09-161-8/+5
| | | | | | | | | | | | | Call update_subtitles() on every iteration of the playloop, so that subtitle packets are read as soon as possible, instead of every time a video frame is displayed. This helps in case the packet queue is swamped with subtitle packets, which can happen with certain insane mkv files. The change will simply cause the subtitle queue to be emptied on each playloop iteration. The timestamps update_subtitles() uses for display are the same before and after this commit. (Important for files which have subtitle packets with timestamps or duration not set.)
* demux_mkv: don't add too many subtitle packets during seekingwm42013-09-161-14/+19
| | | | | | | | | | | | | | | | | | | | | In insane files with a very huge number of subtitle events, and if the --demuxer-mkv-subtitle-preroll option is given, seeking can still overflow the packet queue. Normally, the subtitle_preroll variable specifies the maximum number of packets that can be added. But once this number is reached, the normal seeking behavior is enabled, which will add all subtitle packets with the right timestamps to the packet queue. At this point the next video keyframe can still be quite far away, with enough subtitle packets on the way to overflow the packet queue. Fix this by always setting an upper limit of subtitle packets read during seeking. This should provide additional robustness even if the preroll option is not used. This means that even with normal seeking, at most 500 subtitle packets are demuxed. Packets after that are discarded. One slightly questionable aspect of this commit is that subtitle_preroll is never reset in audio-only mode, but that is probably ok.
* command: force video refresh when changing aspectwm42013-09-151-1/+2
| | | | | Pausing the player and changing the aspect would leave the VO without a frame to display.
* manpage: remove bogus space in example usagewm42013-09-151-1/+1
|
* Add mpv.desktop, let Makefile install the desktop file and the iconswm42013-09-152-4/+45
| | | | | | | | | | | | | | | | | | | The mpv.desktop file is taken from the Arch package [1]. It appears to be based on the mplayer2 git mplayer.desktop file (e.g. very similar MimeType field), with minor modifications applied by Arch package maintainers. Note that for now, this doesn't show a terminal (Terminal=false), which might not always be ideal. For example, if the file is audio only, or if VO initialization fails for some reason, mpv will run in the background and play audio without showing a window. But users prefer running it without terminal, and don't want to play audio files with it. Maybe a --force-window option will be added in the future, which would always create a VO window, and compensate for these issues. [1] https://aur.archlinux.org/packages/mpv-git/
* manpage: remove version and date fieldswm42013-09-151-2/+0
| | | | | | | | These would have to be updated manually all the time. Replacing them automatically would be possible, but additional work, and would force regeneration of the manpage way too often. We decided that we don't need these fields.
* screenshot: change %w format to be more like %twm42013-09-152-22/+17
| | | | | | Instead of containing a format string within %w{...}, simply allow %w to specify one item of a time format string. This is simpler, more like other format specifiers (%t), and probably easier to use too.
* mplayer: attempt to skip playlist entries which can't be playedwm42013-09-154-5/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is for situations when repeated attempts at playing a playlist entry failed, and playlist navigation becomes impossible due to that. For example, it wasn't possible to skip backwards past an unplayable playlist entry: mpv file1.mkv doesntexist.mkv file3.mkv You couldn't skip back to file1.mkv from file3.mkv. When running a single "playlist_prev" command, doesntexist.mkv would be played, which would fail to load. As reaction to the failure to load it, the next file would be played, which is file3.mkv. To make this even worse, the file could successfully load, but run only for a split second. So just loading successfully isn't good enough. Attempt to solve this by marking problematic playlist entries as failed, and by having playlist_prev skip past such playlist entries. We define failure as not being able to play more than 3 seconds (or failing to initialize to begin with). (The 3 seconds are in real time, not file duration.) "playlist_prev force" still exhibits the old behavior. Additionally, use the same mechanism to prevent pointless infinite reloading if none of the files on the playlist exist. (See github issue All in all, this is a heuristic, and later adjustments might be necessary. Note: forward skips (playlist_next) are not affected at all. (Except for the interaction with --loop.)
* screenshot: make it possible to format playback time in various wayswm42013-09-152-0/+40
|
* mp_common: add function which accepts a format string to format playback timewm42013-09-152-11/+50
|
* mplayer: don't run heartbeat command while pausedwm42013-09-152-3/+5
| | | | | | | | This is commonly used to disable the screensaver with broken/non- standard X screensavers. During pause, the screensaver should not be disabled, so not calling this command while paused seems sensible. See github issue #236.
* av_log: show ffmpeg "info" messages with -v onlywm42013-09-151-1/+1
| | | | | | | | | | | | | | | | | They are rarely useful in my opinion. This commit was mainly motivated by this message: Video uses a non-standard and wasteful way to store B-frames ('packed B-frames'). Consider using a tool like VirtualDub or avidemux to fix it. It's what's left over from the "Invalid and inefficient vfw-avi..." warning that used to be printed when playing avi/divx files. Although the new message is much better, it's still rather useless and poses more questions than it answers. Besides, nobody wants to remux a file when playing it, especially not if playback appears to be completely fine. (There are some claims that these files raise CPU usage, but even my old crappy CPU can decode low res avi/divx files at real time at about x35 playback speed.)
* mplayer: m_option: fix clang -Wformat compiler warningStefano Pigozzi2013-09-142-2/+2
| | | | Code was using %d format instead %zd to print size_t data.
* stream_dvd: prevent segmentation fault with some broken filesStefano Pigozzi2013-09-141-2/+2
| | | | | | | I have a sample where some final chapters are missing. This was causing a segmentation fault when trying to fetch chapter times for them. This makes the code ignore those chapters.
* macosx: add webm the filetypes handled by the bundleBilal Syed Hussain2013-09-141-0/+2
|
* demux_playlist: add mov RTSPtext tag parserBenjamin Franzke2013-09-141-0/+18
| | | | | | | | | | | | | | | | | The quicktime html scripting guide suggests to wrap urls not necesarly associated with quicktime in a .mov file. (so that when <embed>ing videos quicktime would be forced.) These mov files may contain several "Text Hacks". One of these is RTSPtext. The suggested/allowed format (as regex) is like: RTSPtext[ \r]RTSP://url See also p.51 of: https://developer.apple.com/library/mac/documentation/QuickTime/Conceptual/QTScripting_HTML/QTScripting_HTML.pdf In reality there are also files like (e.g. zdfmediathek.de): RTSPtext\nrtsp://url\n\n Lets handle these files as a playlist with one element.
* README: add clarification about --enableStefano Pigozzi2013-09-141-3/+7
|
* README: update Contact info with Mailing ListsStefano Pigozzi2013-09-141-3/+15
|
* mplayer: print a message when writing watch_later config for resumewm42013-09-131-0/+2
|
* mplayer: change "Playing" message printed before playback startwm42013-09-131-1/+1
| | | | | Change it from "Playing file." to "Playing: file". The idea is that it looks nicer without that trailing dot. (See github issue #229.)
* vd_lavc: reset last_sample_aspect_ratio in uninit_avctx()xylosper2013-09-131-0/+1
| | | | | | | | In init_vo(), if sh->aspect is 0 or last_sample_aspect_ratio is set, sh->aspect is overwritten. With software decoding fallback behaviour, this makes the aspect ratio from container ignored since last_sample_aspect_ratio is already set in first try with hardware decoding.
* core: restore user-set video and audio filters with resume functionalitywm42013-09-132-0/+39
| | | | | This requires adding a function that converts the filter list back to a string.
* core: add --deinterlace option, restore it with resume functionalitywm42013-09-139-4/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The --deinterlace option does on playback start what the "deinterlace" property normally does at runtime. You could do this before by using the --vf option or by messing with the vo_vdpau default options, but this new option is supposed to be a "foolproof" way. The main motivation for adding this is so that the deinterlace property can be restored when using the video resume functionality (quit_watch_later command). Implementation-wise, this is a bit messy. The video chain is rebuilt in mpcodecs_reconfig_vo(), where we don't have access to MPContext, so the usual mechanism for enabling deinterlacing can't be used. Further, mpcodecs_reconfig_vo() is called by the video decoder, which doesn't have access to MPContext either. Moving this call to mplayer.c isn't currently possible either (see below). So we just do this before frames are filtered, which potentially means setting the deinterlacing every frame. Fortunately, setting deinterlacing is stable and idempotent, so this is hopefully not a problem. We also add a counter that is incremented on each reconfig to reduce the amount of additional work per frame to nearly zero. The reason we can't move mpcodecs_reconfig_vo() to mplayer.c is because of hardware decoding: we need to check whether the video chain works before we decide that we can use hardware decoding. Changing it so that this can be decided in advance without building a filter chain sounds like a good idea and should be done, but we aren't there yet.
* macosx_application: fix file opening on 10.9 (for real this time)Stefano Pigozzi2013-09-131-1/+1
| | | | | | | | I did commit 86c05655d by thinking `mpv` already removed the `mpv` from argc/argv. It actually is still there, so the argc must be 1 to check for no arguments. Thanks to @Nyx0uf for pointing out the bug and for testing on 10.9!
* macosx: always active bundle path lookup if cocoa is activeStefano Pigozzi2013-09-123-21/+3
| | | | | This is not really something you want to disable anyway. If there is no bundle the code already does it's falbacks anyway.
* macosx_application: fix file opening on OS X 10.9 (hopefully)Stefano Pigozzi2013-09-121-1/+10
| | | | | | | | File opening through Finder, apparently drops `--psn` arguments on Mavericks and just uses no args. Modify the code to account for that case. This wasn't tested on 10.9 itself (I don't have a paid dev account), but it *should* work if I understood the problem correctly.
* mpvcore/path: Fix non-MinGW buildsMartin Herkt2013-09-121-2/+5
| | | | Well that was dumb.
* wayland/shm: fix resizing for good (finally)Alexander Preisinger2013-09-121-7/+45
| | | | | | Problem: I own the buffer and I destroyed while still being displayed. Solution: Add a temporary buffer and destroy it when the next buffer is attached.
* mpvcore/path: Fix config path handling on WindowsMartin Herkt2013-09-121-5/+21
| | | | | | | | | | | | | | | | | | | | | | | | Previously, mpv incorrectly used the %HOME% environment variable on MinGW to determine the current user’s home directory. This is wrong; the correct variable to use would be %HOMEPATH%, which would however still be wrong since application data goes into the application data directory, not the user’s home. This patch makes it use the local AppData path instead of reading an environment variable. This however exposed another problem (which also affected users who actually had the %HOME% variable set): b2c2fe7a3782 (discussed in issue #95) introduced some changes that make mpv load user config files from the executable path on Windows. The problem with this change is that config_dir was still declared static, so once a config file had been found in the executable path, it would set config_dir to an empty string, so mpv would dump e.g. watch_later data straight into the user’s home. This commit also fixes that. One side effect of this is that mpv no longer considers the “mpv” subdirectory in the executable path (that behavior resulted from the homedir variable always being empty), unless it is somehow unable to determine the local AppData path.
* wayland: change fs messages to dbgAlexander Preisinger2013-09-121-2/+2
| | | | These messages are only helpful when debugging.
* wayland/egl: use wayland logAlexander Preisinger2013-09-121-10/+7
|
* wayland/shm: use wayland logAlexander Preisinger2013-09-121-11/+11
|
* Revert "wayland: don't create our own log context"Alexander Preisinger2013-09-123-13/+18
| | | | | | | This reverts commit beab54506e61bc080880e827e351439f76542e68. Conflicts: video/out/wayland_common.c
* gl_osd: mp_msg conversionwm42013-09-125-10/+11
|
* aspect: mp_msg conversionwm42013-09-121-6/+5
|
* gl_lcms: mp_msg conversionwm42013-09-123-11/+22
| | | | | Have to deal with some dumb stuff in LittleCMS2's API: its error handler is global.
* gl_common: complete mp_msg conversionwm42013-09-127-42/+42
| | | | Hopefully this works on Wayland and Cocoa, which I didn't test.
* x11_common: mp_msg conversionwm42013-09-122-40/+38
| | | | | Doesn't touch some parts, like the X11 error handler (which doesn't allow setting a context pointer).
* gl_32: mp_msg conversionAlexander Preisinger2013-09-111-9/+7
|
* w32_common: mp_msg conversionAlexander Preisinger2013-09-111-14/+12
|
* gl_x11: mp_msg conversionAlexander Preisinger2013-09-111-12/+10
|
* Makefile: update DIRS to fix cleaningStefano Pigozzi2013-09-111-1/+2
| | | | Commits 40624100 and 72f2942df didn't update the variable accordingly.
* input: fix accidental NULL pointer dereferencewm42013-09-111-2/+2
| | | | | | | This could happen if the input queue was full, and an unmapped key was used, or something like this. Possibly fixes github issue #224.
* input: convert to new msg APIStefano Pigozzi2013-09-103-27/+26
|
* cocoa_common: remove most of the special handling for cursor autohideStefano Pigozzi2013-09-101-17/+3
| | | | | | | | | | | | | | | This is mostly related to the fullscreen behaviour. cecbd8864 introduces an option to make mpv behave like a OSX user would expect. This commit changes the Cocoa parts of the code to be consistent with the behaviour on X11. Old behaviour is still available through the option mentioned in cecbd8864. There is still custom logic in the cocoa backend and it can probably be moved to core: * Don't perform autohide if the mouse is down * Don't perform autohide outside of the video window Fixes #218 (by accident)
* mplayer: remove duplicated mouse autohide checkStefano Pigozzi2013-09-101-2/+0
|
* wayland/common: improved error messagesAlexander Preisinger2013-09-101-4/+8
| | | | | The previous error message were not very usefull. Also include a hint where to look for solutions.
* mplayer: print libquvi results in verbose modewm42013-09-101-0/+31
| | | | Helpful for debugging.
* quvi: restore playback position when switching formatswm42013-09-103-4/+13
| | | | This simply issues a seek after reloading.
* quvi: coerce libquvi 0.4 support into allowing format switchingwm42013-09-103-6/+30
| | | | | | | | | | | | | libquvi 0.4 doesn't allow us listing the formats supported by a streaming site without doing additional network accesses, so switching formats was not supported with it. (It's different with libquvi 0.9.) But the most important case is switching between SD and HD. Usually, --quvi-format=default will get SD, while --quvi-format=best gives HD. Use this, and pretend that an URL supported by libquvi 0.4 supports both of these. "cycle quvi-format" will switch between these. If the user specifies something else via --quvi-format, this is included in the list