diff options
| author | 2009-10-23 10:22:30 -0700 | |
|---|---|---|
| committer | 2009-10-23 10:35:08 -0700 | |
| commit | 9a12baf929ea803915d7ab626b200ffefb4fbac7 (patch) | |
| tree | 12a3f70e5ef69e09ea9e9ca4e4dcd4949718e924 | |
| parent | 9069aa31accee9c23a4cf228ca27fe8fa8506a56 (diff) | |
New API to instantiate a MediaExtractor given a URI and optional MIME type.
Also DataSources now must provide a method initCheck()
and DataSource::reat_at has been renamed to readAt to conform to
standard API naming guidelines.
20 files changed, 115 insertions, 109 deletions
diff --git a/include/media/stagefright/CachingDataSource.h b/include/media/stagefright/CachingDataSource.h index e35e19e27bbc..b0fc4b2c04fd 100644 --- a/include/media/stagefright/CachingDataSource.h +++ b/include/media/stagefright/CachingDataSource.h @@ -29,9 +29,9 @@ public:      CachingDataSource(              const sp<DataSource> &source, size_t pageSize, int numPages); -    status_t InitCheck() const; +    virtual status_t initCheck() const; -    virtual ssize_t read_at(off_t offset, void *data, size_t size); +    virtual ssize_t readAt(off_t offset, void *data, size_t size);  protected:      virtual ~CachingDataSource(); diff --git a/include/media/stagefright/DataSource.h b/include/media/stagefright/DataSource.h index f46f0afe4f3e..b843cd934708 100644 --- a/include/media/stagefright/DataSource.h +++ b/include/media/stagefright/DataSource.h @@ -33,7 +33,9 @@ class DataSource : public RefBase {  public:      DataSource() {} -    virtual ssize_t read_at(off_t offset, void *data, size_t size) = 0; +    virtual status_t initCheck() const = 0; + +    virtual ssize_t readAt(off_t offset, void *data, size_t size) = 0;      // Convenience methods:      bool getUInt16(off_t offset, uint16_t *x); diff --git a/include/media/stagefright/FileSource.h b/include/media/stagefright/FileSource.h index ccbe0efa10bd..d7b42c3b2521 100644 --- a/include/media/stagefright/FileSource.h +++ b/include/media/stagefright/FileSource.h @@ -29,11 +29,13 @@ namespace android {  class FileSource : public DataSource {  public:      FileSource(const char *filename); -    virtual ~FileSource(); -    status_t InitCheck() const; +    virtual status_t initCheck() const; + +    virtual ssize_t readAt(off_t offset, void *data, size_t size); -    virtual ssize_t read_at(off_t offset, void *data, size_t size); +protected: +    virtual ~FileSource();  private:      FILE *mFile; diff --git a/include/media/stagefright/HTTPDataSource.h b/include/media/stagefright/HTTPDataSource.h index 02d95fd255a0..d5dc9e6c8886 100644 --- a/include/media/stagefright/HTTPDataSource.h +++ b/include/media/stagefright/HTTPDataSource.h @@ -29,12 +29,12 @@ public:      HTTPDataSource(const char *host, int port, const char *path);      HTTPDataSource(const char *uri); -    virtual ~HTTPDataSource(); +    virtual status_t initCheck() const; -    // XXXandih -    status_t InitCheck() const { return OK; } +    virtual ssize_t readAt(off_t offset, void *data, size_t size); -    virtual ssize_t read_at(off_t offset, void *data, size_t size); +protected: +    virtual ~HTTPDataSource();  private:      enum { @@ -50,6 +50,8 @@ private:      size_t mBufferLength;      off_t mBufferOffset; +    status_t mInitCheck; +      HTTPDataSource(const HTTPDataSource &);      HTTPDataSource &operator=(const HTTPDataSource &);  }; diff --git a/include/media/stagefright/MediaExtractor.h b/include/media/stagefright/MediaExtractor.h index 4d6b9897f6da..d56d4b3578a3 100644 --- a/include/media/stagefright/MediaExtractor.h +++ b/include/media/stagefright/MediaExtractor.h @@ -31,6 +31,9 @@ public:      static sp<MediaExtractor> Create(              const sp<DataSource> &source, const char *mime = NULL); +    static sp<MediaExtractor> CreateFromURI( +            const char *uri, const char *mime = NULL); +      virtual size_t countTracks() = 0;      virtual sp<MediaSource> getTrack(size_t index) = 0; diff --git a/include/media/stagefright/MmapSource.h b/include/media/stagefright/MmapSource.h index a8bd57f0d815..1b39d53008f7 100644 --- a/include/media/stagefright/MmapSource.h +++ b/include/media/stagefright/MmapSource.h @@ -30,13 +30,14 @@ public:      // Assumes ownership of "fd".      MmapSource(int fd, int64_t offset, int64_t length); -    virtual ~MmapSource(); - -    status_t InitCheck() const; +    virtual status_t initCheck() const; -    virtual ssize_t read_at(off_t offset, void *data, size_t size); +    virtual ssize_t readAt(off_t offset, void *data, size_t size);      virtual status_t getSize(off_t *size); +protected: +    virtual ~MmapSource(); +  private:      int mFd;      void *mBase; diff --git a/include/media/stagefright/ShoutcastSource.h b/include/media/stagefright/ShoutcastSource.h index 352857acedf6..bc67156b6541 100644 --- a/include/media/stagefright/ShoutcastSource.h +++ b/include/media/stagefright/ShoutcastSource.h @@ -31,7 +31,6 @@ class ShoutcastSource : public MediaSource {  public:      // Assumes ownership of "http".      ShoutcastSource(HTTPStream *http); -    virtual ~ShoutcastSource();      virtual status_t start(MetaData *params = NULL);      virtual status_t stop(); @@ -41,6 +40,9 @@ public:      virtual status_t read(              MediaBuffer **buffer, const ReadOptions *options = NULL); +protected: +    virtual ~ShoutcastSource(); +  private:      HTTPStream *mHttp;      size_t mMetaDataOffset; diff --git a/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp b/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp index fc4f2c570ee7..7a3aee86b02f 100644 --- a/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp +++ b/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp @@ -48,26 +48,7 @@ StagefrightMetadataRetriever::~StagefrightMetadataRetriever() {  status_t StagefrightMetadataRetriever::setDataSource(const char *uri) {      LOGV("setDataSource(%s)", uri); -    sp<DataSource> source; -    if (!strncasecmp("file://", uri, 7)) { -        sp<MmapSource> mmapSource = new MmapSource(uri + 7); -        if (mmapSource->InitCheck() != OK) { -            return ERROR_IO; -        } -        source = mmapSource; -    } else if (!strncasecmp("http://", uri, 7)) { -        source = new HTTPDataSource(uri); -        source = new CachingDataSource(source, 64 * 1024, 10); -    } else { -        // Assume it's a filename. -        sp<MmapSource> mmapSource = new MmapSource(uri); -        if (mmapSource->InitCheck() != OK) { -            return ERROR_IO; -        } -        source = mmapSource; -    } - -    mExtractor = MediaExtractor::Create(source); +    mExtractor = MediaExtractor::CreateFromURI(uri);      return mExtractor.get() != NULL ? OK : UNKNOWN_ERROR;  } diff --git a/media/libstagefright/AMRExtractor.cpp b/media/libstagefright/AMRExtractor.cpp index 0d1e6d7092a3..1e3c5a4ead88 100644 --- a/media/libstagefright/AMRExtractor.cpp +++ b/media/libstagefright/AMRExtractor.cpp @@ -156,7 +156,7 @@ status_t AMRSource::read(      *out = NULL;      uint8_t header; -    ssize_t n = mDataSource->read_at(mOffset, &header, 1); +    ssize_t n = mDataSource->readAt(mOffset, &header, 1);      if (n < 1) {          return ERROR_IO; @@ -192,7 +192,7 @@ status_t AMRSource::read(      // Round up bits to bytes and add 1 for the header byte.      frameSize = (frameSize + 7) / 8 + 1; -    n = mDataSource->read_at(mOffset, buffer->data(), frameSize); +    n = mDataSource->readAt(mOffset, buffer->data(), frameSize);      if (n != (ssize_t)frameSize) {          buffer->release(); @@ -218,7 +218,7 @@ bool SniffAMR(          const sp<DataSource> &source, String8 *mimeType, float *confidence) {      char header[9]; -    if (source->read_at(0, header, sizeof(header)) != sizeof(header)) { +    if (source->readAt(0, header, sizeof(header)) != sizeof(header)) {          return false;      } diff --git a/media/libstagefright/CachingDataSource.cpp b/media/libstagefright/CachingDataSource.cpp index fd005764a6ca..23f48978b5e6 100644 --- a/media/libstagefright/CachingDataSource.cpp +++ b/media/libstagefright/CachingDataSource.cpp @@ -61,11 +61,11 @@ CachingDataSource::~CachingDataSource() {      mData = NULL;  } -status_t CachingDataSource::InitCheck() const { -    return OK; +status_t CachingDataSource::initCheck() const { +    return mSource->initCheck();  } -ssize_t CachingDataSource::read_at(off_t offset, void *data, size_t size) { +ssize_t CachingDataSource::readAt(off_t offset, void *data, size_t size) {      Mutex::Autolock autoLock(mLock);      size_t total = 0; @@ -82,7 +82,7 @@ ssize_t CachingDataSource::read_at(off_t offset, void *data, size_t size) {          if (page == NULL) {              page = allocate_page();              page->mOffset = offset - offset % mPageSize; -            ssize_t n = mSource->read_at(page->mOffset, page->mData, mPageSize); +            ssize_t n = mSource->readAt(page->mOffset, page->mData, mPageSize);              if (n < 0) {                  page->mLength = 0;              } else { diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp index 933c2f6350fe..210b2f6b365a 100644 --- a/media/libstagefright/DataSource.cpp +++ b/media/libstagefright/DataSource.cpp @@ -28,7 +28,7 @@ bool DataSource::getUInt16(off_t offset, uint16_t *x) {      *x = 0;      uint8_t byte[2]; -    if (read_at(offset, byte, 2) != 2) { +    if (readAt(offset, byte, 2) != 2) {          return false;      } diff --git a/media/libstagefright/FileSource.cpp b/media/libstagefright/FileSource.cpp index f6b90b25ad5e..f318ee34a7e5 100644 --- a/media/libstagefright/FileSource.cpp +++ b/media/libstagefright/FileSource.cpp @@ -30,11 +30,11 @@ FileSource::~FileSource() {      }  } -status_t FileSource::InitCheck() const { +status_t FileSource::initCheck() const {      return mFile != NULL ? OK : NO_INIT;  } -ssize_t FileSource::read_at(off_t offset, void *data, size_t size) { +ssize_t FileSource::readAt(off_t offset, void *data, size_t size) {      Mutex::Autolock autoLock(mLock);      int err = fseeko(mFile, offset, SEEK_SET); diff --git a/media/libstagefright/HTTPDataSource.cpp b/media/libstagefright/HTTPDataSource.cpp index cc25886a5bc6..5536801bd2db 100644 --- a/media/libstagefright/HTTPDataSource.cpp +++ b/media/libstagefright/HTTPDataSource.cpp @@ -67,8 +67,7 @@ HTTPDataSource::HTTPDataSource(const char *uri)      mPort = port;      mPath = strdup(path.c_str()); -    status_t err = mHttp->connect(mHost, mPort); -    CHECK_EQ(err, OK); +    mInitCheck = mHttp->connect(mHost, mPort);  }  HTTPDataSource::HTTPDataSource(const char *host, int port, const char *path) @@ -79,8 +78,11 @@ HTTPDataSource::HTTPDataSource(const char *host, int port, const char *path)        mBuffer(malloc(kBufferSize)),        mBufferLength(0),        mBufferOffset(0) { -    status_t err = mHttp->connect(mHost, mPort); -    CHECK_EQ(err, OK); +    mInitCheck = mHttp->connect(mHost, mPort); +} + +status_t HTTPDataSource::initCheck() const { +    return mInitCheck;  }  HTTPDataSource::~HTTPDataSource() { @@ -96,7 +98,7 @@ HTTPDataSource::~HTTPDataSource() {      mHttp = NULL;  } -ssize_t HTTPDataSource::read_at(off_t offset, void *data, size_t size) { +ssize_t HTTPDataSource::readAt(off_t offset, void *data, size_t size) {      if (offset >= mBufferOffset              && offset < (off_t)(mBufferOffset + mBufferLength)) {          size_t num_bytes_available = mBufferLength - (offset - mBufferOffset); diff --git a/media/libstagefright/JPEGSource.cpp b/media/libstagefright/JPEGSource.cpp index d1dfd83836b0..a4be2dd2d945 100644 --- a/media/libstagefright/JPEGSource.cpp +++ b/media/libstagefright/JPEGSource.cpp @@ -119,7 +119,7 @@ status_t JPEGSource::read(      MediaBuffer *buffer;      mGroup->acquire_buffer(&buffer); -    ssize_t n = mSource->read_at(mOffset, buffer->data(), mSize - mOffset); +    ssize_t n = mSource->readAt(mOffset, buffer->data(), mSize - mOffset);      if (n <= 0) {          buffer->release(); @@ -156,13 +156,13 @@ status_t JPEGSource::parseJPEG() {      for (;;) {          uint8_t marker; -        if (mSource->read_at(i++, &marker, 1) != 1) { +        if (mSource->readAt(i++, &marker, 1) != 1) {              return ERROR_IO;          }          CHECK_EQ(marker, 0xff); -        if (mSource->read_at(i++, &marker, 1) != 1) { +        if (mSource->readAt(i++, &marker, 1) != 1) {              return ERROR_IO;          } diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp index 82b3db72c1a0..736f1a9d690e 100644 --- a/media/libstagefright/MP3Extractor.cpp +++ b/media/libstagefright/MP3Extractor.cpp @@ -177,7 +177,7 @@ static bool Resync(          // of the datasource.          uint8_t id3header[10]; -        if (source->read_at(0, id3header, sizeof(id3header)) +        if (source->readAt(0, id3header, sizeof(id3header))                  < (ssize_t)sizeof(id3header)) {              // If we can't even read these 10 bytes, we might as well bail out,              // even if there _were_ 10 bytes of valid mp3 audio data... @@ -228,7 +228,7 @@ static bool Resync(              buffer_length = buffer_length - buffer_offset;              buffer_offset = 0; -            ssize_t n = source->read_at( +            ssize_t n = source->readAt(                      pos, &buffer[buffer_length], kMaxFrameSize - buffer_length);              if (n <= 0) { @@ -265,7 +265,7 @@ static bool Resync(          valid = true;          for (int j = 0; j < 3; ++j) {              uint8_t tmp[4]; -            if (source->read_at(test_pos, tmp, 4) < 4) { +            if (source->readAt(test_pos, tmp, 4) < 4) {                  valid = false;                  break;              } @@ -480,7 +480,7 @@ status_t MP3Source::read(      size_t frame_size;      for (;;) { -        ssize_t n = mDataSource->read_at(mCurrentPos, buffer->data(), 4); +        ssize_t n = mDataSource->readAt(mCurrentPos, buffer->data(), 4);          if (n < 4) {              buffer->release();              buffer = NULL; @@ -514,7 +514,7 @@ status_t MP3Source::read(      CHECK(frame_size <= buffer->size()); -    ssize_t n = mDataSource->read_at(mCurrentPos, buffer->data(), frame_size); +    ssize_t n = mDataSource->readAt(mCurrentPos, buffer->data(), frame_size);      if (n < (ssize_t)frame_size) {          buffer->release();          buffer = NULL; diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index f17451670283..5c3720ea48a9 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -249,7 +249,7 @@ static void MakeFourCCString(uint32_t x, char *s) {  status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {      uint32_t hdr[2]; -    if (mDataSource->read_at(*offset, hdr, 8) < 8) { +    if (mDataSource->readAt(*offset, hdr, 8) < 8) {          return ERROR_IO;      }      uint64_t chunk_size = ntohl(hdr[0]); @@ -257,7 +257,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {      off_t data_offset = *offset + 8;      if (chunk_size == 1) { -        if (mDataSource->read_at(*offset + 8, &chunk_size, 8) < 8) { +        if (mDataSource->readAt(*offset + 8, &chunk_size, 8) < 8) {              return ERROR_IO;          }          chunk_size = ntoh64(chunk_size); @@ -274,7 +274,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {      char buffer[256];      if (chunk_size <= sizeof(buffer)) { -        if (mDataSource->read_at(*offset, buffer, chunk_size) < chunk_size) { +        if (mDataSource->readAt(*offset, buffer, chunk_size) < chunk_size) {              return ERROR_IO;          } @@ -320,7 +320,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {              CHECK(chunk_data_size >= 4);              uint8_t version; -            if (mDataSource->read_at(data_offset, &version, 1) < 1) { +            if (mDataSource->readAt(data_offset, &version, 1) < 1) {                  return ERROR_IO;              } @@ -334,7 +334,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {                  }                  uint8_t buffer[36 + 60]; -                if (mDataSource->read_at( +                if (mDataSource->readAt(                              data_offset, buffer, sizeof(buffer)) < (ssize_t)sizeof(buffer)) {                      return ERROR_IO;                  } @@ -351,7 +351,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {                  }                  uint8_t buffer[24 + 60]; -                if (mDataSource->read_at( +                if (mDataSource->readAt(                              data_offset, buffer, sizeof(buffer)) < (ssize_t)sizeof(buffer)) {                      return ERROR_IO;                  } @@ -389,7 +389,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {              }              uint8_t version; -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          data_offset, &version, sizeof(version))                      < (ssize_t)sizeof(version)) {                  return ERROR_IO; @@ -406,7 +406,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {              }              uint32_t timescale; -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          timescale_offset, ×cale, sizeof(timescale))                      < (ssize_t)sizeof(timescale)) {                  return ERROR_IO; @@ -416,7 +416,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {              int64_t duration;              if (version == 1) { -                if (mDataSource->read_at( +                if (mDataSource->readAt(                              timescale_offset + 4, &duration, sizeof(duration))                          < (ssize_t)sizeof(duration)) {                      return ERROR_IO; @@ -424,7 +424,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {                  duration = ntoh64(duration);              } else {                  int32_t duration32; -                if (mDataSource->read_at( +                if (mDataSource->readAt(                              timescale_offset + 4, &duration32, sizeof(duration32))                          < (ssize_t)sizeof(duration32)) {                      return ERROR_IO; @@ -445,7 +445,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {              }              uint8_t buffer[24]; -            if (mDataSource->read_at(data_offset, buffer, 24) < 24) { +            if (mDataSource->readAt(data_offset, buffer, 24) < 24) {                  return ERROR_IO;              } @@ -472,7 +472,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {              uint8_t buffer[8];              CHECK(chunk_data_size >= (off_t)sizeof(buffer)); -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          data_offset, buffer, 8) < 8) {                  return ERROR_IO;              } @@ -515,7 +515,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {                  return ERROR_MALFORMED;              } -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          data_offset, buffer, sizeof(buffer)) < (ssize_t)sizeof(buffer)) {                  return ERROR_IO;              } @@ -567,7 +567,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {                  return ERROR_MALFORMED;              } -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          data_offset, buffer, sizeof(buffer)) < (ssize_t)sizeof(buffer)) {                  return ERROR_IO;              } @@ -678,7 +678,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {                  return ERROR_BUFFER_TOO_SMALL;              } -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          data_offset, buffer, chunk_data_size) < chunk_data_size) {                  return ERROR_IO;              } @@ -702,7 +702,7 @@ status_t MPEG4Extractor::parseChunk(off_t *offset, int depth) {                  return ERROR_BUFFER_TOO_SMALL;              } -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          data_offset, buffer, chunk_data_size) < chunk_data_size) {                  return ERROR_IO;              } @@ -889,7 +889,7 @@ status_t MPEG4Source::read(      if (!mIsAVC || mWantsNALFragments) {          if (newBuffer) {              ssize_t num_bytes_read = -                mDataSource->read_at(offset, (uint8_t *)mBuffer->data(), size); +                mDataSource->readAt(offset, (uint8_t *)mBuffer->data(), size);              if (num_bytes_read < (ssize_t)size) {                  mBuffer->release(); @@ -944,7 +944,7 @@ status_t MPEG4Source::read(          // the start code (0x00 00 00 01).          ssize_t num_bytes_read = -            mDataSource->read_at(offset, mSrcBuffer, size); +            mDataSource->readAt(offset, mSrcBuffer, size);          if (num_bytes_read < (ssize_t)size) {              mBuffer->release(); @@ -995,7 +995,7 @@ bool SniffMPEG4(          const sp<DataSource> &source, String8 *mimeType, float *confidence) {      uint8_t header[8]; -    ssize_t n = source->read_at(4, header, sizeof(header)); +    ssize_t n = source->readAt(4, header, sizeof(header));      if (n < (ssize_t)sizeof(header)) {          return false;      } diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp index 5e1270af496f..d51802cf2e08 100644 --- a/media/libstagefright/MediaExtractor.cpp +++ b/media/libstagefright/MediaExtractor.cpp @@ -22,9 +22,12 @@  #include "include/MP3Extractor.h"  #include "include/MPEG4Extractor.h" +#include <media/stagefright/CachingDataSource.h>  #include <media/stagefright/DataSource.h> +#include <media/stagefright/HTTPDataSource.h>  #include <media/stagefright/MediaDefs.h>  #include <media/stagefright/MediaExtractor.h> +#include <media/stagefright/MmapSource.h>  #include <utils/String8.h>  namespace android { @@ -59,4 +62,25 @@ sp<MediaExtractor> MediaExtractor::Create(      return NULL;  } +// static +sp<MediaExtractor> MediaExtractor::CreateFromURI( +        const char *uri, const char *mime) { +    sp<DataSource> source; +    if (!strncasecmp("file://", uri, 7)) { +        source = new MmapSource(uri + 7); +    } else if (!strncasecmp("http://", uri, 7)) { +        source = new HTTPDataSource(uri); +        source = new CachingDataSource(source, 64 * 1024, 10); +    } else { +        // Assume it's a filename. +        source = new MmapSource(uri); +    } + +    if (source == NULL || source->initCheck() != OK) { +        return NULL; +    } + +    return Create(source, mime); +} +  }  // namespace android diff --git a/media/libstagefright/MediaPlayerImpl.cpp b/media/libstagefright/MediaPlayerImpl.cpp index 4e0e99642822..76f41821666e 100644 --- a/media/libstagefright/MediaPlayerImpl.cpp +++ b/media/libstagefright/MediaPlayerImpl.cpp @@ -26,9 +26,7 @@  #include <unistd.h>  #include <media/stagefright/AudioPlayer.h> -#include <media/stagefright/CachingDataSource.h>  // #include <media/stagefright/CameraSource.h> -#include <media/stagefright/HTTPDataSource.h>  #include <media/stagefright/MediaDebug.h>  #include <media/stagefright/MediaExtractor.h>  #include <media/stagefright/MediaPlayerImpl.h> @@ -71,18 +69,7 @@ MediaPlayerImpl::MediaPlayerImpl(const char *uri)          mVideoDecoder = CameraSource::Create();  #endif      } else { -        sp<DataSource> source; -        if (!strncasecmp("file://", uri, 7)) { -            source = new MmapSource(uri + 7); -        } else if (!strncasecmp("http://", uri, 7)) { -            source = new HTTPDataSource(uri); -            source = new CachingDataSource(source, 64 * 1024, 10); -        } else { -            // Assume it's a filename. -            source = new MmapSource(uri); -        } - -        mExtractor = MediaExtractor::Create(source); +        mExtractor = MediaExtractor::CreateFromURI(uri);          if (mExtractor == NULL) {              return; diff --git a/media/libstagefright/MmapSource.cpp b/media/libstagefright/MmapSource.cpp index 8277c154042d..42749cff0f1b 100644 --- a/media/libstagefright/MmapSource.cpp +++ b/media/libstagefright/MmapSource.cpp @@ -81,12 +81,12 @@ MmapSource::~MmapSource() {      }  } -status_t MmapSource::InitCheck() const { +status_t MmapSource::initCheck() const {      return mFd == -1 ? NO_INIT : OK;  } -ssize_t MmapSource::read_at(off_t offset, void *data, size_t size) { -    LOGV("read_at offset:%ld data:%p size:%d", offset, data, size); +ssize_t MmapSource::readAt(off_t offset, void *data, size_t size) { +    LOGV("readAt offset:%ld data:%p size:%d", offset, data, size);      CHECK(offset >= 0);      size_t avail = 0; diff --git a/media/libstagefright/SampleTable.cpp b/media/libstagefright/SampleTable.cpp index 3eed52af65c7..4aec0e9cf35f 100644 --- a/media/libstagefright/SampleTable.cpp +++ b/media/libstagefright/SampleTable.cpp @@ -70,7 +70,7 @@ status_t SampleTable::setChunkOffsetParams(      }      uint8_t header[8]; -    if (mDataSource->read_at( +    if (mDataSource->readAt(                  data_offset, header, sizeof(header)) < (ssize_t)sizeof(header)) {          return ERROR_IO;      } @@ -108,7 +108,7 @@ status_t SampleTable::setSampleToChunkParams(      }      uint8_t header[8]; -    if (mDataSource->read_at( +    if (mDataSource->readAt(                  data_offset, header, sizeof(header)) < (ssize_t)sizeof(header)) {          return ERROR_IO;      } @@ -142,7 +142,7 @@ status_t SampleTable::setSampleSizeParams(      }      uint8_t header[12]; -    if (mDataSource->read_at( +    if (mDataSource->readAt(                  data_offset, header, sizeof(header)) < (ssize_t)sizeof(header)) {          return ERROR_IO;      } @@ -194,7 +194,7 @@ status_t SampleTable::setTimeToSampleParams(      }      uint8_t header[8]; -    if (mDataSource->read_at( +    if (mDataSource->readAt(                  data_offset, header, sizeof(header)) < (ssize_t)sizeof(header)) {          return ERROR_IO;      } @@ -208,7 +208,7 @@ status_t SampleTable::setTimeToSampleParams(      mTimeToSample = new uint32_t[mTimeToSampleCount * 2];      size_t size = sizeof(uint32_t) * mTimeToSampleCount * 2; -    if (mDataSource->read_at( +    if (mDataSource->readAt(                  data_offset + 8, mTimeToSample, size) < (ssize_t)size) {          return ERROR_IO;      } @@ -228,7 +228,7 @@ status_t SampleTable::setSyncSampleParams(off_t data_offset, size_t data_size) {      mSyncSampleOffset = data_offset;      uint8_t header[8]; -    if (mDataSource->read_at( +    if (mDataSource->readAt(                  data_offset, header, sizeof(header)) < (ssize_t)sizeof(header)) {          return ERROR_IO;      } @@ -264,7 +264,7 @@ status_t SampleTable::getChunkOffset(uint32_t chunk_index, off_t *offset) {      if (mChunkOffsetType == kChunkOffsetType32) {          uint32_t offset32; -        if (mDataSource->read_at( +        if (mDataSource->readAt(                      mChunkOffsetOffset + 8 + 4 * chunk_index,                      &offset32,                      sizeof(offset32)) < (ssize_t)sizeof(offset32)) { @@ -276,7 +276,7 @@ status_t SampleTable::getChunkOffset(uint32_t chunk_index, off_t *offset) {          CHECK_EQ(mChunkOffsetType, kChunkOffsetType64);          uint64_t offset64; -        if (mDataSource->read_at( +        if (mDataSource->readAt(                      mChunkOffsetOffset + 8 + 8 * chunk_index,                      &offset64,                      sizeof(offset64)) < (ssize_t)sizeof(offset64)) { @@ -313,7 +313,7 @@ status_t SampleTable::getChunkForSample(      uint32_t index = 0;      while (index < mNumSampleToChunkOffsets) {          uint8_t buffer[12]; -        if (mDataSource->read_at(mSampleToChunkOffset + 8 + index * 12, +        if (mDataSource->readAt(mSampleToChunkOffset + 8 + index * 12,                                   buffer, sizeof(buffer)) < (ssize_t)sizeof(buffer)) {              return ERROR_IO;          } @@ -362,7 +362,7 @@ status_t SampleTable::getSampleSize(      switch (mSampleSizeFieldSize) {          case 32:          { -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          mSampleSizeOffset + 12 + 4 * sample_index,                          sample_size, sizeof(*sample_size)) < (ssize_t)sizeof(*sample_size)) {                  return ERROR_IO; @@ -375,7 +375,7 @@ status_t SampleTable::getSampleSize(          case 16:          {              uint16_t x; -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          mSampleSizeOffset + 12 + 2 * sample_index,                          &x, sizeof(x)) < (ssize_t)sizeof(x)) {                  return ERROR_IO; @@ -388,7 +388,7 @@ status_t SampleTable::getSampleSize(          case 8:          {              uint8_t x; -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          mSampleSizeOffset + 12 + sample_index,                          &x, sizeof(x)) < (ssize_t)sizeof(x)) {                  return ERROR_IO; @@ -403,7 +403,7 @@ status_t SampleTable::getSampleSize(              CHECK_EQ(mSampleSizeFieldSize, 4);              uint8_t x; -            if (mDataSource->read_at( +            if (mDataSource->readAt(                          mSampleSizeOffset + 12 + sample_index / 2,                          &x, sizeof(x)) < (ssize_t)sizeof(x)) {                  return ERROR_IO; @@ -554,7 +554,7 @@ status_t SampleTable::findClosestSyncSample(      uint32_t right = mNumSyncSamples;      while (left < right) {          uint32_t mid = (left + right) / 2; -        if (mDataSource->read_at( +        if (mDataSource->readAt(                      mSyncSampleOffset + 8 + (mid - 1) * 4, &x, 4) != 4) {              return ERROR_IO;          } @@ -597,7 +597,7 @@ status_t SampleTable::findThumbnailSample(uint32_t *sample_index) {      for (size_t i = 0; i < numSamplesToScan; ++i) {          uint32_t x; -        if (mDataSource->read_at( +        if (mDataSource->readAt(                      mSyncSampleOffset + 8 + i * 4, &x, 4) != 4) {              return ERROR_IO;          }  |