29#ifndef VIDEO_SMK_PLAYER_H
30#define VIDEO_SMK_PLAYER_H
32#include "common/bitarray.h"
33#include "common/bitstream.h"
34#include "common/rational.h"
35#include "common/rect.h"
36#include "graphics/palette.h"
37#include "graphics/pixelformat.h"
38#include "graphics/surface.h"
39#include "video/video_decoder.h"
40#include "audio/mixer.h"
43class QueuingAudioStream;
47class SeekableReadStream;
96 virtual void handleAudioTrack(
byte track, uint32 chunkSize, uint32 unpackedSize);
98 virtual uint32 getSignatureVersion(uint32 signature)
const;
106 bool rewind()
override { _curFrame = -1;
return true; }
114 const byte *
getPalette()
const override { _dirtyPalette =
false;
return _palette.data(); }
117 void readTrees(
SmackerBitStream &bs, uint32 mMapSize, uint32 mClrSize, uint32 fullSize, uint32 typeSize);
118 void increaseCurFrame() { _curFrame++; }
131 uint32 _flags, _version;
134 mutable bool _dirtyPalette;
139 BigHuffmanTree *_MMapTree;
140 BigHuffmanTree *_MClrTree;
141 BigHuffmanTree *_FullTree;
142 BigHuffmanTree *_TypeTree;
148 static uint getBlockRun(
int index) {
return (index <= 58) ? index + 1 : 128 << (index - 59); }
151 virtual SmackerVideoTrack *createVideoTrack(uint32 width, uint32 height, uint32 frameCount,
const Common::Rational &frameRate, uint32 flags, uint32 version)
const;
155 enum AudioCompression {
163 AudioCompression compression;
187 class SmackerAudioTrack :
public AudioTrack {
190 ~SmackerAudioTrack();
195 void queueCompressedBuffer(
byte *buffer, uint32 bufferSize, uint32 unpackedSize);
196 void queuePCM(
byte *buffer, uint32 bufferSize);
203 AudioInfo _audioInfo;
206 class SmackerEmptyTrack :
public Track {
209 bool endOfTrack()
const override {
return true; }
211 bool isSeekable()
const override {
return true; }
224 uint32 _firstFrameStart;
Definition: audiostream.h:50
SoundType
Definition: mixer.h:73
Definition: audiostream.h:370
Definition: timestamp.h:83
Definition: bitarray.h:29
Definition: bitstream.h:55
Definition: rational.h:40
Simple class for handling a palette data.
Definition: palette.h:61
Definition: smk_decoder.h:100
const Graphics::Surface * decodeNextFrame() override
Definition: smk_decoder.h:113
bool isRewindable() const override
Definition: smk_decoder.h:105
Common::Rational getFrameRate() const override
Definition: smk_decoder.h:122
uint16 getWidth() const override
Graphics::PixelFormat getPixelFormat() const override
bool hasDirtyPalette() const override
Definition: smk_decoder.h:115
bool rewind() override
Definition: smk_decoder.h:106
int getFrameCount() const override
Definition: smk_decoder.h:112
uint16 getHeight() const override
int getCurFrame() const override
Definition: smk_decoder.h:111
const byte * getPalette() const override
Definition: smk_decoder.h:114
Definition: smk_decoder.h:77
AudioTrack * getAudioTrack(int index) override
bool supportsAudioTrackSwitching() const override
Definition: smk_decoder.h:93
bool loadStream(Common::SeekableReadStream *stream) override
void readNextPacket() override
Definition: video_decoder.h:759
Definition: video_decoder.h:734
TrackType
Definition: video_decoder.h:540
Definition: video_decoder.h:53
bool seek(const Audio::Timestamp &time)
virtual bool isSeekable() const
virtual bool isRewindable() const
Definition: algorithm.h:29
Definition: smk_decoder.h:162