mirror of
https://github.com/moonlight-stream/moonlight-qt
synced 2024-12-17 14:43:09 +00:00
Implement Rec 601 Full Range support in SDLRenderer
This commit is contained in:
parent
8d087ba5b1
commit
7a39daf179
2 changed files with 13 additions and 2 deletions
|
@ -77,6 +77,7 @@ bool SdlRenderer::isPixelFormatSupported(int, AVPixelFormat pixelFormat)
|
||||||
switch (pixelFormat)
|
switch (pixelFormat)
|
||||||
{
|
{
|
||||||
case AV_PIX_FMT_YUV420P:
|
case AV_PIX_FMT_YUV420P:
|
||||||
|
case AV_PIX_FMT_YUVJ420P:
|
||||||
case AV_PIX_FMT_NV12:
|
case AV_PIX_FMT_NV12:
|
||||||
case AV_PIX_FMT_NV21:
|
case AV_PIX_FMT_NV21:
|
||||||
return true;
|
return true;
|
||||||
|
@ -397,6 +398,7 @@ ReadbackRetry:
|
||||||
switch (frame->format)
|
switch (frame->format)
|
||||||
{
|
{
|
||||||
case AV_PIX_FMT_YUV420P:
|
case AV_PIX_FMT_YUV420P:
|
||||||
|
case AV_PIX_FMT_YUVJ420P:
|
||||||
sdlFormat = SDL_PIXELFORMAT_YV12;
|
sdlFormat = SDL_PIXELFORMAT_YV12;
|
||||||
break;
|
break;
|
||||||
case AV_PIX_FMT_CUDA:
|
case AV_PIX_FMT_CUDA:
|
||||||
|
@ -414,11 +416,19 @@ ReadbackRetry:
|
||||||
switch (colorspace)
|
switch (colorspace)
|
||||||
{
|
{
|
||||||
case COLORSPACE_REC_709:
|
case COLORSPACE_REC_709:
|
||||||
|
SDL_assert(!isFrameFullRange(frame));
|
||||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_BT709);
|
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_BT709);
|
||||||
break;
|
break;
|
||||||
case COLORSPACE_REC_601:
|
case COLORSPACE_REC_601:
|
||||||
|
if (isFrameFullRange(frame)) {
|
||||||
|
// SDL's JPEG mode is Rec 601 Full Range
|
||||||
|
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_JPEG);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_BT601);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_BT601);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -461,7 +471,7 @@ ReadbackRetry:
|
||||||
goto Exit;
|
goto Exit;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (frame->format == AV_PIX_FMT_YUV420P) {
|
else if (frame->format == AV_PIX_FMT_YUV420P || frame->format == AV_PIX_FMT_YUVJ420P) {
|
||||||
SDL_UpdateYUVTexture(m_Texture, nullptr,
|
SDL_UpdateYUVTexture(m_Texture, nullptr,
|
||||||
frame->data[0],
|
frame->data[0],
|
||||||
frame->linesize[0],
|
frame->linesize[0],
|
||||||
|
|
|
@ -822,6 +822,7 @@ bool FFmpegVideoDecoder::initialize(PDECODER_PARAMETERS params)
|
||||||
// - AV_PIX_FMT_DRM_PRIME
|
// - AV_PIX_FMT_DRM_PRIME
|
||||||
// - AV_PIX_FMT_MMAL
|
// - AV_PIX_FMT_MMAL
|
||||||
// - AV_PIX_FMT_YUV420P
|
// - AV_PIX_FMT_YUV420P
|
||||||
|
// - AV_PIX_FMT_YUVJ420P
|
||||||
// - AV_PIX_FMT_NV12
|
// - AV_PIX_FMT_NV12
|
||||||
// - AV_PIX_FMT_NV21
|
// - AV_PIX_FMT_NV21
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue