android_media_MediaExtractor.h revision 07ea426e3ae8915ca6bf67135f523f42cd920af0
188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber/* 288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * Copyright 2012, The Android Open Source Project 388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * 488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * you may not use this file except in compliance with the License. 688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * You may obtain a copy of the License at 788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * 888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * 1088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * Unless required by applicable law or agreed to in writing, software 1188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 1288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * See the License for the specific language governing permissions and 1488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber * limitations under the License. 1588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber */ 1688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 1788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#ifndef _ANDROID_MEDIA_MEDIAEXTRACTOR_H_ 1888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#define _ANDROID_MEDIA_MEDIAEXTRACTOR_H_ 1988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 2088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#include <media/stagefright/foundation/ABase.h> 2188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#include <utils/Errors.h> 2207ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber#include <utils/KeyedVector.h> 2388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#include <utils/RefBase.h> 2407ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber#include <utils/String8.h> 2588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 2688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#include "jni.h" 2788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 2888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Hubernamespace android { 2988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 3088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huberstruct NuMediaExtractor; 3188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 3288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huberstruct JMediaExtractor : public RefBase { 3388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber JMediaExtractor(JNIEnv *env, jobject thiz); 3488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 3507ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber status_t setDataSource( 3607ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber const char *path, 3707ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber const KeyedVector<String8, String8> *headers); 3807ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber 3907ea426e3ae8915ca6bf67135f523f42cd920af0Andreas Huber status_t setDataSource(int fd, off64_t offset, off64_t size); 4088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 4188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber size_t countTracks() const; 4288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t getTrackFormat(size_t index, jobject *format) const; 4388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 4488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t selectTrack(size_t index); 4588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 4688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t seekTo(int64_t timeUs); 4788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 4888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t advance(); 4988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t readSampleData(jobject byteBuf, size_t offset, size_t *sampleSize); 5088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t getSampleTrackIndex(size_t *trackIndex); 5188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t getSampleTime(int64_t *sampleTimeUs); 529b8e496f4d143280deff137c5f30ca8907bc28dbAndreas Huber status_t getSampleFlags(uint32_t *sampleFlags); 5388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 5488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huberprotected: 5588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber virtual ~JMediaExtractor(); 5688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 5788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huberprivate: 5888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber jclass mClass; 5988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber jweak mObject; 6088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber sp<NuMediaExtractor> mImpl; 6188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 6288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(JMediaExtractor); 6388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber}; 6488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 6588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber} // namespace android 6688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 6788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#endif // _ANDROID_MEDIA_MEDIAEXTRACTOR_H_ 68