void AppMain::StartHoloLensMediaFrameSourceGroup()

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;
    });
  }