2 * Copyright 2007-2008, Haiku. All rights reserved.
3 * Distributed under the terms of the MIT License.
6 * Stephan Aßmus <superstippi@gmx.de>
8 #ifndef MEDIA_TRACK_VIDEO_SUPPLIER_H
9 #define MEDIA_TRACK_VIDEO_SUPPLIER_H
11 #include "VideoTrackSupplier.h"
13 #include <MediaFormats.h>
17 class MediaTrackVideoSupplier
: public VideoTrackSupplier
{
19 MediaTrackVideoSupplier(BMediaTrack
* track
,
20 int32 trackIndex
, status_t
& initStatus
);
21 virtual ~MediaTrackVideoSupplier();
23 virtual const media_format
& Format() const;
24 virtual status_t
GetEncodedFormat(media_format
* format
) const;
25 virtual status_t
GetCodecInfo(media_codec_info
* info
) const;
27 virtual status_t
ReadFrame(void* buffer
,
28 bigtime_t
* performanceTime
,
29 const media_raw_video_format
& format
,
31 virtual status_t
FindKeyFrameForFrame(int64
* frame
);
32 virtual status_t
SeekToTime(bigtime_t
* performanceTime
);
33 virtual status_t
SeekToFrame(int64
* frame
);
35 virtual bigtime_t
Position() const
36 { return fPerformanceTime
; }
37 virtual bigtime_t
Duration() const
39 virtual int64
CurrentFrame() const
40 { return fCurrentFrame
; }
42 virtual BRect
Bounds() const;
43 virtual color_space
ColorSpace() const;
44 virtual uint32
BytesPerRow() const;
46 virtual int32
TrackIndex() const
47 { return fTrackIndex
; }
50 status_t
_SwitchFormat(color_space format
,
52 status_t
_SetDecodedFormat(uint32 width
, uint32 height
,
53 color_space format
, uint32 bytesPerRow
);
55 BMediaTrack
* fVideoTrack
;
59 bigtime_t fPerformanceTime
;
66 #endif // MEDIA_TRACK_VIDEO_SUPPLIER_H