‹ QuickTimeContentsFigures, Tables, and ListingsAbout This BookFormat of a Typical ChapterConventions Used in This BookSpecial FontsTypes of NotesDevelopment EnvironmentIntroduction to QuickTimeQuickTime Concepts Movies and Media Data Structures
ComponentsImage CompressionTimeThe QuickTime Architecture$Figure 1-1 QuickTime playing a movieThe Movie ToolboxThe Image Compression ManagerThe Component ManagerQuickTime ComponentsUsing QuickTimePlaying Movies:Figure 1-2 A QuickTime movie with Apple’s movie controller?Figure 1-3 A QuickTime movie with an active selection rectangleCreating and Editing Movies-Figure 1-4 Capturing and playing back moviesMovie-Editing ApplicationsTFigure 1-5 Apple’s movie controller with a portion of the movie selected for editingMovie-Creating ApplicationsFigure 1-6 A monitor windowFigure 1-7 Compression settingsMovie ToolboxIntroduction to MoviesTime and the Movie ToolboxTime Coordinate Systems"Table 2-1 Common movie time scalesFigure 2-1 Time scales
Time Bases3Figure 2-2 A time coordinate system and a time baseMovies+Figure 2-3 A movie’s time coordinate system,Figure 2-4 A movie containing several tracks/Figure 2-5 A movie, its preview, and its posterTracksFigure 2-6 A track in a movie Figure 2-7 A track and its mediaMedia StructuresFigure 2-8 A media and its dataAbout MoviesMovie Characteristics Figure 2-9 Movie characteristicsTrack Characteristics!Figure 2-10 Track characteristicsMedia Characteristics!Figure 2-11 Media characteristicsSpatial Properties8Figure 2-12 Spatial processing of a movie and its tracksFigure 2-13 A track rectangle$Figure 2-14 Clipping a track’s image>Figure 2-15 A track transformed into a movie coordinate system$Figure 2-16 Clipping a movie’s image@Figure 2-17 A movie transformed to the display coordinate system.Figure 2-18 Clipping a movie for final displayThe Transformation Matrix2Figure 2-19 A point transformed by a 3-by-3 matrixFigure 2-20 The identity matrix;Figure 2-21 A matrix that describes a translation operation7Figure 2-22 A matrix that describes a scaling operation8Figure 2-23 A matrix that describes a rotation operationGFigure 2-24 A matrix that describes a scaling and translation operationAudio PropertiesSound PlaybackAdding Sound to VideoSound Data FormatsData InterchangeMovies on the ClipboardMovies in FilesUsing the Movie Toolbox2Determining Whether the Movie Toolbox Is Installed<Listing 2-1 Using the Gestalt Manager with the Movie ToolboxJFigure 2-25 An alert box that tells the user that QuickTime is unavailable!Getting Ready to Work With MoviesGetting a Movie From a File'Listing 2-2 Getting a movie from a file?Figure 2-26 A dialog box used when searching for a movie’s dataMFigure 2-27 A dialog box that informs the user the movie file cannot be foundLFigure 2-28 A dialog box that allows the user to specify a movie file to try.Figure 2-29 An alert for an invalid movie file3Figure 2-30 An alert when QuickTime cannot be found&Playing Movies With a Movie Controller.Figure 2-31 A movie controller playing a movie>Listing 2-3 Playing a movie using a movie controller componentPlaying a MovieListing 2-4 Playing a movieMovies and the ScrapCreating a Movie %A Sample Program for Creating a Movie.Listing 2-5 Creating a movie: The main program7A Sample Function for Creating and Opening a Movie File-Listing 2-6 Creating and opening a movie file;A Sample Function for Creating a Video Track in a New Movie"Listing 2-7 Creating a video track5A Sample Function for Adding Video Samples to a Media+Listing 2-8 Adding video samples to a media5A Sample Function for Creating Video Data for a MovieListing 2-9 Creating video data-A Sample Function for Creating a Sound Track #Listing 2-10 Creating a sound track<A Sample Function for Creating a Sound Description Structure)Listing 2-11 Creating a sound descriptionParsing a Sound Resource%Listing 2-12 Parsing a sound resourceSaving Movies in Movie Files-Figure 2-32 A sample movie Save As dialog boxUsing Movies in Your Event Loop)Listing 2-13 Handling movie update eventsThe Movie Toolbox and System 6The Alias ManagerThe File ManagerPreviewing FilesAPreviewing Files in System 6 Using Standard File Reply StructuresLFigure 2-33 SFGetFilePreview or SFPGetFilePreview dialog box without previewIFigure 2-34 SFGetFilePreview or SFPGetFilePreview dialog box with preview&Customizing Your Interface in System 6RFigure 2-35 Standard preview dialog box for SFGetFilePreview and SFPGetFilePreviewAPreviewing Files in System 7 Using Standard File Reply StructuresUFigure 2-36 StandardGetFilePreview or CustomGetFilePreview dialog box without previewRFigure 2-37 StandardGetFilePreview or CustomGetFilePreview dialog box with previewHFigure 2-38 Dialog box showing automatic file-to-movie conversion option?Figure 2-39 Dialog box for saving a movie converted from a file&Customizing Your Interface in System 7@Figure 2-40 Standard preview dialog box for CustomGetFilePreview#Using Application-Defined Functions-Listing 2-14 Two sample movie cover functions*Working With Movie Spatial Characteristics#Listing 2-15 Creating a track matteMovie Toolbox Reference
Data TypesMovie IdentifiersThe Time Structure.The Fixed-Point and Fixed-Rectangle StructuresThe Sound Description Structure(Functions for Getting and Playing MoviesInitializing the Movie ToolboxEnterMovies
ExitMoviesError FunctionsGetMoviesErrorGetMoviesStickyErrorClearMoviesStickyErrorSetMoviesErrorProcMovie FunctionsNewMovieFromFileNewMovieFromHandleNewMovieConvertFileToMovieFileConvertMovieToFileDisposeMovieCreateMovieFileOpenMovieFileCloseMovieFileDeleteMovieFileSaving MoviesHasMovieChangedClearMovieChangedAddMovieResourceUpdateMovieResourceRemoveMovieResourcePutMovieIntoHandleFlattenMovieFlattenMovieDataNewMovieFromDataForkPutMovieIntoDataForkControlling Movie Playback
StartMovie StopMovieGoToBeginningOfMovieGoToEndOfMovie Movie Posters and Movie PreviewsSetTrackUsageGetTrackUsageShowMoviePosterSetPosterBoxGetPosterBoxSetMoviePosterTimeGetMoviePosterTimePlayMoviePreviewSetMoviePreviewModeGetMoviePreviewModeSetMoviePreviewTimeGetMoviePreviewTimeMovies and Your Event Loop
MoviesTaskIsMovieDoneUpdateMovie PtInMovie
PtInTrackGetMovieStatusGetTrackStatusPreferred Movie SettingsSetMoviePreferredRateGetMoviePreferredRateSetMoviePreferredVolumeGetMoviePreferredVolume%Enhancing Movie Playback PerformancePrerollMovieSetMovieActiveSegmentGetMovieActiveSegmentSetMoviePlayHints SetMediaPlayHints LoadMovieIntoRamLoadTrackIntoRamLoadMediaIntoRamSetMediaShadowSyncGetMediaShadowSyncDisabling Movies and TracksSetMovieActiveGetMovieActiveSetTrackEnabledGetTrackEnabledGenerating Pictures From MoviesGetMoviePictGetMoviePosterPictGetTrackPict$Creating Tracks and Media StructuresNewMovieTrackDisposeMovieTrackNewTrackMediaDisposeTrackMedia*Working With Progress and Cover FunctionsSetMovieProgressProcSetMovieCoverProcs&Functions That Modify Movie Properties*Working With Movie Spatial CharacteristicsSetMovieGWorldGetMovieGWorldSetMovieBoxGetMovieBoxGetMovieDisplayBoundsRgn GetMovieSegmentDisplayBoundsRgnSetMovieDisplayClipRgnGetMovieDisplayClipRgnGetTrackDisplayBoundsRgn GetTrackSegmentDisplayBoundsRgn SetTrackLayerGetTrackLayerSetMovieMatrixGetMovieMatrixGetMovieBoundsRgn GetTrackMovieBoundsRgnSetMovieClipRgnGetMovieClipRgn SetTrackMatrixGetTrackMatrixGetTrackBoundsRgnSetTrackDimensionsGetTrackDimensionsSetTrackClipRgnGetTrackClipRgnSetTrackMatteGetTrackMatteDisposeMatteWorking With Sound VolumeSetMovieVolumeGetMovieVolumeSetTrackVolumeGetTrackVolumeWorking with Movie TimeGetMovieDurationSetMovieTimeValueSetMovieTimeGetMovieTimeSetMovieRateGetMovieRateSetMovieTimeScaleGetMovieTimeScaleGetMovieTimeBaseWorking With Track TimeGetTrackDurationSetTrackOffsetGetTrackOffsetTrackTimeToMediaTimeWorking With Media TimeGetMediaDurationSetMediaTimeScaleGetMediaTimeScaleFinding Interesting TimesGetMovieNextInterestingTime GetTrackNextInterestingTimeGetMediaNextInterestingTime .Locating a Movie’s Tracks and Media StructuresGetMovieTrackCountGetMovieIndTrackGetMovieTrackGetTrackIDGetTrackMovieGetTrackMediaGetMediaTrackWorking With Alternate TracksSetMovieLanguageSelectMovieAlternatesSetAutoTrackAlternatesEnabled SetTrackAlternateGetTrackAlternateSetMediaLanguageGetMediaLanguageSetMediaQualityGetMediaQualityWorking With Data References AddMediaDataRefSetMediaDataRefGetMediaDataRefGetMediaDataRefCount0Determining Movie Creation and Modification TimeGetMovieCreationTimeGetMovieModificationTimeGetTrackCreationTimeGetTrackModificationTimeGetMediaCreationTimeGetMediaModificationTimeWorking With Media Samples GetMovieDataSizeGetTrackDataSizeGetMediaDataSizeGetMediaSampleCountGetMediaSampleDescriptionCountGetMediaSampleDescription SetMediaSampleDescriptionMediaTimeToSampleNumSampleNumToMediaTimeWorking With Movie User DataGetMovieUserDataGetTrackUserDataGetMediaUserDataGetNextUserDataTypeCountUserDataTypeAddUserDataGetUserDataRemoveUserDataAddUserDataTextGetUserDataTextRemoveUserDataTextSetUserDataItemGetUserDataItemNewUserDataDisposeUserDataPutUserDataIntoHandleNewUserDataFromHandleFunctions for Editing MoviesEditing MoviesPutMovieOnScrapNewMovieFromScrapSetMovieSelectionGetMovieSelectionCutMovieSelectionCopyMovieSelectionPasteMovieSelectionAddMovieSelectionClearMovieSelectionIsScrapMoviePasteHandleIntoMoviePutMovieIntoTypedHandleUndo for MoviesNewMovieEditStateUseMovieEditStateDisposeMovieEditState"Low-Level Movie-Editing FunctionsInsertMovieSegmentInsertEmptyMovieSegmentDeleteMovieSegmentScaleMovieSegmentCopyMovieSettingsEditing TracksInsertTrackSegmentInsertEmptyTrackSegmentInsertMediaIntoTrackDeleteTrackSegmentScaleTrackSegmentCopyTrackSettingsGetTrackEditRateUndo for TracksNewTrackEditStateUseTrackEditStateDisposeTrackEditState"Adding Samples to Media StructuresBeginMediaEditsEndMediaEditsAddMediaSampleAddMediaSampleReferenceGetMediaSampleGetMediaSampleReferenceMedia FunctionsSelecting Media HandlersGetMediaHandlerDescriptionGetMediaHandlerSetMediaHandlerGetMediaDataHandlerDescriptionGetMediaDataHandlerSetMediaDataHandlerVideo Media Handler FunctionsSetVideoMediaGraphicsModeGetVideoMediaGraphicsModeSound Media Handler FunctionsSetSoundMediaBalanceGetSoundMediaBalanceText Media Handler FunctionsAddTextSampleAddTESampleAddHiliteSampleFindNextTextHiliteTextSampleSetTextProc$Functions for Creating File PreviewsMakeFilePreviewAddFilePreview'Functions for Displaying File PreviewsHFigure 2-41 Dialog box showing automatic file-to-movie conversion option?Figure 2-42 Dialog box for saving a movie converted from a fileSFGetFilePreviewSFPGetFilePreviewStandardGetFilePreviewCustomGetFilePreviewTime Base Functions$Creating and Disposing of Time BasesNewTimeBaseDisposeTimeBaseSetMovieMasterClockSetMovieMasterTimeBaseSetTimeBaseMasterClockGetTimeBaseMasterClockSetTimeBaseMasterTimeBaseGetTimeBaseMasterTimeBaseSetTimeBaseZeroWorking With Time Base ValuesSetTimeBaseTimeSetTimeBaseValueGetTimeBaseTimeSetTimeBaseRateGetTimeBaseRateGetTimeBaseEffectiveRateSetTimeBaseStartTimeGetTimeBaseStartTimeSetTimeBaseStopTimeGetTimeBaseStopTimeSetTimeBaseFlagsGetTimeBaseFlagsGetTimeBaseStatusWorking With TimesAddTimeSubtractTimeConvertTimeConvertTimeScaleTime Base Callback FunctionsNewCallBack
SkewMatrixConcatMatrixInverseMatrixTransformPointsTransformFixedPointsTransformRectTransformFixedRectTransformRgnRectMatrix>Figure 2-43 Transforming an image with the RectMatrix functionIFigure 2-44 Matrix created as a result of calling the RectMatrix function MapMatrix=Figure 2-45 Transforming an image with the MapMatrix functionApplication-Defined FunctionsProgress FunctionsMyProgressProcCover FunctionsMyCoverProcError-Notification Functions
MyTextProcSummary of the Movie ToolboxImage Compression Manager-Introduction to the Image Compression Manager%Data That Is Suitable for CompressionStoring ImagesAbout Image Compression!Image-Compression CharacteristicsCompression RatioCompression SpeedImage QualityCompressors Supplied by AppleThe Photo CompressorThe Video CompressorThe Compact Video CompressorThe Animation CompressorThe Graphics CompressorThe Raw Compressor3Types of Images Suitable for Different Compressors$Figure 3-1 24-bit photographic image!Figure 3-2 24-bit synthetic imageFigure 3-3 8-bit graphic image #Figure 3-4 8-bit photographic imageKFigure 3-5 Compressor performance for a 921 KB, 24-bit, photographic imageHFigure 3-6 Compressor performance for a 502 KB, 24-bit, synthetic imageDFigure 3-7 Compressor performance for a 30 KB, 8-bit, graphic imageTFigure 3-8 Compressor performance for a 302 KB, 8-bit, dithered, photographic image$Using the Image Compression Manager9Getting Information About Compressors and Compressed DataWorking With PicturesCTable 3-1 Fields of the PICT opcode for compressed QuickTime imagesETable 3-2 Fields of the PICT opcode for uncompressed QuickTime imagesCompressing Images2Listing 3-1 Compressing and decompressing an imageDecompressing ImagesCompressing SequencesDecompressing Sequences*Decompressing Still Images From a Sequence&Using Screen Buffers and Image BuffersGA Sample Program for Compressing and Decompressing a Sequence of ImagesPListing 3-2 Compressing and decompressing a sequence of images: The main program@A Sample Function for Saving a Sequence of Images to a Disk File`Listing 3-3 Compressing and decompressing a sequence of images: Saving a sequence to a disk fileMA Sample Function for Creating, Compressing, and Drawing a Sequence of Images`Listing 3-4 Compressing and decompressing a sequence of images: Drawing one frame with QuickDrawQA Sample Function for Decompressing and Playing Back a Sequence From a Disk FilezListing 3-5 Compressing and decompressing a sequence of images: Decompressing and playing back a sequence from a disk fileSpooling Compressed DataBanding and Extending Images-Figure 3-9 Image bands and their measurementsDefining Key Frame RatesFast Dithering$Understanding Compressor Components$Image Compression Manager Reference
Data TypesThe Image Description Structure$The Compressor Information StructureThe Compressor Name Structure"The Compressor Name List StructureCompression Quality Constants0Image Compression Manager Function Control Flags#Image Compression Manager Functions/Getting Information About Compressor ComponentsCodecManagerVersionGetCodecNameList%Table 3-3 Compressor type descriptorsDisposeCodecNameListGetCodecInfo FindCodec)Getting Information About Compressed DataGetMaxCompressionSizeGetCompressionTimeGetSimilarityGetCompressedImageSizeWorking With ImagesCompressImageFCompressImageDecompressImageFDecompressImageConvertImage TrimImageSetImageDescriptionCTableGetImageDescriptionCTable$Working With Pictures and PICT FilesCompressPictureFCompressPictureCompressPictureFileFCompressPictureFileDrawPictureFileDrawTrimmedPicture=Figure 3-10 The operation of the DrawTrimmedPicture functionDrawTrimmedPictureFileGetPictureFileHeaderMaking Thumbnail PicturesMakeThumbnailFromPictureMakeThumbnailFromPictureFileMakeThumbnailFromPixMapWorking With SequencesCompressSequenceBeginCompressSequenceFrameDecompressSequenceBeginDecompressSequenceFrameCDSequenceBusyCDSequenceEnd(Changing Sequence-Compression ParametersSetCSequenceQualitySetCSequenceKeyFrameRateGetCSequenceKeyFrameRateSetCSequenceFrameNumberGetCSequenceFrameNumberSetCSequencePrevSetCSequenceFlushProcGetCSequencePrevBufferConstraining Compressed DataSetCSequenceDataRateParamsGetCSequenceDataRateParams*Changing Sequence-Decompression ParametersSetDSequenceTransferModeSetDSequenceSrcRectSetDSequenceMatrixSetDSequenceMaskSetDSequenceMatteSetDSequenceAccuracySetDSequenceDataProcGetDSequenceImageBufferGetDSequenceScreenBuffer Working With the StdPix FunctionStdPixSetCompressedPixMapInfoGetCompressedPixMapInfoAligning WindowsAlignWindowDragAlignedWindowDragAlignedGrayRgnAlignScreenRect2Working With Graphics Devices and Graphics WorldsGetBestDeviceRectNewImageGWorldApplication-Defined Functions Data-Loading FunctionsMyDataLoadingProcData-Unloading FunctionsMyDataUnloadingProcProgress FunctionsMyProgressProcCompletion FunctionsMyCompletionProcAlignment FunctionsMyAlignmentProc)Summary of the Image Compression ManagerMovie Resource FormatsIntroduction to Movie ResourcesStoring Movies in Files2Figure 4-1 Movie files and single-fork movie files4Figure 4-2 The structure of a single-fork movie fileAtoms
Atom Types"Table 4-1 Apple-defined atom typesThe Layout of a QuickTime Atom"Figure 4-3 A sample QuickTime atom$Overview of the Movie Resource Atom9Figure 4-4 Sample organization of a one-track video movieMovie Atoms%Figure 4-5 The layout of a movie atomMovie Header Atoms,Figure 4-6 The layout of a movie header atomTrack Atoms&Figure 4-7 The layout of a track atom Track Header Atoms,Figure 4-8 The layout of a track header atomMedia Atoms%Figure 4-9 The layout of a media atomMedia Header Atoms-Figure 4-10 The layout of a media header atomHandler Reference Atoms2Figure 4-11 The layout of a handler reference atomUser-Defined Data Atoms2Figure 4-12 The layout of a user-defined data atomClipping Atoms)Figure 4-13 The layout of a clipping atomClipping Region AtomsTrack Matte Atoms-Figure 4-14 The layout of a track matte atom Compressed Matte Atoms
Edit Atoms'Figure 4-15 The layout of an edit atom Edit List Atoms,Figure 4-16 The layout of an edit list tableMedia Information AtomsVideo Media Information Atoms<Figure 4-17 The layout of a media information atom for video$Video Media Information Header AtomsCFigure 4-18 The layout of a media information header atom for videoSound Media Information Atoms<Figure 4-19 The layout of a media information atom for sound$Sound Media Information Header Atoms?Figure 4-20 The layout of a sound media information header atomData Information Atoms1Figure 4-21 The layout of a data information atomData Reference Atoms An Introduction to SamplesFigure 4-22 Samples in a mediaSample Table Atoms-Figure 4-23 The layout of a sample table atomSample Description Atoms3Figure 4-24 The layout of a sample description atomTime-to-Sample Atoms/Figure 4-25 The layout of a time-to-sample atom0Figure 4-26 The layout of a time-to-sample table0Figure 4-27 An example of a time-to-sample tableSync Sample Atoms,Figure 4-28 The layout of a sync sample atom-Figure 4-29 The layout of a sync sample tableSample-to-Chunk Atoms0Figure 4-30 The layout of a sample-to-chunk atom1Figure 4-31 The layout of a sample-to-chunk table1Figure 4-32 An example of a sample-to-chunk tableSample Size Atoms,Figure 4-33 The layout of a sample size atom-Figure 4-34 An example of a sample size tableChunk Offset Atoms-Figure 4-35 The layout of a chunk offset atom.Figure 4-36 An example of a chunk offset tableShadow Sync Atoms,Figure 4-37 The layout of a shadow sync atom-Figure 4-38 The layout of a shadow sync tableUsing Media Information AtomsFinding a SampleFinding a Key Frame GlossaryIndex