22 #ifndef VIDEO_MPEGPS_DECODER_H 23 #define VIDEO_MPEGPS_DECODER_H 25 #include "common/hashmap.h" 26 #include "common/queue.h" 27 #include "graphics/surface.h" 28 #include "video/video_decoder.h" 31 class PacketizedAudioStream;
35 class SeekableReadStream;
65 void setPrebufferedPackets(
int packets);
68 void readNextPacket();
83 void setPrebufferedPackets(
int packets) { _prebufferedPackets = packets; }
88 Packet(
Common::SeekableReadStream *stream, int32 startCode, uint32 pts, uint32 dts) : _stream(stream), _startCode(startCode), _pts(pts), _dts(dts) {}
95 bool queueNextPacket();
97 int readNextPacketHeader(int32 &startCode, uint32 &pts, uint32 &dts);
98 int findNextStartCode(uint32 &size);
99 uint32 readPTS(
int c);
100 void parseProgramStreamMap(
int length);
108 uint32 _firstAudioPacketPts = 0xFFFFFFFF;
109 uint32 _firstVideoPacketPts = 0xFFFFFFFF;
111 int _prebufferedPackets = 150;
117 virtual ~MPEGStream() {}
125 virtual StreamType getStreamType()
const = 0;
129 class MPEGVideoTrack :
public VideoTrack,
public MPEGStream {
134 bool endOfTrack()
const {
return _endOfTrack; }
135 uint16 getWidth()
const;
136 uint16 getHeight()
const;
139 int getCurFrame()
const {
return _curFrame; }
140 uint32 getNextFrameStartTime()
const {
return _nextFrameStartTime.msecs(); }
144 StreamType getStreamType()
const {
return kStreamTypeVideo; }
146 void setEndOfTrack() { _endOfTrack =
true; }
162 Image::MPEGDecoder *_mpegDecoder;
168 class MPEGAudioTrack :
public AudioTrack,
public MPEGStream {
174 StreamType getStreamType()
const {
return kStreamTypeAudio; }
185 class AC3AudioTrack :
public AudioTrack,
public MPEGStream {
191 StreamType getStreamType()
const {
return kStreamTypeAudio; }
201 class PS2AudioTrack :
public AudioTrack,
public MPEGStream {
207 StreamType getStreamType()
const {
return kStreamTypeAudio; }
226 uint32 _blockPos, _blockUsed;
228 uint32 calculateSampleCount(uint32 packetSize)
const;
232 enum PrivateStreamType {
233 kPrivateStreamUnknown,
236 kPrivateStreamDVDPCM,
237 kPrivateStreamPS2Audio
242 bool addFirstVideoTrack();
245 MPEGPSDemuxer *_demuxer;
249 StreamMap _streamMap;
Definition: video_decoder.h:723
Definition: timestamp.h:83
Definition: audiostream.h:446
SoundType
Definition: mixer.h:73
bool useAudioSync() const
Definition: mpegps_decoder.h:69
Definition: video_decoder.h:53
Definition: algorithm.h:29
Definition: formatinfo.h:28
Definition: audiostream.h:50
Definition: avi_frames.h:36
Definition: mpegps_decoder.h:55
Definition: movie_decoder.h:32
Definition: video_decoder.h:589