14bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber/* 24bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * Copyright (C) 2014 The Android Open Source Project 34bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * 44bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 54bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * you may not use this file except in compliance with the License. 64bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * You may obtain a copy of the License at 74bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * 84bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * http://www.apache.org/licenses/LICENSE-2.0 94bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * 104bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * Unless required by applicable law or agreed to in writing, software 114bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 124bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * See the License for the specific language governing permissions and 144bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber * limitations under the License. 154bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber */ 164bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 174bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber#ifndef DATA_URI_SOURCE_H_ 184bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 194bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber#define DATA_URI_SOURCE_H_ 204bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 214bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber#include <media/stagefright/DataSource.h> 224bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber#include <media/stagefright/foundation/ABase.h> 234bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 244bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Hubernamespace android { 254bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 264bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huberstruct ABuffer; 274bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 284bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huberstruct DataURISource : public DataSource { 294bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber static sp<DataURISource> Create(const char *uri); 304bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 314bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber virtual status_t initCheck() const; 324bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber virtual ssize_t readAt(off64_t offset, void *data, size_t size); 334bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber virtual status_t getSize(off64_t *size); 344bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 354bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huberprotected: 364bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber virtual ~DataURISource(); 374bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 384bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huberprivate: 394bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber sp<ABuffer> mBuffer; 404bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 414bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber DataURISource(const sp<ABuffer> &buffer); 424bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 434bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber DISALLOW_EVIL_CONSTRUCTORS(DataURISource); 444bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber}; 454bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 464bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber} // namespace android 474bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 484bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber#endif // DATA_URI_SOURCE_H_ 494bbfff2dbf3968c267c3b2ea9f8912a38372a9daAndreas Huber 50