diff options
Diffstat (limited to 'avstream/avscamera/sys/PreviewHwSim.cpp')
| -rw-r--r-- | avstream/avscamera/sys/PreviewHwSim.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/avstream/avscamera/sys/PreviewHwSim.cpp b/avstream/avscamera/sys/PreviewHwSim.cpp index 775c6b8d..f55ffa20 100644 --- a/avstream/avscamera/sys/PreviewHwSim.cpp +++ b/avstream/avscamera/sys/PreviewHwSim.cpp @@ -40,6 +40,7 @@ CPreviewHardwareSimulation::CPreviewHardwareSimulation( _In_ LONG PinID ) : CHardwareSimulation( Sensor, PinID ) + , m_Illuminated(FALSE) { PAGED_CODE(); } @@ -299,6 +300,11 @@ Return Value: BytesLeft -= sizeof(CAMERA_METADATA_INTRINSICS); } + // TODO: This metadata should only be exposed on a sensor category preview pin. + // It's possible I should derive a new preview sim to handle this; but for now + // we just populate the IR illumination state on every preview pin. Hopefully + // the app is smart enough to realize that this is meaningless if they have not + // selected an IR mediatype. if (BytesLeft >= sizeof(KSCAMERA_METADATA_FRAMEILLUMINATION)) { PKSCAMERA_METADATA_FRAMEILLUMINATION pPreviewIllumination = @@ -308,7 +314,31 @@ Return Value: pPreviewIllumination->Header.MetadataId = (ULONG)MetadataId_FrameIllumination; pPreviewIllumination->Header.Size = sizeof(KSCAMERA_METADATA_FRAMEILLUMINATION); - pPreviewIllumination->Flags = KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON; + // Toggle the Illumination state for an IR frame. + CExtendedVidProcSetting State; + (void) m_Sensor->GetIRTorch(&State); + + if (State.Flags & KSCAMERA_EXTENDEDPROP_IRTORCHMODE_ALWAYS_ON) + { + m_Illuminated = TRUE; + pPreviewIllumination->Flags = KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON; + } + else if ((State.Flags & KSCAMERA_EXTENDEDPROP_IRTORCHMODE_ALTERNATING_FRAME_ILLUMINATION)) + { + m_Illuminated = !m_Illuminated; + if (m_Illuminated) + { + pPreviewIllumination->Flags = KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON; + } + } + else + { + m_Illuminated = FALSE; + } + + DBG_TRACE("Frame Illumination: Flags=0x%016llX, State=%s", + State.Flags, + (pPreviewIllumination->Flags==KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON ?"ON":"OFF")); pMetadata->UsedSize += sizeof(KSCAMERA_METADATA_FRAMEILLUMINATION); BytesLeft -= sizeof(KSCAMERA_METADATA_FRAMEILLUMINATION); |
