summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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. Compressed entries are simply skipped.
* stream: change open code, add stream filter conceptwm42013-08-262-55/+83
| | | | | | | | | | Add a stream filter concept, in which streams can be opened on top of an underlying "source" stream. Change the open code to make this easier, and also to account for some mechanisms that will be needed for this. The following commit will add stream_rar, which contains such a stream filter.
* stream: don't drop buffer when creating the cachewm42013-08-261-3/+0
| | | | | | | | | This is really not needed. While we really can't take a loaded buffer over to the cache, there's no reason why the cache couldn't read this buffer normally. On the other hand, this code could cause trouble when probing from a stream before the cache has been enabled.
* stream: fix url_options field, make protocols field not fixed lengthwm42013-08-2617-77/+82
| | | | | | | | | | | | | | | | | | | | The way the url_options field was handled was not entirely sane: it's actually a flexible array member, so it points to garbage for streams which do not initialize this member (it just points to the data right after the struct, which is garbage in theory and practice). This was not actually a problem, since the field is only used if priv_size is set (due to how this stuff is used). But it doesn't allow setting priv_size only, which might be useful in some cases. Also, make the protocols array not a fixed size array. Most stream implementations have only 1 protocol prefix, but stream_lavf.c has over 10 (whitelists ffmpeg protocols). The high size of the fixed size protocol array wastes space, and it is _still_ annoying to add new prefixes to stream_lavf (have to bump the maximum length), so make it arbitrary length. The two changes (plus some more cosmetic changes) arte conflated into one, because it was annoying going over all the stream implementations.
* core: add a playlist demuxerwm42013-08-2616-88/+240
| | | | | | | | | Modeled after the old playlist_parser.c, but actually new code, and it works a bit differently. Demuxers (and sometimes streams) are the component that should be used to open files and to determine the file format. This was already done for subtitles, but playlists still use a separate code path.
* audio: don't allow setting unknown formats from command linewm42013-08-261-17/+1
| | | | | | | af_str2fmt_short(), which is used by the command line option parser, allowed passing a hex number. The user could set arbitrary integers as internal audio formats, even formats which don't exist or make no sense. This is not very useful, so get rid of it.
* audio: make internal audio format 0 an invalid formatwm42013-08-265-11/+11
| | | | | | | | | | | | Having to use -1 for that is generally quite annoying. Audio formats are created from bitmasks, and it can't be excluded that 0 is not a valid format. Fix this by adjusting AF_FORMAT_I so that it is never 0. Along with AF_FORMAT_F and the special formats, all valid formats are covered and guaranteed to be non-0. It's possible that this commit will cause some regressions, as the check for invalid audio formats changes a bit.
* wayland: shm based software renderingAlexander Preisinger2013-08-255-1/+666
| | | | | | | | | | | | | | | | | | | | A wayland output based on shared memory. This video output is useful for x11 free systems, because the current libGL in mesa provides GLX symbols. It is also useful for embedded systems where the wayland backend for EGL is not implemented like the raspberry pi. At the moment only rgb formats are supported, because there is still no compositor which supports planar formats like yuv420p. The most used compositor at the moment, weston, supports only BGR0, BGRA and BGR16 (565). The BGR16 format is the fastest to convert and render without any noticeable differences to the BGR32 formats. For this reason the current (very basic) auto-detection code will prefer the BGR16 format. Also the weston source code indicates that the preferred format is BGR16 (RGB565). There are 2 options: * default-format (yes|no) Which uses the BGR32 format * alpha (yes|no) For outputting images and videos with transparencies
* wayland: remove shm listener for the backendAlexander Preisinger2013-08-252-16/+0
| | | | | | The obtained information from the shm listener isn't used by anything and is also wrong now in wayland git master branch because of new shm formats which need a different way of saving the supported formats.
* wayland/egl: rework resizing (again)Alexander Preisinger2013-08-253-88/+90
| | | | | | | | | Moves a good chunk of the resizing code to wayland_common.c. This makes it possible to share it with future video drivers. It doesn't resizit it immediatly, it calcutlates the new position and size and then shedules a resizing event. This removes the ugly callback and void pointer from the wayland data structure.
* vo_corevideo: use dwidth/dheight for window dimensionsStefano Pigozzi2013-08-251-1/+1
| | | | | In the previous commit I wrongly used params->d_h/d_w which happened to work by chance.
* vo_corevideo: convert to use reconfig instead of configStefano Pigozzi2013-08-251-7/+6
|
* vo_corevideo: don't set colormatrix on direct rendering pathStefano Pigozzi2013-08-251-23/+49
| | | | | | | | | | | The current code uses GL_YCBCR_422_APPLE texture format. This allows to handle transparently the conversion to RGB but always use BT.601 colormatrix [1]. Hopefully I can adapt gl_video to take CVPixelBuffers soon so that `vo=opengl` can be used instead of `vo=corevideo` with `hwdec=vda` [1]: http://www.opengl.org/registry/specs/APPLE/ycbcr_422.txt http://www.opengl.org/registry/specs/APPLE/rgb_422.txt
* configure: fix help for macosx-bundle from autodetected to disabledStefano Pigozzi2013-08-251-5/+4
| | | | | The help and configure result wrongly showed this feature was autodetected, while it is infact disabled by default.
* vo_corevideo: fix regression in colormatrix handlingStefano Pigozzi2013-08-251-40/+22
| | | | | | | | | | Regression since 18b6c01d92. That commit changed the colorspace handling to always reinit the video output. Since the CVPixelBuffers are lazily created, VOCTRL_SET_YUV_COLORSPACE was always called when the CVPixelBufferRef was NULL. Since CoreVideo functions do not complain when called on NULL, no one noticed that CVBufferSetAttachment, which stored the color matrix meta data was called on NULL.
* sd_lavc_conv: fix build with older ffmpeg/libavwm42013-08-241-0/+17
| | | | Sigh...
* configure: fix VDA warning on systems other than OSXwm42013-08-241-0/+1
| | | | | CONFIG_VDA is supposed to be defined to 0 or 1. But on non-OSX systems, the configure test isn't run at all, so CONFIG_VDA ends up undefined.
* video: handle video output levels with mp_image_paramswm42013-08-2414-78/+35
| | | | | | | | | | | | Until now, video output levels (obscure feature, like using TV screens that require RGB output in limited range, similar to YUY) still required handling of VOCTRL_SET_YUV_COLORSPACE. Simplify this, and use the new mp_image_params code. This gets rid of some code. VOCTRL_SET_YUV_COLORSPACE is not needed at all anymore in VOs that use the reconfig callback. The result of VOCTRL_GET_YUV_COLORSPACE is now used only used for the colormatrix related properties (basically, for display on OSD). For other VOs, VOCTRL_SET_YUV_COLORSPACE will be sent only once after config instead of twice.
* vo_image: simplifywm42013-08-241-28/+2
|
* video/out: don't require VOs to handle screenshot aspect speciallywm42013-08-246-11/+5
| | | | | | | | | | | | | | | | This affects VOs which just reuse the mp_image from draw_image() to return screenshots. The aspect of these images is never different from the aspect the screenshots should be, so there's no reason to adjust the aspect in these cases. Other VOs still need it in order to restore the original image attributes. This requires some changes to the video filter code to make sure that the aspect in the passed mp_images is consistent. The changes in mplayer.c and vd_lavc.c are (probably) not strictly needed for this commit, but contribute to consistency.
* vo_vaapi: potentially fix screenshot colorspace issueswm42013-08-241-0/+1
| | | | | | mp_image_set_params() doesn't check whether the colorspace parameters are consistent (e.g. setting YUV colorspaces with RGB formats), and shouldn't need to.
* sub: add webvtt-in-webm supportwm42013-08-243-1/+128
| | | | | | | | | | | | | | The way this was added to FFmpeg is less than ideal, because it requires text parsing in the Matroska demuxer. But in order to use the FFmpeg webvtt-to-ass converter, we still have to mimic this in some way. We do this by putting the parsing into sd_lavc_conv.c, before the subtitle packet is passed to libavcodec. At least this keeps the ugliness out of unrelated code. There is some change that FFmpeg will fix their design eventually. Instead of rewriting the parsing code, we simply borrow it from FFmpeg's Matroska demuxer.
* Some more mp_msg conversionswm42013-08-239-316/+241
| | | | | Also add a note to mp_msg.h, since it might be not clear which of the two mechanisms is preferred.
* x11/out: mp_msg conversionAlexander Preisinger2013-08-231-29/+21
|
* cocoa_common: avoid locking calls when not neededStefano Pigozzi2013-08-231-2/+2
| | | | | | | | | | cocoa_common contains some locking calls to support video outputs that support live resizing (at this moment only vo=opengl). These should not be used unless the VO declares it is multithreaded by registering the resize_redraw callback used for live resizing. Fixes #200
* audio/out: do some mp_msg conversionswm42013-08-228-163/+118
| | | | | | | Use the new MP_ macros for some AOs instead of mp_msg. Not all AOs are converted, and some only partially. In some cases, some additional cosmetic changes are made.
* ao: remove some leftoverswm42013-08-222-7/+0
|
* demux: remove unused audio_delay parameter from demux_seek()wm42013-08-229-26/+17
| | | | Used to be needed by demux_avi.
* demux: check whether stream is selected in demux_get_next_pts()wm42013-08-221-1/+1
| | | | | | | | Otherwise, this would just try to demux a good chunk of the file, even though the operation can't succeed anyway. This caused some pretty strange issues, where perfectly valid use cases would print a "Too many packets in the demuxer packet queue..." message.
* demux_raw: read multiple frames per packetwm42013-08-221-1/+4
| | | | | | | | | | The rawaudio demuxer read one frame per packet, basically a few bytes, which caused insane overhead. (I found this when I couldn't play raw audio without dropouts when using -v, which printed a line per packet read.) Fix this and read 1 second of audio per packet. This is a regression since cfa5712 (merging of demux_rawaudio and demux_rawvideo).
* stream: allow potentially faster skippingwm42013-08-221-3/+12
| | | | | | | | | | Instead of always skipping in STREAM_BUFFER_SIZE blocks, allow an arbitrary size. This allows - in theory - faster forward seeking in pipes. (Maybe not a very significant change, but it reduces the number of things that depend on STREAM_BUFFER_SIZE for no good reason. Though we still use that value as minimum read size.)
* stream: don't require streams to set s->pos in seek callbackwm42013-08-229-22/+11
| | | | Instead, set s->pos depending on the success of the seek callback.
* stream: move file forward skipping to common stream implementationwm42013-08-223-52/+29
| | | | | | | | | | | stream_file.c contains some code meant for forward seeking with pipes. This simply reads data until the seek position is reached. Move this code to stream.c. This stops stream_file from doing strange things (messing with stream internals), and removes the code duplication too. We also make stream_seek_long() use the new skip code. This is shorter and much easier to follow than the old code, which basically did strange things.
* stream_avdevice: remove redundant dummy callbackwm42013-08-221-6/+0
|
* stream_file: uncrustifywm42013-08-221-132/+140
|
* video: add vda decode support (with hwaccel) and direct renderingStefano Pigozzi2013-08-2210-113/+591
| | | | | | | | | | | | | | | | | | | | | | | | | | | | |