diff options
author | Dave Burke <daveburke@google.com> | 2011-08-30 14:39:17 +0100 |
---|---|---|
committer | Dave Burke <daveburke@google.com> | 2011-09-02 11:26:59 +0100 |
commit | d681bbb1767bed09415e050ba78975df214bcd68 (patch) | |
tree | 2030c617c61bbf7b6cd8c6bafab601a99b1ac83d /media/libmedia/mediaplayer.cpp | |
parent | d942202ee0c92608c648735c3ad0f1bab4312420 (diff) | |
download | frameworks_av-d681bbb1767bed09415e050ba78975df214bcd68.zip frameworks_av-d681bbb1767bed09415e050ba78975df214bcd68.tar.gz frameworks_av-d681bbb1767bed09415e050ba78975df214bcd68.tar.bz2 |
Require INTERNET permission for network-based content.
Bug #1870981
Change-Id: Ia3ad166390c4d60cea19c3783895b078a2c4c15f
Diffstat (limited to 'media/libmedia/mediaplayer.cpp')
-rw-r--r-- | media/libmedia/mediaplayer.cpp | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp index 67a66a2..0fc6a8a 100644 --- a/media/libmedia/mediaplayer.cpp +++ b/media/libmedia/mediaplayer.cpp @@ -108,7 +108,7 @@ status_t MediaPlayer::setListener(const sp<MediaPlayerListener>& listener) } -status_t MediaPlayer::setDataSource(const sp<IMediaPlayer>& player) +status_t MediaPlayer::attachNewPlayer(const sp<IMediaPlayer>& player) { status_t err = UNKNOWN_ERROR; sp<IMediaPlayer> p; @@ -117,7 +117,7 @@ status_t MediaPlayer::setDataSource(const sp<IMediaPlayer>& player) if ( !( (mCurrentState & MEDIA_PLAYER_IDLE) || (mCurrentState == MEDIA_PLAYER_STATE_ERROR ) ) ) { - LOGE("setDataSource called in state %d", mCurrentState); + LOGE("attachNewPlayer called in state %d", mCurrentState); return INVALID_OPERATION; } @@ -147,9 +147,11 @@ status_t MediaPlayer::setDataSource( if (url != NULL) { const sp<IMediaPlayerService>& service(getMediaPlayerService()); if (service != 0) { - sp<IMediaPlayer> player( - service->create(getpid(), this, url, headers, mAudioSessionId)); - err = setDataSource(player); + sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId)); + err = attachNewPlayer(player); + if (err == NO_ERROR) { + err = mPlayer->setDataSource(url, headers); + } } } return err; @@ -161,8 +163,26 @@ status_t MediaPlayer::setDataSource(int fd, int64_t offset, int64_t length) status_t err = UNKNOWN_ERROR; const sp<IMediaPlayerService>& service(getMediaPlayerService()); if (service != 0) { - sp<IMediaPlayer> player(service->create(getpid(), this, fd, offset, length, mAudioSessionId)); - err = setDataSource(player); + sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId)); + err = attachNewPlayer(player); + if (err == NO_ERROR) { + err = mPlayer->setDataSource(fd, offset, length); + } + } + return err; +} + +status_t MediaPlayer::setDataSource(const sp<IStreamSource> &source) +{ + LOGV("setDataSource"); + status_t err = UNKNOWN_ERROR; + const sp<IMediaPlayerService>& service(getMediaPlayerService()); + if (service != 0) { + sp<IMediaPlayer> player(service->create(getpid(), this, mAudioSessionId)); + err = attachNewPlayer(player); + if (err == NO_ERROR) { + err = mPlayer->setDataSource(source); + } } return err; } |