summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/QuickTimeVRFormat.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/QuickTimeVRFormat.h')
-rw-r--r--common/quicktime_win32/QuickTimeVRFormat.h539
1 files changed, 539 insertions, 0 deletions
diff --git a/common/quicktime_win32/QuickTimeVRFormat.h b/common/quicktime_win32/QuickTimeVRFormat.h
new file mode 100644
index 0000000..d9d5f14
--- /dev/null
+++ b/common/quicktime_win32/QuickTimeVRFormat.h
@@ -0,0 +1,539 @@
+/*
+ File: QuickTimeVRFormat.h
+
+ Contains: QuickTime VR interfaces
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1997-2007 by Apple Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __QUICKTIMEVRFORMAT__
+#define __QUICKTIMEVRFORMAT__
+
+#ifndef __CONDITIONALMACROS__
+#include <ConditionalMacros.h>
+#endif
+
+#ifndef __MOVIES__
+#include <Movies.h>
+#endif
+
+#ifndef __QUICKTIMEVR__
+#include <QuickTimeVR.h>
+#endif
+
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
+
+/* QuickTime is not available to 64-bit clients */
+
+#if !__LP64__
+
+
+/* File Format Version numbers */
+#define kQTVRMajorVersion (2)
+#define kQTVRMinorVersion (0)
+
+/* User data type for the Movie Controller type specifier*/
+enum {
+ kQTControllerType = kQTVRControllerSubType, /* Atom & ID of where our*/
+ kQTControllerID = 1 /* ...controller name is stored*/
+};
+
+/* VRWorld atom types*/
+enum {
+ kQTVRWorldHeaderAtomType = FOUR_CHAR_CODE('vrsc'),
+ kQTVRImagingParentAtomType = FOUR_CHAR_CODE('imgp'),
+ kQTVRPanoImagingAtomType = FOUR_CHAR_CODE('impn'),
+ kQTVRObjectImagingAtomType = FOUR_CHAR_CODE('imob'),
+ kQTVRNodeParentAtomType = FOUR_CHAR_CODE('vrnp'),
+ kQTVRNodeIDAtomType = FOUR_CHAR_CODE('vrni'),
+ kQTVRNodeLocationAtomType = FOUR_CHAR_CODE('nloc'),
+ kQTVRCursorParentAtomType = FOUR_CHAR_CODE('vrcp'), /* New with 2.1*/
+ kQTVRCursorAtomType = FOUR_CHAR_CODE('CURS'), /* New with 2.1*/
+ kQTVRColorCursorAtomType = FOUR_CHAR_CODE('crsr') /* New with 2.1*/
+};
+
+/* NodeInfo atom types*/
+enum {
+ kQTVRNodeHeaderAtomType = FOUR_CHAR_CODE('ndhd'),
+ kQTVRHotSpotParentAtomType = FOUR_CHAR_CODE('hspa'),
+ kQTVRHotSpotAtomType = FOUR_CHAR_CODE('hots'),
+ kQTVRHotSpotInfoAtomType = FOUR_CHAR_CODE('hsin'),
+ kQTVRLinkInfoAtomType = FOUR_CHAR_CODE('link')
+};
+
+/* Miscellaneous atom types*/
+enum {
+ kQTVRStringAtomType = FOUR_CHAR_CODE('vrsg'),
+ kQTVRStringEncodingAtomType = FOUR_CHAR_CODE('vrse'), /* New with 2.1*/
+ kQTVRPanoSampleDataAtomType = FOUR_CHAR_CODE('pdat'),
+ kQTVRObjectInfoAtomType = FOUR_CHAR_CODE('obji'),
+ kQTVRImageTrackRefAtomType = FOUR_CHAR_CODE('imtr'), /* Parent is kQTVRObjectInfoAtomType. Required if track ref is not 1 as required by 2.0 format.*/
+ kQTVRHotSpotTrackRefAtomType = FOUR_CHAR_CODE('hstr'), /* Parent is kQTVRObjectInfoAtomType. Required if track ref is not 1 as required by 2.0 format.*/
+ kQTVRAngleRangeAtomType = FOUR_CHAR_CODE('arng'),
+ kQTVRTrackRefArrayAtomType = FOUR_CHAR_CODE('tref'),
+ kQTVRPanConstraintAtomType = FOUR_CHAR_CODE('pcon'),
+ kQTVRTiltConstraintAtomType = FOUR_CHAR_CODE('tcon'),
+ kQTVRFOVConstraintAtomType = FOUR_CHAR_CODE('fcon'),
+ kQTVRCubicViewAtomType = FOUR_CHAR_CODE('cuvw'), /* New with 5.0*/
+ kQTVRCubicFaceDataAtomType = FOUR_CHAR_CODE('cufa') /* New with 5.0*/
+};
+
+enum {
+ kQTVRObjectInfoAtomID = 1,
+ kQTVRObjectImageTrackRefAtomID = 1, /* New with 2.1, it adds a track reference to select between multiple image tracks*/
+ kQTVRObjectHotSpotTrackRefAtomID = 1 /* New with 2.1, it adds a track reference to select between multiple hotspot tracks*/
+};
+
+/* Track reference types*/
+enum {
+ kQTVRImageTrackRefType = FOUR_CHAR_CODE('imgt'),
+ kQTVRHotSpotTrackRefType = FOUR_CHAR_CODE('hott')
+};
+
+/* Old hot spot types*/
+enum {
+ kQTVRHotSpotNavigableType = FOUR_CHAR_CODE('navg')
+};
+
+/* Valid bits used in QTVRLinkHotSpotAtom*/
+enum {
+ kQTVRValidPan = 1L << 0,
+ kQTVRValidTilt = 1L << 1,
+ kQTVRValidFOV = 1L << 2,
+ kQTVRValidViewCenter = 1L << 3
+};
+
+
+/* Values for flags field in QTVRPanoSampleAtom*/
+enum {
+ kQTVRPanoFlagHorizontal = 1L << 0,
+ kQTVRPanoFlagLast = 1L << 31
+};
+
+
+/* Values for locationFlags field in QTVRNodeLocationAtom*/
+enum {
+ kQTVRSameFile = 0
+};
+
+
+/* Header for QTVR track's Sample Description record (vrWorld atom container is appended)*/
+struct QTVRSampleDescription {
+ UInt32 descSize; /* total size of the QTVRSampleDescription*/
+ UInt32 descType; /* must be 'qtvr'*/
+
+ UInt32 reserved1; /* must be zero*/
+ UInt16 reserved2; /* must be zero*/
+ UInt16 dataRefIndex; /* must be zero*/
+
+ UInt32 data; /* Will be extended to hold vrWorld QTAtomContainer*/
+
+};
+typedef struct QTVRSampleDescription QTVRSampleDescription;
+typedef QTVRSampleDescription * QTVRSampleDescriptionPtr;
+typedef QTVRSampleDescriptionPtr * QTVRSampleDescriptionHandle;
+/*
+ =================================================================================================
+ Definitions and structures used in the VRWorld QTAtomContainer
+ -------------------------------------------------------------------------------------------------
+*/
+
+struct QTVRStringAtom {
+ UInt16 stringUsage;
+ UInt16 stringLength;
+ unsigned char theString[4]; /* field previously named "string"*/
+};
+typedef struct QTVRStringAtom QTVRStringAtom;
+typedef QTVRStringAtom * QTVRStringAtomPtr;
+
+struct QTVRWorldHeaderAtom {
+ UInt16 majorVersion;
+ UInt16 minorVersion;
+
+ QTAtomID nameAtomID;
+ UInt32 defaultNodeID;
+ UInt32 vrWorldFlags;
+
+ UInt32 reserved1;
+ UInt32 reserved2;
+};
+typedef struct QTVRWorldHeaderAtom QTVRWorldHeaderAtom;
+typedef QTVRWorldHeaderAtom * QTVRWorldHeaderAtomPtr;
+
+/* Valid bits used in QTVRPanoImagingAtom*/
+enum {
+ kQTVRValidCorrection = 1L << 0,
+ kQTVRValidQuality = 1L << 1,
+ kQTVRValidDirectDraw = 1L << 2,
+ kQTVRValidFirstExtraProperty = 1L << 3
+};
+
+struct QTVRPanoImagingAtom {
+ UInt16 majorVersion;
+ UInt16 minorVersion;
+
+ UInt32 imagingMode;
+ UInt32 imagingValidFlags;
+
+ UInt32 correction;
+ UInt32 quality;
+ UInt32 directDraw;
+ UInt32 imagingProperties[6]; /* for future properties*/
+
+ UInt32 reserved1;
+ UInt32 reserved2;
+};
+typedef struct QTVRPanoImagingAtom QTVRPanoImagingAtom;
+typedef QTVRPanoImagingAtom * QTVRPanoImagingAtomPtr;
+struct QTVRNodeLocationAtom {
+ UInt16 majorVersion;
+ UInt16 minorVersion;
+
+ OSType nodeType;
+ UInt32 locationFlags;
+ UInt32 locationData;
+
+ UInt32 reserved1;
+ UInt32 reserved2;
+};
+typedef struct QTVRNodeLocationAtom QTVRNodeLocationAtom;
+typedef QTVRNodeLocationAtom * QTVRNodeLocationAtomPtr;
+/*
+ =================================================================================================
+ Definitions and structures used in the Nodeinfo QTAtomContainer
+ -------------------------------------------------------------------------------------------------
+*/
+
+struct QTVRNodeHeaderAtom {
+ UInt16 majorVersion;
+ UInt16 minorVersion;
+
+ OSType nodeType;
+ QTAtomID nodeID;
+ QTAtomID nameAtomID;
+ QTAtomID commentAtomID;
+
+ UInt32 reserved1;
+ UInt32 reserved2;
+};
+typedef struct QTVRNodeHeaderAtom QTVRNodeHeaderAtom;
+typedef QTVRNodeHeaderAtom * QTVRNodeHeaderAtomPtr;
+struct QTVRAngleRangeAtom {
+ Float32 minimumAngle;
+ Float32 maximumAngle;
+};
+typedef struct QTVRAngleRangeAtom QTVRAngleRangeAtom;
+typedef QTVRAngleRangeAtom * QTVRAngleRangeAtomPtr;
+struct QTVRHotSpotInfoAtom {
+ UInt16 majorVersion;
+ UInt16 minorVersion;
+
+ OSType hotSpotType;
+ QTAtomID nameAtomID;
+ QTAtomID commentAtomID;
+
+ SInt32 cursorID[3];
+
+ /* canonical view for this hot spot*/
+ Float32 bestPan;
+ Float32 bestTilt;
+ Float32 bestFOV;
+ QTVRFloatPoint bestViewCenter;
+
+ /* Bounding box for this hot spot*/
+ Rect hotSpotRect;
+
+ UInt32 flags;
+ UInt32 reserved1;
+ UInt32 reserved2;
+};
+typedef struct QTVRHotSpotInfoAtom QTVRHotSpotInfoAtom;
+typedef QTVRHotSpotInfoAtom * QTVRHotSpotInfoAtomPtr;
+struct QTVRLinkHotSpotAtom {
+ UInt16 majorVersion;
+ UInt16 minorVersion;
+
+ UInt32 toNodeID;
+
+ UInt32 fromValidFlags;
+ Float32 fromPan;
+ Float32 fromTilt;
+ Float32 fromFOV;
+ QTVRFloatPoint fromViewCenter;
+
+ UInt32 toValidFlags;
+ Float32 toPan;
+ Float32 toTilt;
+ Float32 toFOV;
+ QTVRFloatPoint toViewCenter;
+
+ Float32 distance;
+
+ UInt32 flags;
+ UInt32 reserved1;
+ UInt32 reserved2;
+};
+typedef struct QTVRLinkHotSpotAtom QTVRLinkHotSpotAtom;
+typedef QTVRLinkHotSpotAtom * QTVRLinkHotSpotAtomPtr;
+/*
+ =================================================================================================
+ Definitions and structures used in Panorama and Object tracks
+ -------------------------------------------------------------------------------------------------
+*/
+
+struct QTVRPanoSampleAtom {
+ UInt16 majorVersion;
+ UInt16 minorVersion;
+
+ UInt32 imageRefTrackIndex; /* track reference index of the full res image track*/
+ UInt32 hotSpotRefTrackIndex; /* track reference index of the full res hot spot track*/
+
+ Float32 minPan;
+ Float32 maxPan;
+ Float32 minTilt;
+ Float32 maxTilt;
+ Float32 minFieldOfView;
+ Float32 maxFieldOfView;
+
+ Float32 defaultPan;
+ Float32 defaultTilt;
+ Float32 defaultFieldOfView;
+
+ /* Info for highest res version of image track*/
+ UInt32 imageSizeX; /* pixel width of the panorama (e.g. 768)*/
+ UInt32 imageSizeY; /* pixel height of the panorama (e.g. 2496)*/
+ UInt16 imageNumFramesX; /* diced frames wide (e.g. 1)*/
+ UInt16 imageNumFramesY; /* diced frames high (e.g. 24)*/
+
+ /* Info for highest res version of hotSpot track*/
+ UInt32 hotSpotSizeX; /* pixel width of the hot spot panorama (e.g. 768)*/
+ UInt32 hotSpotSizeY; /* pixel height of the hot spot panorama (e.g. 2496)*/
+ UInt16 hotSpotNumFramesX; /* diced frames wide (e.g. 1)*/
+ UInt16 hotSpotNumFramesY; /* diced frames high (e.g. 24)*/
+
+ UInt32 flags;
+ OSType panoType;
+ UInt32 reserved2;
+
+};
+typedef struct QTVRPanoSampleAtom QTVRPanoSampleAtom;
+typedef QTVRPanoSampleAtom * QTVRPanoSampleAtomPtr;
+/*
+ View atom for cubes (since same fields in QTVRPanoSampleAtom are set to special
+ values for backwards compatibility and hence are ignored by the cubic engine)
+*/
+struct QTVRCubicViewAtom {
+ Float32 minPan;
+ Float32 maxPan;
+ Float32 minTilt;
+ Float32 maxTilt;
+ Float32 minFieldOfView;
+ Float32 maxFieldOfView;
+
+ Float32 defaultPan;
+ Float32 defaultTilt;
+ Float32 defaultFieldOfView;
+};
+typedef struct QTVRCubicViewAtom QTVRCubicViewAtom;
+typedef QTVRCubicViewAtom * QTVRCubicViewAtomPtr;
+struct QTVRCubicFaceData {
+ Float32 orientation[4]; /* WXYZ quaternion of absolute orientation*/
+ Float32 center[2]; /* Center of image relative to center of projection (default = (0,0)) in normalized units*/
+ Float32 aspect; /* aspect>1 => tall pixels; aspect <1 => squat pixels (default = 1)*/
+ Float32 skew; /* skew x by y (default = 0)*/
+};
+typedef struct QTVRCubicFaceData QTVRCubicFaceData;
+typedef QTVRCubicFaceData * QTVRCubicFaceDataPtr;
+/* Special resolution values for the Image Track Reference Atoms. Use only one value per track reference.*/
+enum {
+ kQTVRFullTrackRes = kQTVRFullRes,
+ kQTVRHalfTrackRes = kQTVRHalfRes,
+ kQTVRQuarterTrackRes = kQTVRQuarterRes,
+ kQTVRPreviewTrackRes = 0x8000
+};
+
+struct QTVRTrackRefEntry {
+ UInt32 trackRefType;
+ UInt16 trackResolution;
+ UInt32 trackRefIndex;
+};
+typedef struct QTVRTrackRefEntry QTVRTrackRefEntry;
+/*
+ =================================================================================================
+ Object File format 2.0
+ -------------------------------------------------------------------------------------------------
+*/
+enum {
+ kQTVRObjectAnimateViewFramesOn = (1L << 0),
+ kQTVRObjectPalindromeViewFramesOn = (1L << 1),
+ kQTVRObjectStartFirstViewFrameOn = (1L << 2),
+ kQTVRObjectAnimateViewsOn = (1L << 3),
+ kQTVRObjectPalindromeViewsOn = (1L << 4),
+ kQTVRObjectSyncViewToFrameRate = (1L << 5),
+ kQTVRObjectDontLoopViewFramesOn = (1L << 6),
+ kQTVRObjectPlayEveryViewFrameOn = (1L << 7),
+ kQTVRObjectStreamingViewsOn = (1L << 8)
+};
+
+enum {
+ kQTVRObjectWrapPanOn = (1L << 0),
+ kQTVRObjectWrapTiltOn = (1L << 1),
+ kQTVRObjectCanZoomOn = (1L << 2),
+ kQTVRObjectReverseHControlOn = (1L << 3),
+ kQTVRObjectReverseVControlOn = (1L << 4),
+ kQTVRObjectSwapHVControlOn = (1L << 5),
+ kQTVRObjectTranslationOn = (1L << 6)
+};
+
+enum {
+ kGrabberScrollerUI = 1, /* "Object" */
+ kOldJoyStickUI = 2, /* "1.0 Object as Scene" */
+ kJoystickUI = 3, /* "Object In Scene"*/
+ kGrabberUI = 4, /* "Grabber only"*/
+ kAbsoluteUI = 5 /* "Absolute pointer"*/
+};
+
+
+struct QTVRObjectSampleAtom {
+ UInt16 majorVersion; /* kQTVRMajorVersion*/
+ UInt16 minorVersion; /* kQTVRMinorVersion*/
+ UInt16 movieType; /* ObjectUITypes*/
+ UInt16 viewStateCount; /* The number of view states 1 based*/
+ UInt16 defaultViewState; /* The default view state number. The number must be 1 to viewStateCount*/
+ UInt16 mouseDownViewState; /* The mouse down view state. The number must be 1 to viewStateCount*/
+ UInt32 viewDuration; /* The duration of each view including all animation frames in a view*/
+ UInt32 columns; /* Number of columns in movie*/
+ UInt32 rows; /* Number rows in movie*/
+ Float32 mouseMotionScale; /* 180.0 for kStandardObject or kQTVRObjectInScene, actual degrees for kOldNavigableMovieScene.*/
+ Float32 minPan; /* Start horizontal pan angle in degrees*/
+ Float32 maxPan; /* End horizontal pan angle in degrees*/
+ Float32 defaultPan; /* Initial horizontal pan angle in degrees (poster view)*/
+ Float32 minTilt; /* Start vertical pan angle in degrees*/
+ Float32 maxTilt; /* End vertical pan angle in degrees*/
+ Float32 defaultTilt; /* Initial vertical pan angle in degrees (poster view) */
+ Float32 minFieldOfView; /* minimum field of view setting (appears as the maximum zoom effect) must be >= 1*/
+ Float32 fieldOfView; /* the field of view range must be >= 1*/
+ Float32 defaultFieldOfView; /* must be in minFieldOfView and maxFieldOfView range inclusive*/
+ Float32 defaultViewCenterH;
+ Float32 defaultViewCenterV;
+
+ Float32 viewRate;
+ Float32 frameRate;
+ UInt32 animationSettings; /* 32 reserved bit fields*/
+ UInt32 controlSettings; /* 32 reserved bit fields*/
+
+};
+typedef struct QTVRObjectSampleAtom QTVRObjectSampleAtom;
+typedef QTVRObjectSampleAtom * QTVRObjectSampleAtomPtr;
+/*
+ =================================================================================================
+ QuickTime VR Authoring Components
+ -------------------------------------------------------------------------------------------------
+*/
+
+/*
+ ComponentDescription constants for QTVR Export components
+ (componentType = MovieExportType; componentSubType = MovieFileType)
+*/
+enum {
+ kQTVRFlattenerManufacturer = FOUR_CHAR_CODE('vrwe'), /* aka QTVRFlattenerType*/
+ kQTVRSplitterManufacturer = FOUR_CHAR_CODE('vrsp'),
+ kQTVRObjExporterManufacturer = FOUR_CHAR_CODE('vrob')
+};
+
+/* QuickTime VR Flattener atom types*/
+enum {
+ kQTVRFlattenerSettingsParentAtomType = FOUR_CHAR_CODE('VRWe'), /* parent of settings atoms (other than compression)*/
+ kQTVRFlattenerPreviewResAtomType = FOUR_CHAR_CODE('PRes'), /* preview resolution Int16*/
+ kQTVRFlattenerImportSpecAtomType = FOUR_CHAR_CODE('ISpe'), /* import file spec FSSpec*/
+ kQTVRFlattenerCreatePreviewAtomType = FOUR_CHAR_CODE('Prev'), /* Boolean*/
+ kQTVRFlattenerImportPreviewAtomType = FOUR_CHAR_CODE('IPre'), /* Boolean*/
+ kQTVRFlattenerBlurPreviewAtomType = FOUR_CHAR_CODE('Blur') /* Boolean*/
+};
+
+/* QuickTime VR Splitter atom types*/
+enum {
+ kQTVRSplitterSettingsParentAtomType = FOUR_CHAR_CODE('VRSp'), /* parent of settings atoms (other than compression)*/
+ kQTVRSplitterGenerateHTMLAtomType = FOUR_CHAR_CODE('Ghtm'), /* Boolean*/
+ kQTVRSplitterOverwriteFilesAtomType = FOUR_CHAR_CODE('Owfi'), /* Boolean*/
+ kQTVRSplitterUseFlattenerAtomType = FOUR_CHAR_CODE('Usef'), /* Boolean*/
+ kQTVRSplitterShowControllerAtomType = FOUR_CHAR_CODE('Shco'), /* Boolean*/
+ kQTVRSplitterTargetMyselfAtomType = FOUR_CHAR_CODE('Tgtm') /* Boolean*/
+};
+
+/* QuickTime VR Object Exporter atom types*/
+enum {
+ kQTVRObjExporterSettingsBlockSize = FOUR_CHAR_CODE('bsiz'), /* block size for compression*/
+ kQTVRObjExporterSettingsTargetSize = FOUR_CHAR_CODE('tsiz') /* target file size*/
+};
+
+
+
+#if OLDROUTINENAMES
+typedef QTVRStringAtom VRStringAtom;
+typedef QTVRWorldHeaderAtom VRWorldHeaderAtom;
+typedef QTVRPanoImagingAtom VRPanoImagingAtom;
+typedef QTVRNodeLocationAtom VRNodeLocationAtom;
+typedef QTVRNodeHeaderAtom VRNodeHeaderAtom;
+typedef QTVRAngleRangeAtom VRAngleRangeAtom;
+typedef QTVRHotSpotInfoAtom VRHotSpotInfoAtom;
+typedef QTVRLinkHotSpotAtom VRLinkHotSpotAtom;
+typedef QTVRPanoSampleAtom VRPanoSampleAtom;
+typedef QTVRTrackRefEntry VRTrackRefEntry;
+typedef QTVRObjectSampleAtom VRObjectSampleAtom;
+#endif /* OLDROUTINENAMES */
+
+
+#endif // !__LP64__
+
+
+
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack()
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __QUICKTIMEVRFORMAT__ */
+