From 27dc834f37cd2427798c8cb582a574409865d1e7 Mon Sep 17 00:00:00 2001 From: Bin Jin Date: Wed, 28 Oct 2015 01:37:55 +0000 Subject: [PATCH] vo_opengl: implement NNEDI3 prescaler Implement NNEDI3, a neural network based deinterlacer. The shader is reimplemented in GLSL and supports both 8x4 and 8x6 sampling window now. This allows the shader to be licensed under LGPL2.1 so that it can be used in mpv. The current implementation supports uploading the NN weights (up to 51kb with placebo setting) in two different way, via uniform buffer object or hard coding into shader source. UBO requires OpenGL 3.1, which only guarantee 16kb per block. But I find that 64kb seems to be a default setting for recent card/driver (which nnedi3 is targeting), so I think we're fine here (with default nnedi3 setting the size of weights is 9kb). Hard-coding into shader requires OpenGL 3.3, for the "intBitsToFloat()" built-in function. This is necessary to precisely represent these weights in GLSL. I tried several human readable floating point number format (with really high precision as for single precision float), but for some reason they are not working nicely, bad pixels (with NaN value) could be produced with some weights set. We could also add support to upload these weights with texture, just for compatibility reason (etc. upscaling a still image with a low end graphics card). But as I tested, it's rather slow even with 1D texture (we probably had to use 2D texture due to dimension size limitation). Since there is always better choice to do NNEDI3 upscaling for still image (vapoursynth plugin), it's not implemented in this commit. If this turns out to be a popular demand from the user, it should be easy to add it later. For those who wants to optimize the performance a bit further, the bottleneck seems to be: 1. overhead to upload and access these weights, (in particular, the shader code will be regenerated for each frame, it's on CPU though). 2. "dot()" performance in the main loop. 3. "exp()" performance in the main loop, there are various fast implementation with some bit tricks (probably with the help of the intBitsToFloat function). The code is tested with nvidia card and driver (355.11), on Linux. Closes #2230 --- DOCS/man/vo.rst | 30 ++++ video/out/opengl/common.c | 15 +- video/out/opengl/common.h | 4 + video/out/opengl/nnedi3.c | 217 ++++++++++++++++++++++++++++ video/out/opengl/nnedi3.h | 47 ++++++ video/out/opengl/nnedi3_weights.bin | Bin 0 -> 161280 bytes video/out/opengl/utils.c | 29 +++- video/out/opengl/utils.h | 2 + video/out/opengl/video.c | 58 +++++++- video/out/opengl/video.h | 1 + wscript_build.py | 5 + 11 files changed, 403 insertions(+), 5 deletions(-) create mode 100644 video/out/opengl/nnedi3.c create mode 100644 video/out/opengl/nnedi3.h create mode 100644 video/out/opengl/nnedi3_weights.bin diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst index 36ca35d51f..0dc633494e 100644 --- a/DOCS/man/vo.rst +++ b/DOCS/man/vo.rst @@ -565,6 +565,13 @@ Available video output drivers are: Some parameters can be tuned with ``superxbr-sharpness`` and ``superxbr-edge-strength`` options. + ``nnedi3`` + An artificial neural network based deinterlacer, which can be used + to upscale images. + + Extremely slow and requires a recent mid or high end graphics card + to work smoothly (as of 2015). + Note that all the filters above are designed (or implemented) to process luma plane only and probably won't work as intended for video in RGB format. @@ -587,6 +594,29 @@ Available video output drivers are: A value less than 1.0 will disable the check. + ``nnedi3-neurons=<16|32|64|128>`` + Specify the neurons for nnedi3 prescaling (defaults to be 32). The + rendering time is expected to be linear to the number of neurons. + + ``nnedi3-window=<8x4|8x6>`` + Specify the size of local window for sampling in nnedi3 prescaling + (defaults to be ``8x4``). The ``8x6`` window produces sharper images, + but is also slower. + + ``nnedi3-upload=`` + Specify how to upload the NN weights to GPU. Depending on the graphics + card, driver, shader compiler and nnedi3 settings, both method can be + faster or slower. + + ``ubo`` + Upload these weights via uniform buffer objects. This is the + default. (requires OpenGL 3.1) + + ``shader`` + Hard code all the weights into the shader source code. (requires + OpenGL 3.3) + + ``pre-shaders=``, ``post-shaders=``, ``scale-shader=`` Custom GLSL fragment shaders. diff --git a/video/out/opengl/common.c b/video/out/opengl/common.c index fae969ee2a..194c5d59a1 100644 --- a/video/out/opengl/common.c +++ b/video/out/opengl/common.c @@ -104,6 +104,7 @@ static const struct gl_functions gl_functions[] = { DEF_FN(AttachShader), DEF_FN(BindAttribLocation), DEF_FN(BindBuffer), + DEF_FN(BindBufferBase), DEF_FN(BindTexture), DEF_FN(BlendFuncSeparate), DEF_FN(BufferData), @@ -315,6 +316,16 @@ static const struct gl_functions gl_functions[] = { {0} }, }, + // uniform buffer object extensions, requires OpenGL 3.1. + { + .ver_core = 310, + .extension = "ARB_uniform_buffer_object", + .functions = (const struct gl_function[]) { + DEF_FN(GetUniformBlockIndex), + DEF_FN(UniformBlockBinding), + {0} + }, + }, }; #undef FN_OFFS @@ -466,10 +477,10 @@ void mpgl_load_functions2(GL *gl, void *(*get_fn)(void *ctx, const char *n), gl->glsl_version = 120; if (gl->version >= 300) gl->glsl_version = 130; - // Specifically needed for OSX (normally we request 3.0 contexts only, but - // OSX always creates 3.2 contexts when requesting a core context). if (gl->version >= 320) gl->glsl_version = 150; + if (gl->version >= 330) + gl->glsl_version = 330; } if (is_software_gl(gl)) { diff --git a/video/out/opengl/common.h b/video/out/opengl/common.h index 3f5ab0ebde..d87be595ba 100644 --- a/video/out/opengl/common.h +++ b/video/out/opengl/common.h @@ -192,6 +192,7 @@ struct GL { void (GLAPIENTRY *GenBuffers)(GLsizei, GLuint *); void (GLAPIENTRY *DeleteBuffers)(GLsizei, const GLuint *); void (GLAPIENTRY *BindBuffer)(GLenum, GLuint); + void (GLAPIENTRY *BindBufferBase)(GLenum, GLuint, GLuint); GLvoid * (GLAPIENTRY * MapBuffer)(GLenum, GLenum); GLboolean (GLAPIENTRY *UnmapBuffer)(GLenum); void (GLAPIENTRY *BufferData)(GLenum, intptr_t, const GLvoid *, GLenum); @@ -260,6 +261,9 @@ struct GL { GLint (GLAPIENTRY *GetVideoSync)(GLuint *); GLint (GLAPIENTRY *WaitVideoSync)(GLint, GLint, unsigned int *); + GLuint (GLAPIENTRY *GetUniformBlockIndex)(GLuint, const GLchar *); + void (GLAPIENTRY *UniformBlockBinding)(GLuint, GLuint, GLuint); + void (GLAPIENTRY *DebugMessageCallback)(MP_GLDEBUGPROC callback, const void *userParam); diff --git a/video/out/opengl/nnedi3.c b/video/out/opengl/nnedi3.c new file mode 100644 index 0000000000..fb704d2ab6 --- /dev/null +++ b/video/out/opengl/nnedi3.c @@ -0,0 +1,217 @@ +/* + * This file is part of mpv. + * + * mpv is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * mpv is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with mpv. If not, see . + * + * You can alternatively redistribute this file and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + */ + +#include "nnedi3.h" + +#include +#include +#include + +#include + +#include "video.h" + +#define GLSL(x) gl_sc_add(sc, #x "\n"); +#define GLSLF(...) gl_sc_addf(sc, __VA_ARGS__) +#define GLSLH(x) gl_sc_hadd(sc, #x "\n"); +#define GLSLHF(...) gl_sc_haddf(sc, __VA_ARGS__) + +const struct nnedi3_opts nnedi3_opts_def = { + .neurons = 1, + .window = 0, + .upload = NNEDI3_UPLOAD_UBO, +}; + +#define OPT_BASE_STRUCT struct nnedi3_opts +const struct m_sub_options nnedi3_conf = { + .opts = (const m_option_t[]) { + OPT_CHOICE("neurons", neurons, 0, + ({"16", 0}, + {"32", 1}, + {"64", 2}, + {"128", 3})), + OPT_CHOICE("window", window, 0, + ({"8x4", 0}, + {"8x6", 1})), + OPT_CHOICE("upload", upload, 0, + ({"ubo", NNEDI3_UPLOAD_UBO}, + {"shader", NNEDI3_UPLOAD_SHADER})), + {0} + }, + .size = sizeof(struct nnedi3_opts), + .defaults = &nnedi3_opts_def, +}; + +const static char nnedi3_weights[40320 * 4 + 1] = +#include "video/out/opengl/nnedi3_weights.inc" +; + +const int nnedi3_weight_offsets[9] = + {0, 1088, 3264, 7616, 16320, 17920, 21120, 27520, 40320}; + +const int nnedi3_neurons[4] = {16, 32, 64, 128}; +const int nnedi3_window_width[2] = {8, 8}; +const int nnedi3_window_height[2] = {4, 6}; + +const float* get_nnedi3_weights(const struct nnedi3_opts *conf, int *size) +{ + int idx = conf->window * 4 + conf->neurons; + const int offset = nnedi3_weight_offsets[idx]; + *size = (nnedi3_weight_offsets[idx + 1] - offset) * 4; + return (const float*)(nnedi3_weights + offset * 4); +} + +void pass_nnedi3(struct gl_shader_cache *sc, int planes, int tex_num, + int step, const struct nnedi3_opts *conf, + struct gl_transform *transform) +{ + assert(0 <= step && step < 2); + + if (!conf) + conf = &nnedi3_opts_def; + + const int neurons = nnedi3_neurons[conf->neurons]; + const int width = nnedi3_window_width[conf->window]; + const int height = nnedi3_window_height[conf->window]; + + const int offset = nnedi3_weight_offsets[conf->window * 4 + conf->neurons]; + const uint32_t *weights = (const int*)(nnedi3_weights + offset * 4); + + GLSLF("// nnedi3 (tex %d, step %d, neurons %d, window %dx%d, mode %d)\n", + tex_num, step + 1, neurons, width, height, conf->upload); + + // This is required since each row will be encoded into vec4s + assert(width % 4 == 0); + const int sample_count = width * height / 4; + + if (conf->upload == NNEDI3_UPLOAD_UBO) { + char buf[32]; + snprintf(buf, sizeof(buf), "vec4 weights[%d];", + neurons * (sample_count * 2 + 1)); + gl_sc_uniform_buffer(sc, "NNEDI3_WEIGHTS", buf, 0); + } else if (conf->upload == NNEDI3_UPLOAD_SHADER) { + // Somehow necessary for hard coding approach. + GLSLH(#pragma optionNV(fastprecision on)) + } + + GLSLHF("float nnedi3(sampler2D tex, vec2 pos, vec2 tex_size, int plane) {\n"); + + if (step == 0) { + *transform = (struct gl_transform){{{1.0,0.0}, {0.0,2.0}}, {0.0,-0.5}}; + + GLSLH(if (fract(pos.y * tex_size.y) < 0.5) + return texture(tex, pos + vec2(0, 0.25) / tex_size)[plane];) + GLSLHF("#define GET(i, j) " + "(texture(tex, pos+vec2((i)-(%f),(j)-(%f)+0.25)/tex_size)[plane])\n", + width / 2.0 - 1, (height - 1) / 2.0); + } else { + *transform = (struct gl_transform){{{2.0,0.0}, {0.0,1.0}}, {-0.5,0.0}}; + + GLSLH(if (fract(pos.x * tex_size.x) < 0.5) + return texture(tex, pos + vec2(0.25, 0) / tex_size)[plane];) + GLSLHF("#define GET(i, j) " + "(texture(tex, pos+vec2((j)-(%f)+0.25,(i)-(%f))/tex_size)[plane])\n", + (height - 1) / 2.0, width / 2.0 - 1); + } + + GLSLHF("vec4 samples[%d];\n", sample_count); + + for (int y = 0; y < height; y++) + for (int x = 0; x < width; x += 4) { + GLSLHF("samples[%d] = vec4(GET(%d, %d), GET(%d, %d)," + "GET(%d, %d), GET(%d, %d));\n", + (y * width + x) / 4, x, y, x+1, y, x+2, y, x+3, y); + } + + GLSLHF("float sum = 0, sumsq = 0;" + "for (int i = 0; i < %d; i++) {" + "sum += dot(samples[i], vec4(1.0));" + "sumsq += dot(samples[i], samples[i]);" + "}\n", sample_count); + + GLSLHF("float mstd0 = sum / %d.0;\n" + "float mstd1 = sumsq / %d.0 - mstd0 * mstd0;\n" + "float mstd2 = mix(0, inversesqrt(mstd1), mstd1 >= %.12e);\n" + "mstd1 *= mstd2;\n", + width * height, width * height, FLT_EPSILON); + + GLSLHF("float vsum = 0, wsum = 0, sum1, sum2;\n"); + + if (conf->upload == NNEDI3_UPLOAD_SHADER) { + GLSLH(#define T(x) intBitsToFloat(x)) + GLSLH(#define W(i,w0,w1,w2,w3) dot(samples[i],vec4(T(w0),T(w1),T(w2),T(w3)))) + + GLSLHF("#define WS(w0,w1) " + "sum1 = exp(sum1 * mstd2 + T(w0));" + "sum2 = sum2 * mstd2 + T(w1);" + "wsum += sum1;" + "vsum += sum1*(sum2/(1+abs(sum2)));\n"); + + for (int n = 0; n < neurons; n++) { + const uint32_t *weights_ptr = weights + (sample_count * 2 + 1) * 4 * n; + for (int s = 0; s < 2; s++) { + GLSLHF("sum%d", s + 1); + for (int i = 0; i < sample_count; i++) { + GLSLHF("%cW(%d,%d,%d,%d,%d)", i == 0 ? '=' : '+', i, + (int)av_le2ne32(weights_ptr[0]), + (int)av_le2ne32(weights_ptr[1]), + (int)av_le2ne32(weights_ptr[2]), + (int)av_le2ne32(weights_ptr[3])); + weights_ptr += 4; + } + GLSLHF(";"); + } + GLSLHF("WS(%d,%d);\n", (int)av_le2ne32(weights_ptr[0]), + (int)av_le2ne32(weights_ptr[1])); + } + } else if (conf->upload == NNEDI3_UPLOAD_UBO) { + GLSLH(int idx = 0;) + + GLSLHF("for (int n = 0; n < %d; n++) {\n", neurons); + + for (int s = 0; s < 2; s++) { + GLSLHF("sum%d = 0;\n" + "for (int i = 0; i < %d; i++) {" + "sum%d += dot(samples[i], weights[idx++]);" + "}\n", + s + 1, sample_count, s + 1); + } + + GLSLH(sum1 = exp(sum1 * mstd2 + weights[idx][0]); + sum2 = sum2 * mstd2 + weights[idx++][1]; + wsum += sum1; + vsum += sum1*(sum2/(1+abs(sum2)));) + + GLSLHF("}\n"); + } + + GLSLH(return clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0, 1);) + + GLSLHF("}\n"); // nnedi3 + + GLSL(vec4 color = vec4(1.0);) + + for (int i = 0; i < planes; i++) { + GLSLF("color[%d] = nnedi3(texture%d, texcoord%d, texture_size%d, %d);\n", + i, tex_num, tex_num, tex_num, i); + } +} diff --git a/video/out/opengl/nnedi3.h b/video/out/opengl/nnedi3.h new file mode 100644 index 0000000000..ae0104ef04 --- /dev/null +++ b/video/out/opengl/nnedi3.h @@ -0,0 +1,47 @@ +/* + * This file is part of mpv. + * + * mpv is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * mpv is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with mpv. If not, see . + * + * You can alternatively redistribute this file and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + */ + +#ifndef MP_GL_NNEDI3_H +#define MP_GL_NNEDI3_H + +#include "common.h" +#include "utils.h" + +#define NNEDI3_UPLOAD_UBO 0 +#define NNEDI3_UPLOAD_SHADER 1 + +struct nnedi3_opts { + int neurons; + int window; + int upload; +}; + +extern const struct nnedi3_opts nnedi3_opts_def; +extern const struct m_sub_options nnedi3_conf; + +const float* get_nnedi3_weights(const struct nnedi3_opts *conf, int *size); + +void pass_nnedi3(struct gl_shader_cache *sc, int planes, int tex_num, + int step, const struct nnedi3_opts *conf, + struct gl_transform *transform); + +#endif diff --git a/video/out/opengl/nnedi3_weights.bin b/video/out/opengl/nnedi3_weights.bin new file mode 100644 index 0000000000000000000000000000000000000000..e1659d848c1a2f1fd3d3634dc3444f35576a6cf2 GIT binary patch literal 161280 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≻LqAO24j~cy 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� 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

