From 47ef6eba621fe95575d4bdda278d689fa84849e5 Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Thu, 13 Jun 2013 13:25:54 -0700 Subject: [PATCH] Fix erroneous "format unsupported " error in Play Movies Only the first 64K of the movie is pulled when sniffing, if the widevine version metadata is not present in the sniff buffer then a "format unsupported" error would occur. This change increases the sniff buffer size to 128K. bug: 9351294 Change-Id: If162cbea6915bf2b70122afd30e556e9206e8e43 --- proprietary/wvm/WVMExtractorImpl.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/proprietary/wvm/WVMExtractorImpl.cpp b/proprietary/wvm/WVMExtractorImpl.cpp index 3318b96c..c1a00749 100644 --- a/proprietary/wvm/WVMExtractorImpl.cpp +++ b/proprietary/wvm/WVMExtractorImpl.cpp @@ -72,22 +72,26 @@ WVMLoadableExtractor *GetInstance(sp dataSource) { } bool IsWidevineMedia(const sp& dataSource) { - char buffer[64 * 1024]; - String8 uri = dataSource->getUri(); if (uri.getPathExtension() == ".m3u8" || uri.find(".m3u8?") != -1) { // can't sniff live streams - check for .m3u8 file extension return true; } - ssize_t bytesRead = dataSource->readAt(0, buffer, sizeof(buffer)); - if (bytesRead < (ssize_t)sizeof(buffer)) { - ALOGV("IsWidevineMedia - insufficient data: %d", (int)bytesRead); - return false; - } + ssize_t kSniffSize = 128 * 1024; + char *buffer = new char[kSniffSize]; + bool result = false; - setenv("WV_SILENT", "true", 1); - bool result = WV_IsWidevineMedia(buffer, sizeof(buffer)); + if (buffer) { + ssize_t bytesRead = dataSource->readAt(0, buffer, kSniffSize); + if (bytesRead < kSniffSize) { + ALOGV("IsWidevineMedia - insufficient data: %d", (int)bytesRead); + } else { + setenv("WV_SILENT", "true", 1); + result = WV_IsWidevineMedia(buffer, kSniffSize); + } + delete[] buffer; + } return result; }