NuPlayerDecoder.h revision 078cfcf7cce9185ec7559910d08b0bc02bfc88a3
1f933441648ef6a71dee783d733aac17b9508b452Andreas Huber/* 2f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * Copyright (C) 2010 The Android Open Source Project 3f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * 4f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * you may not use this file except in compliance with the License. 6f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * You may obtain a copy of the License at 7f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * 8f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * 10f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * Unless required by applicable law or agreed to in writing, software 11f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * See the License for the specific language governing permissions and 14f933441648ef6a71dee783d733aac17b9508b452Andreas Huber * limitations under the License. 15f933441648ef6a71dee783d733aac17b9508b452Andreas Huber */ 16f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 17f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#ifndef NUPLAYER_DECODER_H_ 18f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 19f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#define NUPLAYER_DECODER_H_ 20f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 21f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#include "NuPlayer.h" 22f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 23f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#include <media/stagefright/foundation/AHandler.h> 24f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 25f933441648ef6a71dee783d733aac17b9508b452Andreas Hubernamespace android { 26f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 275bc087c573c70c84c6a39946457590b42d392a33Andreas Huberstruct ABuffer; 28f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 29f933441648ef6a71dee783d733aac17b9508b452Andreas Huberstruct NuPlayer::Decoder : public AHandler { 301173118eace0e9e347cb007f0da817cee87579edGlenn Kasten Decoder(const sp<AMessage> ¬ify, 311173118eace0e9e347cb007f0da817cee87579edGlenn Kasten const sp<NativeWindowWrapper> &nativeWindow = NULL); 32f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 335bc087c573c70c84c6a39946457590b42d392a33Andreas Huber void configure(const sp<MetaData> &meta); 343831a066bcf1019864a94d2bc7b4c9241efc5c22Andreas Huber 35f933441648ef6a71dee783d733aac17b9508b452Andreas Huber void signalFlush(); 36f933441648ef6a71dee783d733aac17b9508b452Andreas Huber void signalResume(); 373831a066bcf1019864a94d2bc7b4c9241efc5c22Andreas Huber void initiateShutdown(); 38f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 39f933441648ef6a71dee783d733aac17b9508b452Andreas Huberprotected: 40f933441648ef6a71dee783d733aac17b9508b452Andreas Huber virtual ~Decoder(); 41f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 42f933441648ef6a71dee783d733aac17b9508b452Andreas Huber virtual void onMessageReceived(const sp<AMessage> &msg); 43f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 44f933441648ef6a71dee783d733aac17b9508b452Andreas Huberprivate: 45f933441648ef6a71dee783d733aac17b9508b452Andreas Huber enum { 46078cfcf7cce9185ec7559910d08b0bc02bfc88a3Andreas Huber kWhatCodecNotify = 'cdcN', 47f933441648ef6a71dee783d733aac17b9508b452Andreas Huber }; 48f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 49f933441648ef6a71dee783d733aac17b9508b452Andreas Huber sp<AMessage> mNotify; 501173118eace0e9e347cb007f0da817cee87579edGlenn Kasten sp<NativeWindowWrapper> mNativeWindow; 51f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 52f933441648ef6a71dee783d733aac17b9508b452Andreas Huber sp<ACodec> mCodec; 53078cfcf7cce9185ec7559910d08b0bc02bfc88a3Andreas Huber sp<ALooper> mCodecLooper; 54f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 55f933441648ef6a71dee783d733aac17b9508b452Andreas Huber Vector<sp<ABuffer> > mCSD; 56f933441648ef6a71dee783d733aac17b9508b452Andreas Huber size_t mCSDIndex; 57f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 58f933441648ef6a71dee783d733aac17b9508b452Andreas Huber sp<AMessage> makeFormat(const sp<MetaData> &meta); 59f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 60f933441648ef6a71dee783d733aac17b9508b452Andreas Huber void onFillThisBuffer(const sp<AMessage> &msg); 61f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 62f933441648ef6a71dee783d733aac17b9508b452Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(Decoder); 63f933441648ef6a71dee783d733aac17b9508b452Andreas Huber}; 64f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 65f933441648ef6a71dee783d733aac17b9508b452Andreas Huber} // namespace android 66f933441648ef6a71dee783d733aac17b9508b452Andreas Huber 67f933441648ef6a71dee783d733aac17b9508b452Andreas Huber#endif // NUPLAYER_DECODER_H_ 68