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