|
|
|
@ -48,6 +48,7 @@ struct AMediaDataSource {
|
|
|
|
|
AMediaDataSourceReadAt readAt;
|
|
|
|
|
AMediaDataSourceGetSize getSize;
|
|
|
|
|
AMediaDataSourceClose close;
|
|
|
|
|
AMediaDataSourceGetAvailableSize getAvailableSize;
|
|
|
|
|
sp<DataSource> mImpl;
|
|
|
|
|
uint32_t mFlags;
|
|
|
|
|
};
|
|
|
|
@ -107,6 +108,17 @@ void NdkDataSource::close() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
status_t NdkDataSource::getAvailableSize(off64_t offset, off64_t *sizeptr) {
|
|
|
|
|
off64_t size = -1;
|
|
|
|
|
if (mDataSource->getAvailableSize != NULL
|
|
|
|
|
&& mDataSource->userdata != NULL
|
|
|
|
|
&& sizeptr != NULL) {
|
|
|
|
|
size = mDataSource->getAvailableSize(mDataSource->userdata, offset);
|
|
|
|
|
*sizeptr = size;
|
|
|
|
|
}
|
|
|
|
|
return size >= 0 ? OK : UNKNOWN_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static sp<MediaHTTPService> createMediaHttpServiceFromJavaObj(JNIEnv *env, jobject obj, int version) {
|
|
|
|
|
if (obj == NULL) {
|
|
|
|
|
return NULL;
|
|
|
|
@ -251,5 +263,11 @@ void AMediaDataSource_close(AMediaDataSource *mSource) {
|
|
|
|
|
return mSource->close(mSource->userdata);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EXPORT
|
|
|
|
|
void AMediaDataSource_setGetAvailableSize(AMediaDataSource *mSource,
|
|
|
|
|
AMediaDataSourceGetAvailableSize getAvailableSize) {
|
|
|
|
|
mSource->getAvailableSize = getAvailableSize;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // extern "C"
|
|
|
|
|
|
|
|
|
|