Core Audio input: Added Codec info reporting
This commit is contained in:
parent
cb70b066d7
commit
0ec1ae4c47
2 changed files with 24 additions and 2 deletions
|
@ -21,6 +21,7 @@
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
#include <AudioToolbox/AudioFile.h>
|
#include <AudioToolbox/AudioFile.h>
|
||||||
|
#include <AudioToolbox/AudioFormat.h>
|
||||||
#include <AudioToolbox/ExtendedAudioFile.h>
|
#include <AudioToolbox/ExtendedAudioFile.h>
|
||||||
|
|
||||||
#import "Plugin.h"
|
#import "Plugin.h"
|
||||||
|
@ -43,6 +44,8 @@
|
||||||
int channels;
|
int channels;
|
||||||
float frequency;
|
float frequency;
|
||||||
long totalFrames;
|
long totalFrames;
|
||||||
|
|
||||||
|
NSString* codec;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -133,12 +133,13 @@ static SInt64 getSizeProc(void* clientData) {
|
||||||
{
|
{
|
||||||
OSStatus err;
|
OSStatus err;
|
||||||
UInt32 size;
|
UInt32 size;
|
||||||
|
UInt32 asbdSize;
|
||||||
AudioStreamBasicDescription asbd;
|
AudioStreamBasicDescription asbd;
|
||||||
AudioFileID afi;
|
AudioFileID afi;
|
||||||
|
|
||||||
// Get input file information
|
// Get input file information
|
||||||
size = sizeof(asbd);
|
asbdSize = sizeof(asbd);
|
||||||
err = ExtAudioFileGetProperty(_in, kExtAudioFileProperty_FileDataFormat, &size, &asbd);
|
err = ExtAudioFileGetProperty(_in, kExtAudioFileProperty_FileDataFormat, &asbdSize, &asbd);
|
||||||
if(err != noErr) {
|
if(err != noErr) {
|
||||||
err = ExtAudioFileDispose(_in);
|
err = ExtAudioFileDispose(_in);
|
||||||
return NO;
|
return NO;
|
||||||
|
@ -183,6 +184,23 @@ static SInt64 getSizeProc(void* clientData) {
|
||||||
|
|
||||||
bitrate = (_bitrate + 500) / 1000;
|
bitrate = (_bitrate + 500) / 1000;
|
||||||
|
|
||||||
|
CFStringRef formatName;
|
||||||
|
size = sizeof(formatName);
|
||||||
|
err = AudioFormatGetProperty(kAudioFormatProperty_FormatName, asbdSize, &asbd, &size, &formatName);
|
||||||
|
if(err != noErr) {
|
||||||
|
err = ExtAudioFileDispose(_in);
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
codec = (__bridge NSString *)formatName;
|
||||||
|
|
||||||
|
CFRelease(formatName);
|
||||||
|
|
||||||
|
NSRange range = [codec rangeOfString:@","];
|
||||||
|
if (range.location != NSNotFound) {
|
||||||
|
codec = [codec substringToIndex:range.location];
|
||||||
|
}
|
||||||
|
|
||||||
// Set our properties
|
// Set our properties
|
||||||
bitsPerSample = formatBitsPerSample;
|
bitsPerSample = formatBitsPerSample;
|
||||||
channels = asbd.mChannelsPerFrame;
|
channels = asbd.mChannelsPerFrame;
|
||||||
|
@ -307,6 +325,7 @@ static SInt64 getSizeProc(void* clientData) {
|
||||||
[NSNumber numberWithFloat:frequency],@"sampleRate",
|
[NSNumber numberWithFloat:frequency],@"sampleRate",
|
||||||
[NSNumber numberWithLong:totalFrames],@"totalFrames",
|
[NSNumber numberWithLong:totalFrames],@"totalFrames",
|
||||||
[NSNumber numberWithBool:YES], @"seekable",
|
[NSNumber numberWithBool:YES], @"seekable",
|
||||||
|
codec, @"codec",
|
||||||
floatingPoint ? @"host" : @"big", @"endian",
|
floatingPoint ? @"host" : @"big", @"endian",
|
||||||
nil];
|
nil];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue