Loading include/media/stagefright/DataSource.h +2 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ class DataSource : public RefBase { public: enum Flags { kWantsPrefetching = 1, kStreamedFromLocalHost = 2, }; static sp<DataSource> CreateFromURI( Loading include/media/stagefright/HTTPDataSource.h +1 −3 Original line number Diff line number Diff line Loading @@ -45,9 +45,7 @@ public: virtual status_t getSize(off_t *size); virtual uint32_t flags() { return kWantsPrefetching; } virtual uint32_t flags(); protected: virtual ~HTTPDataSource(); Loading include/media/stagefright/MediaExtractor.h +10 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,16 @@ public: // returns an empty metadata object. virtual sp<MetaData> getMetaData(); enum Flags { CAN_SEEK_BACKWARD = 1, CAN_SEEK_FORWARD = 2, CAN_PAUSE = 4, }; // If subclasses do _not_ override this, the default is // CAN_SEEK_BACKWARD | CAN_SEEK_FORWARD | CAN_PAUSE virtual uint32_t flags() const; protected: MediaExtractor() {} virtual ~MediaExtractor() {} Loading media/libmediaplayerservice/StagefrightPlayer.cpp +28 −1 Original line number Diff line number Diff line Loading @@ -6,6 +6,9 @@ #include "AwesomePlayer.h" #include <media/Metadata.h> #include <media/stagefright/MediaExtractor.h> namespace android { StagefrightPlayer::StagefrightPlayer() Loading Loading @@ -109,7 +112,8 @@ status_t StagefrightPlayer::getDuration(int *msec) { status_t err = mPlayer->getDuration(&durationUs); if (err != OK) { return err; *msec = 0; return OK; } *msec = (durationUs + 500) / 1000; Loading Loading @@ -156,4 +160,27 @@ void StagefrightPlayer::setAudioSink(const sp<AudioSink> &audioSink) { mPlayer->setAudioSink(audioSink); } status_t StagefrightPlayer::getMetadata( const media::Metadata::Filter& ids, Parcel *records) { using media::Metadata; uint32_t flags = mPlayer->flags(); Metadata metadata(records); metadata.appendBool( Metadata::kPauseAvailable, flags & MediaExtractor::CAN_PAUSE); metadata.appendBool( Metadata::kSeekBackwardAvailable, flags & MediaExtractor::CAN_SEEK_BACKWARD); metadata.appendBool( Metadata::kSeekForwardAvailable, flags & MediaExtractor::CAN_SEEK_FORWARD); return OK; } } // namespace android media/libmediaplayerservice/StagefrightPlayer.h +3 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,9 @@ public: virtual status_t suspend(); virtual status_t resume(); virtual status_t getMetadata( const media::Metadata::Filter& ids, Parcel *records); private: AwesomePlayer *mPlayer; Loading Loading
include/media/stagefright/DataSource.h +2 −1 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ class DataSource : public RefBase { public: enum Flags { kWantsPrefetching = 1, kStreamedFromLocalHost = 2, }; static sp<DataSource> CreateFromURI( Loading
include/media/stagefright/HTTPDataSource.h +1 −3 Original line number Diff line number Diff line Loading @@ -45,9 +45,7 @@ public: virtual status_t getSize(off_t *size); virtual uint32_t flags() { return kWantsPrefetching; } virtual uint32_t flags(); protected: virtual ~HTTPDataSource(); Loading
include/media/stagefright/MediaExtractor.h +10 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,16 @@ public: // returns an empty metadata object. virtual sp<MetaData> getMetaData(); enum Flags { CAN_SEEK_BACKWARD = 1, CAN_SEEK_FORWARD = 2, CAN_PAUSE = 4, }; // If subclasses do _not_ override this, the default is // CAN_SEEK_BACKWARD | CAN_SEEK_FORWARD | CAN_PAUSE virtual uint32_t flags() const; protected: MediaExtractor() {} virtual ~MediaExtractor() {} Loading
media/libmediaplayerservice/StagefrightPlayer.cpp +28 −1 Original line number Diff line number Diff line Loading @@ -6,6 +6,9 @@ #include "AwesomePlayer.h" #include <media/Metadata.h> #include <media/stagefright/MediaExtractor.h> namespace android { StagefrightPlayer::StagefrightPlayer() Loading Loading @@ -109,7 +112,8 @@ status_t StagefrightPlayer::getDuration(int *msec) { status_t err = mPlayer->getDuration(&durationUs); if (err != OK) { return err; *msec = 0; return OK; } *msec = (durationUs + 500) / 1000; Loading Loading @@ -156,4 +160,27 @@ void StagefrightPlayer::setAudioSink(const sp<AudioSink> &audioSink) { mPlayer->setAudioSink(audioSink); } status_t StagefrightPlayer::getMetadata( const media::Metadata::Filter& ids, Parcel *records) { using media::Metadata; uint32_t flags = mPlayer->flags(); Metadata metadata(records); metadata.appendBool( Metadata::kPauseAvailable, flags & MediaExtractor::CAN_PAUSE); metadata.appendBool( Metadata::kSeekBackwardAvailable, flags & MediaExtractor::CAN_SEEK_BACKWARD); metadata.appendBool( Metadata::kSeekForwardAvailable, flags & MediaExtractor::CAN_SEEK_FORWARD); return OK; } } // namespace android
media/libmediaplayerservice/StagefrightPlayer.h +3 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,9 @@ public: virtual status_t suspend(); virtual status_t resume(); virtual status_t getMetadata( const media::Metadata::Filter& ids, Parcel *records); private: AwesomePlayer *mPlayer; Loading