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; }