aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* ao_coreaudio: add exclusive suboptionGravatar wm42015-07-03
|
* ao_coreaudio_exclusive: support PCMGravatar wm42015-07-03
| | | | | | | | | | | | | | | | | | Until now, this was for AC3 only. For PCM, we used AudioUnit in ao_coreaudio, and the only reason ao_coreaudio_exclusive exists is that there is no other way to passthrough AC3. PCM support is actually rather simple. The most complicated issue is that modern OS X versions actually do not support copying through the data; instead everything must go through float. So we have to deal with virtual and physical format being different, which causes some complications. This possibly also doesn't support some other things correctly. For one, if the device allows non-interleaved output only, we will probably fail. (I couldn't test it, so I don't even know what is required. Supporting it would probably be rather simple, and we already do it with AudioUnit.)
* ao_coraudio: reject all non-PCM formatsGravatar wm42015-07-03
| | | | | Currently this is equivalent. On the other hand, all audio code should reject formats that is not in a category known to it.
* ao_coreaudio_utils: reduce spamGravatar wm42015-07-03
|
* ao_coreaudio_utils: fix format back-mappingGravatar wm42015-07-03
| | | | | | | | | | | Mapping of spdif formats was imperfect. Since the first format on the list is somehow AAC, it was returned first, which is confusing, because CoreAudio calls all spdif formats AC3. Since the spdif formats have some rather arbitrary, reverse mapping the formats didn"t actually work either. Fix by explicitly ignoring these when spdif is used. Also, don't forget to set the samplerate in ca_asbd_to_mpformat(), or it will work only in some cases.
* ao_coreaudio_exclusive: do not set ao->bpsGravatar wm42015-07-03
| | | | | This field is basically deprecated or for convenience only, and this code doesn't need it.
* ao_coreaudio_exclusive: dump all latency info in verbose modeGravatar wm42015-07-03
|
* ao_coreaudio_exclusive: factor format selectionGravatar wm42015-07-03
|
* ao_coreaudio_exclusive: separate out stream selectionGravatar wm42015-07-03
|
* client API, dxva2: add a workaround for OpenGL fullscreen issuesGravatar wm42015-07-03
| | | | | | | | | This is basically a hack for drivers which prevent the mpv DXVA2 decoder glue from working if OpenGL is in fullscreen mode. Since it doesn't add any "hard" new API to the client API, some of the code would be required for a true zero-copy hw decoding pipeline, and sine it isn't too much code after all, this is probably acceptable.
* vo_direct3d, dxva2: use the same D3D deviceGravatar wm42015-07-03
| | | | | Since we still read-back (and don't have hard plans on changing this), this doesn't have much of an advantage.
* dxva2: move device creation codeGravatar wm42015-07-03
| | | | Preparation for the following commit.
* vo_opengl: log some more stuff in verbose modeGravatar wm42015-07-03
|
* av_log: print FFmpeg versionGravatar wm42015-07-03
| | | | | The individual library versionsd are pretty useless. This will actually tell us at least the git hash or git tag of the FFmpeg build.
* player: simplify reload logicGravatar wm42015-07-02
| | | | Instead of only reloading the demuxer, reopen the stream as well.
* player: remove automatic DVB channel advancement on no dataGravatar wm42015-07-02
| | | | | | | | For the sake of removing the separate stream/demuxer loading code. This could probably be reimplemented in some other way, but I have no DVB hardware for testing. The most preferred way would be making DVB to not quit, and just rerun the stream selection.
* player: unentangle --stream-dumpGravatar wm42015-07-02
| | | | | | | | The final goal is making opening the demuxer and opening the stream the same operation. Stream dumping is a rather uninteresting feature, but has a small number of vocal users, and it's easy to keep.
* vo_opengl: fix "freezes" after seeking with interpolation onGravatar wm42015-07-02
| | | | | | | | | | | | | | | | | | | | When seeking to a different position, and seeking takes long, the OSD might get redrawn. This means that the VO will receive a request to redraw an old frame using whatever the previous PTS was. This breaks the interpolation logic: the old frame will be added to the queue, and then the next frames (with lower PTS if you seeked backwards) are not drawn as the logic assumes they're past frames. Fix this by using the non-interpolation code path when redrawing after a seek reset, and no "real" frame has been drawn yet. It's a recent regression caused by the redrawing code simplification. The old code simply sent a VOCTRL for redrawing the frame, and the VO had to deal with retaining the old frame on its own. This is a hack as in there's probably a better solution. Fixes #2097.
* vo: reset frame timing when redrawingGravatar wm42015-07-02
| | | | bother vo_vdpau.c, which actually uses these times.
* vo_opengl: X11: don't leak when GL init failsGravatar wm42015-07-02
|
* vo_opengl: X11 EGL: more detailed error reportingGravatar wm42015-07-02
|
* vo_opengl: update EGL codeGravatar wm42015-07-02
| | | | Use the newer internal GL backend API.
* vo_opengl: remove unused GL API functionsGravatar wm42015-07-02
|
* x11: move GCs and background clearing to vo_xvGravatar wm42015-07-01
| | | | vo_xv.c is the only place where these things are used.
* x11: remove clear on mapGravatar wm42015-07-01
| | | | | | | | Less code, and avoids a black flash on start. In theory it could happen that we map the window, and then don't have a frame to draw - but mapping the window is done in the exact moment we have a new frame to display.
* options: fix conversion of flags to stringsGravatar wm42015-07-01
| | | | | | | | | | This flags stuff tried to be too clever - if there are overlapping flags (e.g. exclusive or combined flags), the one matching with most bits has to be chosen. This fixes logging of the seek command. E.g. "relative" and "absolute" overlap to make them exclusive, but "relative" was always printed as it happened to match first.
* vo: better magic value for unknown vsync intervalGravatar wm42015-07-01
| | | | | The value 1 is useful in some contexts, but not such a good choice otherwise.
* vo_opengl_cb: fix interpolation code pathGravatar wm42015-07-01
|
* vo_opengl: fix framestepping/pausing + interpolationGravatar Niklas Haas2015-07-01
| | | | | | | | This is not the most theoretically perfect solution, ideally we could check to see if the frame in question has already been rendered somewhere in the queue and then avoid re-rendering it, at the cost of a few extra lines of code. But I don't think the performance trade-off is dramatic enough here.
* vo: change internal API for drawing framesGravatar wm42015-07-01
| | | | | | | | | | | | | | draw_image_timed is renamed to draw_frame. struct frame_timing is renamed to vo_frame. flip_page_timed is merged into draw_frame (the additional parameters are part of struct vo_frame). draw_frame also deprecates VOCTRL_REDRAW_FRAME, and replaces it with a method that works for both VOs which can cache the current frame, and VOs which need to redraw it anyway. This is preparation to making the interpolation and (work in progress) display sync code saner. Lots of other refactoring, and also some simplifications.
* vo_opengl: adjust interpolation code for the new video-sync mechanismGravatar Niklas Haas2015-07-01
| | | | | | | | | | | | | This should make interpolation work much better in general, although there still might be some side effects for unusual framerates (eg. 35 Hz or 48 Hz). Most of the common framerates are tested and working fine. (24 Hz, 30 Hz, 60 Hz) The new code doesn't have support for oversample yet, so it's been removed (and will most likely be reimplemented in a cleaner way if there's enough demand). I would recommend using something like robidoux or mitchell instead of oversample, though - they're much smoother for the common cases.
* video: pass vsync offset to VOGravatar wm42015-07-01
| | | | | | | For now, this is trivial (and actually redundant). The future display sync code will make better use of it. The main point is that the new internal API pretty much makes this transparent to the vo_opengl interpolation code.
* video: pass future frames to VOGravatar wm42015-07-01
| | | | | | | | | | Now the VO can request a number of future frames with the last parameter of vo_set_queue_params(). This will be helpful to fix the interpolation code. Note that the first frame (after playback start or seeking) will usually not have any future frames (to make seeking fast). Near the end of the file, the number of future frames will become lower as well.
* af_lavrresample: log actual channel layout conversionsGravatar wm42015-06-30
| | | | | With all the reordering etc. that can go on in this filter, it's useful to see what upmix/downmix it's actually performing.
* demux_lavf: check for NAN rotation anglesGravatar wm42015-06-30
| | | | Yep, the FFmpeg API can return this.
* player: slim down A/V desync warningGravatar wm42015-06-30
| | | | | I don't think most of these suggestions are overly helpful. Just get rid of them.
* build: always regenerate version hashGravatar wm42015-06-30
| | | | | | | | | Until now, it only used the hash from the previous configure run, instead of trying to get the latest hash. The "old" build system did this correctly - we just have to use the existing logic in version.sh. Since waf supports separate build dirs, extend version.sh with an argument for setting the path of version.h.
* manpage: fix copy&paste mistakesGravatar wm42015-06-30
| | | | | | | These are definitely not per-track. (Maybe we should just provide a script or such which pretty-prints "native" property output.
* input.conf: invert mouse volume controlGravatar Martin Herkt2015-06-30
| | | | Scrolling right should increase volume, not decrease it.
* input: improve wording of key binding messagesGravatar wm42015-06-30
|
* ao_coreaudio: restore physical format if it can't be set exactlyGravatar wm42015-06-30
| | | | | | | | May help with (supposedly) bad drivers, which can put the device into some sort of broken state when trying to set a different physical format. When the previous format is restored, it apparently recovers. This might make the change-physical-format suboption more robust.
* ao_coreaudio: support native mono outputGravatar wm42015-06-29
| | | | | | | We can be pretty sure that AudioUnit will remix for us. Before this commit, we usually upmixed to stereo, because the stereo and multichannel layouts were the only whitelisted ones.
* ao_coreaudio: log hotplug events explicitlyGravatar wm42015-06-29
|
* video: fix panscan in vertical caseGravatar wm42015-06-29
| | | | | If the black bars appeared on the left/right borders, panscan=1 didn't make the video cover the whole screen.
* DOCS/man: fix some grammar errorsGravatar Daniel Bergmann2015-06-29
| | | | Signed-off-by: wm4 <wm4@nowhere>
* vaapi: prefer direct display over copy-backGravatar wm42015-06-29
| | | | | | Again. With the old OpenGL interop dropped, this probably works better than vaapi-copy now. Last time we defaulted to vaapi-copy, because the OpenGL interop could swap U/V planes and other stupid crap. We'll see.
* vaapi: treat cropped decoder output slightly more correctlyGravatar wm42015-06-29
| | | | | | | | | | | | Work around that FFmpeg doesn't distinguish between surface and cropped size. The decoder always aligns the surface size to something "convenient" (e.g. 16 for h264), and to get to the correct cropped size, the output image's width/height is reduced. Using the cropped size instead of the real surface size breaks the libva API in certain cases, so we simply store and use the original size in our per-surface struct. (If data is cropped on the left/top borders, hw decoding will simply display these - FFmpeg doesn't let us do better.)
* vaapi: fix potential NULL deref on memory allocation failureGravatar wm42015-06-29
|
* vaapi: remove vaDeriveImage() code pathGravatar wm42015-06-29
| | | | | | | In theory, this code path avoids a copy. In practice, it never seems to get enabled at all. But it does have potential for weird bugs or performance issues (like being mapped from non-cacheable memory), so kill it.
* x11: remove trailing spacesGravatar wm42015-06-29
|