[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32132] trunk/blender/source/blender/ quicktime/apple/qtkit_export.m: Fix for [#23912]: Replace by integer comparison a float comparison whose precision errors was causing an infinite loop during last frame audio conversion
Damien Plisson
damien.plisson at yahoo.fr
Sun Sep 26 18:11:53 CEST 2010
Revision: 32132
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32132
Author: damien78
Date: 2010-09-26 18:11:53 +0200 (Sun, 26 Sep 2010)
Log Message:
-----------
Fix for [#23912]: Replace by integer comparison a float comparison whose precision errors was causing an infinite loop during last frame audio conversion
Modified Paths:
--------------
trunk/blender/source/blender/quicktime/apple/qtkit_export.m
Modified: trunk/blender/source/blender/quicktime/apple/qtkit_export.m
===================================================================
--- trunk/blender/source/blender/quicktime/apple/qtkit_export.m 2010-09-26 13:53:32 UTC (rev 32131)
+++ trunk/blender/source/blender/quicktime/apple/qtkit_export.m 2010-09-26 16:11:53 UTC (rev 32132)
@@ -587,6 +587,7 @@
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSBitmapImageRep *blBitmapFormatImage;
NSImage *frameImage;
+ OSStatus err = noErr;
unsigned char *from_Ptr,*to_Ptr;
int y,from_i,to_i;
@@ -628,8 +629,7 @@
if (qtexport->audioFile) {
UInt32 audioPacketsConverted;
/* Append audio */
- while (((double)qtexport->audioTotalExportedFrames / (double) qtexport->audioInputFormat.mSampleRate)
- < ((double)(frame - rd->sfra)) / (((double)rd->frs_sec) / rd->frs_sec_base)) {
+ while (qtexport->audioTotalExportedFrames < qtexport->audioLastFrame) {
qtexport->audioBufferList.mNumberBuffers = 1;
qtexport->audioBufferList.mBuffers[0].mNumberChannels = qtexport->audioOutputFormat.mChannelsPerFrame;
@@ -637,7 +637,7 @@
qtexport->audioBufferList.mBuffers[0].mData = qtexport->audioOutputBuffer;
audioPacketsConverted = AUDIOOUTPUTBUFFERSIZE / qtexport->audioCodecMaxOutputPacketSize;
- AudioConverterFillComplexBuffer(qtexport->audioConverter, AudioConverterInputCallback,
+ err = AudioConverterFillComplexBuffer(qtexport->audioConverter, AudioConverterInputCallback,
NULL, &audioPacketsConverted, &qtexport->audioBufferList, qtexport->audioOutputPktDesc);
if (audioPacketsConverted) {
AudioFileWritePackets(qtexport->audioFile, false, qtexport->audioBufferList.mBuffers[0].mDataByteSize,
@@ -656,6 +656,12 @@
}
+ else {
+ //Error getting audio packets
+ BKE_reportf(reports, RPT_ERROR, "Unable to get further audio packets from frame %i, error = 0x%x",qtexport->audioTotalExportedFrames,err);
+ break;
+ }
+
}
}
[pool drain];
More information about the Bf-blender-cvs
mailing list