android_media_MediaExtractor.h revision 9b8e496f4d143280deff137c5f30ca8907bc28db
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> 2288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#include <utils/RefBase.h> 2388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 2488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#include "jni.h" 2588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 2688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Hubernamespace android { 2788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 2888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huberstruct NuMediaExtractor; 2988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 3088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huberstruct JMediaExtractor : public RefBase { 3188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber JMediaExtractor(JNIEnv *env, jobject thiz); 3288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 3388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t setDataSource(const char *path); 3488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 3588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber size_t countTracks() const; 3688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t getTrackFormat(size_t index, jobject *format) const; 3788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 3888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t selectTrack(size_t index); 3988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 4088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t seekTo(int64_t timeUs); 4188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 4288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t advance(); 4388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t readSampleData(jobject byteBuf, size_t offset, size_t *sampleSize); 4488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t getSampleTrackIndex(size_t *trackIndex); 4588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber status_t getSampleTime(int64_t *sampleTimeUs); 469b8e496f4d143280deff137c5f30ca8907bc28dbAndreas Huber status_t getSampleFlags(uint32_t *sampleFlags); 4788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 4888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huberprotected: 4988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber virtual ~JMediaExtractor(); 5088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 5188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huberprivate: 5288572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber jclass mClass; 5388572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber jweak mObject; 5488572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber sp<NuMediaExtractor> mImpl; 5588572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 5688572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(JMediaExtractor); 5788572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber}; 5888572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 5988572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber} // namespace android 6088572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber 6188572f7a3e9d7ef85c26865a0150f3c2041561c2Andreas Huber#endif // _ANDROID_MEDIA_MEDIAEXTRACTOR_H_ 62