diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-04-14 23:18:21 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-04-14 23:25:28 +0200 |
commit | a2f088c0f93c6942fa9756803b99cb7746994d0d (patch) | |
tree | d492d2c3b8602067db17ccca722875bc64458471 | |
parent | 3751e5a8214d05998ecce17f25af98e64abfefff (diff) | |
download | ffmpeg-a2f088c0f93c6942fa9756803b99cb7746994d0d.tar.gz |
swscale: factor ff_sws_init_range_convert() out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libswscale/swscale.c | 47 | ||||
-rw-r--r-- | libswscale/swscale_internal.h | 2 |
2 files changed, 28 insertions, 21 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 4762f584dc..b73a1f2ab3 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -705,6 +705,31 @@ static int swscale(SwsContext *c, const uint8_t *src[], return dstY - lastDstY; } +av_cold void ff_sws_init_range_convert(SwsContext *c) +{ + c->lumConvertRange = NULL; + c->chrConvertRange = NULL; + if (c->srcRange != c->dstRange && !isAnyRGB(c->dstFormat)) { + if (c->dstBpc <= 14) { + if (c->srcRange) { + c->lumConvertRange = lumRangeFromJpeg_c; + c->chrConvertRange = chrRangeFromJpeg_c; + } else { + c->lumConvertRange = lumRangeToJpeg_c; + c->chrConvertRange = chrRangeToJpeg_c; + } + } else { + if (c->srcRange) { + c->lumConvertRange = lumRangeFromJpeg16_c; + c->chrConvertRange = chrRangeFromJpeg16_c; + } else { + c->lumConvertRange = lumRangeToJpeg16_c; + c->chrConvertRange = chrRangeToJpeg16_c; + } + } + } +} + static av_cold void sws_init_swscale(SwsContext *c) { enum AVPixelFormat srcFormat = c->srcFormat; @@ -731,27 +756,7 @@ static av_cold void sws_init_swscale(SwsContext *c) : hScale16To15_c; } - c->lumConvertRange = NULL; - c->chrConvertRange = NULL; - if (c->srcRange != c->dstRange && !isAnyRGB(c->dstFormat)) { - if (c->dstBpc <= 14) { - if (c->srcRange) { - c->lumConvertRange = lumRangeFromJpeg_c; - c->chrConvertRange = chrRangeFromJpeg_c; - } else { - c->lumConvertRange = lumRangeToJpeg_c; - c->chrConvertRange = chrRangeToJpeg_c; - } - } else { - if (c->srcRange) { - c->lumConvertRange = lumRangeFromJpeg16_c; - c->chrConvertRange = chrRangeFromJpeg16_c; - } else { - c->lumConvertRange = lumRangeToJpeg16_c; - c->chrConvertRange = chrRangeToJpeg16_c; - } - } - } + ff_sws_init_range_convert(c); if (!(isGray(srcFormat) || isGray(c->dstFormat) || srcFormat == AV_PIX_FMT_MONOBLACK || srcFormat == AV_PIX_FMT_MONOWHITE)) diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 0b3e687294..bb8847d0f7 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -617,6 +617,8 @@ void ff_yuv2rgb_init_tables_ppc(SwsContext *c, const int inv_table[4], void updateMMXDitherTables(SwsContext *c, int dstY, int lumBufIndex, int chrBufIndex, int lastInLumBuf, int lastInChrBuf); +av_cold void ff_sws_init_range_convert(SwsContext *c); + SwsFunc ff_yuv2rgb_init_x86(SwsContext *c); SwsFunc ff_yuv2rgb_init_ppc(SwsContext *c); SwsFunc ff_yuv2rgb_init_bfin(SwsContext *c); |