Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8e94b79 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Improve NDK to framework DataSource adaptor"

parents 1b9c75e7 a601f4ae
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@ struct AMediaDataSource {
    AMediaDataSourceReadAt readAt;
    AMediaDataSourceGetSize getSize;
    AMediaDataSourceClose close;
    sp<DataSource> mImpl;
    uint32_t mFlags;
};

NdkDataSource::NdkDataSource(AMediaDataSource *dataSource)
@@ -56,6 +58,8 @@ NdkDataSource::NdkDataSource(AMediaDataSource *dataSource)
    AMediaDataSource_setGetSize(mDataSource, dataSource->getSize);
    AMediaDataSource_setClose(mDataSource, dataSource->close);
    AMediaDataSource_setUserdata(mDataSource, dataSource->userdata);
    mDataSource->mImpl = dataSource->mImpl;
    mDataSource->mFlags = dataSource->mFlags;
}

NdkDataSource::~NdkDataSource() {
@@ -66,9 +70,13 @@ status_t NdkDataSource::initCheck() const {
    return OK;
}

uint32_t NdkDataSource::flags() {
    return mDataSource->mFlags;
}

ssize_t NdkDataSource::readAt(off64_t offset, void *data, size_t size) {
    Mutex::Autolock l(mLock);
    if (mDataSource->getSize == NULL || mDataSource->userdata == NULL) {
    if (mDataSource->readAt == NULL || mDataSource->userdata == NULL) {
        return -1;
    }
    return mDataSource->readAt(mDataSource->userdata, offset, data, size);
@@ -204,7 +212,10 @@ AMediaDataSource* AMediaDataSource_newUri(
    }

    sp<DataSource> source = DataSourceFactory::CreateFromURI(service, uri, &headers);
    return convertDataSourceToAMediaDataSource(source);
    AMediaDataSource* aSource = convertDataSourceToAMediaDataSource(source);
    aSource->mImpl = source;
    aSource->mFlags = source->flags();
    return aSource;
}

EXPORT
+1 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ struct NdkDataSource : public DataSource {
    NdkDataSource(AMediaDataSource *);

    virtual status_t initCheck() const;
    virtual uint32_t flags();
    virtual ssize_t readAt(off64_t offset, void *data, size_t size);
    virtual status_t getSize(off64_t *);
    virtual String8 toString();