in FFmpegInterop/Source/FFmpegInteropMSS.cpp [659:693]
HRESULT FFmpegInteropMSS::ParseOptions(PropertySet^ ffmpegOptions)
{
HRESULT hr = S_OK;
// Convert FFmpeg options given in PropertySet to AVDictionary. List of options can be found in https://www.ffmpeg.org/ffmpeg-protocols.html
if (ffmpegOptions != nullptr)
{
auto options = ffmpegOptions->First();
while (options->HasCurrent)
{
String^ key = options->Current->Key;
std::wstring keyW(key->Begin());
std::string keyA(keyW.begin(), keyW.end());
const char* keyChar = keyA.c_str();
// Convert value from Object^ to const char*. avformat_open_input will internally convert value from const char* to the correct type
String^ value = options->Current->Value->ToString();
std::wstring valueW(value->Begin());
std::string valueA(valueW.begin(), valueW.end());
const char* valueChar = valueA.c_str();
// Add key and value pair entry
if (av_dict_set(&avDict, keyChar, valueChar, 0) < 0)
{
hr = E_INVALIDARG;
break;
}
options->MoveNext();
}
}
return hr;
}