Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
CreateMovie.c
/* |
File: CreateMovie.c |
Contains: QuickTime CreateMovie sample code |
Written by: Scott Kuechle |
(based heavily on QuickTime sample code in Inside Macintosh: QuickTime) |
Copyright: © 1998 by Apple Computer, Inc. All rights reserved |
Change History (most recent first) |
<3> 09/30/98 rtm tweaked calls to CreateMovieFIle and AddMovieResource to create single-fork movies |
<2> 09/28/98 rtm changes for Metrowerks compiler |
<1> 06/26/98 srk first file |
*/ |
/************************************************************ |
* * |
* INCLUDE FILES * |
* * |
*************************************************************/ |
#if !defined(_MSC_VER) && _WIN32 |
#include <Win32Headers.mch> |
#define TARGET_OS_WIN32 1 |
#else |
#include <ConditionalMacros.h> |
#endif |
#if TARGET_OS_WIN32 |
#include <QTML.h> |
#define STRICT |
#include <windows.h> |
#endif |
#include "MacTypes.h" |
#include "MacMemory.h" |
#include "MacErrors.h" |
#include "Fonts.h" |
#include "QuickDraw.h" |
#include "Resources.h" |
#include "Gestalt.h" |
#include "FixMath.h" |
#include "Sound.h" |
#include "string.h" |
#include "Movies.h" |
#include "ImageCompression.h" |
#include "Script.h" |
#include "TextUtils.h" |
#include "Processes.h" |
#include "CreateMovie.h" |
#include "QTSound.h" |
#include "QTVideo.h" |
/************************************************************ |
* * |
* FUNCTION PROTOTYPES * |
* * |
*************************************************************/ |
#if TARGET_OS_MAC |
static void Utils_Macintosh_DisplayMsg(char *msg); |
static void InitMacToolbox (void); |
#else if TARGET_OS_WIN32 |
static void Utils_Win32_DisplayMsg(char *msg); |
#endif |
static void CreateAMovie (void); |
static void QuickTimeInit (void); |
/************************************************************ |
* * |
* CONSTANTS * |
* * |
*************************************************************/ |
#define kMsgDialogRsrcID 129 |
#define kMsgItemID 3 |
#define kPrompt "Enter movie file name:" |
#define kMovieFileName "MovieFile.mov" |
#define kResName "Movie Resource" |
/* |
Sample Player's creator type since it is the movie player |
of choice. You can use your own creator type, of course. |
*/ |
#define kMyCreatorType FOUR_CHAR_CODE('TVOD') |
/************************************************************ |
* * |
* FUNCTIONS * |
* * |
*************************************************************/ |
#if TARGET_OS_MAC |
void main( void ) |
{ |
InitMacToolbox (); |
QuickTimeInit(); |
CreateAMovie (); |
} |
#else if TARGET_OS_WIN32 |
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, |
LPSTR lpszCmdLine, int nCmdShow) |
{ |
QuickTimeInit(); |
CreateAMovie (); |
return 0; |
} |
#endif |
/************************************************************ |
* * |
* CheckError() * |
* * |
* Displays error message if an error occurred * |
* * |
*************************************************************/ |
void CheckError(OSErr error, char *msg) |
{ |
if (error == noErr) |
{ |
return; |
} |
if (strlen(msg) > 0) |
{ |
#if TARGET_OS_MAC |
Utils_Macintosh_DisplayMsg(msg); |
#else if TARGET_OS_WIN32 |
Utils_Win32_DisplayMsg(msg); |
#endif |
ExitToShell(); |
} |
} |
/************************************************************ |
* * |
* InitMacToolbox() * |
* * |
* Initializes the various Mac Toolbox Managers * |
* * |
*************************************************************/ |
#if TARGET_OS_MAC |
static void InitMacToolbox (void) |
{ |
InitGraf (&qd.thePort); |
InitFonts (); |
InitWindows (); |
InitMenus (); |
TEInit (); |
InitDialogs (nil); |
} |
#endif |
/************************************************************ |
* * |
* QuickTimeInit() * |
* * |
* Initializes Quicktime * |
* * |
*************************************************************/ |
static void QuickTimeInit (void) |
{ |
OSErr err; |
#if TARGET_OS_WIN32 |
err = InitializeQTML(0L); |
CheckError (err, "InitializeQTML error" ); |
#endif |
err = EnterMovies (); |
CheckError (err, "EnterMovies error" ); |
} |
/************************************************************ |
* * |
* CreateAMovie() * |
* * |
* Creates a QuickTime movie with both a sound & video * |
* track * |
* * |
*************************************************************/ |
static void CreateAMovie (void) |
{ |
Point where = {100,100}; |
SFReply theSFReply; |
Movie theMovie = nil; |
FSSpec mySpec; |
short resRefNum = 0; |
short resId = movieInDataForkResID; |
OSErr err = noErr; |
SFPutFile (where, c2pstr(kPrompt), |
c2pstr(kMovieFileName), nil, &theSFReply); |
if (!theSFReply.good) return; |
FSMakeFSSpec(theSFReply.vRefNum, 0, theSFReply.fName, &mySpec); |
err = CreateMovieFile (&mySpec, |
kMyCreatorType, |
smCurrentScript, |
createMovieFileDeleteCurFile | createMovieFileDontCreateResFile, |
&resRefNum, |
&theMovie ); |
CheckError(err, "CreateMovieFile error"); |
QTVideo_CreateMyVideoTrack (theMovie); |
QTSound_CreateMySoundTrack (theMovie); |
err = AddMovieResource (theMovie, resRefNum, &resId, |
theSFReply.fName); |
CheckError(err, "AddMovieResource error"); |
if (resRefNum) |
{ |
CloseMovieFile (resRefNum); |
} |
DisposeMovie (theMovie); |
} |
/************************************************************ |
* * |
* FUNCTION: Utils_Macintosh_DisplayMsg * |
* * |
* PURPOSE: Displays Macintosh error messages * |
* * |
*************************************************************/ |
#if TARGET_OS_MAC |
static void Utils_Macintosh_DisplayMsg(char *msg) |
{ |
DialogPtr theDlog; |
Handle item = NULL; |
Rect box; |
theDlog = GetNewDialog(kMsgDialogRsrcID, NULL, (WindowPtr)-1); |
if (theDlog != NULL) |
{ |
short itemType; |
GetDialogItem(theDlog, kMsgItemID, &itemType, &item, &box); |
if (item != NULL) |
{ |
short itemHit; |
SetDialogItemText(item, c2pstr(msg)); |
ModalDialog(NULL, &itemHit); |
DisposeDialog(theDlog); |
p2cstr((StringPtr)msg); /* restore C-string */ |
} |
} |
} |
#endif |
/************************************************************ |
* * |
* FUNCTION: Utils_Win32_DisplayMsg * |
* * |
* PURPOSE: Displays error messages for Win95/NT sample * |
* code * |
* * |
*************************************************************/ |
#if TARGET_OS_WIN32 |
static void Utils_Win32_DisplayMsg(char *msg) |
{ |
MessageBox(NULL, msg, "", MB_OK); |
} |
#endif |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14