{\r
std::vector<char> bytes(8);\r
fileStream.read(bytes.data(), bytes.size());\r
+ fileStream.seekg(1, std::ios::cur);\r
return to_double(bytes, true);\r
} \r
\r
{\r
std::vector<char> bytes(1);\r
fileStream.read(bytes.data(), bytes.size());\r
+ fileStream.seekg(1, std::ios::cur);\r
return bytes[0] != 0;\r
}\r
\r
+std::string next_string(std::fstream& fileStream)\r
+{\r
+ std::vector<char> bytes(256, 0);\r
+ fileStream.seekg(2, std::ios::cur);\r
+ fileStream.getline(bytes.data(), bytes.size(), 0);\r
+ return std::string(bytes.begin(), bytes.end());\r
+}\r
+\r
std::map<std::string, std::string> read_flv_meta_info(const std::string& filename)\r
{\r
std::map<std::string, std::string> values;\r
std::vector<char> bytes(10);\r
fileStream.read(bytes.data(), bytes.size());\r
\r
- if (std::string(bytes.begin(), bytes.end()) == "onMetaData")\r
+ if(std::string(bytes.begin(), bytes.end()) == "onMetaData")\r
{\r
fileStream.seekg(6, std::ios::cur);\r
\r
- for(int n = 0; n < 9; ++n)\r
+ for(int n = 0; n < 16; ++n)\r
{\r
char name_size = 0;\r
fileStream.read(&name_size, 1);\r
\r
+ if(name_size == 0)\r
+ break;\r
+\r
std::vector<char> name(name_size);\r
fileStream.read(name.data(), name.size());\r
auto name_str = std::string(name.begin(), name.end());\r
case 1:\r
values[name_str] = boost::lexical_cast<std::string>(next_bool(fileStream));\r
break;\r
+ case 2:\r
+ values[name_str] = next_string(fileStream);\r
+ break;\r
}\r
- fileStream.seekg(1, std::ios::cur);\r
}\r
}\r
}\r