aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* vo_opengl: pass the correct target to deband functionsGravatar wm42016-02-18
| | | | | | | | Apple crap (namely hardware decoding interop) forces us to use rectangle textures for input. But after that we continue with normal textures. This was not considered for debanding, and the sampler type used for it can be different depending on the exact render chain. Simply use the target type of the input texture.
* wscript: remove dxva2-dxinterop configure testGravatar Kevin Mitchell2016-02-17
| | | | Wasn't really necessary as it was equivalent to gl-dxinterop.
* vo_opengl: dxinterop: add dxva2 passthroughGravatar Kevin Mitchell2016-02-17
| | | | | Use dxva2 surface to fill RGB IDirect3DSurface9 shared with opengl via DXRegisterObjectNV.
* dxva2: add interop (non-copyback) hwdec_typeGravatar Kevin Mitchell2016-02-17
| | | | | This always falls back to software decoding right now. VO support will be added in future commits.
* vo_opengl: dxinterop: improve error messagesGravatar Kevin Mitchell2016-02-17
| | | | | | | * use mp_HRESULT_to_str/mp_LastError_to_str * make some messages non-identical * replace "GL" -> "OpenGL" * change some MP_FATAL to MP_ERR that don't actually kill the vo
* windows_utils: try and use FormatMessage for errors.Gravatar Kevin Mitchell2016-02-17
| | | | | | This is useful in particular for GetLastError, unfortunately, it's stil pretty dumb with regards to WASAPI or D3D specific errors, so keep the hresult_to_string switch.
* dxva2: avoid using AV_PIX_FMT_P010 directlyGravatar wm42016-02-17
| | | | | | | The new code is essentially equivalent, but compiles against older ffmpeg. Fixes #2832.
* dxva2: use mp_HESULT_to_str on FAILED(hr)Gravatar Kevin Mitchell2016-02-16
|
* dxva2: use mp_image_pool_get_no_alloc for decoder imagesGravatar Kevin Mitchell2016-02-16
| | | | | This makes it more explicit that the pool doesn't ever actually do any allocating itself.
* dxva2: check for failure of mp_image_new_custom_refGravatar Kevin Mitchell2016-02-16
| | | | previously, this may have caused a leak
* dxva2: another attempt at using mp_image poolGravatar Kevin Mitchell2016-02-16
| | | | | | | | | | Apparently, some drivers require you to allocate all of the decoder d3d surfaces at once. This commit changes the strategy from allocating surfaces as needed via mp_image_pool_set_allocator, to allocating all the surfaces in one call to IDirectXVideoDecoderService_CreateSurface and adding them to the pool with mp_image_pool_add. fixes #2822
* mp_image_pool: add mp_image_pool_addGravatar Kevin Mitchell2016-02-16
| | | | | | Provide a way for the user to add mp_images to the pool. This is required for dxva2, for which using set_allocator is extremely awkward since all the d3d9 surfaces must be allocated in advance and all together.
* dxva2: fix license on some newly added files to lgpl v2.1+Gravatar Kevin Mitchell2016-02-16
| | | | | | I mistakenly copied the wrong license text into these files when I created them. Since I'm the only one to have touched these files, it should be OK to change them.
* demux_timeline: cosmetics: move a functionGravatar wm42016-02-16
| | | | Gets rid of a forward declaration.
* demux_timeline: disable cache for inactive segmentsGravatar wm42016-02-16
| | | | | | | | This is achieved indirectly by deslecting all streams for the non- current segment (and if the segment doesn't share the demuxer with the currently active one). Restores functionality added with commit 46bcdb70.
* Rewrite ordered chapters and timeline stuffGravatar wm42016-02-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This uses a different method to piece segments together. The old approach basically changes to a new file (with a new start offset) any time a segment ends. This meant waiting for audio/video end on segment end, and then changing to the new segment all at once. It had a very weird impact on the playback core, and some things (like truly gapless segment transitions, or frame backstepping) just didn't work. The new approach adds the demux_timeline pseudo-demuxer, which presents an uniform packet stream from the many segments. This is pretty similar to how ordered chapters are implemented everywhere else. It also reminds of the FFmpeg concat pseudo-demuxer. The "pure" version of this approach doesn't work though. Segments can actually have different codec configurations (different extradata), and subtitles are most likely broken too. (Subtitles have multiple corner cases which break the pure stream-concatenation approach completely.) To counter this, we do two things: - Reinit the decoder with each segment. We go as far as allowing concatenating files with completely different codecs for the sake of EDL (which also uses the timeline infrastructure). A "lighter" approach would try to make use of decoder mechanism to update e.g. the extradata, but that seems fragile. - Clip decoded data to segment boundaries. This is equivalent to normal playback core mechanisms like hr-seek, but now the playback core doesn't need to care about these things. These two mechanisms are equivalent to what happened in the old implementation, except they don't happen in the playback core anymore. In other words, the playback core is completely relieved from timeline implementation details. (Which honestly is exactly what I'm trying to do here. I don't think ordered chapter behavior deserves improvement, even if it's bad - but I want to get it out from the playback core.) There is code duplication between audio and video decoder common code. This is awful and could be shareable - but this will happen later. Note that the audio path has some code to clip audio frames for the purpose of codec preroll/gapless handling, but it's not shared as sharing it would cause more pain than it would help.
* player: remove old timeline/ordered chapters supportGravatar wm42016-02-15
|
* packet: cosmetics: reorder fieldsGravatar wm42016-02-15
|
* audio/video: expose codec info as separate fieldGravatar wm42016-02-15
| | | | | Preparation for the timeline rewrite. The codec will be able to change, the stream header not.
* video: remove pointless parameter indirectionGravatar wm42016-02-15
| | | | This is always the same value.
* sub: move sub decoder init to a functionGravatar wm42016-02-15
| | | | Preparation for timeline rewrite.
* cocoa: fix charcode retrieving for accented charactersGravatar Alexis Nootens2016-02-15
| | | | | The handler was retrieving an invalid charcode for accented characters, thus ignoring them.
* player: add on_preloaded hookGravatar wm42016-02-15
| | | | (Limited usefulness.)
* player: restore old/correct --force-window behaviorGravatar wm42016-02-15
| | | | | | | | | When playback of a video ends, and the next file has no video at all (no cover art or anything), then the window must be cleared. This also resizes the window forcibly, which is by design. Fixes #2825.
* vo_opengl_cb: unbreak destroying+recreating GL contextGravatar wm42016-02-15
| | | | | | A client API user is allowed to call mpv_opengl_cb_uninit_gl() followed by mpv_opengl_cb_init_gl(). This crashed; fix it by fixing the lifetime of ctx->gl.
* dxva2: support HEVC Main 10Gravatar wm42016-02-15
|
* dxva2: use mp_image pool for d3d surfacesGravatar Kevin Mitchell2016-02-14
| | | | | | | | | | | | | This is required so that the individual surfaces can pass beyond the dxva2 decoder and be passed to the vo. This also adds additional data to mp_image->planes[0] for IMGFMT_DXVA2, which is required for maintaining and releasing the surface even if the decoder code is uninited. The IDirectXVideoDecoder itself is encapsulated together with its surface pool and configuration in a dxva2_decoder structure whose creation and destruction is managed by talloc.
* dxva2: remove unused structure membersGravatar Kevin Mitchell2016-02-14
|
* dxva2: streamline number of surface calculationGravatar Kevin Mitchell2016-02-14
| | | | | use hwdec_get_max_refs and put the "4 base work surfaces" into ADDITIONAL_SURFACES macro.
* client API: explain when mpv_create() can return NULLGravatar wm42016-02-14
|
* demux_mkv: support channel layout in VfW muxed PCMGravatar wm42016-02-14
| | | | Fixes #2820.
* mpv.conf: add some more optionsGravatar wm42016-02-13
| | | | | Seems like questions related to functionality covered by them are quite often asked.
* client API: handle double->int64 conversion correctlyGravatar wm42016-02-13
| | | | It signalled failure instead.
* manpage: normal filters are still active with complex filtersGravatar wm42016-02-12
| | | | It's not exactly obvious how they interact.
* lavfi: dump the filter graphGravatar wm42016-02-12
| | | | | | | | Especially useful to see what video formats are involved on the various filter links. I suspect this function is not available on Libav, so add necessary ifdeffery preemptively.
* ipc: fix uninitialized fieldGravatar wm42016-02-12
| | | | | | | The sockaddr_un.sun_len field was not initialized. It seems our API use is correct by simply making sure it's 0. Fixes CID 1350075.
* player: remove dead codeGravatar wm42016-02-12
| | | | Fixes CID 1350055 and CID 1350054.
* mp_image: force display size to at least 1x1Gravatar wm42016-02-12
| | | | | | | | Don't allow rounding to let it underflow to 0. 0 width or height is simply not allowed and could cause problems otherwhere. Indirectly fixes CID 1350057, which complains about not checking the resulting output size values before using it in divisions.
* player: remove double assignment in declarationGravatar wm42016-02-12
| | | | | | Fixes CID 1350058. (Still looks like this might be valid C, in some fucked up way.)
* sub: remove always-true checkGravatar wm42016-02-12
| | | | | | | Confuses Coverity with FORWARD_NULL on the mp_err() at the end of the function. These pointers are never NULL. Fixes CID 1350059.
* vo_opengl: unconfuse CoverityGravatar wm42016-02-12
| | | | | | | | | It thinks that integer_conv_fbo[index] is implied to be accessed with up to index=5. Although that is theoretical only, it has a point that this makes no sense. Use the same constant for the array allocation, to make it more uniform and robust. Fixes CID 1350060.
* stream_dvb: fix minor resource leaksGravatar wm42016-02-12
| | | | | | Fixes CID 1350062 and 1350061. Just for the sake of shutting up Coverity.
* stream_dvb: remove dead codeGravatar wm42016-02-12
| | | | Fixes CID 1350063.
* ad_lavc: fix --ad-lavc-threads rangeGravatar wm42016-02-11
| | | | | | | The code is shared with the --vd-lavc-threads option, so using 0 for auto-detection just works. But no, this is not useful. Just change it for orthogonality.
* build: enable vaapi under drm-onlyGravatar wm42016-02-11
| | | | Fixes #2808.
* demux: reduce verbosityGravatar wm42016-02-11
| | | | Tired of seeing all these useless pseudo-demuxers in the log.
* video: approximate AVI timestamps via DTS handlingGravatar wm42016-02-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Until now (and in mplayer traditionally), avi timestamps were handled with a timestamp FIFO. AVI timestamps are essentially just strictly increasing frame numbers and are not reordered like normal timestamps. Limiting the FIFO is required because frames can be dropped. To make it worse, frame dropping can't be distinguished from the decoder not returning output due to increasing the buffering required for B-frames. ("Measuring" the buffering at playback start seems like an interesting idea, but won't work as the buffering could be increased mid-playback.) Another problem are skipped frames (packets with data, but which do not contain a video frame). Besides dropped and skipped frames, there is the problem that we can't always know the delay. External decoders like MMAL are not going to tell us. (And later perhaps others, like direct VideoToolbox usage.) In general, this works not-well enough that I prefer the solution of passing through AVI timestamps as DTS. This is slightly incorrect, because most decoders treat DTS as mpeg-style timestamps, which already include a b-frame delay, and thus will be shifted by a few frames. This means there will be a problem with A/V sync in some situations. Note that the FFmpeg AVI demuxer shifts timestamps by an additional amount (which increases after the first seek!?!?), which makes the situation worse. It works well with VfW-muxed Matroska files, though. On RPI, the first X timestamps are broken until the MMAL decoder "locks on".
* manpage: fix indenting issue in vf_formatGravatar Niklas Haas2016-02-11
|
* player: abort loading if there is a problem with complex filtersGravatar wm42016-02-10
|
* lavfi: stop playback on some unrecoverable situationsGravatar wm42016-02-10
| | | | Also improve the error message for the missing label case.