summaryrefslogtreecommitdiffstats
<
Commit message (Collapse)AuthorAgeFilesLines
* Fix typo...v0.8.1Diogo Franco (Kovensky)2015-02-261-1/+1
|
* Release 0.8.1Diogo Franco (Kovensky)2015-02-262-4/+4
|
* cache: use MPCLAMP() macrowm42015-02-261-9/+2
| | | | (cherry picked from commit e85bcc12233ee08b7609382372dd80482fd016f2)
* cache: limit to file sizewm42015-02-261-1/+8
| | | | | | | Saves some memory. Should be especially helpful if many small files are loaded, like when mass-loading subtitle files and the cache is enabled. (cherry picked from commit 899f0cd51eaadf6d0249d854efc3d0d1029045bd)
* remove dead commentStefano Pigozzi2015-02-261-2/+0
| | | | (cherry picked from commit f3eb6ae7836b4759a351e083babe49cd7b17d375)
* build: move QuartzCore linking to the cocoa checkStefano Pigozzi2015-02-263-2/+4
| | | | | | | It's needed for the DisplayLink functions so it must be enabled for the basic cocoa code. (cherry picked from commit 8e80b3fd2fea8bf11abaeb108d85b2bdfbe14695)
* demux_mkv_timeline: fix potential issue when enabling cachewm42015-02-261-0/+1
| | | | | | | | | | | | | | If the cache is enabled, the demuxer is closed and opened again (because currently, the cache can not be enabled atfer data was already read). The call for opening a new demuxer uses the same params struct, which references the ctx->uids array. But there is a MP_TARRAY_GROW() invocation somewhere on the way, which can reallocate the ctx->uids array, making params.uids a dangling pointer. This issue probably existed for a longer time, probably since 5cd33853 (slightly more obvious since f50b105d). (cherry picked from commit 9349cfca910990d1126b973fd2ca55cb2351d35f)
* demux_mkv_timeline: move uids array to context toowm42015-02-261-31/+26
| | | | | | | | | Again removes some indirections and extra arguments. Also replace some memcpy/memmoves with assignments. (Assignments became possible only later, when reference UIDs were turned into a struct.) (cherry picked from commit 02bd54c0ac0933bc2fe982666bbe4da75957c485)
* demux_mkv_timeline: pass sources array as part of contextwm42015-02-261-45/+39
| | | | | | Removes tripple pointer indirections and such. (cherry picked from commit 2bf0a5f2bcb5f0eea72f35d85e59125ad89566bf)
* demux_mkv: minor refactor for deferred cue readingwm42015-02-261-45/+41
| | | | | | | | Should behave about the same, but reduces code some duplication with seeking and reading a header element pointed to by a SeekHead. It also makes behavior with incomplete files slightly better. (cherry picked from commit 2e23be5a7b104c43d4754b07c85423e5027e2b5d)
* demux_mkv: don't spam too many warnings with partial fileswm42015-02-261-14/+15
| | | | | | | Limit it to a single message. It often printed more than that, and in some cases (old files with "cluster" index), spammed a lot. (cherry picked from commit a761a1531a9883abb2de5d29c98f4c96a93138a3)
* Update RELEASE_NOTESDiogo Franco (Kovensky)2015-02-251-0/+8
|
* Fix compilationDiogo Franco (Kovensky)2015-02-251-2/+5
| | | | Broken by unchecked cherry-picking of 53867aa.
* vo_opengl: greatly increase smoothmotion performanceNiklas Haas2015-02-252-74/+105
| | | | | | | | | | | | | | | | | | | | | | Instead of rendering and upscaling each video frame on every vsync, this version of the algorithm only draws them once and caches the result, so the only operation that has to run on every vsync is a cheap linear interpolation, plus CMS/dithering. On my machine, this is a huge speedup for 24 Hz content (on a 60 Hz monitor), up to 120% faster. (The speedup is not quite 250% because of the overhead that the larger FBOs and CMS provides) In terms of the implementation, this commit basically swaps interpolation and upscaling - upscaling is moved to inter_program, and interpolation is moved to the final_program. Furthermore, the main bulk of the frame rendering logic (upscaling etc.) was moved to a separete function, which is called from gl_video_interpolate_frame only if it's actually necessarily, and skipped otherwise. (cherry picked from commit 010cf183fe3133fe6f581f9b25137827c6b26a39)
* manpage: update documentation for smoothmotionNiklas Haas2015-02-251-8/+27
| | | | | | | | | | | | | Hopefully, this will really clear up how the thing is supposed to work (and that it's not SVP, nor MVTools). I also removed instances of the word "interpolation", since that's a term that's easily misleading. Finally, I expanded on smoothmotion-threshold since the purpose/meaning was a bit confusing. (cherry picked from commit 9fa73b6f645952247d3d18e617a357a5d02f644e)
* osd: force alignment for OSD barwm42015-02-251-1/+2
| | | | | | | | | | Overwrite the alignment applied by the OSD style. Additionally, remove the initialization of the Alignment field in create_ass_track(); the value is always overwritten by mp_ass_set_style() later. Fixes #1626. (cherry picked from commit 53641a689d17d6fce31d752fbca150ca95796e81)
* osd: always reset style paramswm42015-02-251-11/+8
| | | | | | | | | There was some logic to set certain things on init only. Not sure why this was done (saving some cheap calculations?) - but since the next call would override these style settings by applying the usual subtitle style, I don't think this was intended. (cherry picked from commit 9fbcb56bee787b32be53cf240dd95b77d1a3921d)
* vo_opengl: another GLES2 issuewm42015-02-251-1/+9
| | | | | | | | | | | | GLES2 randomly does not support the transpose parameter in matrix uniform calls. So we have to do this manually. Sure it was worth to mutilate the standard just so all these shitty SoC vendors can safe 3 lines of code. (Obviously trying to handle all of GLES2 to GL 4.x in a single codebase was a mistake.) (cherry picked from commit cc011415ffb10521260e486a41b56d0080bf2cd9)
* vo_opengl: extend ifdef against shader arrayswm42015-02-251-1/+2
| | | | | | | | | GLES2 shaders do not have line continuation characters. Abuse the HAVE_ARRAYS define to exclude code which uses arrays, and which also happens to cover all code that defines multi-line macros. (So yes, this is a hack.) (cherry picked from commit 2c8d16d89f6f64a587222dd53a3d27b2a218ee01)
* old-build: proper atomics are not strictly requiredwm42015-02-251-1/+1
| | | | (cherry picked from commit a92cab736f05e855dc52618a64ecc5b1b8d1eccd)
* video: remove redundant codec parameterswm42015-02-253-8/+0
| | | | | | | | | Remove coded_width and coded_height. This was originally added in commit fd7dde40, when BITMAPINFOHEADER was killed. The separate fields became redundant in commit e68f4be1. Remove them (nothing passed to the decoders actually changes with _this_ commit). (cherry picked from commit 5baf74fa24493298fc83336da77f400ddac29d55)
* ytdl: add --no-warningswm42015-02-251-1/+1
| | | | | | | | Silences "[ytdl_hook] WARNING: video doesn't have subtitles", which was an annoying and pointless message printed with almost all youtube videos. (cherry picked from commit 7cff2e41316d508754b7b0725f5236de180f5cc2)
* ytdl: Adapt to new subtitles structureJaime Marquínez Ferrándiz2015-02-251-9/+11
| | | | | | The requested formats can be sorted by preference and the result gives now an url or the subtitles file content (cherry picked from commit 7281a72fabc610c70b4803ffb739c4155862c2d0)
* ao/wasapi: move resume to audio threadKevin Mitchell2015-02-253-24/+38
| | | | | | | | | | | | | | | | This echanges the two events hForceFeed/hFeedDone for hResume. This like the last commit makes things more deterministic. Importantly, the forcefeed is only done if there is not already a full buffer yet to be played by the device. This should fix some of the problems with exclusive mode. This commit also removes the necessity to have a proxy to the AudioClient object in the main thread. fixes #1529 (cherry picked from commit c52833bf16c9f4cc2bb676d13df86ef6be30f434)
* ao_wasapi: move reset into audio threadKevin Mitchell2015-02-252-9/+37
| | | | | | | | | | | This makes things a bit more deterministic. It ensures that the audio thread isn't doing anything between IAudioClient_Stop(), IAudioClient_Reset() and setting the sample_count to 0. Buffer overfilling on resume is still a problem in exclusive mode (see next commit). (cherry picked from commit 446fd5a43a56f15d7ecec5fb65544adeee0be72f)
* encoding: allow encoding to channel configurations other than stereowm42015-02-251-1/+3
| | | | | | | | | | | | A while ago, we made mpv output the native number of channels by default, instead of stereo. I assumed this was not wanted for encode mode. This commit keeps the assumption, but allows setting the number of audio output channels at all, instead of always forcing stereo. (Pretty much a hack.) (cherry picked from commit 636d6d724d36b90812a0c145bbf40143be9a52e8)
* vf: fix indentation level of verbose outputwm42015-02-251-2/+2
| | | | | | | Just so that it has the same indentation as the extremely similar audio filter output. (cherry picked from commit 24e72801788760ac4e3c998517717fd075ecd64c)
* DOCS/client_api_examples/simple: fix optionwm42015-02-251-1/+1
| | | | | | | "input-x11-keyboard" still works, but is a deprecated alias with the same functionality. (cherry picked from commit cf395e1754d36cf22baae3e49445263aab226835)
* client API: hint that opengl_cb is an alternative to window embeddingwm42015-02-251-0/+7
| | | | (cherry picked from commit d77fdc8f82491eeba019575f402127d2794acfc6)
* vo_opengl: slightly improve ewa_lanczos windowingNiklas Haas2015-02-251-33/+4
| | | | | | | | | | | | | The original filter window was design for a radius based on the true zero, but we always cut it off at our selection of radius either way (by necessity, due to the square matrix we sample from). This window is tweaked from the original (true radius) to our actual cut-off radius, and hence improves the result in a few edge cases. The main win is the reduction of code complexity, since we no longer need to know what the true radius actually is. (cherry picked from commit 1ecd9727f0e3df68c6be9955b759547a34a0b79f)
* player: fix demuxer lifetime managementwm42015-02-242-54/+43
| | | | | | | | | | | | | Commit f54220d9 attempted to improve this, but it got worse. Now there was a crash when ytdl_hook.lua added external tracks. This happened because close_unused_demuxers() assumed that sources[0] was the main demuxer (so that it didn't close it). This assumption failed, because the ytdl script can add external tracks before the main file is loaded. The easy fix would have been to check for master_demuxer, and not i==0. But instead give up on the old idea, make some stricter assumptions how demuxers and external tracks map, and simplify the code. (cherry picked from commit 53867aa9d834fd6a6314803655bd4c444d0e1df4)
* build: print pkg-config query on failureStefano Pigozzi2015-02-241-0/+2
| | | | (cherry picked from commit 0466ce2f98ef1cdba264c016daa1061e797e1b91)
* manpage: ipc: add a socat examplewm42015-02-241-3/+33
| | | | | | Requested, and should be quite good at giving an overview how it works. (cherry picked from commit af435e0a027df4b2135488d76ee8b488a0474dfa)
* video: un-discourage "vaapi-copy" hwdec modewm42015-02-212-6/+2
| | | | | | | Maybe I don't know what I'm doing. I'm fairly certain though that Intel does not know what they're doing. (cherry picked from commit d71bbcbc98c1fa8a934ee656b13adda089a11681)
* player: move timeline scanning (ordered chapters etc.) to a threadwm42015-02-211-7/+15
| | | | | | | | | | | | | | Do timeline building (scanning & opening reference files for ordered chapters, and more) in a thread. As a result, this process can actually be stopped without having to kill the player. This is pretty simple: just reuse the demuxer opening thread. We have to give up on the idea that open_demux_reentrant() is reusable, though. (Althoughthe timeline readers still need some fixes before they react to the quit request.) (cherry picked from commit 44411674ebb764adeb806040d24700bc4cc493cc)
* player: cosmetics: async/non-blocking -> reentrantwm42015-02-213-13/+13
| | | | | | | | These functions do blocking work on a separate thread, but wait until they return. So they are not async or non-blocking. But they do react to user-input and client API accesses, which makes them reentrant. (cherry picked from commit 2c305d5b2990d31911d7faa4c9117bf4eb89c88b)
* stream_file: open pipes non-blockingwm42015-02-211-4/+33
| | | | | | | Now the player can actually be quit if a pipe was opened, but nobody is writing to it. (cherry picked from commit 3c9344a1a9de335925b81058b7699fccd187626b)
* vo_opengl: minor robustness improvement in function loaderwm42015-02-211-2/+5
| | | | | | | | Check the scanf() return value, and don't continue if it doesn't find both numbers (can happen with GLES 1.0). Also, some implementations can return NULL from glGetString() if something is "broken". (cherry picked from commit 9861abf8ffa4c9e7c4ad9a4f3f667e6f833624a3)
* vo_opengl: fix smoothmotion coefficient calculation, for real this timeNiklas Haas2015-02-211-24/+31
| | | | | | | | I've reworked pretty much all the logic to correspond to what the theory actually describes. With this commit, playback is wonderfully smooth on my machine. (cherry picked from commit 4356e893a138e24f2d54dee2b96d2720e69d4c18)
* demux_lavf: apply hacks even if format is forcedwm42015-02-211-27/+28
| | | | | | | | | | | | | | | Some of the hacks were not applied if the file format was forced. Commit 37a0c914 moved them to a table, which is checked with normal probing only. Fixes #1612 (DVD forces mpeg, which in turn has to export native stream IDs specifically). Do some code restructuring on the way. For example, the probescore can simply be set to the correct initial value, instead of checking whether it was set at all. (cherry picked from commit 611f9ab0a8f8820056d8f7f77dbe8a8794291873)
* manpage: fix vf_scale arnd parameterwm42015-02-211-2/+2
| | | | | | | | | It probably was always a flag, so the documentation became invalid as soon as mpv stopped accepting 0/1 for flags. Fixes #1608. (cherry picked from commit b230f32624b0ec979f848183e0aec88d1fd2d024)
* build: fix Python 3 unicode issue with waf 1.8.6wm42015-02-191-1/+7
| | | | | | | | | | | | | | | Starting with waf 1.8.6 (in Python 3), the hcode variable isn't a string, but a byte string. This commit adds the solution proposed in the upstream waf bug report: https://code.google.com/p/waf/issues/detail?id=1535 It seems a bit overly verbose, but on the other hand, this solution has the chance of being most correct/compatible. Fixes #1604. (cherry picked from commit 14b231119d2c125bcdcba48d159a78097152e387)
* Update RELEASE_NOTESDiogo Franco (Kovensky)2015-02-191-1/+24
|
* demux_lavf: blacklist bintext fileswm42015-02-191-0/+3
| | | | | | | | Whatever the hell that is. FFmpeg tries to open any files with .bin file extension with this demuxer (unless it finds a better demuxer), and then reads the whole damn file, along with spamming dumb crap. (cherry picked from commit 79006ef66d10fb356782eed6d3b3cc103ae2ba4b)
* cache: silence "EOF reached" messagewm42015-02-191-1/+1
| | | | | | | | | | | | | | | This message will be printed relatively often once EOF is reached. In some cases this is rather annoying, for example when playing HLS. (With HLS, the stream is just a playlist file, while libavformat opens actual media files without mpv's knowledge, so the cache is completely useless and hits EOF instantly.) That it retries reading is apparently a good thing: at least local files can grow, and even after the player got the EOF, playback _could_ be resumed by basically polling and detecting that there is more data. So I'm not changing this behavior yet. (cherry picked from commit 3f5b5b758dac511f500fdfd9ae85089cbfc31fde)
* demux_lavf: reorganize hackswm42015-02-191-67/+70
| | | | | | | | | | | | | An attempt to make format-specifics more declarative. (In my opinion, all of this should be either provided by libavformat, or should not be needed.) I'm still leaving many checks with matches_avinputformat_name(), because they're so specific. Also useful for the following commit. (cherry picked from commit 37a0c9140ad85be8d184b626759f8d24ca69aa83)
* demux_lavf: set interrupt_callbackwm42015-02-191-0/+11
| | | | | | | | Helps with terminating the stream if e.g. HLS streams are stuck. (For other demuxers, the stream's interrupt callback already takes care of this.) (cherry picked from commit ff992e093b93fd8dd0eecd2c592f8608870f0bbe)
* find_subfiles: Add 'vtt' to subtitle extensionsJaime Marquínez Ferrándiz2015-02-191-1/+1
| | | | (cherry picked from commit aa9804987788a0cc239403d13698cc685146122c)
* demux, matroska: remove demuxer type fieldwm42015-02-194-39/+29
| | | | | | | | | | | | | | | The Matroska timeline code was the only thing which still used the demuxer.type field. This field explicitly identifies a demuxer implementation. The purpose of the Matroska timeline code was to reject files that are not Matroska. But it already forces the Matroska format, meaning loading will explicitly only use the Matroska demuxer. If the demuxer can't open the file, no other demuxer will be tried, and thus checking the field is redundant. The change in demux_mkv_timeline.c removes the if condition, and unindents the if body. (cherry picked from commit fa9b587426d7bd350d92afdb440c396336b2ecfd)
* demux: remove file_contents fieldwm42015-02-194-11/+25
| | | | | | | | | Only demux_cue and demux_edl used it. It's a weird field and doesn't help with anything anymore - by now, it only saves a priv context in the mentioned demuxers. Reducing the number of confusing things the demuxer struct has is more important than minimizing the code. (cherry picked from commit 082371a1603eaaa6c5c9f4bd57f9e77ff027ee15)
* demux_edl: make independent from MPContextwm42015-02-194-48/+36
| | | | (cherry picked from commit d7a4cb14ff8dc61d87cec54abcd7f7623e8cc666)
* demux_edl: move implementationwm42015-02-194-306/+280
| | | | | | Same deal as with demux_cue, and a separate commit for the same reasons. (cherry picked from commit 1e44c811f3683f62714ff5ecc2e4f233eb8bb668)
* demux_cue: make independent from MPContextwm42015-02-194-40/+36
| | | | | | Also see previous commit(s). (cherry picked from commit 10781c2a9c175a8f9e445df4a91031301f225351)
* demux_cue: move implementationwm42015-02-194-421/+388
| | | | | | | | | | Move the implementation, of which most was in tl_cue.c, to demux_cue.c. Currently, this is illogical, because tl_cue.c still accesses MPContext. This is going to change, and then it will be better if everything is in demux_cue.c. This is only a separate commit to distinguish code movement and actual work; the next commit will do the actual work. (cherry picked from commit 7f03f46882ec4e9eb9d9857cf5cc393bb3afa7ca)
* demux: copy priv pointer toowm42015-02-191-0/+1
| | | | | | | Weird, but helps with the case a demuxer gets handed its own instance from outside. (cherry picked from commit f9872ab26fad62766f62be112436482ef3e7e07b)
* matroska: move timeline code to demux/wm42015-02-193-2/+2
| | | | | | | Separate from previous commit, because git is bad at tracking file renames when the file contents are also changed. (cherry picked from commit edc0007e74ab4ad043f35eed8cdebd9ed73c8062)
* matroska: make timeline code independent of MPContextwm42015-02-195-115/+122
| | | | (cherry picked from commit 5a186d5942bda0c7cae56bc524a6dceccb5c7d3f)
* player: use a separate context for timeline loader stuffwm42015-02-197-22/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | Instead of accessing MPContext in player/timeline/*, create a separate context struct, which the timeline loaders fill out. It turns out that there's not much in the way too big MPContext that these need to access. One major PITA is managing (and closing) the set of open demuxers. The problem is that we need a list of all demuxers to make sure no unneeded streams are enabled. This adds a callback to the demuxer_desc struct, with the intention of leaving to to the demuxer to call the right loader, instead of explicitly checking the demuxer type and dispatching manually in common code. I also considered making the timeline part of the demuxer state, but decided against: it's too much of a mess wrt. memory management and threading, and also doesn't make it clear who owns the child demuxers. With the struct timeline decoupled from the demuxer state, it's at least somewhat clear that the child demuxers are independent from the "main" demuxer. The actual changes to player/timeline/* are separated in the following commits, because they're quite verbose. Some artifacts will be removed later as soon as there's only 1 timeline loading mechanism. (cherry picked from commit a0a089f6a48c2775478b544185a0ddeabf43cce8)
* demux: chapters without metadata are allowedwm42015-02-191-2/+3
| | | | | | Makes some of the following commits slightly simpler. Also fix a typo. (cherry picked from commit 3efeee446e50c0cd4674137a680e6d3660c74a22)
* player: use a macro to remove an element from an array