147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber/* 247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * Copyright (C) 2010 The Android Open Source Project 347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * 447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * you may not use this file except in compliance with the License. 647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * You may obtain a copy of the License at 747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * 847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * 1047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * Unless required by applicable law or agreed to in writing, software 1147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 1247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * See the License for the specific language governing permissions and 1447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber * limitations under the License. 1547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber */ 1647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 1747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#ifndef VPX_DECODER_H_ 1847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 1947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#define VPX_DECODER_H_ 2047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 2147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#include <media/stagefright/MediaSource.h> 2247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#include <utils/Vector.h> 2347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 2447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Hubernamespace android { 2547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 2647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huberstruct MediaBufferGroup; 2747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 2847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huberstruct VPXDecoder : public MediaSource { 2947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber VPXDecoder(const sp<MediaSource> &source); 3047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 3147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber virtual status_t start(MetaData *params); 3247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber virtual status_t stop(); 3347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 3447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber virtual sp<MetaData> getFormat(); 3547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 3647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber virtual status_t read( 3747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber MediaBuffer **buffer, const ReadOptions *options); 3847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 3947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huberprotected: 4047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber virtual ~VPXDecoder(); 4147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 4247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huberprivate: 4347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber sp<MediaSource> mSource; 4447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber bool mStarted; 4547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber int32_t mWidth, mHeight; 4647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber size_t mBufferSize; 4747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 4847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber void *mCtx; 4947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber MediaBufferGroup *mBufferGroup; 5047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 516624c9fd0bc5e3858a22a04c05b5059445c1c367Andreas Huber int64_t mTargetTimeUs; 526624c9fd0bc5e3858a22a04c05b5059445c1c367Andreas Huber 5347ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber sp<MetaData> mFormat; 5447ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 5547ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber VPXDecoder(const VPXDecoder &); 5647ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber VPXDecoder &operator=(const VPXDecoder &); 5747ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber}; 5847ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 5947ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber} // namespace android 6047ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 6147ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber#endif // VPX_DECODER_H_ 6247ba30e863d7271053e1ce2d316c0e1735824bb0Andreas Huber 63