30#ifndef COMMON_QUICKTIME_H
31#define COMMON_QUICKTIME_H
33#include "common/array.h"
34#include "common/scummsys.h"
35#include "common/path.h"
36#include "common/stream.h"
37#include "common/rational.h"
38#include "common/types.h"
39#include "common/rect.h"
100 bool isOpen()
const {
return _fd !=
nullptr; }
102 enum class QTVRType {
110 SeekableReadStream *_fd;
124 uint32 trackDuration;
139 uint32 getCodecTag()
const {
return _codecTag; }
151 CODEC_TYPE_MOV_OTHER,
158 enum class GraphicsMode {
163 STRAIGHT_ALPHA = 0x100,
164 PREMUL_WHITE_ALPHA = 0x101,
165 PREMUL_BLACK_ALPHA = 0x102,
166 STRAIGHT_ALPHA_BLEND = 0x104,
172 uint32 timestamp = 0;
177 uint32 defNodeID = 0;
178 float defZoom = 0.0f;
198 int32 commentStrOffset;
213 int32 mouseOverCursorID;
214 int32 mouseDownCursorID;
215 int32 mouseUpCursorID;
218 int32 commentStrOffset;
225 for (uint i = 0; i < hotSpots.
size(); i++)
226 if (hotSpots[i].
id ==
id)
236 String getString(int32 offset)
const;
237 void debugPrint(
int level, uint32 debugChannel,
String prefix)
const;
250 int32 commentStrOffset;
257 for (uint i = 0; i < links.
size(); i++)
258 if (links[i].
id ==
id)
277 int32 commentStrOffset;
284 for (uint i = 0; i < navs.
size(); i++)
285 if (navs[i].
id ==
id)
305 uint32 *chunkOffsets;
306 int timeToSampleCount;
308 uint32 sampleToChunkCount;
313 uint32 keyframeCount;
327 uint32 mediaDuration;
341 GraphicsMode graphicsMode;
349 enum class MovieType {
351 kOldNavigableMovieScene,
358 uint16 loop_size = 0;
359 uint16 frame_duration = 1;
361 MovieType movie_type = MovieType::kStandardObject;
363 uint16 loop_ticks = 0;
365 float field_of_view = 1.0f;
367 float startHPan = 1.0f;
368 float startVPan = 1.0f;
369 float endHPan = 1.0f;
370 float endVPan = 1.0f;
371 float initialHPan = 1.0f;
372 float initialVPan = 1.0f;
376 virtual SampleDesc *readSampleDesc(
Track *track, uint32 format, uint32 descSize) = 0;
404 DisposeAfterUse::Flag _disposeFileHandle;
405 const ParseTable *_parseTable;
407 MacResManager *_resFork;
410 void initParseTable();
412 bool parsePanoramaAtoms();
414 int readDefault(Atom atom);
415 int readLeaf(Atom atom);
416 int readDREF(Atom atom);
417 int readELST(Atom atom);
418 int readHDLR(Atom atom);
419 int readMDHD(Atom atom);
420 int readMOOV(Atom atom);
421 int readMVHD(Atom atom);
422 int readTKHD(Atom atom);
423 int readTRAK(Atom atom);
424 int readSMHD(Atom atom);
425 int readSTCO(Atom atom);
426 int readSTSC(Atom atom);
427 int readSTSD(Atom atom);
428 int readSTSS(Atom atom);
429 int readSTSZ(Atom atom);
430 int readSTTS(Atom atom);
431 int readVMHD(Atom atom);
432 int readCMOV(Atom atom);
433 int readWAVE(Atom atom);
434 int readESDS(Atom atom);
435 int readSMI(Atom atom);
436 int readCTYP(Atom atom);
437 int readWLOC(Atom atom);
438 int readNAVG(Atom atom);
439 int readGMIN(Atom atom);
440 int readPINF(Atom atom);
442 int readPHDR(Atom atom);
443 int readPHOT(Atom atom);
444 int readSTRT(Atom atom);
445 int readPLNK(Atom atom);
446 int readPNAV(Atom atom);
size_type size() const
Definition: array.h:316
Definition: quicktime.h:134
Definition: quicktime.h:58
bool parseFile(const Path &filename)
uint32 getTimeScale() const
Definition: quicktime.h:97
bool isOpen() const
Definition: quicktime.h:100
bool parseStream(SeekableReadStream *stream, DisposeAfterUse::Flag disposeFileHandle=DisposeAfterUse::YES)
void setChunkBeginOffset(uint32 offset)
Definition: quicktime.h:92
Definition: rational.h:40
Definition: algorithm.h:29
Definition: quicktime.h:123
Definition: quicktime.h:355
Definition: quicktime.h:201
Definition: quicktime.h:221
Definition: quicktime.h:240
Definition: quicktime.h:253
Definition: quicktime.h:265
Definition: quicktime.h:280
Definition: quicktime.h:233
Definition: quicktime.h:292
Definition: quicktime.h:170
Definition: quicktime.h:117
Definition: quicktime.h:112
Definition: quicktime.h:300