aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* vo_opengl: add tscale-clamp optionGravatar Niklas Haas2015-08-20
| | | | | | | | | | This significantly reduces the amount of noticeable flashing when using tscale kernels with negative lobes, by cutting them off completely. I'm not sure if this has any negative effects. It needs a bit of subjective testing over a period of time, so I just made it an option. Fixes #2155.
* vo_rpi: disable background by defaultGravatar wm42015-08-20
| | | | And add an option to enable it.
* player: deliver IDLE event after uninitializing stateGravatar wm42015-08-20
| | | | | | | | | A client API user might count on the fact that audio and video outputs have already been uninitialized. (They remain uninitialized before entering idle mode in order to allow smooth transition to the next playlist entry.) Since event delivery is asynchronous, this has to happen after actually doing the uninitialization, or the client will essentially run into a race condition.
* gl_rpi: destroy the EGLSurface tooGravatar wm42015-08-20
| | | | Most likely doesn't matter much.
* vo_rpi: use correct variable for osd layerGravatar wm42015-08-20
| | | | | This is a cosmetic change, because the value is exactly the same. (The old code just duplicates the logic, sort of.)
* stream_libarchive: fix libarchive callback signatureGravatar wm42015-08-20
| | | | | | | | | | | libarchive uses a quite confusing ifdeffery mess for some of the types used in callbacks. Currently, archive_read_set_seek_callback() causes a warning at least on Windows due to mismatching return type. The header file uses __LA_INT64_T as return type, so I think the user is intended to use int64_t. (The ssize_t return type for the read_cb seems correct, on the other hand.)
* vo_rpi: fix blackscreen before the first subtitle/OSD is renderedGravatar wm42015-08-20
| | | | | The OSD overlay wasn't initialized, so it remained solid black until the first time a subtitle line or an OSD element became visible.
* old-configure: avoid a warningGravatar wm42015-08-19
|
* vd_lavc: remove unneeded hwdec parametersGravatar wm42015-08-19
| | | | | | | All hwdec backends now use a single pixel format, and the format is always checked. Also, the init_decoder callback is now mandatory.
* video: don't decode 2 frames ahead with display-syncGravatar wm42015-08-19
| | | | | This is not needed. It was used only temporarily in a development branch, and is a leftover from earlier rebasing.
* build: make sure the HAVE_ key is undefined on failureGravatar Stefano Pigozzi2015-08-19
| | | | | | Some particular checks can define the HAVE_ key on their own. To make sure they work correctly when composed (with compose_checks) we force the HAVE_ key to be undefined if a check fails.
* Revert "build: workaround for broken waf crap"Gravatar Stefano Pigozzi2015-08-19
| | | | This reverts commit 1b7883a3e57a39edfd39732efde5cd02417e3ebd.
* build: workaround for broken waf crapGravatar wm42015-08-18
| | | | | Even though the rpi check fails, it'll define "HAVE_RPI 1" in config.h. Why? Who knows...
* stream_libarchive: restrict number of allowed formatsGravatar wm42015-08-18
| | | | | Most of what is not in this list is extremely obscure, or increases the file format misdetection rate.
* manpage: fix typoGravatar wm42015-08-18
| | | | Actually, this was unintentionally changed in commit 70e0bc1e.
* vo_rpi: redraw subtitles only on changeGravatar wm42015-08-18
| | | | | | | | | | | Since vo_rpi uses MMAL for video output, which is completely independent from the GLES overlay, we can just not redraw the GLES screen if subtitles do not change. (As a furhter optimization, the dispmanx overlay could be removed if nothing is visible. But I'm not sure if adding and removing the overlay frequently is a good idea for performance, so this could just as well go the other way.)
* vo_rpi: use EGL to render subtitlesGravatar wm42015-08-18
| | | | | | | | Slightly faster than using the dispmanx mess (perhaps to a large amount due to the rather stupid C-only unoptimized ASS->RGBA blending code). Do this by reusing vo_opengl's subtitle renderer, and vo_opengl's RPI backend.
* rpi: factor out context creationGravatar wm42015-08-18
| | | | To be used by vo_rpi.c. No functional changes.
* demux_libarchive: reject 0-sized filesGravatar wm42015-08-18
| | | | libarchive does strange things with them.
* stream: provide a stream_get_size() convenience functionGravatar wm42015-08-18
| | | | | And use it everywhere, instead of retrieving the size manually. Slight simplification.
* demux_libarchive: open flat compressed filesGravatar wm42015-08-17
| | | | | | | | Things like .gz etc., which have no real file header. A mixed bag, because it e.g. tends to misdetect mp3 files as compressed files or something (of course it has no mp3 support - I don't know as what it detects them). But requested by someone (or maybe not, I'm not sure how to interpret that).
* DOCS/client_api_examples/sdl: don't curse the mainloopGravatar wm42015-08-17
| | | | Fix a typo, and also reword another comment.
* video: fix VideoToolbox/VDA autodetectionGravatar wm42015-08-17
| | | | | | | | | | | | | | | This affects vo_opengl_cb in particular: it'll most likely auto-load VDA, and then the VideoToolbox decoder won't work. And everything fails. This is mainly caused by FFmpeg using separate pixfmts for the _same_ thing (CVPixelBuffers), simply because libavcodec's architecture demands that hwaccel backends are selected by pixfmts. (Which makes no sense, but now we have the mess.) So instead of duplicating FFmpeg's misdesign, just change the format to our own canonical one on the image output by the decoder. Now the GL interop code is exactly the same for VDA and VT, and we use the VT name only.
* stream: libarchive wrapper for reading compressed archivesGravatar wm42015-08-17
| | | | | | | | | | | | | | | | | | | | This works similar to the existing .rar support, but uses libarchive. libarchive supports a number of formats, including zip and (most of) rar. Unfortunately, seeking does not work too well. Most libarchive readers do not support seeking, so it's emulated by skipping data until the target position. On backwards seek, the file is reopened. This works fine on a local machine (and if the file is not too large), but will perform not so well over network connection. This is disabled by default for now. One reason is that we try libarchive on every file we open, before trying libavformat, and I'm not sure if I trust libarchive that much yet. Another reason is that this breaks multivolume rar support. While libarchive supports seeking in rar, and (probably) supports multivolume archive, our support of libarchive (probably) does not. I don't care about multivolume rar, but vocal users do.
* player: actually close files on playback endGravatar wm42015-08-15
| | | | Regression since commit 75b1d504.
* vo_rpi: fix NULL pointer derefGravatar wm42015-08-14
| | | | Can happen in obscure situations and with hw decoding disabled.
* atomics: cleanup HAVE_ATOMICS defineGravatar wm42015-08-13
| | | | | | | The waf build system generates this already. No point in redoing it in the header file. The legacy build system (which we really should drop) didn't; fix it.
* vo_rpi: simplify background handlingGravatar wm42015-08-13
| | | | Apparently this is sufficient.
* vo_rpi: unregister vsync callbackGravatar wm42015-08-13
| | | | Small bug, much pain.
* vo_rpi: skip OSD rendering when repeating framesGravatar wm42015-08-13
| | | | It's unnecessary and slow. Doesn't help too much, though.
* DOCS/client_api_examples/sdl: add more explanation commentsGravatar wm42015-08-12
|
* client API: change subtle wording to different subtle wordingGravatar wm42015-08-12
| | | | | | | Make a difference between different mpv_handles pointing to the same mpv core, or different mpv cores. While we're not explicit about it, at least avoid that someone could misunderstand when really looking for the case of mpv_handles pointing to the same core.
* player: use OSD formattin for DS on the terminal status lineGravatar wm42015-08-12
|
* demux: remove redundant demux_chapter.name fieldGravatar wm42015-08-12
| | | | | | | | | | Instead, force everyone to use the metadata struct and set a "title" field. This is only a problem for the timeline producers, which set up chapters manually. (They do this because a timeline is a separate struct.) This fixes the behavior of the chapter-metadata property, which never returned a "title" property for e.g. ordered chapters.
* vo: fix video EOF with display-syncGravatar wm42015-08-12
| | | | | | | We must not use the frame PTS in any case. In this case, it fails because nothing sets it up to wake up. This typically caused the player to apparently "pause", until something else waked it up, like moving the mouse and other events.
* DOCS/client_api_examples/sdl: don't load file before GL initGravatar wm42015-08-11
| | | | Could lead to failure because it's essentially a race condition.
* cocoa: hide cursor using a blank image instead of a system-wide APIGravatar Rodger Combs2015-08-11
| | | | Fixes #503
* DOCS/client_api_examples: add SDL OpenGL exampleGravatar wm42015-08-11
|
* manpage: fix typoGravatar wm42015-08-11
|
* osc: avoid annoying verbose mode log spamGravatar wm42015-08-10
| | | | | | | | enable_key_bindings()/disable_key_bindings() now prints a log message on each call, thus we should avoid makign redundant calls. This could probably be solved more elegantly, but since this is all legacy/private API, don't bother.
* vo_rpi: support display syncGravatar wm42015-08-10
| | | | | | | | This VO is special because it normally doesn't block on vsync, but can be made to do so. Supposedly the MMAL video output API merely sets a "current frame" field when sending an output frame, and the firmware will pick up whatever frame that field is set to at the time of a vsync.
* player: add display sync modeGravatar wm42015-08-10
| | | | | | | | | | | | | | | | | | | | | | | | If this mode is enabled, the player tries to strictly synchronize video to display refresh. It will adjust playback speed to match the display, so if you play 23.976 fps video on a 24 Hz screen, playback speed is increased by approximately 1/1000. Audio wll be resampled to keep up with playback. This is different from the default sync mode, which will sync video to audio, with the consequence that video might skip or repeat a frame once in a while to make video keep up with audio. This is still unpolished. There are some major problems as well; in particular, mkv VFR files won't work well. The reason is that Matroska is terrible and rounds timestamps to milliseconds. This makes it rather hard to guess the framerate of a section of video that is playing. We could probably fix this by just accepting jittery timestamps (instead of explicitly disabling the sync code in this case), but I'm not ready to accept such a solution yet. Another issue is that we are extremely reliant on OS video and audio APIs working in an expected manner, which of course is not too often the case. Consequently, the new sync mode is a bit fragile.
* player: separate controls for user and video controlled speedGravatar wm42015-08-10
| | | | | | | | | | For video sync, we want separate playback speed controls for user- requested speed and the "correction" speed for video timing. Further, we use this separation to make sure only a resampler is inserted if playback speed is only changed for video sync correction. As of this commit, this is basically inactive code. It's just preparation for the video sync code (the following commit).
* player: redo estimated-vf-fps calculationGravatar wm42015-08-10
| | | | | | | | | | | | | | Additionally to taking the average, this tries to use the demuxer FPS to eliminate jitter, and applies some other heuristics to check if the result is sane. This code will also be used for the display sync code (it will actually make use of the require_exact parameter). (The value of doing this over keeping the simpler demux_mkv hack is somewhat questionable. But at least it allows us to deal with other container formats that use jittery timestamps, such as mp4 remuxed from mkv.)
* demux_mkv: disable timestamp fixup code againGravatar wm42015-08-10
| | | | | | | | | | | | This doesn't work too well if sections of the file change to a different framerate. It lowers our chances to guess the correct FPS in the display sync code. For normal playback, this (probably) doesn't help that much anyway, except that the "estimated-vf-fps" property will regress in the simplest mkv case. This will be fixed with the next commit. The now disabled code will probably be removed; it's not useful anymore.
* TOOLS/stats-conv: allow passing regex via command lineGravatar wm42015-08-10
|
* video: remove old vdpau hwaccel API usageGravatar wm42015-08-10
| | | | | | | While the "old" libavcodec vdpau API is not deprecated (only the very- old API is), it's still relatively complicated code that badly duplicates the much simpler newer vdpau code. It exists only for the sake of older FFmpeg releases; get rid of it.
* command: improve A-B loop OSD messagesGravatar wm42015-08-10
|
* TOOLS/lua/autoload: don't run if playlist is loadedGravatar Ricardo Constantino2015-08-10
|
* TOOLS/lua: Add zones.luaGravatar Ricardo Constantino2015-08-09
| | | | | | | | | | | | | | | | | Lua script that enables handling of certain commands depending on where the mouse pointer is. Mostly useful for mouse-wheel handling via input.conf. Example: MOUSE_BTN3 script-message-to zones commands "*-left: add volume +5" "default: seek +10" MOUSE_BTN4 script-message-to zones commands "*-left: add volume -5" "default: seek -10" Will changes behavior of Mouse Wheel Up/Down to alter volume if mouse is in the left zone of the window, but re-adds the default to seek if wheel is used on other parts.