Files
haiku-beta6/src/add-ons/media/plugins/ogg/OggStream.h
T
shatty b8827c3055 new separation of streams from seekables - first view of ogm video!
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6523 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-08 09:53:22 +00:00

50 lines
1.1 KiB
C++

#ifndef _OGG_STREAM_H
#define _OGG_STREAM_H
#include "OggTrack.h"
#include "OggReaderPlugin.h"
#include <map>
namespace BPrivate { namespace media {
class OggStream : public OggTrack {
public:
static OggStream * makeOggStream(OggReader::StreamInterface * interface,
long serialno, const ogg_packet & packet);
// interface for OggReader
virtual status_t GetStreamInfo(int64 *frameCount, bigtime_t *duration,
media_format *format);
virtual status_t GetNextChunk(void **chunkBuffer, int32 *chunkSize,
media_header *mediaHeader);
protected:
OggStream(long serialno);
public:
virtual ~OggStream();
// reader push input function
status_t AddPage(off_t position, const ogg_page & page);
protected:
// subclass pull input function
status_t GetPacket(ogg_packet * packet);
ogg_packet fChunkPacket;
protected:
int64 fCurrentFrame;
bigtime_t fCurrentTime;
private:
ogg_sync_state fSync;
BLocker fSyncLock;
ogg_stream_state fStreamState;
OggReader::StreamInterface * fReaderInterface;
};
} } // namespace BPrivate::media
using namespace BPrivate::media;
#endif // _OGG_STREAM_H