fix: skip applying EDR metadata when HDR is disabled in client or host settings
This commit is contained in:
1 parent
6f381362dd
commit
e9e6f1deb9
3 files changed
+7
-4
No files matched your search
@@ -21,8 +21,9 @@
|
|||||||
@property (nonatomic) CFTimeInterval lastPresented;
|
@property (nonatomic) CFTimeInterval lastPresented;
|
||||||
@property (nonatomic) id<CAMetalDrawable> _Nullable nextDrawable;
|
@property (nonatomic) id<CAMetalDrawable> _Nullable nextDrawable;
|
||||||
@property (atomic) BOOL isStopping;
|
@property (atomic) BOOL isStopping;
|
||||||
|
@property (nonatomic) BOOL hdrEnabled;
|
||||||
|
|
||||||
- (nonnull instancetype)initWithMetalDevice:(nonnull id<MTLDevice>)device drawablePixelFormat:(MTLPixelFormat)drawablePixelFormat framerate:(float)framerate;
|
- (nonnull instancetype)initWithMetalDevice:(nonnull id<MTLDevice>)device drawablePixelFormat:(MTLPixelFormat)drawablePixelFormat framerate:(float)framerate hdrEnabled:(BOOL)hdrEnabled;
|
||||||
- (void)renderFrame:(nonnull Frame *)frame toLayer:(nonnull CAMetalLayer *)layer API_AVAILABLE(ios(13.0));
|
- (void)renderFrame:(nonnull Frame *)frame toLayer:(nonnull CAMetalLayer *)layer API_AVAILABLE(ios(13.0));
|
||||||
- (void)waitToRenderTo:(nonnull CAMetalLayer *)layer API_AVAILABLE(ios(13.0));
|
- (void)waitToRenderTo:(nonnull CAMetalLayer *)layer API_AVAILABLE(ios(13.0));
|
||||||
- (void)drawableResize:(CGSize)drawableSize;
|
- (void)drawableResize:(CGSize)drawableSize;
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ CFStringRef __currentColorSpace;
|
|||||||
dispatch_semaphore_t _inFlightSemaphore;
|
dispatch_semaphore_t _inFlightSemaphore;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithMetalDevice:(id<MTLDevice>)device drawablePixelFormat:(MTLPixelFormat)drawablePixelFormat framerate:(float)framerate {
|
- (instancetype)initWithMetalDevice:(id<MTLDevice>)device drawablePixelFormat:(MTLPixelFormat)drawablePixelFormat framerate:(float)framerate hdrEnabled:(BOOL)hdrEnabled {
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (self) {
|
if (self) {
|
||||||
_sq = dispatch_queue_create("com.moonlight.MetalVideoRenderer",
|
_sq = dispatch_queue_create("com.moonlight.MetalVideoRenderer",
|
||||||
@@ -144,6 +144,7 @@ CFStringRef __currentColorSpace;
|
|||||||
_device = device;
|
_device = device;
|
||||||
_colorPixelFormat = MTLPixelFormatBGR10A2Unorm;
|
_colorPixelFormat = MTLPixelFormatBGR10A2Unorm;
|
||||||
_framerate = framerate;
|
_framerate = framerate;
|
||||||
|
_hdrEnabled = hdrEnabled;
|
||||||
_commandQueue = [_device newCommandQueue];
|
_commandQueue = [_device newCommandQueue];
|
||||||
_currentEDRHeadroom = 1.0f;
|
_currentEDRHeadroom = 1.0f;
|
||||||
_lastColorSpace = -1;
|
_lastColorSpace = -1;
|
||||||
@@ -416,7 +417,7 @@ CFStringRef __currentColorSpace;
|
|||||||
#else
|
#else
|
||||||
BOOL canUseEDR = NO;
|
BOOL canUseEDR = NO;
|
||||||
if (@available(iOS 16.0, tvOS 16.0, *)) {
|
if (@available(iOS 16.0, tvOS 16.0, *)) {
|
||||||
canUseEDR = useEDR && [CAEDRMetadata isAvailable];
|
canUseEDR = useEDR && [CAEDRMetadata isAvailable] && _hdrEnabled && isHDR;
|
||||||
}
|
}
|
||||||
if (canUseEDR) {
|
if (canUseEDR) {
|
||||||
[self applyEDRFromFrame:frame withColorspace:colorspace toLayer:layer];
|
[self applyEDRFromFrame:frame withColorspace:colorspace toLayer:layer];
|
||||||
|
|||||||
@@ -62,7 +62,8 @@
|
|||||||
// Initialize the renderer.
|
// Initialize the renderer.
|
||||||
MetalVideoRenderer *renderer = [[MetalVideoRenderer alloc] initWithMetalDevice:device
|
MetalVideoRenderer *renderer = [[MetalVideoRenderer alloc] initWithMetalDevice:device
|
||||||
drawablePixelFormat:MTLPixelFormatBGR10A2Unorm
|
drawablePixelFormat:MTLPixelFormatBGR10A2Unorm
|
||||||
framerate:self->_framerate];
|
framerate:self->_framerate
|
||||||
|
hdrEnabled:self->_enableHdr];
|
||||||
if (!renderer) {
|
if (!renderer) {
|
||||||
Log(LOG_E, @"The renderer couldn't be initialized.");
|
Log(LOG_E, @"The renderer couldn't be initialized.");
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in new issue
Block a user