Use isAnyRGB() where possible
Originally committed as revision 30435 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
This commit is contained in:
parent
81858371d9
commit
6022255774
@ -90,8 +90,7 @@ untested special converters
|
|||||||
(x)==PIX_FMT_PAL8 \
|
(x)==PIX_FMT_PAL8 \
|
||||||
|| (x)==PIX_FMT_YUYV422 \
|
|| (x)==PIX_FMT_YUYV422 \
|
||||||
|| (x)==PIX_FMT_UYVY422 \
|
|| (x)==PIX_FMT_UYVY422 \
|
||||||
|| isRGBinInt(x) \
|
|| isAnyRGB(x) \
|
||||||
|| isBGRinInt(x) \
|
|
||||||
)
|
)
|
||||||
#define usePal(x) (av_pix_fmt_descriptors[x].flags & PIX_FMT_PAL)
|
#define usePal(x) (av_pix_fmt_descriptors[x].flags & PIX_FMT_PAL)
|
||||||
|
|
||||||
@ -1660,16 +1659,16 @@ void ff_get_unscaled_swscale(SwsContext *c)
|
|||||||
const int dstH = c->dstH;
|
const int dstH = c->dstH;
|
||||||
int needsDither;
|
int needsDither;
|
||||||
|
|
||||||
needsDither= (isBGRinInt(dstFormat) || isRGBinInt(dstFormat))
|
needsDither= isAnyRGB(dstFormat)
|
||||||
&& c->dstFormatBpp < 24
|
&& c->dstFormatBpp < 24
|
||||||
&& (c->dstFormatBpp < c->srcFormatBpp || (!(isRGBinInt(srcFormat) || isBGRinInt(srcFormat))));
|
&& (c->dstFormatBpp < c->srcFormatBpp || (!isAnyRGB(srcFormat)));
|
||||||
|
|
||||||
/* yv12_to_nv12 */
|
/* yv12_to_nv12 */
|
||||||
if ((srcFormat == PIX_FMT_YUV420P || srcFormat == PIX_FMT_YUVA420P) && (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21)) {
|
if ((srcFormat == PIX_FMT_YUV420P || srcFormat == PIX_FMT_YUVA420P) && (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21)) {
|
||||||
c->swScale= PlanarToNV12Wrapper;
|
c->swScale= PlanarToNV12Wrapper;
|
||||||
}
|
}
|
||||||
/* yuv2bgr */
|
/* yuv2bgr */
|
||||||
if ((srcFormat==PIX_FMT_YUV420P || srcFormat==PIX_FMT_YUV422P || srcFormat==PIX_FMT_YUVA420P) && (isBGRinInt(dstFormat) || isRGBinInt(dstFormat))
|
if ((srcFormat==PIX_FMT_YUV420P || srcFormat==PIX_FMT_YUV422P || srcFormat==PIX_FMT_YUVA420P) && isAnyRGB(dstFormat)
|
||||||
&& !(flags & SWS_ACCURATE_RND) && !(dstH&1)) {
|
&& !(flags & SWS_ACCURATE_RND) && !(dstH&1)) {
|
||||||
c->swScale= ff_yuv2rgb_get_func_ptr(c);
|
c->swScale= ff_yuv2rgb_get_func_ptr(c);
|
||||||
}
|
}
|
||||||
@ -1683,8 +1682,8 @@ void ff_get_unscaled_swscale(SwsContext *c)
|
|||||||
c->swScale= bgr24toyv12Wrapper;
|
c->swScale= bgr24toyv12Wrapper;
|
||||||
|
|
||||||
/* RGB/BGR -> RGB/BGR (no dither needed forms) */
|
/* RGB/BGR -> RGB/BGR (no dither needed forms) */
|
||||||
if ( (isBGRinInt(srcFormat) || isRGBinInt(srcFormat))
|
if ( isAnyRGB(srcFormat)
|
||||||
&& (isBGRinInt(dstFormat) || isRGBinInt(dstFormat))
|
&& isAnyRGB(dstFormat)
|
||||||
&& srcFormat != PIX_FMT_BGR8 && dstFormat != PIX_FMT_BGR8
|
&& srcFormat != PIX_FMT_BGR8 && dstFormat != PIX_FMT_BGR8
|
||||||
&& srcFormat != PIX_FMT_RGB8 && dstFormat != PIX_FMT_RGB8
|
&& srcFormat != PIX_FMT_RGB8 && dstFormat != PIX_FMT_RGB8
|
||||||
&& srcFormat != PIX_FMT_BGR4 && dstFormat != PIX_FMT_BGR4
|
&& srcFormat != PIX_FMT_BGR4 && dstFormat != PIX_FMT_BGR4
|
||||||
|
@ -3048,7 +3048,7 @@ static void RENAME(sws_init_swScale)(SwsContext *c)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->srcRange != c->dstRange && !(isRGBinInt(c->dstFormat) || isBGRinInt(c->dstFormat))) {
|
if (c->srcRange != c->dstRange && !isAnyRGB(c->dstFormat)) {
|
||||||
if (c->srcRange) {
|
if (c->srcRange) {
|
||||||
c->lumConvertRange = RENAME(lumRangeFromJpeg);
|
c->lumConvertRange = RENAME(lumRangeFromJpeg);
|
||||||
c->chrConvertRange = RENAME(chrRangeFromJpeg);
|
c->chrConvertRange = RENAME(chrRangeFromJpeg);
|
||||||
|
@ -121,8 +121,7 @@ int sws_isSupportedInput(enum PixelFormat pix_fmt)
|
|||||||
|| (x)==PIX_FMT_YUV444P \
|
|| (x)==PIX_FMT_YUV444P \
|
||||||
|| (x)==PIX_FMT_YUV422P \
|
|| (x)==PIX_FMT_YUV422P \
|
||||||
|| (x)==PIX_FMT_YUV411P \
|
|| (x)==PIX_FMT_YUV411P \
|
||||||
|| isRGBinInt(x) \
|
|| isAnyRGB(x) \
|
||||||
|| isBGRinInt(x) \
|
|
||||||
|| (x)==PIX_FMT_NV12 \
|
|| (x)==PIX_FMT_NV12 \
|
||||||
|| (x)==PIX_FMT_NV21 \
|
|| (x)==PIX_FMT_NV21 \
|
||||||
|| (x)==PIX_FMT_GRAY16BE \
|
|| (x)==PIX_FMT_GRAY16BE \
|
||||||
@ -872,14 +871,14 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat,
|
|||||||
getSubSampleFactors(&c->chrDstHSubSample, &c->chrDstVSubSample, dstFormat);
|
getSubSampleFactors(&c->chrDstHSubSample, &c->chrDstVSubSample, dstFormat);
|
||||||
|
|
||||||
// reuse chroma for 2 pixels RGB/BGR unless user wants full chroma interpolation
|
// reuse chroma for 2 pixels RGB/BGR unless user wants full chroma interpolation
|
||||||
if ((isBGRinInt(dstFormat) || isRGBinInt(dstFormat)) && !(flags&SWS_FULL_CHR_H_INT)) c->chrDstHSubSample=1;
|
if (isAnyRGB(dstFormat) && !(flags&SWS_FULL_CHR_H_INT)) c->chrDstHSubSample=1;
|
||||||
|
|
||||||
// drop some chroma lines if the user wants it
|
// drop some chroma lines if the user wants it
|
||||||
c->vChrDrop= (flags&SWS_SRC_V_CHR_DROP_MASK)>>SWS_SRC_V_CHR_DROP_SHIFT;
|
c->vChrDrop= (flags&SWS_SRC_V_CHR_DROP_MASK)>>SWS_SRC_V_CHR_DROP_SHIFT;
|
||||||
c->chrSrcVSubSample+= c->vChrDrop;
|
c->chrSrcVSubSample+= c->vChrDrop;
|
||||||
|
|
||||||
// drop every other pixel for chroma calculation unless user wants full chroma
|
// drop every other pixel for chroma calculation unless user wants full chroma
|
||||||
if ((isBGRinInt(srcFormat) || isRGBinInt(srcFormat)) && !(flags&SWS_FULL_CHR_H_INP)
|
if (isAnyRGB(srcFormat) && !(flags&SWS_FULL_CHR_H_INP)
|
||||||
&& srcFormat!=PIX_FMT_RGB8 && srcFormat!=PIX_FMT_BGR8
|
&& srcFormat!=PIX_FMT_RGB8 && srcFormat!=PIX_FMT_BGR8
|
||||||
&& srcFormat!=PIX_FMT_RGB4 && srcFormat!=PIX_FMT_BGR4
|
&& srcFormat!=PIX_FMT_RGB4 && srcFormat!=PIX_FMT_BGR4
|
||||||
&& srcFormat!=PIX_FMT_RGB4_BYTE && srcFormat!=PIX_FMT_BGR4_BYTE
|
&& srcFormat!=PIX_FMT_RGB4_BYTE && srcFormat!=PIX_FMT_BGR4_BYTE
|
||||||
@ -903,7 +902,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat,
|
|||||||
sws_setColorspaceDetails(c, ff_yuv2rgb_coeffs[SWS_CS_DEFAULT], srcRange, ff_yuv2rgb_coeffs[SWS_CS_DEFAULT] /* FIXME*/, dstRange, 0, 1<<16, 1<<16);
|
sws_setColorspaceDetails(c, ff_yuv2rgb_coeffs[SWS_CS_DEFAULT], srcRange, ff_yuv2rgb_coeffs[SWS_CS_DEFAULT] /* FIXME*/, dstRange, 0, 1<<16, 1<<16);
|
||||||
|
|
||||||
/* unscaled special cases */
|
/* unscaled special cases */
|
||||||
if (unscaled && !usesHFilter && !usesVFilter && (srcRange == dstRange || isBGRinInt(dstFormat) || isRGBinInt(dstFormat))) {
|
if (unscaled && !usesHFilter && !usesVFilter && (srcRange == dstRange || isAnyRGB(dstFormat))) {
|
||||||
ff_get_unscaled_swscale(c);
|
ff_get_unscaled_swscale(c);
|
||||||
|
|
||||||
if (c->swScale) {
|
if (c->swScale) {
|
||||||
|
Loading…
Reference in New Issue
Block a user