]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 18 Aug 2011 15:05:50 +0000 (15:05 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 18 Aug 2011 15:05:50 +0000 (15:05 +0000)
modules/ffmpeg/producer/format/flv.cpp

index 2d4d5641750febbabe3e7df5911da068e320bb9c..3a4b4c27d3ab06b0d4c8445e4fc1bcdd8d5bbd38 100644 (file)
@@ -32,6 +32,7 @@ double next_double(std::fstream& fileStream)
 {\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
@@ -39,9 +40,18 @@ bool next_bool(std::fstream& fileStream)
 {\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
@@ -60,15 +70,18 @@ std::map<std::string, std::string> read_flv_meta_info(const std::string& filenam
                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
@@ -84,8 +97,10 @@ std::map<std::string, std::string> read_flv_meta_info(const std::string& filenam
                                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