19969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang/* 29969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * Copyright (C) 2011 The Android Open Source Project 39969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * 49969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * Licensed under the Apache License, Version 2.0 (the "License"); 59969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * you may not use this file except in compliance with the License. 69969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * You may obtain a copy of the License at 79969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * 89969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * http://www.apache.org/licenses/LICENSE-2.0 99969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * 109969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * Unless required by applicable law or agreed to in writing, software 119969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * distributed under the License is distributed on an "AS IS" BASIS, 129969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * See the License for the specific language governing permissions and 149969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * limitations under the License. 159969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang */ 169969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 179969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#ifndef DUMMY_VIDEOSOURCE_H_ 189969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#define DUMMY_VIDEOSOURCE_H_ 199969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 209969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include <media/stagefright/MediaSource.h> 219969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include "M4OSA_Clock.h" 229969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include "M4OSA_Time.h" 239969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include "M4OSA_Types.h" 249969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 259969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changnamespace android { 269969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 279969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changclass MediaBuffer; 289969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changclass MetaData; 299969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 309969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changstruct DummyVideoSource : public MediaSource { 319969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 329969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changpublic: 3300f742c087d92e5452d29be1fb668022b5f8a6c7James Dong static sp<DummyVideoSource> Create( 3400f742c087d92e5452d29be1fb668022b5f8a6c7James Dong uint32_t width, uint32_t height, 3500f742c087d92e5452d29be1fb668022b5f8a6c7James Dong uint64_t clipDuration, const char *imageUri); 369969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 379969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang virtual status_t start(MetaData *params = NULL); 389969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang virtual status_t stop(); 399969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang virtual sp<MetaData> getFormat(); 4000f742c087d92e5452d29be1fb668022b5f8a6c7James Dong 4100f742c087d92e5452d29be1fb668022b5f8a6c7James Dong virtual status_t read( 4200f742c087d92e5452d29be1fb668022b5f8a6c7James Dong MediaBuffer **buffer, 4300f742c087d92e5452d29be1fb668022b5f8a6c7James Dong const MediaSource::ReadOptions *options = NULL); 449969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 459969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changprotected: 469969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang virtual ~DummyVideoSource(); 479969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 489969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changprivate: 499969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang uint32_t mFrameWidth; 509969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang uint32_t mFrameHeight; 519969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang uint64_t mImageClipDuration; 529969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang const char *mUri; 539969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mFrameTimeUs; 549969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang bool mIsFirstImageFrame; 559969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void *mImageBuffer; 569969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang M4OSA_Time mImagePlayStartTime; 579969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang uint32_t mImageSeekTime; 589969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 5900f742c087d92e5452d29be1fb668022b5f8a6c7James Dong DummyVideoSource( 6000f742c087d92e5452d29be1fb668022b5f8a6c7James Dong uint32_t width, uint32_t height, 6100f742c087d92e5452d29be1fb668022b5f8a6c7James Dong uint64_t clipDuration, const char *imageUri); 6200f742c087d92e5452d29be1fb668022b5f8a6c7James Dong 6300f742c087d92e5452d29be1fb668022b5f8a6c7James Dong // Don't call me 649969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang DummyVideoSource(const DummyVideoSource &); 659969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang DummyVideoSource &operator=(const DummyVideoSource &); 669969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 679969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang}; 689969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 699969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 709969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang}//namespace android 719969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 729969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 739969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#endif //DUMMY_VIDEOSOURCE_H_ 749969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 75