diff options
Diffstat (limited to 'source/blender/quicktime')
-rw-r--r-- | source/blender/quicktime/apple/quicktime_export.c | 65 | ||||
-rw-r--r-- | source/blender/quicktime/quicktime_export.h | 4 |
2 files changed, 35 insertions, 34 deletions
diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c index ca025a0b8a3..c863d6be429 100644 --- a/source/blender/quicktime/apple/quicktime_export.c +++ b/source/blender/quicktime/apple/quicktime_export.c @@ -76,7 +76,7 @@ static void QT_DoAddVideoSamplesToMedia (int frame, int *pixels, int rectx, int static void QT_EndAddVideoSamplesToMedia (void); static void QT_CreateMyVideoTrack (int rectx, int recty); static void QT_EndCreateMyVideoTrack (void); -static void check_renderbutton_framerate(void); +static void check_renderbutton_framerate(struct RenderData *rd); typedef struct QuicktimeExport { @@ -120,7 +120,7 @@ static void CheckError(OSErr err, char *msg) } -static OSErr QT_SaveCodecSettingsToScene(void) +static OSErr QT_SaveCodecSettingsToScene(RenderData *rd) { QTAtomContainer myContainer = NULL; ComponentResult myErr = noErr; @@ -130,13 +130,13 @@ static OSErr QT_SaveCodecSettingsToScene(void) CodecInfo ci; char str[255]; - QuicktimeCodecData *qcd = G.scene->r.qtcodecdata; + QuicktimeCodecData *qcd = rd->qtcodecdata; // check if current scene already has qtcodec settings, and clear them if (qcd) { free_qtcodecdata(qcd); } else { - qcd = G.scene->r.qtcodecdata = MEM_callocN(sizeof(QuicktimeCodecData), "QuicktimeCodecData"); + qcd = rd->qtcodecdata = MEM_callocN(sizeof(QuicktimeCodecData), "QuicktimeCodecData"); } // obtain all current codec settings @@ -181,14 +181,14 @@ bail: } -static OSErr QT_GetCodecSettingsFromScene(void) +static OSErr QT_GetCodecSettingsFromScene(RenderData *rd) { Handle myHandle = NULL; ComponentResult myErr = noErr; // CodecInfo ci; // char str[255]; - QuicktimeCodecData *qcd = G.scene->r.qtcodecdata; + QuicktimeCodecData *qcd = rd->qtcodecdata; // if there is codecdata in the blendfile, convert it to a Quicktime handle if (qcd) { @@ -421,18 +421,18 @@ static void QT_EndAddVideoSamplesToMedia (void) } -void makeqtstring (char *string) { +void makeqtstring (RenderData *rd, char *string) { char txt[64]; if (string==0) return; - strcpy(string, G.scene->r.pic); + strcpy(string, rd->pic); BLI_convertstringcode(string, G.sce); BLI_make_existing_file(string); if (BLI_strcasecmp(string + strlen(string) - 4, ".mov")) { - sprintf(txt, "%04d_%04d.mov", (G.scene->r.sfra) , (G.scene->r.efra) ); + sprintf(txt, "%04d_%04d.mov", (rd->sfra) , (rd->efra) ); strcat(string, txt); } } @@ -461,18 +461,18 @@ void start_qt(struct RenderData *rd, int rectx, int recty) { qtdata = MEM_callocN(sizeof(QuicktimeComponentData), "QuicktimeCodecDataExt"); if(rd->qtcodecdata == NULL && rd->qtcodecdata->cdParms == NULL) { - get_qtcodec_settings(); + get_qtcodec_settings(rd); } else { qtdata->theComponent = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType); - QT_GetCodecSettingsFromScene(); - check_renderbutton_framerate(); + QT_GetCodecSettingsFromScene(rd); + check_renderbutton_framerate(rd); } if (G.afbreek != 1) { sframe = (rd->sfra); - makeqtstring(name); + makeqtstring(rd, name); #ifdef __APPLE__ sprintf(theFullPath, "%s", name); @@ -563,19 +563,20 @@ void free_qtcomponentdata(void) { } -static void check_renderbutton_framerate(void) { +static void check_renderbutton_framerate(RenderData *rd) +{ // to keep float framerates consistent between the codec dialog and frs/sec button. OSErr err; err = SCGetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); CheckError(err, "SCGetInfo fr error"); - if( (G.scene->r.frs_sec == 24 || G.scene->r.frs_sec == 30 || G.scene->r.frs_sec == 60) && + if( (rd->frs_sec == 24 || rd->frs_sec == 30 || rd->frs_sec == 60) && (qtdata->gTemporalSettings.frameRate == 1571553 || qtdata->gTemporalSettings.frameRate == 1964113 || qtdata->gTemporalSettings.frameRate == 3928227)) {;} else qtdata->gTemporalSettings.frameRate = - (G.scene->r.frs_sec << 16) / G.scene->r.frs_sec_base ; + (rd->frs_sec << 16) / rd->frs_sec_base ; err = SCSetInfo(qtdata->theComponent, scTemporalSettingsType, &qtdata->gTemporalSettings); CheckError( err, "SCSetInfo error" ); @@ -596,7 +597,7 @@ static void check_renderbutton_framerate(void) { } -int get_qtcodec_settings(void) +int get_qtcodec_settings(RenderData *rd) { OSErr err = noErr; @@ -611,9 +612,9 @@ int get_qtcodec_settings(void) qtdata->theComponent = OpenDefaultComponent(StandardCompressionType, StandardCompressionSubType); // get previous selected codecsetting, if any - if(G.scene->r.qtcodecdata && G.scene->r.qtcodecdata->cdParms) { - QT_GetCodecSettingsFromScene(); - check_renderbutton_framerate(); + if(rd->qtcodecdata && rd->qtcodecdata->cdParms) { + QT_GetCodecSettingsFromScene(rd); + check_renderbutton_framerate(rd); } else { // configure the standard image compression dialog box // set some default settings @@ -631,7 +632,7 @@ int get_qtcodec_settings(void) CheckError(err, "SCSetInfo3 error"); } - check_renderbutton_framerate(); + check_renderbutton_framerate(rd); // put up the dialog box err = SCRequestSequenceSettings(qtdata->theComponent); @@ -646,27 +647,27 @@ int get_qtcodec_settings(void) SCGetInfo(qtdata->theComponent, scSpatialSettingsType, &qtdata->gSpatialSettings); SCGetInfo(qtdata->theComponent, scDataRateSettingsType, &qtdata->aDataRateSetting); - QT_SaveCodecSettingsToScene(); + QT_SaveCodecSettingsToScene(rd); // framerate jugglin' if(qtdata->gTemporalSettings.frameRate == 1571553) { // 23.98 fps qtdata->kVideoTimeScale = 24000; qtdata->duration = 1001; - G.scene->r.frs_sec = 24; - G.scene->r.frs_sec_base = 1.001; + rd->frs_sec = 24; + rd->frs_sec_base = 1.001; } else if (qtdata->gTemporalSettings.frameRate == 1964113) { // 29.97 fps qtdata->kVideoTimeScale = 30000; qtdata->duration = 1001; - G.scene->r.frs_sec = 30; - G.scene->r.frs_sec_base = 1.001; + rd->frs_sec = 30; + rd->frs_sec_base = 1.001; } else if (qtdata->gTemporalSettings.frameRate == 3928227) { // 59.94 fps qtdata->kVideoTimeScale = 60000; qtdata->duration = 1001; - G.scene->r.frs_sec = 60; - G.scene->r.frs_sec_base = 1.001; + rd->frs_sec = 60; + rd->frs_sec_base = 1.001; } else { double fps = qtdata->gTemporalSettings.frameRate; @@ -674,12 +675,12 @@ int get_qtcodec_settings(void) qtdata->duration = qtdata->kVideoTimeScale / (qtdata->gTemporalSettings.frameRate / 65536); if ((qtdata->gTemporalSettings.frameRate & 0xffff) == 0) { - G.scene->r.frs_sec = fps / 65536; - G.scene->r.frs_sec_base = 1; + rd->frs_sec = fps / 65536; + rd->frs_sec_base = 1; } else { /* we do our very best... */ - G.scene->r.frs_sec = (fps * 10000 / 65536); - G.scene->r.frs_sec_base = 10000; + rd->frs_sec = (fps * 10000 / 65536); + rd->frs_sec_base = 10000; } } diff --git a/source/blender/quicktime/quicktime_export.h b/source/blender/quicktime/quicktime_export.h index 8a752f9b251..0f8e2dc7225 100644 --- a/source/blender/quicktime/quicktime_export.h +++ b/source/blender/quicktime/quicktime_export.h @@ -40,9 +40,9 @@ void start_qt(struct RenderData *rd, int rectx, int recty); //for movie handle ( void append_qt(int frame, int *pixels, int rectx, int recty); void end_qt(void); -int get_qtcodec_settings(void); //for buttons.c +int get_qtcodec_settings(struct RenderData *rd); //for buttons.c void free_qtcomponentdata(void); -void makeqtstring (char *string); //for playanim.c +void makeqtstring(struct RenderData *rd, char *string); //for playanim.c #endif //(_WIN32) || (__APPLE__) |