102f5b5447de349216a40086ca6061efefb5a3025James Dong/* 202f5b5447de349216a40086ca6061efefb5a3025James Dong * Copyright (C) 2009 The Android Open Source Project 302f5b5447de349216a40086ca6061efefb5a3025James Dong * 402f5b5447de349216a40086ca6061efefb5a3025James Dong * Licensed under the Apache License, Version 2.0 (the "License"); 502f5b5447de349216a40086ca6061efefb5a3025James Dong * you may not use this file except in compliance with the License. 602f5b5447de349216a40086ca6061efefb5a3025James Dong * You may obtain a copy of the License at 702f5b5447de349216a40086ca6061efefb5a3025James Dong * 802f5b5447de349216a40086ca6061efefb5a3025James Dong * http://www.apache.org/licenses/LICENSE-2.0 902f5b5447de349216a40086ca6061efefb5a3025James Dong * 1002f5b5447de349216a40086ca6061efefb5a3025James Dong * Unless required by applicable law or agreed to in writing, software 1102f5b5447de349216a40086ca6061efefb5a3025James Dong * distributed under the License is distributed on an "AS IS" BASIS, 1202f5b5447de349216a40086ca6061efefb5a3025James Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1302f5b5447de349216a40086ca6061efefb5a3025James Dong * See the License for the specific language governing permissions and 1402f5b5447de349216a40086ca6061efefb5a3025James Dong * limitations under the License. 1502f5b5447de349216a40086ca6061efefb5a3025James Dong */ 1602f5b5447de349216a40086ca6061efefb5a3025James Dong 1702f5b5447de349216a40086ca6061efefb5a3025James Dong#ifndef M4V_H263_DECODER_H_ 1802f5b5447de349216a40086ca6061efefb5a3025James Dong 1902f5b5447de349216a40086ca6061efefb5a3025James Dong#define M4V_H263_DECODER_H_ 2002f5b5447de349216a40086ca6061efefb5a3025James Dong 2102f5b5447de349216a40086ca6061efefb5a3025James Dong#include <media/stagefright/MediaBuffer.h> 2202f5b5447de349216a40086ca6061efefb5a3025James Dong#include <media/stagefright/MediaSource.h> 2302f5b5447de349216a40086ca6061efefb5a3025James Dong 2402f5b5447de349216a40086ca6061efefb5a3025James Dongstruct tagvideoDecControls; 2502f5b5447de349216a40086ca6061efefb5a3025James Dong 2602f5b5447de349216a40086ca6061efefb5a3025James Dongnamespace android { 2702f5b5447de349216a40086ca6061efefb5a3025James Dong 2802f5b5447de349216a40086ca6061efefb5a3025James Dongstruct M4vH263Decoder : public MediaSource, 2902f5b5447de349216a40086ca6061efefb5a3025James Dong public MediaBufferObserver { 3002f5b5447de349216a40086ca6061efefb5a3025James Dong M4vH263Decoder(const sp<MediaSource> &source); 3102f5b5447de349216a40086ca6061efefb5a3025James Dong 3202f5b5447de349216a40086ca6061efefb5a3025James Dong virtual status_t start(MetaData *params); 3302f5b5447de349216a40086ca6061efefb5a3025James Dong virtual status_t stop(); 3402f5b5447de349216a40086ca6061efefb5a3025James Dong 3502f5b5447de349216a40086ca6061efefb5a3025James Dong virtual sp<MetaData> getFormat(); 3602f5b5447de349216a40086ca6061efefb5a3025James Dong 3702f5b5447de349216a40086ca6061efefb5a3025James Dong virtual status_t read( 3802f5b5447de349216a40086ca6061efefb5a3025James Dong MediaBuffer **buffer, const ReadOptions *options); 3902f5b5447de349216a40086ca6061efefb5a3025James Dong 4002f5b5447de349216a40086ca6061efefb5a3025James Dong virtual void signalBufferReturned(MediaBuffer *buffer); 4102f5b5447de349216a40086ca6061efefb5a3025James Dong 4202f5b5447de349216a40086ca6061efefb5a3025James Dongprotected: 4302f5b5447de349216a40086ca6061efefb5a3025James Dong virtual ~M4vH263Decoder(); 4402f5b5447de349216a40086ca6061efefb5a3025James Dong 4502f5b5447de349216a40086ca6061efefb5a3025James Dongprivate: 4602f5b5447de349216a40086ca6061efefb5a3025James Dong sp<MediaSource> mSource; 4702f5b5447de349216a40086ca6061efefb5a3025James Dong bool mStarted; 4802f5b5447de349216a40086ca6061efefb5a3025James Dong int32_t mWidth, mHeight; 4902f5b5447de349216a40086ca6061efefb5a3025James Dong 5002f5b5447de349216a40086ca6061efefb5a3025James Dong sp<MetaData> mFormat; 5102f5b5447de349216a40086ca6061efefb5a3025James Dong 5202f5b5447de349216a40086ca6061efefb5a3025James Dong tagvideoDecControls *mHandle; 5302f5b5447de349216a40086ca6061efefb5a3025James Dong MediaBuffer *mFrames[2]; 5402f5b5447de349216a40086ca6061efefb5a3025James Dong MediaBuffer *mInputBuffer; 5502f5b5447de349216a40086ca6061efefb5a3025James Dong 5602f5b5447de349216a40086ca6061efefb5a3025James Dong int64_t mNumSamplesOutput; 576624c9fd0bc5e3858a22a04c05b5059445c1c367Andreas Huber int64_t mTargetTimeUs; 5802f5b5447de349216a40086ca6061efefb5a3025James Dong 592039bd93ed9801927bffce43698b29645482b188Andreas Huber void allocateFrames(int32_t width, int32_t height); 6002f5b5447de349216a40086ca6061efefb5a3025James Dong void releaseFrames(); 6102f5b5447de349216a40086ca6061efefb5a3025James Dong 6202f5b5447de349216a40086ca6061efefb5a3025James Dong M4vH263Decoder(const M4vH263Decoder &); 6302f5b5447de349216a40086ca6061efefb5a3025James Dong M4vH263Decoder &operator=(const M4vH263Decoder &); 6402f5b5447de349216a40086ca6061efefb5a3025James Dong}; 6502f5b5447de349216a40086ca6061efefb5a3025James Dong 6602f5b5447de349216a40086ca6061efefb5a3025James Dong} // namespace android 6702f5b5447de349216a40086ca6061efefb5a3025James Dong 6802f5b5447de349216a40086ca6061efefb5a3025James Dong#endif // M4V_H263_DECODER_H_ 69