[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