summaryrefslogtreecommitdiff
path: root/avstream/avscamera/sys/PreviewHwSim.cpp
diff options
context:
space:
mode:
authorAdonais Romero González <[email protected]>2020-04-07 16:17:44 -0700
committerGitHub <[email protected]>2020-04-07 16:17:44 -0700
commit13c61ceeb3f7da66a2b57730d12d14eb7463c46a (patch)
treeff52f9ac442a60625936a266db1bef12ac694a8e /avstream/avscamera/sys/PreviewHwSim.cpp
parentdd4fad494b996f5729be98e0271ea74ef1a5d2ad (diff)
parent27c8560ba860165db5a173b37591271397d20bb7 (diff)
Update all the AvStream samples for Vibranium136198136197136196136195136194
Update all the AvStream samples for Vibranium.
Diffstat (limited to 'avstream/avscamera/sys/PreviewHwSim.cpp')
-rw-r--r--avstream/avscamera/sys/PreviewHwSim.cpp32
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);