summaryrefslogtreecommitdiffstats
path: root/libvpx/third_party/libwebm/mkvreader.cpp
diff options
context:
space:
mode:
authorhkuang <hkuang@google.com>2014-04-10 17:21:41 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-04-10 17:21:41 +0000
commit704338728f68ac5ff7f36186bc4cdff890994959 (patch)
treed4655502ab2768db0858ae72ba2de7b530fa3afd /libvpx/third_party/libwebm/mkvreader.cpp
parent7616a7e29066d65ecd1d6f54485360d3964c67bb (diff)
parent4fb68e5dd4e93c7599dc905d861de11ac39c5585 (diff)
downloadandroid_external_libvpx-704338728f68ac5ff7f36186bc4cdff890994959.tar.gz
android_external_libvpx-704338728f68ac5ff7f36186bc4cdff890994959.tar.bz2
android_external_libvpx-704338728f68ac5ff7f36186bc4cdff890994959.zip
am 4fb68e5d: Roll latest libvpx to fix hang when doing adaptive playback.
* commit '4fb68e5dd4e93c7599dc905d861de11ac39c5585': Roll latest libvpx to fix hang when doing adaptive playback.
Diffstat (limited to 'libvpx/third_party/libwebm/mkvreader.cpp')
-rw-r--r--libvpx/third_party/libwebm/mkvreader.cpp29
1 files changed, 22 insertions, 7 deletions
diff --git a/libvpx/third_party/libwebm/mkvreader.cpp b/libvpx/third_party/libwebm/mkvreader.cpp
index cb3567f..b4b2459 100644
--- a/libvpx/third_party/libwebm/mkvreader.cpp
+++ b/libvpx/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()