diff options
Diffstat (limited to 'video')
-rw-r--r-- | video/out/gpu/utils.c | 15 | ||||
-rw-r--r-- | video/out/gpu/utils.h | 3 | ||||
-rw-r--r-- | video/out/gpu/video.c | 15 | ||||
-rw-r--r-- | video/sws_utils.c | 3 |
4 files changed, 21 insertions, 15 deletions
diff --git a/video/out/gpu/utils.c b/video/out/gpu/utils.c index 2c625dc26a..8a1aacfff5 100644 --- a/video/out/gpu/utils.c +++ b/video/out/gpu/utils.c @@ -39,6 +39,21 @@ void gl_transform_ortho_fbo(struct gl_transform *t, struct ra_fbo fbo) gl_transform_ortho(t, 0, fbo.tex->params.w, 0, fbo.tex->params.h * y_dir); } +float gl_video_scale_ambient_lux(float lmin, float lmax, + float rmin, float rmax, float lux) +{ + assert(lmax > lmin); + + float num = (rmax - rmin) * (log10(lux) - log10(lmin)); + float den = log10(lmax) - log10(lmin); + float result = num / den + rmin; + + // clamp the result + float max = MPMAX(rmax, rmin); + float min = MPMIN(rmax, rmin); + return MPMAX(MPMIN(result, max), min); +} + void ra_buf_pool_uninit(struct ra *ra, struct ra_buf_pool *pool) { for (int i = 0; i < pool->num_buffers; i++) diff --git a/video/out/gpu/utils.h b/video/out/gpu/utils.h index ac0cbf28d7..215873eec8 100644 --- a/video/out/gpu/utils.h +++ b/video/out/gpu/utils.h @@ -65,6 +65,9 @@ void gl_transform_trans(struct gl_transform t, struct gl_transform *x); void gl_transform_ortho_fbo(struct gl_transform *t, struct ra_fbo fbo); +float gl_video_scale_ambient_lux(float lmin, float lmax, + float rmin, float rmax, float lux); + // A pool of buffers, which can grow as needed struct ra_buf_pool { struct ra_buf_params current_params; diff --git a/video/out/gpu/video.c b/video/out/gpu/video.c index df689b53c3..21e004cd43 100644 --- a/video/out/gpu/video.c +++ b/video/out/gpu/video.c @@ -4239,21 +4239,6 @@ static int validate_error_diffusion_opt(struct mp_log *log, const m_option_t *op return r; } -float gl_video_scale_ambient_lux(float lmin, float lmax, - float rmin, float rmax, float lux) -{ - assert(lmax > lmin); - - float num = (rmax - rmin) * (log10(lux) - log10(lmin)); - float den = log10(lmax) - log10(lmin); - float result = num / den + rmin; - - // clamp the result - float max = MPMAX(rmax, rmin); - float min = MPMIN(rmax, rmin); - return MPMAX(MPMIN(result, max), min); -} - void gl_video_set_ambient_lux(struct gl_video *p, int lux) { if (p->opts.gamma_auto) { diff --git a/video/sws_utils.c b/video/sws_utils.c index 0f1708af3f..5e9c35876a 100644 --- a/video/sws_utils.c +++ b/video/sws_utils.c @@ -213,6 +213,9 @@ struct mp_sws_context *mp_sws_alloc(void *talloc_ctx) // if the user changes any options. void mp_sws_enable_cmdline_opts(struct mp_sws_context *ctx, struct mpv_global *g) { + // Should only ever be NULL for tests. + if (!g) + return; if (ctx->opts_cache) return; |