diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-04-23 21:13:58 +0300 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-04-23 21:34:51 +0300 |
commit | b57f9f57240a8143b7c64b8f3e94454dc8895b34 (patch) | |
tree | b0385ed07706898acc6c26c6c46df077eb3f653a /libswscale/utils.c | |
parent | 2a7128f4ed00dbc9209d6f24501bb76a0c14b490 (diff) |
swscale/swscale: Get rid of the SWS_GAMMA_CORRECT flag
This avoids using up a bit of the public flags
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libswscale/utils.c')
-rw-r--r-- | libswscale/utils.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/libswscale/utils.c b/libswscale/utils.c index d1cdf00f6a..45e4b7cc8e 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -1256,6 +1256,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, if (!unscaled && c->gamma_flag && (srcFormat != tmpFmt || dstFormat != tmpFmt)) { + SwsContext *c2; c->cascaded_context[0] = NULL; ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, @@ -1272,11 +1273,18 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, c->cascaded_context[1] = sws_getContext(srcW, srcH, tmpFmt, dstW, dstH, tmpFmt, - flags | SWS_GAMMA_CORRECT, srcFilter, dstFilter, c->param); + flags, srcFilter, dstFilter, c->param); if (!c->cascaded_context[1]) return -1; + c2 = c->cascaded_context[1]; + c2->is_internal_gamma = 1; + c2->gamma = alloc_gamma_tbl( c->gamma_value); + c2->inv_gamma = alloc_gamma_tbl(1.f/c->gamma_value); + if (!c2->gamma || !c2->inv_gamma) + return AVERROR(ENOMEM); + c->cascaded_context[2] = NULL; if (dstFormat != tmpFmt) { ret = av_image_alloc(c->cascaded1_tmp, c->cascaded1_tmpStride, @@ -1293,18 +1301,6 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, return 0; } - c->gamma = NULL; - c->inv_gamma = NULL; - if (c->flags & SWS_GAMMA_CORRECT) { - c->gamma = alloc_gamma_tbl(c->gamma_value); - if (!c->gamma) - return AVERROR(ENOMEM); - c->inv_gamma = alloc_gamma_tbl(1.f/c->gamma_value); - if (!c->inv_gamma) { - return AVERROR(ENOMEM); - } - } - if (isBayer(srcFormat)) { if (!unscaled || (dstFormat != AV_PIX_FMT_RGB24 && dstFormat != AV_PIX_FMT_YUV420P)) { |