-char *
-TranscodeFfmpeg::format_metadata (std::string key, std::string value)
-{
- size_t start_pos = 0;
- std::string v1 = value;
- while((start_pos = v1.find_first_not_of(
- "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789(),.\"'",
- start_pos)) != std::string::npos)
- {
- v1.replace(start_pos, 1, "_");
- start_pos += 1;
- }
-
- start_pos = 0;
- while((start_pos = v1.find("\"", start_pos)) != std::string::npos) {
- v1.replace(start_pos, 1, "\\\"");
- start_pos += 2;
- }
-
- size_t len = key.length() + v1.length() + 4;
- char *mds = (char*) calloc(len, sizeof(char));
-#ifdef PLATFORM_WINDOWS
- /* SystemExec::make_wargs() adds quotes around the complete argument
- * windows uses CreateProcess() with a parameter string
- * (and not an array list of separate arguments)
- */
- snprintf(mds, len, "%s=%s", key.c_str(), v1.c_str());
-#else
- snprintf(mds, len, "%s=\"%s\"", key.c_str(), v1.c_str());
-#endif
- return mds;
-}