diff options
author | Rob Haarsma <phaseIV@zonnet.nl> | 2005-01-12 13:18:47 +0300 |
---|---|---|
committer | Rob Haarsma <phaseIV@zonnet.nl> | 2005-01-12 13:18:47 +0300 |
commit | 98488007994108d3dad5e5dc67f7afb3cc34ea95 (patch) | |
tree | 8c5eaed126103db8670fafae831453b5521664f7 /source | |
parent | 8de2e70216657fea813530503bfa3966dd811b9a (diff) |
Reverting Quicktime movie export method for OSX.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/quicktime/apple/quicktime_export.c | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index 85e01a8c4ff..5df38519328 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -80,19 +80,15 @@ typedef struct QuicktimeExport { FSSpec theSpec; short resRefNum; - short resId; - short movieResId; Str255 qtfilename; Media theMedia; Movie theMovie; Track theTrack; - GWorldPtr theGWorld; - PixMapHandle thePixMap; - + GWorldPtr theGWorld; + PixMapHandle thePixMap; ImageDescription **anImageDescription; - ImageSequence anImageSequence; ImBuf *ibuf; //imagedata for Quicktime's Gworld @@ -169,7 +165,7 @@ OSErr QT_SaveCodecSettingsToScene(void) CopyPascalStringToC(ci.typeName, str); sprintf(qcd->qtcodecname, "Codec: %s", str); } else { - printf("Quicktime: SaveExporterSettingsToMem failed\n"); + printf("Quicktime: QT_SaveCodecSettingsToScene failed\n"); } QTUnlockContainer(myContainer); @@ -214,7 +210,7 @@ OSErr QT_GetCodecSettingsFromScene(void) // CopyPascalStringToC(ci.typeName, str); // printf("restored Codec: %s\n", str); } else { - printf("Quicktime: GetExporterSettingsFromMem failed\n"); + printf("Quicktime: QT_GetCodecSettingsFromScene failed\n"); } bail: if (myHandle != NULL) @@ -313,7 +309,12 @@ static void QT_StartAddVideoSamplesToMedia (const Rect *trackFrame) qtexport->ibuf = IMB_allocImBuf (R.rectx, R.recty, 32, IB_rect, 0); err = NewGWorldFromPtr( &qtexport->theGWorld, +#ifdef __APPLE__ + k32ARGBPixelFormat, +#endif +#ifdef _WIN32 k32RGBAPixelFormat, +#endif trackFrame, NULL, NULL, 0, (unsigned char *)qtexport->ibuf->rect, @@ -339,6 +340,9 @@ static void QT_DoAddVideoSamplesToMedia (int frame) OSErr err = noErr; Rect imageRect; +#ifdef __APPLE__ + register int index; +#endif register int boxsize; register uint32_t *readPos; register uint32_t *changePos; @@ -357,8 +361,15 @@ static void QT_DoAddVideoSamplesToMedia (int frame) changePos = (uint32_t *) myPtr; //parse render bitmap into Quicktime's GWorld +#ifdef __APPLE__ +// Swap alpha byte to the end, so ARGB become RGBA; note this is big endian-centric. + for( index = 0; index < boxsize; index++, changePos++, readPos++ ) + *( changePos ) = ( ( *readPos & 0xFFFFFFFF ) >> 8 ) | + ( ( *readPos << 24 ) & 0xFF ); +#endif +#ifdef _WIN32 memcpy(changePos, readPos, boxsize*4); - +#endif err = SCCompressSequenceFrame(qtdata->theComponent, qtexport->thePixMap, &imageRect, @@ -505,18 +516,18 @@ void append_qt(int frame) { void end_qt(void) { OSErr err = noErr; + short resId = movieInDataForkResID; if(qtexport->theMovie) { - QT_EndCreateMyVideoTrack (); + QT_EndCreateMyVideoTrack(); - qtexport->resId = movieInDataForkResID; - err = AddMovieResource (qtexport->theMovie, qtexport->resRefNum, &qtexport->resId, qtexport->qtfilename); + err = AddMovieResource (qtexport->theMovie, qtexport->resRefNum, &resId, qtexport->qtfilename); CheckError(err, "AddMovieResource error"); err = QT_AddUserDataTextToMovie(qtexport->theMovie, "Made with Blender", kUserDataTextInformation); CheckError(err, "AddUserDataTextToMovie error"); - err = UpdateMovieResource(qtexport->theMovie, qtexport->resRefNum, qtexport->resId, qtexport->qtfilename); + err = UpdateMovieResource(qtexport->theMovie, qtexport->resRefNum, resId, qtexport->qtfilename); CheckError(err, "UpdateMovieResource error"); if(qtexport->resRefNum) CloseMovieFile(qtexport->resRefNum); @@ -543,7 +554,7 @@ void free_qtcomponentdata(void) { static void check_renderbutton_framerate(void) { - // To keep float framerates consistent between the codec dialog and frs/sec button. + // to keep float framerates consistent between the codec dialog and frs/sec button. OSErr err; err = SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); @@ -593,22 +604,13 @@ int get_qtcodec_settings(void) QT_GetCodecSettingsFromScene(); check_renderbutton_framerate(); } else { - - // configure the standard image compression dialog box - // set some default settings -// qtdata->gSpatialSettings.codecType = nil; + // configure the standard image compression dialog box + // set some default settings qtdata->gSpatialSettings.codec = anyCodec; -// qtdata->gSpatialSettings.depth; qtdata->gSpatialSettings.spatialQuality = codecMaxQuality; - qtdata->gTemporalSettings.temporalQuality = codecMaxQuality; -// qtdata->gTemporalSettings.frameRate; qtdata->gTemporalSettings.keyFrameRate = 25; - qtdata->aDataRateSetting.dataRate = 90 * 1024; -// qtdata->aDataRateSetting.frameDuration; -// qtdata->aDataRateSetting.minSpatialQuality; -// qtdata->aDataRateSetting.minTemporalQuality; err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); CheckError(err, "SCSetInfo1 error"); |