root/src/apps/mediaplayer/supplier/ImageTrackVideoSupplier.h
/*
 * Copyright 2011, Haiku. All rights reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              SHINTA
 */
#ifndef IMAGE_TRACK_VIDEO_SUPPLIER_H
#define IMAGE_TRACK_VIDEO_SUPPLIER_H

#include <Bitmap.h>
#include <MediaFormats.h>

#include "VideoTrackSupplier.h"


class ImageTrackVideoSupplier : public VideoTrackSupplier {
public:
                                                                ImageTrackVideoSupplier(BBitmap* bitmap,
                                                                        int32 trackIndex, status_t& initStatus);
        virtual                                         ~ImageTrackVideoSupplier();

        virtual const media_format&     Format() const;
        virtual status_t                        GetEncodedFormat(media_format* format) const;
        virtual status_t                        GetCodecInfo(media_codec_info* info) const;

        virtual status_t                        ReadFrame(void* buffer,
                                                                        bigtime_t* performanceTime,
                                                                        const media_raw_video_format& format,
                                                                        bool& wasCached);
        virtual status_t                        FindKeyFrameForFrame(int64* frame);
        virtual status_t                        SeekToTime(bigtime_t* performanceTime);
        virtual status_t                        SeekToFrame(int64* frame);

        virtual bigtime_t                       Position() const
                                                                        { return fPerformanceTime; }
        virtual bigtime_t                       Duration() const
                                                                        { return fDuration; }
        virtual int64                           CurrentFrame() const
                                                                        { return fCurrentFrame; }

#if 0
        virtual BRect                           Bounds() const;
        virtual color_space                     ColorSpace() const;
        virtual uint32                          BytesPerRow() const;
#endif

        virtual int32                           TrackIndex() const
                                                                        { return fTrackIndex; }

private:
                        media_format            fFormat;

                        bigtime_t                       fPerformanceTime;
                        bigtime_t                       fDuration;
                        int64                           fCurrentFrame;

                        BBitmap*                        fBitmap;
                        int32                           fTrackIndex;
};


#endif // IMAGE_TRACK_VIDEO_SUPPLIER_H