[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28242] trunk/blender/source/blender/ quicktime/apple: Quicktime audio export: force AAC sample rate to be <= 48kHz to avoid later codec error + potential quicktime mem leaks fixes

Damien Plisson damien.plisson at yahoo.fr
Sat Apr 17 10:33:42 CEST 2010


Revision: 28242
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28242
Author:   damien78
Date:     2010-04-17 10:33:42 +0200 (Sat, 17 Apr 2010)

Log Message:
-----------
Quicktime audio export: force AAC sample rate to be <=48kHz to avoid later codec error + potential quicktime mem leaks fixes

AAC Codec does not handle sample rates above 48kHz.

Modified Paths:
--------------
    trunk/blender/source/blender/quicktime/apple/qtkit_export.m
    trunk/blender/source/blender/quicktime/apple/qtkit_import.m

Modified: trunk/blender/source/blender/quicktime/apple/qtkit_export.m
===================================================================
--- trunk/blender/source/blender/quicktime/apple/qtkit_export.m	2010-04-17 07:04:09 UTC (rev 28241)
+++ trunk/blender/source/blender/quicktime/apple/qtkit_export.m	2010-04-17 08:33:42 UTC (rev 28242)
@@ -275,7 +275,7 @@
 		*ioNumberDataPackets = AUDIOOUTPUTBUFFERSIZE / qtexport->audioInputFormat.mBytesPerPacket;
 	
 	if ((qtexport->audioTotalExportedFrames + *ioNumberDataPackets) > qtexport->audioLastFrame)
-		*ioNumberDataPackets += qtexport->audioLastFrame - qtexport->audioTotalExportedFrames;
+		*ioNumberDataPackets = (qtexport->audioLastFrame - qtexport->audioTotalExportedFrames) / qtexport->audioInputFormat.mFramesPerPacket;
 	
 	qtexport->audioTotalExportedFrames += *ioNumberDataPackets;
 	
@@ -379,7 +379,7 @@
 						break;
 				}
 				qtexport->audioInputFormat.mBytesPerFrame = qtexport->audioInputFormat.mChannelsPerFrame * qtexport->audioInputFormat.mBitsPerChannel / 8;
-				qtexport->audioInputFormat.mFramesPerPacket = 1;
+				qtexport->audioInputFormat.mFramesPerPacket = 1; /*If not ==1, then need to check input callback for "rounding" issues"*/
 				qtexport->audioInputFormat.mBytesPerPacket = qtexport->audioInputFormat.mBytesPerFrame;
 				qtexport->audioInputFormat.mFormatFlags |= kLinearPCMFormatFlagIsPacked;
 				
@@ -399,6 +399,9 @@
 				switch (rd->qtcodecsettings.audiocodecType) {
 					case kAudioFormatMPEG4AAC:
 						qtexport->audioOutputFormat.mFormatFlags = kMPEG4Object_AAC_Main;
+						/* AAC codec does not handle sample rates above 48kHz, force this limit instead of getting an error afterwards */
+						if (qtexport->audioOutputFormat.mSampleRate > 48000) qtexport->audioOutputFormat.mSampleRate = 48000;
+						break;
 					case kAudioFormatAppleLossless:
 						switch (U.audioformat) {
 							case AUD_FORMAT_S16:
@@ -531,7 +534,6 @@
 			[QTMovie exitQTKitOnThread];
 		} else {
 			[qtexport->movie retain];
-			[qtexport->filename retain];
 			[qtexport->movie setAttribute:[NSNumber numberWithBool:YES] forKey:QTMovieEditableAttribute];
 			[qtexport->movie setAttribute:@"Made with Blender" forKey:QTMovieCopyrightAttribute];
 			
@@ -736,6 +738,7 @@
 			fileManager = [[NSFileManager alloc] init];
 			[fileManager removeItemAtPath:qtexport->audioFileName error:&error];
 			[fileManager removeItemAtPath:qtexport->videoTempFileName error:&error];
+			[fileManager release];
 		}
 		else {
 			/* Flush update of the movie file */

Modified: trunk/blender/source/blender/quicktime/apple/qtkit_import.m
===================================================================
--- trunk/blender/source/blender/quicktime/apple/qtkit_import.m	2010-04-17 07:04:09 UTC (rev 28241)
+++ trunk/blender/source/blender/quicktime/apple/qtkit_import.m	2010-04-17 08:33:42 UTC (rev 28242)
@@ -198,7 +198,6 @@
 		
 		rasterRGB = (uchar*)[blBitmapFormatImageRGB bitmapData];
 		if (rasterRGB == NULL) {
-			[bitmapImage release];
 			[blBitmapFormatImageRGB release];
 			return NULL;
 		}
@@ -220,7 +219,6 @@
 		
 		rasterRGBA = (uchar*)[blBitmapFormatImageRGBA bitmapData];
 		if (rasterRGBA == NULL) {
-			[bitmapImage release];
 			[blBitmapFormatImageRGB release];
 			[blBitmapFormatImageRGBA release];
 			return NULL;
@@ -390,13 +388,14 @@
 		BLI_testextensie(name, ".mp3")) return 0;
 
 	
-	image = [NSImage alloc];
-	if ([image initWithContentsOfFile:[NSString stringWithUTF8String:name]]) 
+	image = [[NSImage alloc] initWithContentsOfFile:[NSString stringWithUTF8String:name]];
+	if (image) {
+		[image release];
 		result = true;
+	}
 	else 
 		result = false;
 
-	[image release];
 	[pool drain];
 	return result;
 }





More information about the Bf-blender-cvs mailing list