aboutsummaryrefslogtreecommitdiffhomepage
path: root/video
Commit message (Collapse)AuthorAge
* vf: vf_stereo3d depends on libavfilterGravatar wm42015-09-11
|
* video: make --field-dominance set interlaced flagGravatar Kevin Mitchell2015-09-10
| | | | fixes #2289
* vo_rpi: fix compilationGravatar wm42015-09-11
| | | | The recent OpenGL refactor commits forgot to update this file.
* video: do not use deprecated libavutil pixdesc fieldsGravatar wm42015-09-10
| | | | | | These were normalized and are saner now. We want to use the new fields, and also get rid of the deprecation warnings, so use them. There's no release yet which uses these, so some ifdeffery is unfortunately needed.
* vo_opengl: fix shader compilation with debanding and OSX hwdecGravatar wm42015-09-10
| | | | | | 2 things are being stupid here: Apple for requiring rectangle textures with their IOSurface interop for no reason, and OpenGL having a different sampler type for rectangle textures.
* vo_opengl: move sampler type mapping to a functionGravatar wm42015-09-10
|
* vo_opengl: fix deband sub-option handlingGravatar wm42015-09-09
| | | | This all has to be done manually.
* vo_opengl: implement debanding (and remove source-shader)Gravatar Niklas Haas2015-09-09
| | | | | | | | | | The removal of source-shader is a side effect, since this effectively replaces it - and the video-reading code has been significantly restructured to make more sense and be more readable. This means users no longer have to constantly download and maintain a separate deband.glsl installation alongside mpv, which was the only real use case for source-shader that we found either way.
* vo_opengl: move self-contained shader routines to a separate fileGravatar Niklas Haas2015-09-09
| | | | | | | | | | | This is mostly to cut down somewhat on the amount of code bloat in video.c by moving out helper functions (including scaler kernels and color management routines) to a separate file. It would certainly be possible to move out more functions (eg. dithering or CMS code) with some extra effort/refactoring, but this is a start. Signed-off-by: wm4 <wm4@nowhere>
* vo_opengl: reduce code duplication for scaler optionsGravatar Niklas Haas2015-09-09
| | | | | This simple refactor cuts down on the immense amount of overhead and duplication across all of the related scale-* options.
* vo_opengl: remove gl_ prefixes from files in video/out/openglGravatar Niklas Haas2015-09-09
| | | | | This is a bit redundant with the name of the directory itself, and not in line with existing naming conventions.
* vo_opengl: move gl_* files to their own subdirGravatar Niklas Haas2015-09-09
| | | | | This is mainly just to keep things a bit more organized and separated inside the codebase.
* vo_opengl: minor refactorGravatar Niklas Haas2015-09-09
| | | | | Just making the argument order for pass_load_fbotex more consistent with finish_pass_fbo.
* vo_opengl: filter allowed options in dumb-modeGravatar wm42015-09-08
| | | | | | | Instead of the other way around of disabling disallowed options. This is more robust and also slightly simpler, at least conceptually. If new vo_opengl features are added, they don't need to be explicitly disabled for dumb-mode just to avoid that it accidentally breaks.
* vo_opengl: move gl_video_opts copying code to separate functionGravatar wm42015-09-08
| | | | | | | | | | Sigh... Hopefully this code will be completely unnecessary one day, as it's only needed due to the sub-option parser craziness. Move dumb_mode to the top of the struct, so the C universal initializer doesn't cause warnings with all those broken compilers.
* vo_opengl: restore single pass optimization as separate code pathGravatar wm42015-09-07
| | | | | | | | | | | | | | | | | | | | | | The single path optimization, rendering the video in one shader pass and without FBO indirections, was removed soem commits ago. It didn't have a place in this code, and caused considerable complexity and maintenance issues. On the other hand, it still has some worth, such as for use with extremely crappy hardware (GLES only or OpenGL 2.1 without FBO extension). Ideally, these use cases would be handled by a separate VO (say, vo_gles). While cleaner, this would still cause code duplication and other complexity. The third option is making the single-pass optimization a completely separate code path, with most vo_opengl features disabled. While this does duplicate some functionality (such as "unpacking" the video data from textures), it's also relatively unintrusive, and the high quality code path doesn't need to take it into account at all. On another positive node, this "dumb-mode" could be forced in other cases where OpenGL 2.1 is not enough, and where we don't want to care about versions this old.
* vo_opengl: move video source rectangle computation to a functionGravatar wm42015-09-07
| | | | Needed for the following commit.
* vo_opengl: comsetics: remove unnecessary line breakGravatar wm42015-09-07
|
* vo_opengl: require FBOs and get rid of the single-pass optimizationGravatar Niklas Haas2015-09-07
| | | | | | | This change makes vo_opengl slightly less compatible (ancient devices without FBOs will no longer work) and decreases performance in the simplest case (vo=opengl), in exchange for significantly reducing code complexity and making everything easier to reason about.
* vo_opengl: use the correct attribute name for vertex positionGravatar wm42015-09-04
| | | | | | This didn't seem entirely sane. It probably worked by accident, because "position" is always the first attribute, and thus the default value 0 for the location was always correct.
* vd_lavc: better hwdec log outputGravatar wm42015-09-02
| | | | | | | | | | | | Often, we don't know whether hardware decoding will work until we've tried. (This used to be different, but API changes and improvements in libavcodec led to this situation.) We will often output that we're going to use hardware decoding, and then print a fallback warning. Instead, print the status once we have decoded a frame. Some of the old messages are turned into verbose messages, which should be helpful for debugging. Also add some new ones.
* vd_lavc: factor all hwdec fallbacks into the same functionGravatar wm42015-09-02
| | | | | | | | The fallback at initialization time was basically duplicated, maybe for the sake of showing a different error message. This doesn't matter anymore; not much can fail at initialization anymore. Most meaningful and common errors happen either at probing or in get_format (when the actual hw decoder is initialized).
* vo_opengl: improve robustness against PBO failureGravatar wm42015-09-02
| | | | | | | | | | | | | | If PBO upload fails, disable PBOs and revert to the normal codepath. In theory we should retry PBO upload on failure (because OpenGL specifies that it can sporadically fail), but since it normally doesn't happen, and the fallback will work, I'm not bothering. Some restructuring is needed, since glUnmapBuffer needs to be called earlier. In fact, the old code structure didn't make too much sense, and is a leftover from MPlayer's direct rendering support, which let the decoder decode to a PBO-mapped region. This means the buffer_ptr field can be dropped. Drop buffer_size as well, since it only had 2 possible values (0 or the size required for the current config).
* vo_opengl: enable pbo by default with opengl-hqGravatar wm42015-09-02
| | | | | | | | | Can significantly help with very large video resolutions on nvidia drivers. It doesn't seem to have negative effects on Intel drivers either. (Although it could have on Intel drivers for older hardware.) For now, this is only for --vo=opengl-hq. Maybe --vo=opengl should use it too, but it's still meant to be the crappy, fail-safe default.
* vo_opengl: slightly simplify plane size determinationGravatar wm42015-09-02
| | | | | | | | Setup a dummy image for the given image params, and get the plane sizes from that. Admittedly not much of a simplification, but conceptually it's simpler and less error-prone, as the image layout is guaranteed to be the same, rather than essentially duplicating the way it is determined.
* vo_opengl: don't distinguish "real" and texture sizeGravatar wm42015-09-02
| | | | | | | | This is from times when we supported padded/non-NPOT textures. The difference is not useful anymore, and theoretical support for different sizes is most likely buggy and unmaintained. So remove it. Also remove the tex_ prefix wherever it appears.
* vo_opengl: simplify PBO copyGravatar wm42015-09-02
| | | | | | | | Use mp_image_copy() instead of copying manually. (This function checks whether the destination is regarded writeable, which it is not, because the destination is the source image with changed pointers, so refcounting has to be removed from the destination image by resetting mpi->bufs.)
* vo_opengl: rename get_image to map_imageGravatar wm42015-09-02
|
* vo_opengl: remove redundant statement in PBO codeGravatar wm42015-09-02
| | | | | | | | This shouldn't be needed anymore. Textures are now always allocated with the exact size. Any padding (including non-NPOT support) is gone. The texture sizes will always match the memory plane sizes. Drop the unused and forgotten "npot" field from the option struct too.
* vo_opengl: remove some leftoversGravatar wm42015-09-01
| | | | Forgotten in the previous commit.
* vo_opengl, vda: return to old stateGravatar wm42015-09-01
| | | | | | | | Undo 292266f2. Reapply 3e12e79b. An additional copy is not really justified, as it could reduce performance. On the other hand, we can force API users to create a GL 3.x context.
* vo_rpi, vo_opengl: do not globally terminate EGL on VO uninitGravatar wm42015-08-31
| | | | | | | | | eglTerminate() affects the EGLDisplay in all threads. Since the RPI firmware apparently only ever uses EGL_DEFAULT_DISPLAY, this means it will trash all other contexts on other threads in the same process. Thus we don't call eglTerminate() at all, at least on RPI. Call eglReleaseThread() instead (which may or may not be a NOP).
* vo_opengl: fix alpha video in one caseGravatar wm42015-08-30
| | | | | | | | | yuva444p worked, yuva420p didn't. This happened because the chroma pass discards the alpha plane, which is referenced by the alpha blend code later. Add a terrible hack to work this around, actually using the same hack as was used for the Y plane. (A terrible hack for terrible code.)
* video: make container vs. bitstream aspect ratio configurableGravatar wm42015-08-30
| | | | | | Utterly idiotic bullshit. Fixes #2259.
* w32: shift drag and drop appendsGravatar Kevin Mitchell2015-08-30
| | | | use the append to playlist functionality if shift is pressed while dropping
* x11: drag and drop append with modifierGravatar Kevin Mitchell2015-08-30
| | | | | | | If the drag and drop action is anything other than XdndActionCopy, append the dropped files rather than replacing the existing playlist. With most file managers, this will mean at least pressing shift while dropping.
* input: add append argument to file drop eventGravatar Kevin Mitchell2015-08-30
| | | | | | This puts in place the machinery to merely append dropped file to the playlist instead of replacing the existing playlist. In this commit, all front-ends set this to false preserving the existing behaviour.
* vo_opengl: force redraw when framestepping with interpolationGravatar wm42015-08-25
| | | | | | | | | | | | | | | | This might fix some problems when framestepping with interpolation enabled. The problem here is that we want to show the non-interpolated frame while paused. Framestepping is like unpausing the video for a frame, and then pausing again. This draws an interpolated frame, and redrawing on pausing is supposed to take care of this. This possibly didn't always work, because vo->want_redraw is not checked by the vo_control() code path. So wake up the VO thread (which takes care of servicing redraw requests, kind of) explicitly. The correct solution is getting rid of the public-writable want_redraw field and replacing it with a new vo_request_redraw() function, but this can come later.
* vd_lavc: bump number of allocated surfaces for hwdec with HEVCGravatar wm42015-08-24
|
* vaapi: add HEVC profile entriesGravatar wm42015-08-24
| | | | | | | libavcodec does not support HEVC via VAAPI yet, so this won't work. However, there is ongoing work to add HEVC support to VAAPI, and this change might help with testing. (Or maybe not - but there is no harm in this change.)
* vda, videotoolbox: guard against unexpected pixel formatGravatar wm42015-08-23
| | | | | | Should not happen, but since we don't control decoder video surface allocation, anything could happen, and the code should be able to deal with it. Untested.
* vda, videotoolbox: fix broken condition in screenshot codeGravatar wm42015-08-23
| | | | Fixes #2237.
* vo_opengl: remove dead codeGravatar wm42015-08-22
| | | | Leftover from 3245bfef.
* gl_wayland: Wait for frame callbacksGravatar Jari Vetoniemi2015-08-21
| | | | | Keep glSwapInterval(0) on to avoid blocking on gl calls, but wait for frame callbacks so we play nice with compositor.
* vo_wayland: Wait for frame callbacksGravatar Jari Vetoniemi2015-08-21
| | | | | | | Privdes small api for vo_wayland where one can request frame callback and then wait for it. This will make vo_wayland play video smoothly.
* gl_wayland: eglSwapInterval(0) to avoid blockingGravatar Jari Vetoniemi2015-08-21
| | | | This makes mesa not wait for frame callback internally.
* 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.
* 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.)