diff --git a/src/filters/transform/MPCVideoDec/FormatConverter.cpp b/src/filters/transform/MPCVideoDec/FormatConverter.cpp index 81209aa192..f6aae65d0e 100644 --- a/src/filters/transform/MPCVideoDec/FormatConverter.cpp +++ b/src/filters/transform/MPCVideoDec/FormatConverter.cpp @@ -411,7 +411,7 @@ void CFormatConverter::UpdateOutput2(DWORD biCompression, LONG biWidth, LONG biH void CFormatConverter::SetOptions(int rgblevels) { - m_dstRGBRange = rgblevels == 1 ? 0 : 1; + m_dstRGBRange = (rgblevels == 1) ? 0 : 1; UpdateSWSContext(); } diff --git a/src/filters/transform/MPCVideoDec/FormatConverter.h b/src/filters/transform/MPCVideoDec/FormatConverter.h index c2416157be..b40c4b1235 100644 --- a/src/filters/transform/MPCVideoDec/FormatConverter.h +++ b/src/filters/transform/MPCVideoDec/FormatConverter.h @@ -23,20 +23,20 @@ #include "IMPCVideoDec.h" #include -const MPCPixelFormat YUV420_8[PixFmt_count] = {PixFmt_NV12, PixFmt_YV12, PixFmt_YUY2, PixFmt_YV16, PixFmt_YV24, PixFmt_AYUV, PixFmt_P010, PixFmt_P016, PixFmt_P210, PixFmt_P216, PixFmt_Y410, PixFmt_YUV444P16, PixFmt_Y416}; -const MPCPixelFormat YUV422_8[PixFmt_count] = {PixFmt_YUY2, PixFmt_YV16, PixFmt_YV24, PixFmt_AYUV, PixFmt_NV12, PixFmt_YV12, PixFmt_P210, PixFmt_P216, PixFmt_Y410, PixFmt_P010, PixFmt_P016, PixFmt_YUV444P16, PixFmt_Y416}; -const MPCPixelFormat YUV444_8[PixFmt_count] = {PixFmt_YV24, PixFmt_AYUV, PixFmt_YUY2, PixFmt_YV16, PixFmt_NV12, PixFmt_YV12, PixFmt_Y410, PixFmt_P210, PixFmt_P216, PixFmt_P010, PixFmt_P016, PixFmt_YUV444P16, PixFmt_Y416}; +const MPCPixelFormat YUV420_8[] = {PixFmt_NV12, PixFmt_YV12, PixFmt_YUY2, PixFmt_YV16, PixFmt_YV24, PixFmt_AYUV, PixFmt_P010, PixFmt_P016, PixFmt_P210, PixFmt_P216, PixFmt_Y410, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_None}; +const MPCPixelFormat YUV422_8[] = {PixFmt_YUY2, PixFmt_YV16, PixFmt_YV24, PixFmt_AYUV, PixFmt_NV12, PixFmt_YV12, PixFmt_P210, PixFmt_P216, PixFmt_Y410, PixFmt_P010, PixFmt_P016, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_None}; +const MPCPixelFormat YUV444_8[] = {PixFmt_YV24, PixFmt_AYUV, PixFmt_YUY2, PixFmt_YV16, PixFmt_NV12, PixFmt_YV12, PixFmt_Y410, PixFmt_P210, PixFmt_P216, PixFmt_P010, PixFmt_P016, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_None}; -const MPCPixelFormat YUV420_10[PixFmt_count] = {PixFmt_P010, PixFmt_P016, PixFmt_P210, PixFmt_P216, PixFmt_Y410, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_NV12, PixFmt_YV12, PixFmt_YUY2, PixFmt_YV16, PixFmt_YV24, PixFmt_AYUV}; -const MPCPixelFormat YUV422_10[PixFmt_count] = {PixFmt_P210, PixFmt_P216, PixFmt_YUY2, PixFmt_YV16, PixFmt_Y410, PixFmt_P010, PixFmt_P016, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_YV24, PixFmt_AYUV, PixFmt_NV12, PixFmt_YV12}; -const MPCPixelFormat YUV444_10[PixFmt_count] = {PixFmt_Y410, PixFmt_YV24, PixFmt_AYUV, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_P210, PixFmt_P216, PixFmt_P010, PixFmt_P016, PixFmt_YUY2, PixFmt_YV16, PixFmt_NV12, PixFmt_YV12}; +const MPCPixelFormat YUV420_10[] = {PixFmt_P010, PixFmt_P016, PixFmt_P210, PixFmt_P216, PixFmt_Y410, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_NV12, PixFmt_YV12, PixFmt_YUY2, PixFmt_YV16, PixFmt_YV24, PixFmt_AYUV, PixFmt_None}; +const MPCPixelFormat YUV422_10[] = {PixFmt_P210, PixFmt_P216, PixFmt_YUY2, PixFmt_YV16, PixFmt_Y410, PixFmt_P010, PixFmt_P016, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_YV24, PixFmt_AYUV, PixFmt_NV12, PixFmt_YV12, PixFmt_None}; +const MPCPixelFormat YUV444_10[] = {PixFmt_Y410, PixFmt_YV24, PixFmt_AYUV, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_P210, PixFmt_P216, PixFmt_P010, PixFmt_P016, PixFmt_YUY2, PixFmt_YV16, PixFmt_NV12, PixFmt_YV12, PixFmt_None}; -const MPCPixelFormat YUV420_16[PixFmt_count] = {PixFmt_P016, PixFmt_P010, PixFmt_P216, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_P210, PixFmt_Y410, PixFmt_NV12, PixFmt_YV12, PixFmt_YUY2, PixFmt_YV16, PixFmt_YV24, PixFmt_AYUV}; -const MPCPixelFormat YUV422_16[PixFmt_count] = {PixFmt_P216, PixFmt_P210, PixFmt_YUY2, PixFmt_YV16, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_P016, PixFmt_Y410, PixFmt_P010, PixFmt_YV24, PixFmt_AYUV, PixFmt_NV12, PixFmt_YV12}; -const MPCPixelFormat YUV444_16[PixFmt_count] = {PixFmt_YUV444P16, PixFmt_Y416, PixFmt_Y410, PixFmt_YV24, PixFmt_AYUV, PixFmt_P216, PixFmt_P016, PixFmt_P210, PixFmt_P010, PixFmt_YUY2, PixFmt_YV16, PixFmt_NV12, PixFmt_YV12}; +const MPCPixelFormat YUV420_16[] = {PixFmt_P016, PixFmt_P010, PixFmt_P216, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_P210, PixFmt_Y410, PixFmt_NV12, PixFmt_YV12, PixFmt_YUY2, PixFmt_YV16, PixFmt_YV24, PixFmt_AYUV, PixFmt_None}; +const MPCPixelFormat YUV422_16[] = {PixFmt_P216, PixFmt_P210, PixFmt_YUY2, PixFmt_YV16, PixFmt_YUV444P16, PixFmt_Y416, PixFmt_P016, PixFmt_Y410, PixFmt_P010, PixFmt_YV24, PixFmt_AYUV, PixFmt_NV12, PixFmt_YV12, PixFmt_None}; +const MPCPixelFormat YUV444_16[] = {PixFmt_YUV444P16, PixFmt_Y416, PixFmt_Y410, PixFmt_YV24, PixFmt_AYUV, PixFmt_P216, PixFmt_P016, PixFmt_P210, PixFmt_P010, PixFmt_YUY2, PixFmt_YV16, PixFmt_NV12, PixFmt_YV12, PixFmt_None}; -const MPCPixelFormat RGB_8[PixFmt_count] = {PixFmt_RGB32, PixFmt_RGB48}; -const MPCPixelFormat RGB_16[PixFmt_count] = {PixFmt_RGB48, PixFmt_RGB32}; +const MPCPixelFormat RGB_8[] = {PixFmt_RGB32, PixFmt_RGB48, PixFmt_None}; +const MPCPixelFormat RGB_16[] = {PixFmt_RGB48, PixFmt_RGB32, PixFmt_None}; struct SW_OUT_FMT { const LPCWSTR name; diff --git a/src/filters/transform/MPCVideoDec/MPCVideoDec.cpp b/src/filters/transform/MPCVideoDec/MPCVideoDec.cpp index 603a175bb9..7f00314c6a 100644 --- a/src/filters/transform/MPCVideoDec/MPCVideoDec.cpp +++ b/src/filters/transform/MPCVideoDec/MPCVideoDec.cpp @@ -2614,7 +2614,7 @@ void CMPCVideoDecFilter::BuildOutputFormat() OutList = YUV420_8; } - for (int i = 0; i < PixFmt_count; i++) { + for (int i = 0; OutList[i] != PixFmt_None; i++) { int index = OutList[i]; if (m_fPixFmts[index]) { nSwIndex[nSwCount++] = index; @@ -2623,7 +2623,7 @@ void CMPCVideoDecFilter::BuildOutputFormat() } } - if (av_pfdesc->flags & (AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PAL)) { + if (m_bSwConvertToRGB || av_pfdesc->flags & (AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PAL)) { if (!m_fPixFmts[PixFmt_RGB32] || nSwCount == 0) { // if RGB32 has not been added yet, then add it to the end of the list nSwIndex[nSwCount++] = PixFmt_RGB32;