summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/StagefrightPlayer.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2009-11-10 11:51:43 -0800
committerAndreas Huber <andih@google.com>2009-11-10 12:26:26 -0800
commita75e9fb4876139fff4bb836fb0ebd5f80c8b20b3 (patch)
tree1e55974ca456a316250d4694d8eb2b976aa7a982 /media/libmediaplayerservice/StagefrightPlayer.cpp
parentdae04ca7c4b5590786ffc336721ee8714cc79fef (diff)
downloadframeworks_av-a75e9fb4876139fff4bb836fb0ebd5f80c8b20b3.zip
frameworks_av-a75e9fb4876139fff4bb836fb0ebd5f80c8b20b3.tar.gz
frameworks_av-a75e9fb4876139fff4bb836fb0ebd5f80c8b20b3.tar.bz2
Fix for random audio output failures, properly dup() the file descriptor in IMediaPlayer::setDataSource to assume ownership as the caller will otherwise close it.
Diffstat (limited to 'media/libmediaplayerservice/StagefrightPlayer.cpp')
-rw-r--r--media/libmediaplayerservice/StagefrightPlayer.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/StagefrightPlayer.cpp b/media/libmediaplayerservice/StagefrightPlayer.cpp
index 9a06d13..dbee451 100644
--- a/media/libmediaplayerservice/StagefrightPlayer.cpp
+++ b/media/libmediaplayerservice/StagefrightPlayer.cpp
@@ -40,11 +40,13 @@ status_t StagefrightPlayer::setDataSource(const char *url) {
return err;
}
+// Warning: The filedescriptor passed into this method will only be valid until
+// the method returns, if you want to keep it, dup it!
status_t StagefrightPlayer::setDataSource(int fd, int64_t offset, int64_t length) {
LOGV("setDataSource(%d, %lld, %lld)", fd, offset, length);
reset();
- mPlayer = new MediaPlayerImpl(fd, offset, length);
+ mPlayer = new MediaPlayerImpl(dup(fd), offset, length);
status_t err = mPlayer->initCheck();
if (err != OK) {