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