summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/FileSource.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2010-11-16 14:04:54 -0800
committerJames Dong <jdong@google.com>2010-11-18 14:12:24 -0800
commitc7fc37a3dab9bd1f96713649f351b5990e6316ff (patch)
treebd8cb4ea7521967152650311b485d2d0e6b3bcf2 /media/libstagefright/FileSource.cpp
parent17468ee8dbfe5eb0b9a4f72be80cbb92a5134800 (diff)
downloadframeworks_av-c7fc37a3dab9bd1f96713649f351b5990e6316ff.zip
frameworks_av-c7fc37a3dab9bd1f96713649f351b5990e6316ff.tar.gz
frameworks_av-c7fc37a3dab9bd1f96713649f351b5990e6316ff.tar.bz2
64-bit file size/offset support for media framework
Change-Id: I3452bc2c0f1d990cc67285df2fce1f9f86ff8e10
Diffstat (limited to 'media/libstagefright/FileSource.cpp')
-rw-r--r--media/libstagefright/FileSource.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/media/libstagefright/FileSource.cpp b/media/libstagefright/FileSource.cpp
index 1c1a9c5..c9f68e9 100644
--- a/media/libstagefright/FileSource.cpp
+++ b/media/libstagefright/FileSource.cpp
@@ -16,6 +16,8 @@
#include <media/stagefright/FileSource.h>
#include <media/stagefright/MediaDebug.h>
+#include <sys/types.h>
+#include <unistd.h>
namespace android {
@@ -61,7 +63,7 @@ status_t FileSource::initCheck() const {
return mFile != NULL ? OK : NO_INIT;
}
-ssize_t FileSource::readAt(off_t offset, void *data, size_t size) {
+ssize_t FileSource::readAt(off64_t offset, void *data, size_t size) {
if (mFile == NULL) {
return NO_INIT;
}
@@ -82,17 +84,17 @@ ssize_t FileSource::readAt(off_t offset, void *data, size_t size) {
== mDecryptHandle->decryptApiType) {
return readAtDRM(offset, data, size);
} else {
- int err = fseeko(mFile, offset + mOffset, SEEK_SET);
- if (err < 0) {
+ off64_t result = lseek64(mFd, offset + mOffset, SEEK_SET);
+ if (result == -1) {
LOGE("seek to %lld failed", offset + mOffset);
return UNKNOWN_ERROR;
}
- return fread(data, 1, size, mFile);
+ return ::read(mFd, data, size);
}
}
-status_t FileSource::getSize(off_t *size) {
+status_t FileSource::getSize(off64_t *size) {
if (mFile == NULL) {
return NO_INIT;
}
@@ -103,8 +105,7 @@ status_t FileSource::getSize(off_t *size) {
return OK;
}
- fseek(mFile, 0, SEEK_END);
- *size = ftello(mFile);
+ *size = lseek64(mFd, 0, SEEK_END);
return OK;
}
@@ -133,7 +134,7 @@ void FileSource::getDrmInfo(DecryptHandle **handle, DrmManagerClient **client) {
*client = mDrmManagerClient;
}
-ssize_t FileSource::readAtDRM(off_t offset, void *data, size_t size) {
+ssize_t FileSource::readAtDRM(off64_t offset, void *data, size_t size) {
size_t DRM_CACHE_SIZE = 1024;
if (mDrmBuf == NULL) {
mDrmBuf = new unsigned char[DRM_CACHE_SIZE];