]> granicus.if.org Git - libvpx/commitdiff
third_party/libwebm: Pull from upstream
authorVignesh Venkatasubramanian <vigneshv@google.com>
Tue, 8 Apr 2014 23:25:23 +0000 (16:25 -0700)
committerVignesh Venkatasubramanian <vigneshv@google.com>
Tue, 8 Apr 2014 23:25:23 +0000 (16:25 -0700)
Pulling latest libwebm from upstream.

Change-Id: I62edafb0b0283160c9b4060fd5907e3aad6c7820

third_party/libwebm/README.webm
third_party/libwebm/mkvmuxerutil.cpp
third_party/libwebm/mkvreader.cpp
third_party/libwebm/mkvreader.hpp

index b13c8cbc6fe5fa9d2c468cfea1a7ee1f01cd8ce7..2c7570d6d9f6958bee246b43c8e7699c859bb048 100644 (file)
@@ -1,5 +1,5 @@
 URL: https://chromium.googlesource.com/webm/libwebm
-Version: 630a0e3c338e1b32bddf513a2dad807908d2976a
+Version: a7118d8ec564e9db841da1eb01f547f3229f240a
 License: BSD
 License File: LICENSE.txt
 
index 96350e9c562ffba841506e2afd4c7c8a76e0d06d..18060e90294e396452c1d9ad9d3c0b9c0fbc30c4 100644 (file)
@@ -292,11 +292,11 @@ bool WriteEbmlElement(IMkvWriter* writer, uint64 type, const char* value) {
   if (WriteID(writer, type))
     return false;
 
-  const int32 length = strlen(value);
+  const uint64 length = strlen(value);
   if (WriteUInt(writer, length))
     return false;
 
-  if (writer->Write(value, length))
+  if (writer->Write(value, static_cast<const uint32>(length)))
     return false;
 
   return true;
index cb3567f1ad41df36e3d7388e2eb469bb9df9c6b7..b4b24594ca4179d04cc9633fc12835561a32585c 100644 (file)
@@ -14,13 +14,20 @@ namespace mkvparser
 {
 
 MkvReader::MkvReader() :
-    m_file(NULL)
-{
+    m_file(NULL),
+    reader_owns_file_(true) {
 }
 
-MkvReader::~MkvReader()
-{
+MkvReader::MkvReader(FILE* fp) :
+    m_file(fp),
+    reader_owns_file_(false) {
+  GetFileSize();
+}
+
+MkvReader::~MkvReader() {
+  if (reader_owns_file_)
     Close();
+  m_file = NULL;
 }
 
 int MkvReader::Open(const char* fileName)
@@ -42,12 +49,17 @@ int MkvReader::Open(const char* fileName)
     if (m_file == NULL)
         return -1;
 #endif
+    return !GetFileSize();
+}
 
+bool MkvReader::GetFileSize() {
+    if (m_file == NULL)
+        return false;
 #ifdef _MSC_VER
     int status = _fseeki64(m_file, 0L, SEEK_END);
 
     if (status)
-        return -1;  //error
+        return false;  //error
 
     m_length = _ftelli64(m_file);
 #else
@@ -56,16 +68,19 @@ int MkvReader::Open(const char* fileName)
 #endif
     assert(m_length >= 0);
 
+    if (m_length < 0)
+        return false;
+
 #ifdef _MSC_VER
     status = _fseeki64(m_file, 0L, SEEK_SET);
 
     if (status)
-        return -1;  //error
+        return false;  //error
 #else
     fseek(m_file, 0L, SEEK_SET);
 #endif
 
-    return 0;
+    return true;
 }
 
 void MkvReader::Close()
index adcc29f477c84b920f8c0363c625d5c828b5ad26..8ebdd99a74b1f6fe461a70ed8a1facf763d68b59 100644 (file)
@@ -21,6 +21,7 @@ class MkvReader : public IMkvReader
     MkvReader& operator=(const MkvReader&);
 public:
     MkvReader();
+    MkvReader(FILE* fp);
     virtual ~MkvReader();
 
     int Open(const char*);
@@ -29,8 +30,15 @@ public:
     virtual int Read(long long position, long length, unsigned char* buffer);
     virtual int Length(long long* total, long long* available);
 private:
+
+    // Determines the size of the file. This is called either by the constructor
+    // or by the Open function depending on file ownership. Returns true on
+    // success.
+    bool GetFileSize();
+
     long long m_length;
     FILE* m_file;
+    bool reader_owns_file_;
 };
 
 }  //end namespace mkvparser