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