in kinesis_manager/src/stream_definition_provider.cpp [32:59]
KinesisManagerStatus StreamDefinitionProvider::GetCodecPrivateData(
const ParameterPath & prefix, const ParameterReaderInterface & reader,
PBYTE * out_codec_private_data, uint32_t * out_codec_private_data_size) const
{
if (nullptr == out_codec_private_data ||
nullptr == out_codec_private_data_size) {
return KINESIS_MANAGER_STATUS_INVALID_INPUT;
}
std::string b64_encoded_codec_private_data;
reader.ReadParam(prefix + "codecPrivateData", b64_encoded_codec_private_data);
if (!b64_encoded_codec_private_data.empty()) {
uint8_t temp_codec_data[STREAM_DEFINITION_MAX_CODEC_PRIVATE_DATA_SIZE] = {0};
uint32_t decoded_buffer_size = sizeof(temp_codec_data);
if (STATUS_SUCCESS != base64Decode(const_cast<char *>(b64_encoded_codec_private_data.c_str()),
temp_codec_data, &decoded_buffer_size)) {
return KINESIS_MANAGER_STATUS_BASE64DECODE_FAILED;
}
PBYTE codec_private_data = (PBYTE)malloc(decoded_buffer_size);
if (nullptr == codec_private_data) {
return KINESIS_MANAGER_STATUS_MALLOC_FAILED;
}
memset(codec_private_data, 0, decoded_buffer_size);
memcpy(codec_private_data, temp_codec_data, decoded_buffer_size);
*out_codec_private_data = codec_private_data;
*out_codec_private_data_size = decoded_buffer_size;
}
return KINESIS_MANAGER_STATUS_SUCCESS;
}