diff options
author | Vignesh Venkatasubramanian <vigneshv@google.com> | 2014-04-09 11:16:14 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2014-04-09 11:16:14 -0700 |
commit | 667ab1c70864b9105537fbfb86210e30d12e1780 (patch) | |
tree | f1a6597ceba4613db0e1e7fd2672ae77d11f0da2 | |
parent | 5ed83c32201ca5ba4992b2a7350ed02df0d8bf92 (diff) | |
parent | 919553695c9673ff7016e9435905412fcdfbd552 (diff) | |
download | libvpx-667ab1c70864b9105537fbfb86210e30d12e1780.tar libvpx-667ab1c70864b9105537fbfb86210e30d12e1780.tar.gz libvpx-667ab1c70864b9105537fbfb86210e30d12e1780.tar.bz2 libvpx-667ab1c70864b9105537fbfb86210e30d12e1780.zip |
Merge "third_party/libwebm: Pull from upstream"
-rw-r--r-- | third_party/libwebm/README.webm | 2 | ||||
-rw-r--r-- | third_party/libwebm/mkvmuxerutil.cpp | 4 | ||||
-rw-r--r-- | third_party/libwebm/mkvreader.cpp | 29 | ||||
-rw-r--r-- | third_party/libwebm/mkvreader.hpp | 8 |
4 files changed, 33 insertions, 10 deletions
diff --git a/third_party/libwebm/README.webm b/third_party/libwebm/README.webm index b13c8cbc6..2c7570d6d 100644 --- a/third_party/libwebm/README.webm +++ b/third_party/libwebm/README.webm @@ -1,5 +1,5 @@ URL: https://chromium.googlesource.com/webm/libwebm -Version: 630a0e3c338e1b32bddf513a2dad807908d2976a +Version: a7118d8ec564e9db841da1eb01f547f3229f240a License: BSD License File: LICENSE.txt diff --git a/third_party/libwebm/mkvmuxerutil.cpp b/third_party/libwebm/mkvmuxerutil.cpp index 96350e9c5..18060e902 100644 --- a/third_party/libwebm/mkvmuxerutil.cpp +++ b/third_party/libwebm/mkvmuxerutil.cpp @@ -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; diff --git a/third_party/libwebm/mkvreader.cpp b/third_party/libwebm/mkvreader.cpp index cb3567f1a..b4b24594c 100644 --- a/third_party/libwebm/mkvreader.cpp +++ b/third_party/libwebm/mkvreader.cpp @@ -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() diff --git a/third_party/libwebm/mkvreader.hpp b/third_party/libwebm/mkvreader.hpp index adcc29f47..8ebdd99a7 100644 --- a/third_party/libwebm/mkvreader.hpp +++ b/third_party/libwebm/mkvreader.hpp @@ -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 |