KinesisManagerStatus KinesisStreamManager::InitializeVideoStream()

in kinesis_manager/src/kinesis_stream_manager.cpp [238:277]


KinesisManagerStatus KinesisStreamManager::InitializeVideoStream(
  unique_ptr<StreamDefinition> stream_definition)
{
  if (!video_producer_) {
    return KINESIS_MANAGER_STATUS_VIDEO_PRODUCER_NOT_INITIALIZED;
  }
  if (!stream_definition) {
    return KINESIS_MANAGER_STATUS_INVALID_INPUT;
  }
  string stream_name = stream_definition->getStreamName();
  if (stream_name.empty()) {
    return KINESIS_MANAGER_STATUS_EMPTY_STREAM_NAME;
  }
  if (video_streams_.count(stream_name) > 0) {
    return KINESIS_MANAGER_STATUS_STREAM_ALREADY_EXISTS;
  }

  StreamInfo stream_info = stream_definition->getStreamInfo();
  shared_ptr<KinesisVideoStreamInterface> stream;
  try {
    stream = video_producer_->CreateStreamSync(std::move(stream_definition));
  } catch (const std::runtime_error & e) {
    stream = nullptr;
  }

  if (stream) {
    video_streams_.insert({stream_name, stream});
    if (0 < stream_info.streamCaps.trackInfoList[0].codecPrivateDataSize) {
      std::vector<uint8_t> codec_private_data;
      codec_private_data.assign(
        stream_info.streamCaps.trackInfoList[0].codecPrivateData,
        stream_info.streamCaps.trackInfoList[0].codecPrivateData
        + stream_info.streamCaps.trackInfoList[0].codecPrivateDataSize);
      video_streams_codec_data_.insert({stream_name, codec_private_data});
    }
    return KINESIS_MANAGER_STATUS_SUCCESS;
  } else {
    return KINESIS_MANAGER_STATUS_CREATESTREAMSYNC_FAILED;
  }
};