summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* macosx_application: handle URL events as fileopen eventsStefano Pigozzi2013-09-072-36/+40
| | | | | This allows to open URLs directly with mpv. This is useful for streaming and libquvi supported sites.
* options: fix --volume option range, add some explanations to manpagewm42013-09-072-1/+7
| | | | | | | | The --volume option accepted values up to 10000, but internally, the value is always clipped to 0-100 range. What makes this even worse is that --softvol-max suggests that it extends the range of --volume, which is not the case. (And passing a volume larger than 100 to --volume didn't even print a warning.)
* demux_lavf: workaround for broken libavformat subtitle seekingwm42013-09-071-4/+23
| | | | | | | | | | | | | | The really funny thing about this commit is that this code is added on top of another work around. Basically, subtitle seeking in libavformat is completely broken. To make it useful, we have to add yet another workaround. The basic problem is that libavformat's subtitle seeking code always uses the stream time base, instead of AV_TIME_BASE if stream index -1 is passed to the avformat_seek_file() function. Fixes github issue #216. Hopefully this will be fixed in ffmpeg too at some point.
* input: don't print warning if certain internal keys are not boundwm42013-09-062-6/+5
| | | | | | | | | | | This affects MOUSE_MOVE and MOUSE_LEAVE. Both are needed internally (such as for the OSC), but not really useful for input.conf. Since the warning has the purpose of notifying the user that a key is unmapped and what key name to use for setting up a binding in input.conf, the warning is rather useless in this case. It's also annoying in combination with the --no-input-default-bindings option, since that removes the default bindings to "ignore" for these keys.
* etc: delete mplayer.xpmwm42013-09-051-239/+0
| | | | I don't think we need this anymore.
* mplayer: try to resume playback only if a resume file actually existswm42013-09-051-1/+1
| | | | | Well, this was dumb. The resume message was printed for every file, whether a resume config file existed or not.
* mpvcore/input: Fix build without pthreadsMartin Herkt2013-09-051-3/+5
|
* macosx_events: fix modifiers handling with media keysStefano Pigozzi2013-09-051-1/+1
| | | | | | This was caused by a typo. Regression from add7c2955df. Fixes #213
* mplayer: print informative message when resuming playbackwm42013-09-041-0/+2
| | | | In particular, this informs the user how to disable this.
* mplayer: make --save-position-on-quit save only on quitwm42013-09-042-4/+5
| | | | | | | | | | | | When enabling --save-position-on-quit, playback position stored not only on quit, but in any case playback of a file was stopped. This includes going to the next file with playlist navigation commands. After some discussion on IRC, it turned out that nobody thought this was good behavior. Disable it, and really make it save only on quit. Maybe the option is useless now, as the user could remap the CLOSE_WIN key binding. On the other hand, CLOSE_WIN sounds and _is_ a bit obscure.
* mplayer: always write playback resume info, even at start/end of filewm42013-09-041-3/+3
| | | | | | | | | | | | | | | | | | Before this commit, the player didn't write resume info if the playback position was within the first or last percent of the file. This was sometimes annoying, and with playlist resume can lead to unintuitive behavior. (It wouldn't resume the playlist if the currently played file was at 0-1% or 99-100%, even if you were in the middle of a playlist.) Moreover, the "percent > 99" check is a bit bogus anyway, because 100 (in integer) is rarely reached. Drop the check, and make sure using --save-position-on-quit won't write resume info when reaching EOF. The latter check is needed to make sure playback of the file starts at beginning when playing it again after EOF.
* path: better check for mp_is_url()wm42013-09-041-3/+11
| | | | | | | | | | | The previous check just searched for a "://" substring. This was quite bad, because "://" can be a valid part of a path. Later, I added special handling for filenames starting with "." and "/", so that you could reliably pass arbitrary filenames to mpv, no matter how messed up they were. Even though it doesn't really matter in practise anymore, this is still crap, so add a more reliable check instead.
* mplayer: allow resuming from playlistwm42013-09-043-3/+26
| | | | | | | | | | | | | | | | | | This includes the case of passing multiple files to command line (internally this is the same as loading a playlist). Resuming works by finding the first playlist entry that can be resumed. Alternative implementations would be possible, such as hashing the playlist contents. But this implementation is simpler, and doesn't have the disadvantage that changes to the playlist (like appending entries) will throw away the resume point. This makes loading large playlists a bit slower, because it has to look into ~/.mpv/watch_later/ for every entry. Loading a 15000 entries playlist now increases from 150ms to 400ms. Considering you rarely load playlists this big with mpv (because it's impractical considering the terminal and non-GUI nature of the player), this is probably ok.
* command: unescape URLs for ${filename} and ${media-title}wm42013-09-041-2/+7
| | | | | | | | | | | Undo URL percent encoding if the filename appears to be an URL. This will fix display of the actual filename in some cases. We don't put any effort into checking whether the URL is really percent encoded, because we don't really know how the protocol handler is going to interpret the URL. For stream_lavf, we probably can't know. Still, from the perspective of this commit, it seems to make sense to assume they are percent encoded.
* path: add a common mp_is_url() functionwm42013-09-045-16/+17
| | | | Remove the duplicated code.
* x11_common: don't allocate more than needed for iconwm42013-09-041-3/+4
| | | | | | | | | icon_size is the number of array items of type long, not bytes. Change the type of icon_size to int, because size_t makes you think of byte quantities too quickly. As an unrelated change, change the (char *) cast to (unsigned char *), because it matches the common XChangeProperty idiom better.
* tv: attempt to support mjpeg streamswm42013-09-041-2/+6
| | | | | | | | | | MPlayer handles this correctly, because MPlayer still has the FourCC codec dispatch (codecs.conf). We need to handle this case specially, because the libavformat rawvideo decoder will of course not eat mjpeg. mjpeg is the only supported format, though. (Even MPlayer needs to convert between V4L2 formats and MPlayer FourCCs, and mjpeg is the only non-raw format.)
* mplayer: handle --reset-on-next-file=""wm42013-09-041-4/+6
| | | | | | | The option list contains an empty string member with this option value, so ignore that. I'm not sure whether the option list should maybe be empty in this case, but it could be the wrong thing in case of other options.
* mplayer: don't let playback resume force options that are file localwm42013-09-041-11/+11
| | | | | | | | This happens by default with pausing: if a file was paused when doing quit_watch_later, then resume and unpause, then the file played after that would start in paused mode. This is because the pause option is backed up at thr wrong place, so it backs up the state from resuming, instead of whatever it was set to before that.
* configure: build with wayland 1.2.0Alexander Preisinger2013-09-032-1/+6
| | | | | For the time being there will be a check if someone uses wayland from git, because I really really like to have the others formats too.
* configure: improve wayland checkAlexander Preisinger2013-09-031-12/+6
|
* macosx_events: send a `release all` after key up eventsStefano Pigozzi2013-09-021-0/+2
| | | | | | | | This prevents keys to become stuck due to changing keyboard modifiers during the key down. Not the prettiest approach but event `x11_common` does it like this. Fixes #210
* macosx_events: remove duplicationStefano Pigozzi2013-09-021-29/+33
| | | | refactoring: extract method `handleMPKey:withMask:`
* cocoa_common: remove unlocking from fullscreen functionStefano Pigozzi2013-09-021-12/+0
| | | | | This was added in the past to prevent a deadlock, but is not needed anymore.
* cocoa_common: avoid the opengl view to leak it's stateStefano Pigozzi2013-09-021-7/+13
| | | | | Just because everything is in a single file it doesn't excuse us to have high coupling between C and ObjC code.
* cocoa: enqueue events only if input context is presentStefano Pigozzi2013-09-011-1/+2
|
* x11: add window iconwm42013-09-019-1/+126
| | | | | | | | | | | | | | | | | | | | | The png file added to etc/ are taken from the link mentioned in commit 303096b, except that they have been converted to 16 bit, sRGB (with color profile info dropped, if there was one), and transparent pixels reset for better compression. The file x11_icon.bin is generated by gen-x11-icon.sh. I'm adding it to the git repo directly, because the script requires ImageMagick, and we don't want to make building even more complicated. The way how this is done is basically a compromise between effort required in x11_common.c and in gen-x11-icon.sh. Ideally, x11_icon.bin would be directly in the format as required by _NET_WM_ICON, but trying to write the binary width/height values from shell would probably be a nightmare, so here we go. The zlib code in x11_common.c is lifted from demux_mkv.c, with some modifications (like accepting a gzip header, because I don't know how to make gzip write raw compressed data).
* mplayer: fix race condition on uninit with CocoaStefano Pigozzi2013-09-011-0/+4
| | | | NULL out Cocoa's reference to mplayer's input context before deallocating it
* input: unlock playloop thread during selectStefano Pigozzi2013-09-011-0/+2
| | | | | | This allows other threads to use mp_input_put_key without blocking if the playloop is doing the 500ms select call (i.e.: during pause). Makes Cocoa GUI responsive again (regression since 2d363c3).
* osx: use MP_KEY_* instead of MK_* for media keysStefano Pigozzi2013-09-014-18/+3
| | | | | In 213ad5d6c I added `MK_*` key bindings overlooking the fact that mpv already has `MP_KEY_*` for media keys.
* input: allow window dragging even if mouse is in a mouse areawm42013-09-012-4/+13
| | | | | | If the input section is enabled with MP_INPUT_ALLOW_VO_DRAGGING, then the VO will be allowed to drag the window with mouse button down + mouse move even if the mouse is inside the section's mouse area.
* input: deal with spurious X11 LeaveNotify eventswm42013-09-014-10/+21
| | | | | | | | | | | | | | | | | | | | | If the mpv window is unfocus, clicking on the OSC should focus the window (done by the window manager) and allow interaction with the OSC. But somehow X sends a spurious LeaveNotify event, immediately followed by an EnterNotify event. This happens at least with IceWM. The result is that the OSC will disappear (due to receiving MOUSE_LEAVE). The OSC will stay invisible, because EnterNotify isn't handled, and there's nothing that could make the OSC appear again. Solve this by handling EnterNotify. We cause a redundant MOUSE_MOVE event to be sent, which triggers the code to make the OSC visible. We have to remove the code from input.c, which ignores redundant mouse move events. Since the code ignoring redundant mouse move events is still needed on Windows, move that code to w32_common.c. The need for this is documented in the code, also see commit 03fd2fe. (The original idea was to save some code by having this code in the core, but now it turns out that this didn't quite work out.)
* input: print more debug infos, raise loglevelwm42013-09-012-2/+23
|
* input: stay in current input section if mouse button is downwm42013-09-011-28/+63
| | | | | | | | | | | | | | | | | Normally, moving the mouse outside of the mouse area of an input section will send mouse events somewhere else (because input section mouse areas are similar to windows/widgets in real GUI toolkits). This was done even if a mouse button was held down. This is quite different from how GUI toolkits behave. Change the code so that if a mouse button is down, the mouse area of the current input section can't be left. Releasing the mouse button (while the mouse pointer is outside of the mouse area) will actually leave the mouse area. As a side-effect, this commit also tests more often whether the current mouse input section is valid. This is needed to make releasing a mouse button trigger the mouse input section change.
* input: add some more X11 multimedia/internet keyswm42013-09-013-1/+16
| | | | | | | | These keys can be found on various "multimedia" and "internet" keyboard. X defines many keycodes, so I'm not adding all, just what I found on my own keyboard. Other key codes can be added on request.
* keycodes: cosmetics: align indentationwm42013-09-011-113/+113
|
* audio: fix playback of Musepack SV8 fileswm42013-09-011-2/+4
| | | | | | | | | | | | | | This is basically a libavcodec API oddity: it can happen that avcodec_decode_audio4() returns 0 (meaning 0 bytes were consumed). It requires you to feed the complete packet again to decode the full packet, and to successfully decode the following packets. We ignored this case with the argument that there's the danger of an endless decode loop (because nothing of that packet is apparently decoded, so it would retry forever), but change it in order to decode mpc8 files correctly. Also add some comments to explain the mess.
* input: comment all default bindings in input.confwm42013-09-012-138/+154
| | | | | | | | | | | | | | I suspect most users will just copy etc/input.conf when they want to remap some default bindings. But usually this means the user even copies bindings he doesn't care about, and it's better if the user maps only the bindings in his input.conf the user intends to remap. Comment all bindings in etc/input.conf. Since this file also defines the builtin defaults and is baked into the mpv binary, we have to do something to get them anyway, even though they are commented. Do this by having input.c "uncomment" the bindings in the baked in input.conf. (Of course this is done only for the builtin config, not configs loaded from disk.)
* travis: don't generate docs for ffmpeg/libavStefano Pigozzi2013-09-011-1/+9
| | | | Fixes some breakage with ffmpeg-git
* input: lock for accessing struct input_ctxStefano Pigozzi2013-09-011-67/+114
| | | | | | | | | | | | | | The previous code was locking only the input queue. That was too weak since it didn't protect the input_ctx data structure. So remove the locking on the queue and lock all the public functions that interact with the input_ctx. The private functions and public functions that do not act on the input_ctx (there are quite some functions doing mp_cmd manipulations for instance) are not locked. Some changes by wm4. Use a recursive mutex, and restructure some code to be less annoying with locks, such as converting code to single return, or making use of the recursive mutex.
* cocoa_common: enable click-through on the video viewStefano Pigozzi2013-09-011-0/+1
| | | | | | Generate a mouse down event on the first click so that one can interact with the OSC directly as opposed to wasting the first click in order to focus the window.
* cocoa_common: track mouse move events when not focusedStefano Pigozzi2013-09-011-1/+1
| | | | | This is really only important with the OSC and makes the tracking code behave more consistently with the X11 one.
* change application iconStefano Pigozzi2013-09-019-623/+3
| | | | | | | | | | | | | | | | | | | | | | | | | I would like to thank Chris Ward (@tenzerothree, http://tenzerothree.com/) for working on the art for these icons and bringing some eye candy to the project. The PSDs made by Chris are available on our Dropbox [1], along with the exports I made to create OSX and Windows icons. The PSDs are almost completly vector and all the resolutions look really similar, except the 16px favicon which was handcrafted to look better and more recognizeable on the smaller pixel budget. For Mac OS X the icons were created using iconutils on the PNGs iconsets exported from the PSDs. These even support retina resolutions (except 512@2x). For Windows the .ico file was created with imagemagick. The included images are 16px, 24px, 32px, 48px 64px, 256px. These are the resolutions listed on MSDN for supporting Windows XP [2] and Windows versions based on Aero [3]. Only 32bit PNGs were used since it is 2013. For Linux nothing changed yet, even though @wm4 talked about using the PNGs directly there. This will probably be dealt with in a later commit. [1]: https://www.dropbox.com/sh/yelfoj9tbft7o06/A8vOT6JKaG [2]: http://msdn.microsoft.com/en-us/library/ms997636.aspx [3]: http://msdn.microsoft.com/en-us/library/aa511280.aspx
* video: add unscaled mode with --video-unscaledwm42013-09-015-3/+32
|
* configure: fix some descriptions in the help outputwm42013-09-011-4/+4
|
* cocoa: let the core handle key repeatsStefano Pigozzi2013-08-303-6/+17
| | | | | Report key down and key up modifiers to the core so that it can issue it's own key repeats (instead of relying on Cocoa's ones).
* input: fix --no-input-default-bindingswm42013-08-291-0/+2
| | | | The option did nothing. This was probably broken with 5b38a52.
* gl_video: don't crash if no FBOs are availablewm42013-08-281-4/+6
| | | | | | | | This probably has been broken since bbc865a: a test was added that uses a FBO, but it's always run, even if FBOs were not detected. On the other hand, fbotex_init() just runs into an assert. Fix the test that triggered this condition, and make fbotex_init() "nicer" by just failing if FBOs are not available.
* demux_playlist: port ini reference playlist parserwm42013-08-282-37/+18
| | | | | | | | | | Port it from playlist_parser.c to demux_playlist.c. Also, change the m3u parser to drop whitespace from the trailing part of the line (will make it work properly with windows line endings). (I hoped that this would make MMS URIs with http instead of mmsh prefixes work, but it doesn't. Instead, it leads to a playlist loop. So solving this issue would require a change in ffmpeg, probably.)
* stream: read at least a full buffer with stream_peek()wm42013-08-281-1/+1
| | | | | | | | | | | | | Until now, stream_peek() read only the bare minimum it had to read from the stream. But this could cause problems, such as being very inefficient when peeking a lot, or conflicting with ability to seek back. (The latter issue can be caused by peeking a few bytes, and then doing a stream_read() with a size that is 1 byte longer: this would read the peeked data, then call stream_fill_buffer(), which throws away the previously peeked bytes - so you can't seek back anymore. This is mitigated by a hack in demux_open(): it peeks a full buffer, to avoid that peeking/reading during demuxer probing [or before that, in a stream filter] can cause the buffer to be dropped.)
* configure: fix build with stable wayland releasesAlexander Preisinger2013-08-281-2/+10
|
* wayland/shm: rework format handlingAlexander Preisinger2013-08-261-47/+76
| | | | Use a linked list for all supported formats and make the format table const.
* wayland: fix memory leaksAlexander Preisinger2013-08-262-2/+8
|
* cocoa_common: autohide dock when autohiding menubarStefano Pigozzi2013-08-261-1/+5
| | | | A cocoa bug doesn't allow to do otherwise. Will open a radar later.
* configure: fix VDA autodetection based on FFmpeg supportStefano Pigozzi2013-08-261-1/+2
| | | | | | The original condition was too weak, requiring only the header. The header is installed is FFmpeg regardless of the presence of VDA on the system, so just perform a check on the `ff_vda_create_decoder` function.
* configure: move wayland-egl checkAlexander Preisinger2013-08-261-2/+3
| | | | | This makes it possible to build the shm backend when no EGL platform is available.
* wayland: don't create our own log contextAlexander Preisinger2013-08-263-19/+14
| | | | This was more problematic than useful ([vo/wayland/wayland])
* wayland/shm: use opaque regionsAlexander Preisinger2013-08-261-0/+10
| | | | | | Make use of opaque regions on non-alpha formats. This allows the compositor to improve the drawing of the surface, because he can discard everything behind the window when drawing.
* gl_video: fix odd video sizes with PBOswm42013-08-261-0/+4
| | | | | | | | | Odd video sizes if pixel formats with chroma subsampling and PBOs were used, garbage was rendered. This was because the PBO path created buffers with an unpadded size, and then tried to upload a padded image to it. Fix it by explicitly setting the padded size. (As with the non-PBO path, we rely that image allocations are somehow padded, which is normally the case.)
* stream: add uncompressed rar supportwm42013-08-267-0/+753
| | | | | | | | | | | | | | | | | Apparently, it is popular to store large files in uncompressed rar archives. Extracting files is not practical, and some media players suport playing directly from uncompressed rar (at least VLC and some DirectShow components). Storing or accessing files this way is completely idiotic, but it is a common practice, and the ones subjected to this practice can't do much to change this (at least that's what I assume/hope). Also, it's a feature request, so we say yes. This code is mostly taken from VLC (commit f6e7240 from their git tree). We also copy the way this is done: opening a rar file by itself yields a playlist, which contains URLs to the actual entries in the rar file. Co