aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/video/qt_player.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mohawk/video/qt_player.h')
-rw-r--r--engines/mohawk/video/qt_player.h282
1 files changed, 0 insertions, 282 deletions
diff --git a/engines/mohawk/video/qt_player.h b/engines/mohawk/video/qt_player.h
deleted file mode 100644
index 6657d3edba..0000000000
--- a/engines/mohawk/video/qt_player.h
+++ /dev/null
@@ -1,282 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-//
-// Heavily based on ffmpeg code.
-//
-// Copyright (c) 2001 Fabrice Bellard.
-// First version by Francois Revol revol@free.fr
-// Seek function by Gael Chardon gael.dev@4now.net
-//
-
-#ifndef MOHAWK_QT_PLAYER_H
-#define MOHAWK_QT_PLAYER_H
-
-#include "common/scummsys.h"
-#include "common/queue.h"
-
-#include "graphics/video/video_decoder.h"
-#include "graphics/video/codecs/codec.h"
-
-#include "sound/audiostream.h"
-#include "sound/mixer.h"
-
-namespace Common {
- class File;
-}
-
-namespace Mohawk {
-
-enum ScaleMode {
- kScaleNormal = 1,
- kScaleHalf = 2,
- kScaleQuarter = 4
-};
-
-class QTPlayer : public Graphics::RewindableVideoDecoder {
-public:
- QTPlayer();
- virtual ~QTPlayer();
-
- /**
- * Returns the width of the video
- * @return the width of the video
- */
- uint16 getWidth() const;
-
- /**
- * Returns the height of the video
- * @return the height of the video
- */
- uint16 getHeight() const;
-
- /**
- * Returns the amount of frames in the video
- * @return the amount of frames in the video
- */
- uint32 getFrameCount() const;
-
- /**
- * Load a QuickTime video file from a SeekableReadStream
- * @param stream the stream to load
- */
- bool load(Common::SeekableReadStream &stream);
-
- /**
- * Close a QuickTime encoded video file
- */
- void close();
-
- /**
- * Returns the palette of the video
- * @return the palette of the video
- */
- byte *getPalette() { _dirtyPalette = false; return _palette; }
- bool hasDirtyPalette() const { return _dirtyPalette; }
-
- /**
- * Set the beginning offset of the video so we can modify the offsets in the stco
- * atom of videos inside the Mohawk archives
- * @param the beginning offset of the video
- */
- void setChunkBeginOffset(uint32 offset) { _beginOffset = offset; }
-
- bool isVideoLoaded() const { return _fd != 0; }
- Graphics::Surface *decodeNextFrame();
- bool needsUpdate() const;
- bool endOfVideo() const;
- uint32 getElapsedTime() const;
- uint32 getTimeToNextFrame() const;
- Graphics::PixelFormat getPixelFormat() const;
-
- // RewindableVideoDecoder API
- void rewind();
-
- // TODO: This audio function need to be removed from the public and/or added to
- // the VideoDecoder API directly. I plan on replacing this function with something
- // that can figure out how much audio is needed instead of constantly keeping two
- // chunks in memory.
- void updateAudioBuffer();
-
-protected:
- // This is the file handle from which data is read from. It can be the actual file handle or a decompressed stream.
- Common::SeekableReadStream *_fd;
-
- struct MOVatom {
- uint32 type;
- uint32 offset;
- uint32 size;
- };
-
- struct ParseTable {
- uint32 type;
- int (QTPlayer::*func)(MOVatom atom);
- };
-
- struct MOVstts {
- int count;
- int duration;
- };
-
- struct MOVstsc {
- uint32 first;
- uint32 count;
- uint32 id;
- };
-
- enum CodecType {
- CODEC_TYPE_MOV_OTHER,
- CODEC_TYPE_VIDEO,
- CODEC_TYPE_AUDIO
- };
-
- struct MOVStreamContext {
- MOVStreamContext() { memset(this, 0, sizeof(MOVStreamContext)); }
- ~MOVStreamContext() {
- delete[] chunk_offsets;
- delete[] stts_data;
- delete[] ctts_data;
- delete[] sample_to_chunk;
- delete[] sample_sizes;
- delete[] keyframes;
- delete extradata;
- }
-
- int ffindex; /* the ffmpeg stream id */
- int is_ff_stream; /* Is this stream presented to ffmpeg ? i.e. is this an audio or video stream ? */
- uint32 next_chunk;
- uint32 chunk_count;
- uint32 *chunk_offsets;
- int stts_count;
- MOVstts *stts_data;
- int ctts_count;
- MOVstts *ctts_data;
- int edit_count; /* number of 'edit' (elst atom) */
- uint32 sample_to_chunk_sz;
- MOVstsc *sample_to_chunk;
- int32 sample_to_chunk_index;
- int sample_to_time_index;
- uint32 sample_to_time_sample;
- uint32 sample_to_time_time;
- int sample_to_ctime_index;
- int sample_to_ctime_sample;
- uint32 sample_size;
- uint32 sample_count;
- uint32 *sample_sizes;
- uint32 keyframe_count;
- uint32 *keyframes;
- int32 time_scale;
- int time_rate;
- uint32 current_sample;
- uint32 left_in_chunk; /* how many samples before next chunk */
-
- uint16 width;
- uint16 height;
- int codec_type;
- uint32 codec_tag;
- char codec_name[32];
- uint16 bits_per_sample;
- uint16 color_table_id;
- bool palettized;
- Common::SeekableReadStream *extradata;
-
- uint16 stsd_version;
- uint16 channels;
- uint16 sample_rate;
- uint32 samples_per_frame;
- uint32 bytes_per_frame;
-
- uint32 nb_frames;
- uint32 duration;
- uint32 start_time;
- ScaleMode scaleMode;
- };
-
- const ParseTable *_parseTable;
- bool _foundMOOV;
- bool _foundMDAT;
- uint32 _timeScale;
- uint32 _duration;
- uint32 _mdatOffset;
- uint32 _mdatSize;
- uint32 _next_chunk_offset;
- MOVStreamContext *_partial;
- uint32 _numStreams;
- int _ni;
- ScaleMode _scaleMode;
- MOVStreamContext *_streams[20];
- byte _palette[256 * 3];
- bool _dirtyPalette;
- uint32 _beginOffset;
-
- void initParseTable();
- Audio::AudioStream *createAudioStream(Common::SeekableReadStream *stream);
- bool checkAudioCodecSupport(uint32 tag);
- Common::SeekableReadStream *getNextFramePacket();
- uint32 getFrameDuration();
- uint32 getCodecTag();
- byte getBitsPerPixel();
-
- Audio::QueuingAudioStream *_audStream;
- void startAudio();
- void stopAudio();
- int8 _audioStreamIndex;
- uint _curAudioChunk;
- Audio::SoundHandle _audHandle;
-
- Graphics::Codec *createCodec(uint32 codecTag, byte bitsPerPixel);
- Graphics::Codec *_videoCodec;
- uint32 _nextFrameStartTime;
- int8 _videoStreamIndex;
-
- Graphics::Surface *_scaledSurface;
- Graphics::Surface *scaleSurface(Graphics::Surface *frame);
- ScaleMode getScaleMode() const;
-
- void pauseVideoIntern(bool pause);
-
- int readDefault(MOVatom atom);
- int readLeaf(MOVatom atom);
- int readELST(MOVatom atom);
- int readHDLR(MOVatom atom);
- int readMDAT(MOVatom atom);
- int readMDHD(MOVatom atom);
- int readMOOV(MOVatom atom);
- int readMVHD(MOVatom atom);
- int readTKHD(MOVatom atom);
- int readTRAK(MOVatom atom);
- int readSTCO(MOVatom atom);
- int readSTSC(MOVatom atom);
- int readSTSD(MOVatom atom);
- int readSTSS(MOVatom atom);
- int readSTSZ(MOVatom atom);
- int readSTTS(MOVatom atom);
- int readCMOV(MOVatom atom);
- int readWAVE(MOVatom atom);
-};
-
-} // End of namespace Mohawk
-
-#endif