in Tools/Recorder/AppMain.cpp [394:464]
void AppMain::StartHoloLensMediaFrameSourceGroup()
{
REQUIRES(
!_photoVideoMediaFrameSourceGroupStarted &&
!_researchModeMediaFrameSourceGroupStarted &&
!_sensorFrameRecorderStarted &&
nullptr != _spatialPerception);
_sensorFrameRecorder =
ref new HoloLensForCV::SensorFrameRecorder();
_photoVideoMediaFrameSourceGroup =
ref new HoloLensForCV::MediaFrameSourceGroup(
HoloLensForCV::MediaFrameSourceGroupType::PhotoVideoCamera,
_spatialPerception, _sensorFrameRecorder);
_researchModeMediaFrameSourceGroup =
ref new HoloLensForCV::MediaFrameSourceGroup(
HoloLensForCV::MediaFrameSourceGroupType::HoloLensResearchModeSensors,
_spatialPerception, _sensorFrameRecorder);
//
// Enabling all of the Research Mode sensors at the same time can be quite expensive
// performance-wise. It's best to scope down the list of enabled sensors to just those
// that are required for a given task. In this example, all sensors are selected.
// To only select a subset, use the commented code below.
//
if (kEnabledSensorTypes.empty())
{
_sensorFrameRecorder->EnableAll();
_photoVideoMediaFrameSourceGroup->EnableAll();
_researchModeMediaFrameSourceGroup->EnableAll();
}
else
{
for (const auto enabledSensorType : kEnabledSensorTypes)
{
_sensorFrameRecorder->Enable(enabledSensorType);
if (enabledSensorType == HoloLensForCV::SensorType::PhotoVideo)
{
_photoVideoMediaFrameSourceGroup->Enable(enabledSensorType);
}
else
{
_researchModeMediaFrameSourceGroup->Enable(enabledSensorType);
}
}
}
//
// Start the media frame source groups.
//
auto startPhotoVideoMediaFrameSourceGroupTask =
concurrency::create_task(
_photoVideoMediaFrameSourceGroup->StartAsync());
startPhotoVideoMediaFrameSourceGroupTask.then([&]() {
_photoVideoMediaFrameSourceGroupStarted = true;
});
auto startReseachModeMediaFrameSourceGroupTask =
concurrency::create_task(
_researchModeMediaFrameSourceGroup->StartAsync());
startReseachModeMediaFrameSourceGroupTask.then([&]() {
_researchModeMediaFrameSourceGroupStarted = true;
});
}