9&$OEgs@wMSWs1#Qrn!W79=r=2 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 literal 0 HcmV?d00001 diff --git a/video/out/opengl/utils.c b/video/out/opengl/utils.c index 0026090df9..6ddb333e47 100644 --- a/video/out/opengl/utils.c +++ b/video/out/opengl/utils.c @@ -482,6 +482,7 @@ enum uniform_type { UT_i, UT_f, UT_m, + UT_buffer, }; struct sc_uniform { @@ -493,6 +494,10 @@ struct sc_uniform { union { GLfloat f[9]; GLint i[4]; + struct { + char* text; + GLint binding; + } buffer; } v; }; @@ -535,8 +540,11 @@ void gl_sc_reset(struct gl_shader_cache *sc) { sc->text[0] = '\0'; sc->header_text[0] = '\0'; - for (int n = 0; n < sc->num_uniforms; n++) + for (int n = 0; n < sc->num_uniforms; n++) { talloc_free(sc->uniforms[n].name); + if (sc->uniforms[n].type == UT_buffer) + talloc_free(sc->uniforms[n].v.buffer.text); + } sc->num_uniforms = 0; } @@ -697,6 +705,15 @@ void gl_sc_uniform_mat3(struct gl_shader_cache *sc, char *name, transpose3x3(&u->v.f[0]); } +void gl_sc_uniform_buffer(struct gl_shader_cache *sc, char *name, + const char *text, int binding) +{ + struct sc_uniform *u = find_uniform(sc, name); + u->type = UT_buffer; + u->v.buffer.text = talloc_strdup(sc, text); + u->v.buffer.binding = binding; +} + // This will call glBindAttribLocation() on the shader before it's linked // (OpenGL requires this to happen before linking). Basically, it associates // the input variable names with the fields in the vao. @@ -723,6 +740,11 @@ static const char *vao_glsl_type(const struct gl_vao_entry *e) // Assumes program is current (gl->UseProgram(program)). static void update_uniform(GL *gl, GLuint program, struct sc_uniform *u) { + if (u->type == UT_buffer) { + GLuint idx = gl->GetUniformBlockIndex(program, u->name); + gl->UniformBlockBinding(program, idx, u->v.buffer.binding); + return; + } GLint loc = gl->GetUniformLocation(program, u->name); if (loc < 0) return; @@ -885,7 +907,10 @@ void gl_sc_gen_shader_and_reset(struct gl_shader_cache *sc) ADD(frag, "%s", frag_vaos); for (int n = 0; n < sc->num_uniforms; n++) { struct sc_uniform *u = &sc->uniforms[n]; - ADD(frag, "uniform %s %s;\n", u->glsl_type, u->name); + if (u->type == UT_buffer) + ADD(frag, "uniform %s { %s };\n", u->name, u->v.buffer.text); + else + ADD(frag, "uniform %s %s;\n", u->glsl_type, u->name); } // custom shader header if (sc->header_text[0]) { diff --git a/video/out/opengl/utils.h b/video/out/opengl/utils.h index 8682366a24..fa76ee85a8 100644 --- a/video/out/opengl/utils.h +++ b/video/out/opengl/utils.h @@ -139,6 +139,8 @@ void gl_sc_uniform_mat2(struct gl_shader_cache *sc, char *name, bool transpose, GLfloat *v); void gl_sc_uniform_mat3(struct gl_shader_cache *sc, char *name, bool transpose, GLfloat *v); +void gl_sc_uniform_buffer(struct gl_shader_cache *sc, char *name, + const char *text, int binding); void gl_sc_set_vao(struct gl_shader_cache *sc, struct gl_vao *vao); void gl_sc_gen_shader_and_reset(struct gl_shader_cache *sc); void gl_sc_reset(struct gl_shader_cache *sc); diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c index b69330d1a9..cd638ccd5e 100644 --- a/video/out/opengl/video.c +++ b/video/out/opengl/video.c @@ -39,6 +39,7 @@ #include "osd.h" #include "stream/stream.h" #include "superxbr.h" +#include "nnedi3.h" #include "video_shaders.h" #include "video/out/filter_kernels.h" #include "video/out/aspect.h" @@ -156,6 +157,8 @@ struct gl_video { GLuint dither_texture; int dither_size; + GLuint nnedi3_weights_buffer; + struct mp_image_params real_image_params; // configured format struct mp_image_params image_params; // texture format (mind hwdec case) struct mp_imgfmt_desc image_desc; @@ -444,12 +447,16 @@ const struct m_sub_options gl_video_conf = { OPT_FLAG("deband", deband, 0), OPT_SUBSTRUCT("deband", deband_opts, deband_conf, 0), OPT_FLOAT("sharpen", unsharp, 0), - OPT_CHOICE("prescale", prescale, 0, ({"none", 0}, {"superxbr", 1})), + OPT_CHOICE("prescale", prescale, 0, + ({"none", 0}, + {"superxbr", 1}, + {"nnedi3", 2})), OPT_INTRANGE("prescale-passes", prescale_passes, 0, 1, MAX_PRESCALE_PASSES), OPT_FLOATRANGE("prescale-downscaling-threshold", prescale_downscaling_threshold, 0, 0.0, 32.0), OPT_SUBSTRUCT("superxbr", superxbr_opts, superxbr_conf, 0), + OPT_SUBSTRUCT("nnedi3", nnedi3_opts, nnedi3_conf, 0), OPT_REMOVED("approx-gamma", "this is always enabled now"), OPT_REMOVED("cscale-down", "chroma is never downscaled"), @@ -597,6 +604,8 @@ static void uninit_rendering(struct gl_video *p) gl->DeleteTextures(1, &p->dither_texture); p->dither_texture = 0; + gl->DeleteBuffers(1, &p->nnedi3_weights_buffer); + fbotex_uninit(&p->chroma_merge_fbo); fbotex_uninit(&p->chroma_deband_fbo); fbotex_uninit(&p->indirect_fbo); @@ -1202,6 +1211,10 @@ static void pass_prescale(struct gl_video *p, int src_tex_num, int dst_tex_num, pass_superxbr(p->sc, planes, tex_num, step, p->opts.superxbr_opts, &transform); break; + case 2: + pass_nnedi3(p->sc, planes, tex_num, step, + p->opts.nnedi3_opts, &transform); + break; default: abort(); } @@ -1230,6 +1243,27 @@ static bool pass_prescale_luma(struct gl_video *p, float tex_mul, struct src_tex *prescaled_tex, int *prescaled_planes) { + if (p->opts.prescale == 2 && + p->opts.nnedi3_opts->upload == NNEDI3_UPLOAD_UBO) + { + // nnedi3 are configured to use uniform buffer objects. + if (!p->nnedi3_weights_buffer) { + p->gl->GenBuffers(1, &p->nnedi3_weights_buffer); + p->gl->BindBufferBase(GL_UNIFORM_BUFFER, 0, + p->nnedi3_weights_buffer); + int weights_size; + const float *weights = + get_nnedi3_weights(p->opts.nnedi3_opts, &weights_size); + + MP_VERBOSE(p, "Uploading NNEDI3 weights via uniform buffer (size=%d)\n", + weights_size); + + // We don't know the endianness of GPU, just assume it's little + // endian. + p->gl->BufferData(GL_UNIFORM_BUFFER, weights_size, weights, + GL_STATIC_DRAW); + } + } // number of passes to apply prescaler, can be zero. int prescale_passes = get_prescale_passes(p); @@ -2384,6 +2418,22 @@ static void check_gl_features(struct gl_video *p) p->opts.deband = 0; MP_WARN(p, "Disabling debanding (GLSL version too old).\n"); } + + if (p->opts.prescale == 2) { + if (p->opts.nnedi3_opts->upload == NNEDI3_UPLOAD_UBO) { + // Check features for uniform buffer objects. + if (!p->gl->GetUniformBlockIndex || !p->gl->UniformBlockBinding) { + MP_WARN(p, "Disabling NNEDI3 (OpenGL 3.1 required).\n"); + p->opts.prescale = 0; + } + } else if (p->opts.nnedi3_opts->upload == NNEDI3_UPLOAD_SHADER) { + // Check features for hard coding approach. + if (p->gl->glsl_version < 330) { + MP_WARN(p, "Disabling NNEDI3 (OpenGL 3.3 required).\n"); + p->opts.prescale = 0; + } + } + } } static void init_gl(struct gl_video *p) @@ -2708,6 +2758,7 @@ static void assign_options(struct gl_video_opts *dst, struct gl_video_opts *src) talloc_free(dst->post_shaders); talloc_free(dst->deband_opts); talloc_free(dst->superxbr_opts); + talloc_free(dst->nnedi3_opts); *dst = *src; @@ -2719,6 +2770,11 @@ static void assign_options(struct gl_video_opts *dst, struct gl_video_opts *src) src->superxbr_opts); } + if (src->nnedi3_opts) { + dst->nnedi3_opts = m_sub_options_copy(NULL, &nnedi3_conf, + src->nnedi3_opts); + } + for (int n = 0; n < 4; n++) { dst->scaler[n].kernel.name = (char *)handle_scaler_opt(dst->scaler[n].kernel.name, n == 3); diff --git a/video/out/opengl/video.h b/video/out/opengl/video.h index 0ed7b7cb41..df55ede27d 100644 --- a/video/out/opengl/video.h +++ b/video/out/opengl/video.h @@ -102,6 +102,7 @@ struct gl_video_opts { int prescale_passes; float prescale_downscaling_threshold; struct superxbr_opts *superxbr_opts; + struct nnedi3_opts *nnedi3_opts; }; extern const struct m_sub_options gl_video_conf; diff --git a/wscript_build.py b/wscript_build.py index b6836a7beb..0bb0bc0620 100644 --- a/wscript_build.py +++ b/wscript_build.py @@ -57,6 +57,10 @@ def build(ctx): source = "sub/osd_font.otf", target = "sub/osd_font.h") + ctx.file2string( + source = "video/out/opengl/nnedi3_weights.bin", + target = "video/out/opengl/nnedi3_weights.inc") + lua_files = ["defaults.lua", "assdraw.lua", "options.lua", "osc.lua", "ytdl_hook.lua"] for fn in lua_files: @@ -324,6 +328,7 @@ def build(ctx): ( "video/out/opengl/hwdec_osx.c", "videotoolbox-gl" ), ( "video/out/opengl/hwdec_vdpau.c", "vdpau-gl-x11" ), ( "video/out/opengl/lcms.c", "gl" ), + ( "video/out/opengl/nnedi3.c", "gl" ), ( "video/out/opengl/osd.c", "gl" ), ( "video/out/opengl/superxbr.c", "gl" ), ( "video/out/opengl/utils.c", "gl" ),