From a28976b04c70cef3c8e79137478b6a7bc05608ac Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Fri, 13 Apr 2012 13:28:12 -0700 Subject: Make mediascanner use filedescriptors instead of paths Media scanner needs to open the files now, because media server doesn't have the required permission. b/6330061 Change-Id: I2364d93dcc0530c15676664fc4a8c306351dde08 --- media/libstagefright/StagefrightMediaScanner.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'media/libstagefright/StagefrightMediaScanner.cpp') diff --git a/media/libstagefright/StagefrightMediaScanner.cpp b/media/libstagefright/StagefrightMediaScanner.cpp index 711a8cd..b7cf96e 100644 --- a/media/libstagefright/StagefrightMediaScanner.cpp +++ b/media/libstagefright/StagefrightMediaScanner.cpp @@ -18,6 +18,10 @@ #define LOG_TAG "StagefrightMediaScanner" #include +#include +#include +#include + #include #include @@ -139,7 +143,16 @@ MediaScanResult StagefrightMediaScanner::processFileInternal( sp mRetriever(new MediaMetadataRetriever); - status_t status = mRetriever->setDataSource(path); + int fd = open(path, O_RDONLY | O_LARGEFILE); + status_t status; + if (fd < 0) { + // couldn't open it locally, maybe the media server can? + status = mRetriever->setDataSource(path); + } else { + status = mRetriever->setDataSource(fd, 0, 0x7ffffffffffffffL); + close(fd); + } + if (status) { return MEDIA_SCAN_RESULT_ERROR; } -- cgit v1.1