summaryrefslogtreecommitdiff
path: root/libs/appleutility/CoreAudio/AudioFile/AFPublic
diff options
context:
space:
mode:
Diffstat (limited to 'libs/appleutility/CoreAudio/AudioFile/AFPublic')
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.cpp270
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.h150
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.cpp16
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.h38
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.cpp604
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.h248
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.cpp48
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.h58
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.cpp228
-rw-r--r--libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.h236
10 files changed, 948 insertions, 948 deletions
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.cpp b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.cpp
index 053da0a5d0..4bbc0d6529 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.cpp
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.cpp
@@ -2,14 +2,14 @@
File: AudioFileComponentBase.cpp
Abstract: AudioFileComponentBase.h
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#if !defined(__COREAUDIO_USE_FLAT_INCLUDES__)
#include <AudioToolbox/AudioFileComponent.h>
@@ -84,8 +84,8 @@ static OSStatus CreateURL(
static OSStatus OpenURL(
void * self,
- CFURLRef inFileRef,
- SInt8 inPermissions,
+ CFURLRef inFileRef,
+ SInt8 inPermissions,
int inFileDescriptor)
{
return AFC->AFAPI_OpenURL(inFileRef, inPermissions, inFileDescriptor);
@@ -93,9 +93,9 @@ static OSStatus OpenURL(
static OSStatus OpenWithCallbacks(
void * self,
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc)
{
@@ -104,9 +104,9 @@ static OSStatus OpenWithCallbacks(
static OSStatus InitializeWithCallbacks(
void * self,
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc,
UInt32 inFileType,
@@ -131,8 +131,8 @@ static OSStatus Optimize(
static OSStatus ReadBytes(
void * self,
Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
void *outBuffer)
{
return AFC->AFAPI_ReadBytes(inUseCache, inStartingByte, ioNumBytes, outBuffer);
@@ -142,8 +142,8 @@ static OSStatus ReadBytes(
static OSStatus WriteBytes(
void * self,
Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
const void *inBuffer)
{
return AFC->AFAPI_WriteBytes(inUseCache, inStartingByte, ioNumBytes, inBuffer);
@@ -155,11 +155,11 @@ static OSStatus ReadPackets(
Boolean inUseCache,
UInt32 *outNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)
{
- return AFC->AFAPI_ReadPackets(inUseCache, outNumBytes, outPacketDescriptions,
+ return AFC->AFAPI_ReadPackets(inUseCache, outNumBytes, outPacketDescriptions,
inStartingPacket, ioNumPackets, outBuffer);
}
@@ -168,11 +168,11 @@ static OSStatus ReadPacketData(
Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)
{
- return AFC->AFAPI_ReadPacketData(inUseCache, ioNumBytes, outPacketDescriptions,
+ return AFC->AFAPI_ReadPacketData(inUseCache, ioNumBytes, outPacketDescriptions,
inStartingPacket, ioNumPackets, outBuffer);
}
@@ -182,8 +182,8 @@ static OSStatus WritePackets(
Boolean inUseCache,
UInt32 inNumBytes,
AudioStreamPacketDescription *inPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
const void *inBuffer)
#else
static OSStatus WritePackets(
@@ -191,12 +191,12 @@ static OSStatus WritePackets(
Boolean inUseCache,
UInt32 inNumBytes,
const AudioStreamPacketDescription *inPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
const void *inBuffer)
#endif
{
- return AFC->AFAPI_WritePackets(inUseCache, inNumBytes,
+ return AFC->AFAPI_WritePackets(inUseCache, inNumBytes,
(const AudioStreamPacketDescription *)inPacketDescriptions, // this should be const (and is in 10.5 headers)
inStartingPacket, ioNumPackets, inBuffer);
}
@@ -281,7 +281,7 @@ static OSStatus ExtensionIsThisFormat(
{
AudioFileFormatBase* aff = AFC->GetAudioFileFormatBase();
if (!aff) return kAudio_ParamError;
-
+
UInt32 res = aff->ExtensionIsThisFormat(inExtension);
if (outResult) *outResult = res;
return noErr;
@@ -289,13 +289,13 @@ static OSStatus ExtensionIsThisFormat(
static OSStatus FileDataIsThisFormat(
void * self,
- UInt32 inDataByteSize,
+ UInt32 inDataByteSize,
const void* inData,
UInt32 *outResult)
{
AudioFileFormatBase* aff = AFC->GetAudioFileFormatBase();
if (!aff) return kAudio_ParamError;
-
+
UncertainResult res = aff->FileDataIsThisFormat(inDataByteSize, inData);
if (outResult) *outResult = res;
return noErr;
@@ -346,33 +346,33 @@ AudioFileObjectComponentBase::~AudioFileObjectComponentBase()
}
OSStatus AudioFileObjectComponentBase::AFAPI_CreateURL(
- CFURLRef inFileRef,
+ CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags)
{
if (!mAudioFileObject) return kAudio_ParamError;
-
+
OSStatus result = mAudioFileObject->DoCreate (inFileRef, inFormat, inFlags);
return result;
}
-
+
OSStatus AudioFileObjectComponentBase::AFAPI_OpenURL(
- CFURLRef inFileRef,
+ CFURLRef inFileRef,
SInt8 inPermissions,
int inFD)
{
if (!mAudioFileObject) return kAudio_ParamError;
-
+
OSStatus result = mAudioFileObject->DoOpen(inFileRef, inPermissions, inFD);
return result;
}
OSStatus AudioFileObjectComponentBase::AFAPI_OpenWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc)
{
@@ -382,9 +382,9 @@ OSStatus AudioFileObjectComponentBase::AFAPI_OpenWithCallbacks(
OSStatus AudioFileObjectComponentBase::AFAPI_InitializeWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc,
UInt32 inFileType,
@@ -392,11 +392,11 @@ OSStatus AudioFileObjectComponentBase::AFAPI_InitializeWithCallbacks(
UInt32 inFlags)
{
if (!mAudioFileObject) return kAudio_ParamError;
- return mAudioFileObject->DoInitializeWithCallbacks(inRefCon, inReadFunc, inWriteFunc, inGetSizeFunc, inSetSizeFunc,
+ return mAudioFileObject->DoInitializeWithCallbacks(inRefCon, inReadFunc, inWriteFunc, inGetSizeFunc, inSetSizeFunc,
inFileType, inFormat, inFlags);
}
-
+
OSStatus AudioFileObjectComponentBase::AFAPI_Close()
{
if (!mAudioFileObject) return kAudio_ParamError;
@@ -409,10 +409,10 @@ OSStatus AudioFileObjectComponentBase::AFAPI_Optimize()
return mAudioFileObject->DoOptimize();
}
-OSStatus AudioFileObjectComponentBase::AFAPI_ReadBytes(
+OSStatus AudioFileObjectComponentBase::AFAPI_ReadBytes(
Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
void *outBuffer)
{
if (!mAudioFileObject) return kAudio_ParamError;
@@ -420,10 +420,10 @@ OSStatus AudioFileObjectComponentBase::AFAPI_ReadBytes(
}
-OSStatus AudioFileObjectComponentBase::AFAPI_WriteBytes(
+OSStatus AudioFileObjectComponentBase::AFAPI_WriteBytes(
Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
const void *inBuffer)
{
if (!mAudioFileObject) return kAudio_ParamError;
@@ -433,12 +433,12 @@ OSStatus AudioFileObjectComponentBase::AFAPI_WriteBytes(
-OSStatus AudioFileObjectComponentBase::AFAPI_ReadPackets(
+OSStatus AudioFileObjectComponentBase::AFAPI_ReadPackets(
Boolean inUseCache,
UInt32 *outNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)
{
if (!mAudioFileObject) return kAudio_ParamError;
@@ -446,12 +446,12 @@ OSStatus AudioFileObjectComponentBase::AFAPI_ReadPackets(
inStartingPacket, ioNumPackets, outBuffer);
}
-OSStatus AudioFileObjectComponentBase::AFAPI_ReadPacketData(
+OSStatus AudioFileObjectComponentBase::AFAPI_ReadPacketData(
Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)
{
if (!mAudioFileObject) return kAudio_ParamError;
@@ -459,13 +459,13 @@ OSStatus AudioFileObjectComponentBase::AFAPI_ReadPacketData(
inStartingPacket, ioNumPackets, outBuffer);
}
-
-OSStatus AudioFileObjectComponentBase::AFAPI_WritePackets(
+
+OSStatus AudioFileObjectComponentBase::AFAPI_WritePackets(
Boolean inUseCache,
UInt32 inNumBytes,
const AudioStreamPacketDescription *inPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
const void *inBuffer)
{
if (!mAudioFileObject) return kAudio_ParamError;
@@ -474,8 +474,8 @@ OSStatus AudioFileObjectComponentBase::AFAPI_WritePackets(
}
-
-OSStatus AudioFileObjectComponentBase::AFAPI_GetPropertyInfo(
+
+OSStatus AudioFileObjectComponentBase::AFAPI_GetPropertyInfo(
AudioFilePropertyID inPropertyID,
UInt32 *outDataSize,
UInt32 *isWritable)
@@ -484,23 +484,23 @@ OSStatus AudioFileObjectComponentBase::AFAPI_GetPropertyInfo(
return mAudioFileObject->GetPropertyInfo(inPropertyID, outDataSize, isWritable);
}
-
-OSStatus AudioFileObjectComponentBase::AFAPI_GetProperty(
+
+OSStatus AudioFileObjectComponentBase::AFAPI_GetProperty(
AudioFilePropertyID inPropertyID,
UInt32 *ioPropertySize,
void *ioPropertyData)
{
OSStatus err = noErr;
-
+
if (!ioPropertyData) return kAudio_ParamError;
-
+
if (!mAudioFileObject) return kAudio_ParamError;
err = mAudioFileObject->GetProperty(inPropertyID, ioPropertySize, ioPropertyData);
return err;
}
-
-OSStatus AudioFileObjectComponentBase::AFAPI_SetProperty(
+
+OSStatus AudioFileObjectComponentBase::AFAPI_SetProperty(
AudioFilePropertyID inPropertyID,
UInt32 inPropertySize,
const void *inPropertyData)
@@ -510,7 +510,7 @@ OSStatus AudioFileObjectComponentBase::AFAPI_SetProperty(
}
-OSStatus AudioFileObjectComponentBase::AFAPI_CountUserData(
+OSStatus AudioFileObjectComponentBase::AFAPI_CountUserData(
UInt32 inUserDataID,
UInt32 *outNumberItems)
{
@@ -518,7 +518,7 @@ OSStatus AudioFileObjectComponentBase::AFAPI_CountUserData(
return mAudioFileObject->CountUserData(inUserDataID, outNumberItems);
}
-OSStatus AudioFileObjectComponentBase::AFAPI_GetUserDataSize(
+OSStatus AudioFileObjectComponentBase::AFAPI_GetUserDataSize(
UInt32 inUserDataID,
UInt32 inIndex,
UInt32 *outUserDataSize)
@@ -527,7 +527,7 @@ OSStatus AudioFileObjectComponentBase::AFAPI_GetUserDataSize(
return mAudioFileObject->GetUserDataSize(inUserDataID, inIndex, outUserDataSize);
}
-OSStatus AudioFileObjectComponentBase::AFAPI_GetUserData(
+OSStatus AudioFileObjectComponentBase::AFAPI_GetUserData(
UInt32 inUserDataID,
UInt32 inIndex,
UInt32 *ioUserDataSize,
@@ -537,7 +537,7 @@ OSStatus AudioFileObjectComponentBase::AFAPI_GetUserData(
return mAudioFileObject->GetUserData(inUserDataID, inIndex, ioUserDataSize, outUserData);
}
-OSStatus AudioFileObjectComponentBase::AFAPI_SetUserData(
+OSStatus AudioFileObjectComponentBase::AFAPI_SetUserData(
UInt32 inUserDataID,
UInt32 inIndex,
UInt32 inUserDataSize,
@@ -547,7 +547,7 @@ OSStatus AudioFileObjectComponentBase::AFAPI_SetUserData(
return mAudioFileObject->SetUserData(inUserDataID, inIndex, inUserDataSize, inUserData);
}
-OSStatus AudioFileObjectComponentBase::AFAPI_RemoveUserData(
+OSStatus AudioFileObjectComponentBase::AFAPI_RemoveUserData(
UInt32 inUserDataID,
UInt32 inIndex)
{
@@ -556,14 +556,14 @@ OSStatus AudioFileObjectComponentBase::AFAPI_RemoveUserData(
}
-OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfoSize(
+OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfoSize(
AudioFilePropertyID inPropertyID,
UInt32 inSpecifierSize,
const void* inSpecifier,
UInt32 *outPropertySize)
{
OSStatus err = noErr;
-
+
switch (inPropertyID)
{
case kAudioFileComponent_CanRead :
@@ -578,15 +578,15 @@ OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfoSize(
case kAudioFileComponent_ExtensionsForType :
*outPropertySize = sizeof(CFArrayRef);
break;
-
+
case kAudioFileComponent_UTIsForType :
*outPropertySize = sizeof(CFArrayRef);
break;
-
+
case kAudioFileComponent_MIMETypesForType :
*outPropertySize = sizeof(CFArrayRef);
break;
-
+
case kAudioFileComponent_AvailableFormatIDs :
{
UInt32 size = 0xFFFFFFFF;
@@ -608,7 +608,7 @@ OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfoSize(
err = GetAudioFileFormatBase()->GetAvailableStreamDescriptions(inFormatID, outPropertySize, NULL);
}
break;
-
+
default:
err = kAudioFileUnsupportedPropertyError;
}
@@ -616,7 +616,7 @@ OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfoSize(
}
-OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfo(
+OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfo(
AudioFilePropertyID inPropertyID,
UInt32 inSpecifierSize,
const void* inSpecifier,
@@ -624,9 +624,9 @@ OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfo(
void *ioPropertyData)
{
OSStatus err = noErr;
-
+
if (!ioPropertyData || !ioPropertySize) return kAudio_ParamError;
-
+
switch (inPropertyID)
{
case kAudioFileComponent_CanRead :
@@ -636,7 +636,7 @@ OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfo(
*flag = GetAudioFileFormatBase()->CanRead();
}
break;
-
+
case kAudioFileComponent_CanWrite :
{
if (*ioPropertySize != sizeof(UInt32)) return kAudioFileBadPropertySizeError;
@@ -644,7 +644,7 @@ OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfo(
*flag = GetAudioFileFormatBase()->CanWrite();
}
break;
-
+
case kAudioFileComponent_FileTypeName :
{
if (*ioPropertySize != sizeof(CFStringRef)) return kAudioFileBadPropertySizeError;
@@ -682,21 +682,21 @@ OSStatus AudioFileComponentBase::AFAPI_GetGlobalInfo(
err = GetAudioFileFormatBase()->GetHFSCodes(ioPropertySize, ioPropertyData);
}
break;
-
+
case kAudioFileComponent_AvailableFormatIDs :
{
err = GetAudioFileFormatBase()->GetAvailableFormatIDs(ioPropertySize, ioPropertyData);
}
break;
-
+
case kAudioFileComponent_AvailableStreamDescriptionsForFormat :
{
if (inSpecifierSize != sizeof(UInt32)) return kAudioFileBadPropertySizeError;
- UInt32 inFormatID = *(UInt32*)inSpecifier;
+ UInt32 inFormatID = *(UInt32*)inSpecifier;
err = GetAudioFileFormatBase()->GetAvailableStreamDescriptions(inFormatID, ioPropertySize, ioPropertyData);
}
break;
-
+
default:
err = kAudioFileUnsupportedPropertyError;
}
@@ -709,11 +709,11 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
{
OSStatus result = noErr;
if (inThis == NULL) return kAudio_ParamError;
-
+
try
{
switch (params->what)
- {
+ {
case kComponentCanDoSelect:
switch (GetSelectorForCanDo(params))
{
@@ -734,7 +734,7 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
case kAudioFileFileDataIsThisFormatSelect:
case kAudioFileGetGlobalInfoSizeSelect:
case kAudioFileGetGlobalInfoSelect:
-
+
case kAudioFileCountUserDataSelect:
case kAudioFileGetUserDataSizeSelect:
case kAudioFileGetUserDataSelect:
@@ -756,7 +756,7 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(CFURLRef, inFileRef, 0, 3);
PARAM(const AudioStreamBasicDescription*, inFormat, 1, 3);
PARAM(UInt32, inFlags, 2, 3);
-
+
result = inThis->AFAPI_CreateURL(inFileRef, inFormat, inFlags);
}
break;
@@ -765,7 +765,7 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(CFURLRef, inFileRef, 0, 3);
PARAM(SInt32, inPermissions, 1, 3);
PARAM(int, inFileDescriptor, 2, 3);
-
+
result = inThis->AFAPI_OpenURL(inFileRef, inPermissions, inFileDescriptor);
}
break;
@@ -776,8 +776,8 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(AudioFile_WriteProc, inWriteFunc, 2, 5);
PARAM(AudioFile_GetSizeProc, inGetSizeFunc, 3, 5);
PARAM(AudioFile_SetSizeProc, inSetSizeFunc, 4, 5);
-
- result = inThis->AFAPI_OpenWithCallbacks(inRefCon, inReadFunc, inWriteFunc,
+
+ result = inThis->AFAPI_OpenWithCallbacks(inRefCon, inReadFunc, inWriteFunc,
inGetSizeFunc, inSetSizeFunc);
}
break;
@@ -791,8 +791,8 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(UInt32, inFileType, 5, 8);
PARAM(const AudioStreamBasicDescription*, inFormat, 6, 8);
PARAM(UInt32, inFlags, 7, 8);
-
- result = inThis->AFAPI_InitializeWithCallbacks(inRefCon, inReadFunc, inWriteFunc,
+
+ result = inThis->AFAPI_InitializeWithCallbacks(inRefCon, inReadFunc, inWriteFunc,
inGetSizeFunc, inSetSizeFunc,
inFileType, inFormat, inFlags);
}
@@ -813,7 +813,7 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(SInt64*, inStartingByte, 1, 4);
PARAM(UInt32*, ioNumBytes, 2, 4);
PARAM(void*, outBuffer, 3, 4);
-
+
result = inThis->AFAPI_ReadBytes(inUseCache, *inStartingByte, ioNumBytes,
outBuffer);
}
@@ -824,7 +824,7 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(SInt64*, inStartingByte, 1, 4);
PARAM(UInt32*, ioNumBytes, 2, 4);
PARAM(const void*, inBuffer, 3, 4);
-
+
result = inThis->AFAPI_WriteBytes(inUseCache, *inStartingByte, ioNumBytes,
inBuffer);
}
@@ -837,8 +837,8 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(SInt64*, inStartingPacket, 3, 6);
PARAM(UInt32*, ioNumPackets, 4, 6);
PARAM(void*, outBuffer, 5, 6);
-
- result = inThis->AFAPI_ReadPackets(inUseCache, outNumBytes, outPacketDescriptions,
+
+ result = inThis->AFAPI_ReadPackets(inUseCache, outNumBytes, outPacketDescriptions,
*inStartingPacket, ioNumPackets, outBuffer);
}
break;
@@ -850,28 +850,28 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(SInt64*, inStartingPacket, 3, 6);
PARAM(UInt32*, ioNumPackets, 4, 6);
PARAM(const void*, inBuffer, 5, 6);
-
- result = inThis->AFAPI_WritePackets(inUseCache, inNumBytes, inPacketDescriptions,
+
+ result = inThis->AFAPI_WritePackets(inUseCache, inNumBytes, inPacketDescriptions,
*inStartingPacket, ioNumPackets, inBuffer);
}
break;
-
+
case kAudioFileGetPropertyInfoSelect:
{
PARAM(AudioFileComponentPropertyID, inPropertyID, 0, 3);
PARAM(UInt32*, outPropertySize, 1, 3);
PARAM(UInt32*, outWritable, 2, 3);
-
+
result = inThis->AFAPI_GetPropertyInfo(inPropertyID, outPropertySize, outWritable);
}
break;
-
+
case kAudioFileGetPropertySelect:
{
PARAM(AudioFileComponentPropertyID, inPropertyID, 0, 3);
PARAM(UInt32*, ioPropertyDataSize, 1, 3);
PARAM(void*, outPropertyData, 2, 3);
-
+
result = inThis->AFAPI_GetProperty(inPropertyID, ioPropertyDataSize, outPropertyData);
}
break;
@@ -880,18 +880,18 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(AudioFileComponentPropertyID, inPropertyID, 0, 3);
PARAM(UInt32, inPropertyDataSize, 1, 3);
PARAM(const void*, inPropertyData, 2, 3);
-
+
result = inThis->AFAPI_SetProperty(inPropertyID, inPropertyDataSize, inPropertyData);
}
break;
-
+
case kAudioFileGetGlobalInfoSizeSelect:
{
PARAM(AudioFileComponentPropertyID, inPropertyID, 0, 4);
PARAM(UInt32, inSpecifierSize, 1, 4);
PARAM(const void*, inSpecifier, 2, 4);
PARAM(UInt32*, outPropertyDataSize, 3, 4);
-
+
result = inThis->AFAPI_GetGlobalInfoSize(inPropertyID, inSpecifierSize, inSpecifier,
outPropertyDataSize);
}
@@ -903,34 +903,34 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
PARAM(const void*, inSpecifier, 2, 5);
PARAM(UInt32*, ioPropertyDataSize, 3, 5);
PARAM(void*, outPropertyData, 4, 5);
-
+
result = inThis->AFAPI_GetGlobalInfo(inPropertyID, inSpecifierSize, inSpecifier,
ioPropertyDataSize, outPropertyData);
}
break;
-
+
case kAudioFileExtensionIsThisFormatSelect:
{
PARAM(CFStringRef, inExtension, 0, 2);
PARAM(UInt32*, outResult, 1, 2);
-
+
AudioFileFormatBase* aff = inThis->GetAudioFileFormatBase();
if (!aff) return kAudio_ParamError;
-
+
UInt32 res = aff->ExtensionIsThisFormat(inExtension);
if (outResult) *outResult = res;
}
break;
-
+
case kAudioFileFileDataIsThisFormatSelect:
{
PARAM(UInt32, inDataByteSize, 0, 3);
PARAM(const void*, inData, 1, 3);
PARAM(UInt32*, outResult, 2, 3);
-
+
AudioFileFormatBase* aff = inThis->GetAudioFileFormatBase();
if (!aff) return kAudio_ParamError;
-
+
UncertainResult res = aff->FileDataIsThisFormat(inDataByteSize, inData);
if (outResult) *outResult = res;
}
@@ -940,55 +940,55 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
{
PARAM(UInt32, inUserDataID, 0, 2);
PARAM(UInt32*, outNumberItems, 1, 2);
-
+
result = inThis->AFAPI_CountUserData(inUserDataID, outNumberItems);
}
break;
-
+
case kAudioFileGetUserDataSizeSelect:
{
PARAM(UInt32, inUserDataID, 0, 3);
PARAM(UInt32, inIndex, 1, 3);
PARAM(UInt32*, outUserDataSize, 2, 3);
-
+
result = inThis->AFAPI_GetUserDataSize(inUserDataID, inIndex, outUserDataSize);
}
break;
-
+
case kAudioFileGetUserDataSelect:
{
PARAM(UInt32, inUserDataID, 0, 4);
PARAM(UInt32, inIndex, 1, 4);
PARAM(UInt32*, ioUserDataSize, 2, 4);
PARAM(void*, outUserData, 3, 4);
-
- result = inThis->AFAPI_GetUserData(inUserDataID, inIndex,
+
+ result = inThis->AFAPI_GetUserData(inUserDataID, inIndex,
ioUserDataSize, outUserData);
}
break;
-
+
case kAudioFileSetUserDataSelect:
{
PARAM(UInt32, inUserDataID, 0, 4);
PARAM(UInt32, inIndex, 1, 4);
PARAM(UInt32, inUserDataSize, 2, 4);
PARAM(const void*, inUserData, 3, 4);
-
- result = inThis->AFAPI_SetUserData(inUserDataID, inIndex,
+
+ result = inThis->AFAPI_SetUserData(inUserDataID, inIndex,
inUserDataSize, inUserData);
}
break;
-
+
case kAudioFileRemoveUserDataSelect:
{
PARAM(UInt32, inUserDataID, 0, 2);
PARAM(UInt32, inIndex, 1, 2);
-
+
result = inThis->AFAPI_RemoveUserData(inUserDataID, inIndex);
}
break;
-
-
+
+
default:
result = ComponentBase::ComponentEntryDispatch(params, inThis);
break;
@@ -996,13 +996,13 @@ OSStatus AudioFileComponentBase::ComponentEntryDispatch(ComponentParameters* par
}
COMPONENT_CATCH
return result;
-}
+}
#endif
AudioComponentMethod AudioFileComponentLookup::Lookup (SInt16 selector)
{
switch (selector) {
-
+
#define DefCase(NAME) case kAudioFile##NAME##Select: return (AudioComponentMethod)NAME
DefCase(OpenWithCallbacks);
@@ -1016,7 +1016,7 @@ AudioComponentMethod AudioFileComponentLookup::Lookup (SInt16 selector)
DefCase(GetPropertyInfo);
DefCase(GetProperty);
DefCase(SetProperty);
-
+
DefCase(ExtensionIsThisFormat);
DefCase(GetGlobalInfoSize);
DefCase(GetGlobalInfo);
@@ -1030,7 +1030,7 @@ AudioComponentMethod AudioFileComponentLookup::Lookup (SInt16 selector)
DefCase(OpenURL);
DefCase(FileDataIsThisFormat);
DefCase(ReadPacketData);
-
+
// These selectors are deprecated and do not appear: Create, Open, Initialize, FileIsThisFormat, DataIsThisFormat.
default:
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.h b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.h
index 5a11934e76..50e0627a6d 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.h
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileComponentBase.h
@@ -2,14 +2,14 @@
File: AudioFileComponentBase.h
Abstract: Part of CoreAudio Utility Classes
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#ifndef __AudioFileComponentBase_h__
#define __AudioFileComponentBase_h__
@@ -67,7 +67,7 @@ public:
virtual ~AudioFileComponentBase();
virtual AudioFileFormatBase* GetAudioFileFormatBase() const = 0;
-
+
/* Public API Function Support */
virtual OSStatus AFAPI_CreateURL(
CFURLRef inFileRef,
@@ -75,96 +75,96 @@ public:
UInt32 inFlags) { return kAudio_UnimplementedError; }
virtual OSStatus AFAPI_OpenURL(
- CFURLRef inFileRef,
+ CFURLRef inFileRef,
SInt8 inPermissions,
int inFD) { return kAudio_UnimplementedError; }
-
+
virtual OSStatus AFAPI_Create(
- const FSRef *inParentRef,
+ const FSRef *inParentRef,
CFStringRef inFileName,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags,
FSRef *outNewFileRef) { return kAudio_UnimplementedError; }
-
+
virtual OSStatus AFAPI_Initialize(
const FSRef *inFileRef,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags) { return kAudio_UnimplementedError; }
-
+
virtual OSStatus AFAPI_Open(
- const FSRef *inFileRef,
+ const FSRef *inFileRef,
SInt8 inPermissions,
SInt16 inRefNum) { return kAudio_UnimplementedError; }
virtual OSStatus AFAPI_OpenWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc)=0;
virtual OSStatus AFAPI_InitializeWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc,
UInt32 inFileType,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags)=0;
-
+
virtual OSStatus AFAPI_Close()=0;
virtual OSStatus AFAPI_Optimize()=0;
virtual OSStatus AFAPI_ReadBytes( Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
void *outBuffer)=0;
-
+
virtual OSStatus AFAPI_WriteBytes( Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
const void *inBuffer)=0;
-
+
virtual OSStatus AFAPI_ReadPackets( Boolean inUseCache,
UInt32 *outNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)=0;
-
+
virtual OSStatus AFAPI_ReadPacketData( Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)=0;
-
+
virtual OSStatus AFAPI_WritePackets( Boolean inUseCache,
UInt32 inNumBytes,
const AudioStreamPacketDescription *inPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
const void *inBuffer)=0;
-
+
virtual OSStatus AFAPI_GetPropertyInfo( AudioFilePropertyID inPropertyID,
UInt32 *outDataSize,
UInt32 *isWritable)=0;
-
+
virtual OSStatus AFAPI_GetProperty( AudioFilePropertyID inPropertyID,
UInt32 *ioDataSize,
void *ioPropertyData)=0;
-
+
virtual OSStatus AFAPI_SetProperty( AudioFilePropertyID inPropertyID,
UInt32 inDataSize,
const void *inPropertyData)=0;
- virtual OSStatus AFAPI_GetGlobalInfoSize(
+ virtual OSStatus AFAPI_GetGlobalInfoSize(
AudioFilePropertyID inPropertyID,
UInt32 inSpecifierSize,
const void* inSpecifier,
UInt32 *outPropertySize);
- virtual OSStatus AFAPI_GetGlobalInfo(
+ virtual OSStatus AFAPI_GetGlobalInfo(
AudioFilePropertyID inPropertyID,
UInt32 inSpecifierSize,
const void* inSpecifier,
@@ -173,21 +173,21 @@ public:
virtual OSStatus AFAPI_CountUserData( UInt32 inUserDataID,
UInt32 *outNumberItems)=0;
-
+
virtual OSStatus AFAPI_GetUserDataSize( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 *outDataSize)=0;
-
+
virtual OSStatus AFAPI_GetUserData( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 *ioDataSize,
void *ioUserData)=0;
-
+
virtual OSStatus AFAPI_SetUserData( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 inDataSize,
const void *inUserData)=0;
-
+
virtual OSStatus AFAPI_RemoveUserData( UInt32 inUserDataID,
UInt32 inIndex)=0;
#if !CA_USE_AUDIO_PLUGIN_ONLY
@@ -207,9 +207,9 @@ public:
virtual AudioFileFormat* GetAudioFormat() const = 0;
virtual AudioFileFormatBase* GetAudioFileFormatBase() const { return GetAudioFormat(); }
-
+
void SetAudioFileObject(AudioFileObject* inObject) { mAudioFileObject = inObject; }
-
+
/* Public API Function Support */
virtual OSStatus AFAPI_CreateURL(
@@ -218,92 +218,92 @@ public:
UInt32 inFlags);
virtual OSStatus AFAPI_OpenURL(
- CFURLRef inFileRef,
+ CFURLRef inFileRef,
SInt8 inPermissions,
int inFD);
virtual OSStatus AFAPI_OpenWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc);
virtual OSStatus AFAPI_InitializeWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc,
UInt32 inFileType,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags);
-
+
virtual OSStatus AFAPI_Close();
virtual OSStatus AFAPI_Optimize();
virtual OSStatus AFAPI_ReadBytes( Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
void *outBuffer);
-
+
virtual OSStatus AFAPI_WriteBytes( Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
const void *inBuffer);
-
+
virtual OSStatus AFAPI_ReadPackets( Boolean inUseCache,
UInt32 *outNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer);
-
+
virtual OSStatus AFAPI_ReadPacketData( Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer);
-
+
virtual OSStatus AFAPI_WritePackets( Boolean inUseCache,
UInt32 inNumBytes,
const AudioStreamPacketDescription *inPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
const void *inBuffer);
-
+
virtual OSStatus AFAPI_GetPropertyInfo( AudioFilePropertyID inPropertyID,
UInt32 *outDataSize,
UInt32 *isWritable);
-
+
virtual OSStatus AFAPI_GetProperty( AudioFilePropertyID inPropertyID,
UInt32 *ioDataSize,
void *ioPropertyData);
-
+
virtual OSStatus AFAPI_SetProperty( AudioFilePropertyID inPropertyID,
UInt32 inDataSize,
const void *inPropertyData);
virtual OSStatus AFAPI_CountUserData( UInt32 inUserDataID,
UInt32 *outNumberItems);
-
+
virtual OSStatus AFAPI_GetUserDataSize( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 *outDataSize);
-
+
virtual OSStatus AFAPI_GetUserData( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 *ioDataSize,
void *ioUserData);
-
+
virtual OSStatus AFAPI_SetUserData( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 inDataSize,
const void *inUserData);
-
+
virtual OSStatus AFAPI_RemoveUserData( UInt32 inUserDataID,
UInt32 inIndex);
-
+
protected:
AudioFileObject* mAudioFileObject;
};
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.cpp b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.cpp
index ee6bedd593..36a2bee9de 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.cpp
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.cpp
@@ -2,14 +2,14 @@
File: AudioFileFormat.cpp
Abstract: AudioFileFormat.h
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,14 +40,14 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#include "AudioFileFormat.h"
#include "DataSource.h"
-AudioFileFormatBase::AudioFileFormatBase(UInt32 inFileType)
+AudioFileFormatBase::AudioFileFormatBase(UInt32 inFileType)
: mFileType(inFileType)
{
}
@@ -61,7 +61,7 @@ OSStatus AudioFileFormatBase::GetHFSCodes(UInt32* ioDataSize, void* outPropertyD
return kAudioFileUnsupportedPropertyError;
}
-AudioFileFormat::AudioFileFormat(UInt32 inFileType)
+AudioFileFormat::AudioFileFormat(UInt32 inFileType)
: AudioFileFormatBase(inFileType)
{
}
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.h b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.h
index 9436199569..06ff8573d4 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.h
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileFormat.h
@@ -2,14 +2,14 @@
File: AudioFileFormat.h
Abstract: Part of CoreAudio Utility Classes
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,18 +40,18 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#ifndef _AudioFileFormat_H_
#define _AudioFileFormat_H_
#include "AudioFileObject.h"
-// AudioFileFormat is a factory class for AudioFileObjects.
+// AudioFileFormat is a factory class for AudioFileObjects.
-// UncertainResult is needed for DataIsThisFormat.
+// UncertainResult is needed for DataIsThisFormat.
// In the case of SoundDesigner 2 we can't determine if the data is SoundDesigner 2 or not.
typedef int UncertainResult;
@@ -71,23 +71,23 @@ class AudioFileFormatBase
public:
AudioFileFormatBase(UInt32 inFileType);
virtual ~AudioFileFormatBase();
-
+
// return true if extension is of this format type
virtual Boolean ExtensionIsThisFormat(CFStringRef inExtension) = 0;
-
+
virtual UncertainResult FileDataIsThisFormat(
UInt32 /*inDataByteSize*/,
const void* /*inData*/) = 0;
-
+
// support SoundDesigner II files while minimizing opening and closing files.
virtual Boolean ResourceIsThisFormat(const FSRef* /*inRef*/) { return false; }
UInt32 GetFileType() const { return mFileType; }
-
+
virtual UInt32 CanRead() const { return 1; }
virtual UInt32 CanWrite() const { return 1; }
virtual UInt32 HasResourceFork() const { return 0; }
-
+
virtual void GetExtensions(CFArrayRef *outArray) = 0;
virtual void GetUTIs(CFArrayRef *outArray) {}
virtual void GetMIMETypes(CFArrayRef *outArray) {}
@@ -95,10 +95,10 @@ public:
virtual OSStatus GetAvailableFormatIDs(UInt32* ioDataSize, void* outPropertyData) = 0;
virtual OSStatus GetAvailableStreamDescriptions(UInt32 inFormatID, UInt32* ioDataSize, void* outPropertyData) = 0;
virtual OSStatus GetHFSCodes(UInt32* ioDataSize, void* outPropertyData);
-
+
virtual AudioFileFormat* AsAudioFileFormat() { return NULL; }
virtual AudioFileFormatComponent* AsAudioFileFormatComponent() { return NULL; }
-
+
private:
UInt32 mFileType;
};
@@ -110,13 +110,13 @@ class AudioFileFormat : public AudioFileFormatBase
public:
AudioFileFormat(UInt32 inFileType);
virtual ~AudioFileFormat();
-
+
// create an AudioFileObject for this format type.
- virtual AudioFileObject* New() = 0;
+ virtual AudioFileObject* New() = 0;
virtual AudioFileStreamObject* NewStream() { return NULL; }
-
+
// return true if file is of this format type
- virtual UncertainResult FileDataIsThisFormat(UInt32 inDataByteSize, const void* inData) = 0;
+ virtual UncertainResult FileDataIsThisFormat(UInt32 inDataByteSize, const void* inData) = 0;
virtual AudioFileFormat* AsAudioFileFormat() { return this; }
};
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.cpp b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.cpp
index 1a00f96251..b823147604 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.cpp
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.cpp
@@ -2,14 +2,14 @@
File: AudioFileObject.cpp
Abstract: AudioFileObject.h
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#include "AudioFileObject.h"
#include "CADebugMacros.h"
@@ -64,7 +64,7 @@ AudioFileObject::~AudioFileObject()
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::DoCreate(
+OSStatus AudioFileObject::DoCreate(
CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags)
@@ -73,27 +73,27 @@ OSStatus AudioFileObject::DoCreate(
if (!IsDataFormatValid(inFormat))
return kAudioFileUnsupportedDataFormatError;
- if (!IsDataFormatSupported(inFormat))
+ if (!IsDataFormatSupported(inFormat))
return kAudioFileUnsupportedDataFormatError;
SetPermissions(kAudioFileReadWritePermission);
-
+
SetAlignDataWithFillerChunks(!(inFlags & 2 /* kAudioFileFlags_DontPageAlignAudioData */ ));
-
+
// call virtual method for particular format.
return Create(inFileRef, inFormat);
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-OSStatus AudioFileObject::Create(
+
+OSStatus AudioFileObject::Create(
CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat)
{
int fileD;
OSStatus err = CreateDataFile (inFileRef, fileD);
FailIf (err != noErr, Bail, "CreateDataFile failed");
-
+
SetURL (inFileRef);
err = OpenFile(kAudioFileReadWritePermission, fileD);
@@ -101,23 +101,23 @@ OSStatus AudioFileObject::Create(
err = SetDataFormat(inFormat);
FailIf (err != noErr, Bail, "SetDataFormat failed");
-
+
mIsInitialized = false;
-
+
Bail:
return err;
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::DoOpen(
- CFURLRef inFileRef,
+OSStatus AudioFileObject::DoOpen(
+ CFURLRef inFileRef,
SInt8 inPermissions,
int inFD)
-{
+{
OSStatus err = noErr;
SetPermissions(inPermissions);
-
+
err = Open(inFileRef, inPermissions, inFD);
FailIf (err != noErr, Bail, "Open failed");
@@ -130,22 +130,22 @@ Bail:
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::Open(
- CFURLRef inFileRef,
+OSStatus AudioFileObject::Open(
+ CFURLRef inFileRef,
SInt8 inPermissions,
int inFD)
-{
+{
if (!(inPermissions & kAudioFileReadPermission))
return kAudioFilePermissionsError; // file must have read permissions
-
+
SetURL(inFileRef);
-
+
OSStatus err = OpenFile(inPermissions, inFD);
FailIf (err != noErr, Bail, "OpenFile failed");
-
+
err = OpenFromDataSource();
FailIf (err != noErr, Bail, "OpenFromDataSource failed");
-
+
Bail:
return err;
}
@@ -154,17 +154,17 @@ Bail:
OSStatus AudioFileObject::ValidateFormatAndData()
{
-
+
AudioStreamBasicDescription asbd = GetDataFormat();
if (!IsDataFormatValid(&asbd))
return kAudioFileInvalidFileError;
- if (asbd.mFormatID == kAudioFormatLinearPCM)
+ if (asbd.mFormatID == kAudioFormatLinearPCM)
{
SInt64 maxPackets = GetNumBytes() / asbd.mBytesPerPacket;
- if (GetNumPackets() > maxPackets)
+ if (GetNumPackets() > maxPackets)
return kAudioFileInvalidFileError;
}
return noErr;
@@ -173,24 +173,24 @@ OSStatus AudioFileObject::ValidateFormatAndData()
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus AudioFileObject::DoOpenWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc)
{
SInt8 perms = (inSetSizeFunc || inWriteFunc) ? kAudioFileReadWritePermission : kAudioFileReadPermission;
SetPermissions(perms);
-
+
DataSource* dataSource = new Seekable_DataSource(inRefCon, inReadFunc, inWriteFunc, inGetSizeFunc, inSetSizeFunc);
SetDataSource(dataSource);
return OpenFromDataSource();
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
+
OSStatus AudioFileObject::OpenFromDataSource(void)
-{
+{
return noErr;
}
@@ -198,15 +198,15 @@ OSStatus AudioFileObject::OpenFromDataSource(void)
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus AudioFileObject::DoInitializeWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc,
UInt32 inFileType,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags)
-{
+{
DataSource* dataSource = new Seekable_DataSource(inRefCon, inReadFunc, inWriteFunc, inGetSizeFunc, inSetSizeFunc);
if (!dataSource->CanWrite()) return -54/*permErr*/;
dataSource->SetSize(0);
@@ -217,13 +217,13 @@ OSStatus AudioFileObject::DoInitializeWithCallbacks(
OSStatus err = SetDataFormat(inFormat);
if (err) return err;
-
+
return InitializeDataSource(inFormat, inFlags);
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-OSStatus AudioFileObject::DoInitialize(
+
+OSStatus AudioFileObject::DoInitialize(
CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags)
@@ -236,15 +236,15 @@ OSStatus AudioFileObject::DoInitialize(
return Initialize(inFileRef, inFormat, inFlags);
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-OSStatus AudioFileObject::Initialize(
+
+OSStatus AudioFileObject::Initialize(
CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags)
{
OSStatus err = noErr;
-
- UInt8 fPath[FILENAME_MAX];
+
+ UInt8 fPath[FILENAME_MAX];
if (!CFURLGetFileSystemRepresentation (inFileRef, true, fPath, FILENAME_MAX))
return kAudio_FileNotFoundError;
@@ -259,10 +259,10 @@ OSStatus AudioFileObject::Initialize(
int fileD = open((const char*)fPath, flags, filePerms);
if (fileD < 0)
return AudioFileTranslateErrno(errno);
-
+
err = OpenFile(kAudioFileReadWritePermission, fileD);
FailIf (err != noErr, Bail, "OpenFile failed");
-
+
// don't need to do this as open has an option to truncate the file
// GetDataSource()->SetSize(0);
@@ -270,15 +270,15 @@ OSStatus AudioFileObject::Initialize(
FailIf (err != noErr, Bail, "SetDataFormat failed");
InitializeDataSource(inFormat, inFlags);
-
-Bail:
+
+Bail:
return err;
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
+
OSStatus AudioFileObject::InitializeDataSource(const AudioStreamBasicDescription *inFormat, UInt32 /*inFlags*/)
-{
+{
return noErr;
}
@@ -288,7 +288,7 @@ OSStatus AudioFileObject::DoClose()
{
OSStatus err = UpdateSizeIfNeeded();
if (err) return err;
-
+
return Close();
}
@@ -313,7 +313,7 @@ OSStatus AudioFileObject::Close()
OSStatus AudioFileObject::Optimize()
{
// default is that nothing needs to be done. This happens to be true for Raw, SD2 and NeXT/Sun types.
- SetIsOptimized(true);
+ SetIsOptimized(true);
return noErr;
}
@@ -326,7 +326,7 @@ OSStatus AudioFileObject::DoOptimize()
OSStatus err = UpdateSizeIfNeeded();
if (err) return err;
-
+
if (IsOptimized()) return noErr;
err = Optimize();
@@ -335,12 +335,12 @@ OSStatus AudioFileObject::DoOptimize()
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::UpdateNumBytes(SInt64 inNumBytes)
+OSStatus AudioFileObject::UpdateNumBytes(SInt64 inNumBytes)
{
OSStatus err = noErr;
if (inNumBytes != GetNumBytes()) {
SetNumBytes(inNumBytes);
-
+
// #warning " this will not work for vbr formats"
SetNumPackets(GetNumBytes() / mDataFormat.mBytesPerPacket);
SizeChanged();
@@ -350,7 +350,7 @@ OSStatus AudioFileObject::UpdateNumBytes(SInt64 inNumBytes)
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::UpdateNumPackets(SInt64 inNumPackets)
+OSStatus AudioFileObject::UpdateNumPackets(SInt64 inNumPackets)
{
OSStatus err = noErr;
if (inNumPackets != GetNumPackets()) {
@@ -358,7 +358,7 @@ OSStatus AudioFileObject::UpdateNumPackets(SInt64 inNumPackets)
SetNeedsSizeUpdate(true);
UpdateSizeIfNeeded();
SetNumPackets(inNumPackets);
-
+
// #warning " this will not work for vbr formats"
SetNumBytes(GetNumPackets() * mDataFormat.mBytesPerFrame);
SizeChanged();
@@ -375,19 +375,19 @@ OSStatus AudioFileObject::PacketToFrame(SInt64 inPacket, SInt64& outFirstFrameIn
{
OSStatus err = ScanForPackets(inPacket+1); // the packet count must be one greater than the packet index
if (err) return err;
-
+
SInt64 packetTableSize = GetPacketTableSize();
-
+
if (mPacketTable && inPacket >= packetTableSize)
return kAudioFileEndOfFileError;
-
+
CompressedPacketTable* packetTable = GetPacketTable();
if (!packetTable)
return kAudioFileInvalidPacketOffsetError;
-
+
if (inPacket < 0 || inPacket >= packetTableSize)
return kAudioFileInvalidPacketOffsetError;
-
+
outFirstFrameInPacket = (*packetTable)[(size_t)inPacket].mFrameOffset;
}
else
@@ -406,18 +406,18 @@ OSStatus AudioFileObject::FrameToPacket(SInt64 inFrame, SInt64& outPacket, UInt3
CompressedPacketTable* packetTable = GetPacketTable();
if (!packetTable)
return kAudioFileInvalidPacketOffsetError;
-
+
// search packet table
AudioStreamPacketDescriptionExtended pext;
memset(&pext, 0, sizeof(pext));
pext.mFrameOffset = inFrame;
CompressedPacketTable::iterator iter = std::lower_bound(packetTable->begin(), packetTable->end(), pext);
-
+
if (iter == packetTable->end())
return kAudioFileInvalidPacketOffsetError;
-
+
if (iter > packetTable->begin()) --iter;
-
+
outPacket = iter - packetTable->begin();
outFrameOffsetInPacket = (UInt32)(inFrame - iter->mFrameOffset);
}
@@ -435,21 +435,21 @@ OSStatus AudioFileObject::PacketToByte(AudioBytePacketTranslation* abpt)
{
if (abpt->mPacket < 0)
return kAudioFileInvalidPacketOffsetError;
-
+
if (mDataFormat.mBytesPerPacket == 0)
{
CompressedPacketTable* packetTable = GetPacketTable();
if (!packetTable)
return kAudioFileInvalidPacketOffsetError;
-
+
if (abpt->mPacket < GetPacketTableSize()) {
abpt->mByte = (*packetTable)[(int)abpt->mPacket].mStartOffset;
abpt->mFlags = 0;
} else {
SInt64 numPackets = packetTable->size();
- if (numPackets < 8)
+ if (numPackets < 8)
return 'more' /*kAudioFileStreamError_DataUnavailable*/ ;
-
+
const AudioStreamPacketDescriptionExtended lastPacket = (*packetTable)[numPackets - 1];
SInt64 bytesReadSoFar = lastPacket.mStartOffset + lastPacket.mDataByteSize;
double averageBytesPerPacket = (double)(bytesReadSoFar - GetDataOffset()) / (double)numPackets;
@@ -487,21 +487,21 @@ OSStatus AudioFileObject::ByteToPacket(AudioBytePacketTranslation* abpt)
memset(&pext, 0, sizeof(pext));
pext.mStartOffset = abpt->mByte;
CompressedPacketTable::iterator iter = std::lower_bound(packetTable->begin(), packetTable->end(), pext, byte_less_than);
-
+
if (iter == packetTable->end()) {
SInt64 numPackets = packetTable->size();
- if (numPackets < 8)
+ if (numPackets < 8)
return 'more' /*kAudioFileStreamError_DataUnavailable*/ ;
-
+
const AudioStreamPacketDescriptionExtended lastPacket = (*packetTable)[numPackets - 1];
SInt64 bytesReadSoFar = lastPacket.mStartOffset + lastPacket.mDataByteSize;
double averageBytesPerPacket = (double)(bytesReadSoFar - GetDataOffset()) / (double)numPackets;
-
+
double fpacket = (double)abpt->mByte / averageBytesPerPacket;
abpt->mPacket = (SInt64)floor(fpacket);
abpt->mByteOffsetInPacket = (UInt32)floor((fpacket - (double)abpt->mPacket) * averageBytesPerPacket);
abpt->mFlags = kBytePacketTranslationFlag_IsEstimate;
-
+
} else {
if (iter > packetTable->begin()) --iter;
abpt->mPacket = iter - packetTable->begin();
@@ -523,29 +523,29 @@ OSStatus AudioFileObject::ByteToPacket(AudioBytePacketTranslation* abpt)
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::ReadBytes(
+OSStatus AudioFileObject::ReadBytes(
Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
void *outBuffer)
{
OSStatus err = noErr;
UInt16 mode = SEEK_SET;
SInt64 fileOffset = mDataOffset + inStartingByte;
bool readingPastEnd = false;
-
- FailWithAction((ioNumBytes == NULL) || (outBuffer == NULL), err = kAudio_ParamError,
+
+ FailWithAction((ioNumBytes == NULL) || (outBuffer == NULL), err = kAudio_ParamError,
Bail, "invalid num bytes parameter");
//printf("inStartingByte %lld GetNumBytes %lld\n", inStartingByte, GetNumBytes());
- if (inStartingByte >= GetNumBytes())
+ if (inStartingByte >= GetNumBytes())
{
*ioNumBytes = 0;
return kAudioFileEndOfFileError;
}
- if ((fileOffset + *ioNumBytes) > (GetNumBytes() + mDataOffset))
+ if ((fileOffset + *ioNumBytes) > (GetNumBytes() + mDataOffset))
{
*ioNumBytes = (UInt32)(GetNumBytes() + mDataOffset - fileOffset);
readingPastEnd = true;
@@ -554,9 +554,9 @@ OSStatus AudioFileObject::ReadBytes(
if (!inUseCache)
mode |= kAudioFileNoCacheMask;
-
+
err = GetDataSource()->ReadBytes(mode, fileOffset, *ioNumBytes, outBuffer, ioNumBytes);
-
+
if (readingPastEnd && err == noErr)
err = kAudioFileEndOfFileError;
@@ -567,10 +567,10 @@ Bail:
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::WriteBytes(
+OSStatus AudioFileObject::WriteBytes(
Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
const void *inBuffer)
{
OSStatus err = noErr;
@@ -586,57 +586,57 @@ OSStatus AudioFileObject::WriteBytes(
// if so, see if file type supports this and bail if not
err = IsValidFilePosition(inStartingByte + *ioNumBytes);
FailIf(err != noErr, Bail, "invalid file position");
-
+
extendingTheAudioData = inStartingByte + *ioNumBytes > GetNumBytes();
-
+
// if file is not optimized, then do not write data that would overwrite chunks following the sound data chunk
- FailWithAction( extendingTheAudioData && !IsOptimized(),
+ FailWithAction( extendingTheAudioData && !IsOptimized(),
err = kAudioFileNotOptimizedError, Bail, "Can't write more data until the file is optimized");
if (!inUseCache)
mode |= kAudioFileNoCacheMask;
-
- err = GetDataSource()->WriteBytes(mode, mDataOffset + inStartingByte, *ioNumBytes,
+
+ err = GetDataSource()->WriteBytes(mode, mDataOffset + inStartingByte, *ioNumBytes,
inBuffer, ioNumBytes);
-
+
FailIf(err != noErr, Bail, "couldn't write new data");
-
+
if (extendingTheAudioData) {
SInt64 nuEOF; // Get the total bytes of audio data
SInt64 nuByteTotal;
err = GetDataSource()->GetSize(nuEOF);
FailIf(err != noErr, Bail, "GetSize failed");
-
+
nuByteTotal = nuEOF - mDataOffset;
err = UpdateNumBytes(nuByteTotal);
}
-
+
Bail:
return err;
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::ReadPackets(
+OSStatus AudioFileObject::ReadPackets(
Boolean inUseCache,
UInt32 *outNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)
{
// This only works with CBR. To suppport VBR you must override.
OSStatus err = noErr;
-
+
FailWithAction(outBuffer == NULL, err = kAudio_ParamError, Bail, "NULL buffer");
-
+
FailWithAction((ioNumPackets == NULL) || (*ioNumPackets < 1), err = kAudio_ParamError, Bail, "invalid num packets parameter");
-
+
{
UInt32 byteCount = *ioNumPackets * mDataFormat.mBytesPerPacket;
SInt64 startingByte = inStartingPacket * mDataFormat.mBytesPerPacket;
-
+
err = ReadBytes (inUseCache, startingByte, &byteCount, outBuffer);
if ((err == noErr) || (err == kAudioFileEndOfFileError))
{
@@ -648,7 +648,7 @@ OSStatus AudioFileObject::ReadPackets(
if (outNumBytes)
*outNumBytes = byteCount;
-
+
if (err == kAudioFileEndOfFileError)
err = noErr;
}
@@ -664,12 +664,12 @@ Bail:
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::ReadPacketData(
+OSStatus AudioFileObject::ReadPacketData(
Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)
{
OSStatus err = noErr;
@@ -703,12 +703,12 @@ Bail:
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::ReadPacketDataVBR(
+OSStatus AudioFileObject::ReadPacketDataVBR(
Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)
{
OSStatus err = ScanForPackets(inStartingPacket+1); // need to scan packets up to start
@@ -718,7 +718,7 @@ OSStatus AudioFileObject::ReadPacketDataVBR(
SInt64 dataOffset = GetDataOffset();
CompressedPacketTable* packetTable = GetPacketTable();
- if (!packetTable)
+ if (!packetTable)
return kAudioFileInvalidFileError;
SInt64 packetTableSize = GetPacketTableSize();
@@ -728,7 +728,7 @@ OSStatus AudioFileObject::ReadPacketDataVBR(
*ioNumPackets = 0;
return kAudioFileEndOfFileError;
}
-
+
if (inStartingPacket + *ioNumPackets <= packetTableSize) {
err = ReadPacketDataVBR_InTable(inUseCache, ioNumBytes, outPacketDescriptions, inStartingPacket, ioNumPackets, outBuffer);
} else {
@@ -741,21 +741,21 @@ OSStatus AudioFileObject::ReadPacketDataVBR(
SInt64 remainingBytesInFile = fileSize - firstPacketOffset - dataOffset;
if (bytesRead > remainingBytesInFile)
bytesRead = (UInt32)remainingBytesInFile;
-
+
err = ReadBytes (inUseCache, firstPacketOffset, &bytesRead, outBuffer);
if (err && err != kAudioFileEndOfFileError) {
*ioNumBytes = 0;
*ioNumPackets = 0;
return err;
}
-
+
Buffer_DataSource bufSrc(bytesRead, outBuffer, dataOffset + firstPacketOffset);
-
+
OSStatus scanErr = ScanForPackets(kScanToEnd, &bufSrc, false);
if (scanErr && scanErr != kAudioFileEndOfFileError)
return scanErr;
packetTableSize = packetTable->size();
-
+
UInt32 numPacketsRead = 0;
UInt32 endOfData = 0;
SInt64 packetNumber = inStartingPacket;
@@ -765,10 +765,10 @@ OSStatus AudioFileObject::ReadPacketDataVBR(
SInt64 endOfPacket = curPacketOffset + curPacket.mDataByteSize;
if (endOfPacket > bytesRead) break;
endOfData = (UInt32)endOfPacket;
- outPacketDescriptions[numPacketsRead] = curPacket;
+ outPacketDescriptions[numPacketsRead] = curPacket;
outPacketDescriptions[numPacketsRead].mStartOffset = curPacketOffset;
}
-
+
*ioNumBytes = endOfData;
*ioNumPackets = numPacketsRead;
}
@@ -778,14 +778,14 @@ OSStatus AudioFileObject::ReadPacketDataVBR(
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus AudioFileObject::HowManyPacketsCanBeReadIntoBuffer(UInt32* ioNumBytes, SInt64 inStartingPacket, UInt32 *ioNumPackets)
-{
+{
CompressedPacketTable* packetTable = GetPacketTable();
SInt64 packetTableSize = GetPacketTableSize();
if (inStartingPacket + *ioNumPackets > (SInt64)packetTableSize) {
*ioNumPackets = (UInt32)(packetTableSize - inStartingPacket);
}
-
+
AudioStreamPacketDescription firstPacket = (*packetTable)[inStartingPacket];
if (*ioNumBytes < firstPacket.mDataByteSize) {
@@ -795,28 +795,28 @@ OSStatus AudioFileObject::HowManyPacketsCanBeReadIntoBuffer(UInt32* ioNumBytes,
}
SInt64 lastPacketIndex = inStartingPacket + *ioNumPackets - 1;
- if (lastPacketIndex >= packetTableSize)
+ if (lastPacketIndex >= packetTableSize)
lastPacketIndex = packetTableSize - 1;
-
+
AudioStreamPacketDescription lastPacket = (*packetTable)[lastPacketIndex];
-
+
SInt64 readBytes = lastPacket.mStartOffset + lastPacket.mDataByteSize - firstPacket.mStartOffset;
if (readBytes <= *ioNumBytes) {
*ioNumBytes = (UInt32)readBytes;
return noErr;
}
-
+
SInt64 lowBound = inStartingPacket;
SInt64 highBound = lastPacketIndex + 1;
SInt64 okIndex = lowBound;
- while (highBound >= lowBound) {
+ while (highBound >= lowBound) {
SInt64 tryBound = (lowBound + highBound) >> 1;
- if (tryBound > lastPacketIndex)
+ if (tryBound > lastPacketIndex)
break;
AudioStreamPacketDescription tryPacket = (*packetTable)[tryBound];
-
+
SInt64 readBytes = tryPacket.mStartOffset + tryPacket.mDataByteSize - firstPacket.mStartOffset;
-
+
if (readBytes > (SInt64)*ioNumBytes) {
highBound = tryBound - 1;
} else if (readBytes < (SInt64)*ioNumBytes) {
@@ -826,14 +826,14 @@ OSStatus AudioFileObject::HowManyPacketsCanBeReadIntoBuffer(UInt32* ioNumBytes,
okIndex = tryBound;
break;
}
- }
-
+ }
+
SInt64 numPackets = okIndex - inStartingPacket + 1;
if (numPackets > *ioNumPackets) {
numPackets = *ioNumPackets;
okIndex = inStartingPacket + numPackets - 1;
}
-
+
AudioStreamPacketDescription packet = (*packetTable)[okIndex];
*ioNumBytes = (UInt32)(packet.mStartOffset + packet.mDataByteSize - firstPacket.mStartOffset);
*ioNumPackets = (UInt32)numPackets;
@@ -846,25 +846,25 @@ OSStatus AudioFileObject::HowManyPacketsCanBeReadIntoBuffer(UInt32* ioNumBytes,
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::ReadPacketDataVBR_InTable(
+OSStatus AudioFileObject::ReadPacketDataVBR_InTable(
Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer)
{
CompressedPacketTable* packetTable = GetPacketTable();
- if (!packetTable)
+ if (!packetTable)
return kAudioFileInvalidFileError;
-
+
OSStatus err = HowManyPacketsCanBeReadIntoBuffer(ioNumBytes, inStartingPacket, ioNumPackets);
if (err) return err;
-
+
AudioStreamPacketDescription firstPacket = (*packetTable)[inStartingPacket];
SInt64 firstPacketOffset = firstPacket.mStartOffset;
UInt32 bytesRead = *ioNumBytes;
-
+
if (outBuffer) {
err = ReadBytes (inUseCache, firstPacketOffset, &bytesRead, outBuffer);
if (err && err != kAudioFileEndOfFileError) {
@@ -874,12 +874,12 @@ OSStatus AudioFileObject::ReadPacketDataVBR_InTable(
}
*ioNumBytes = bytesRead;
}
-
+
// fill out packet descriptions
- if (outPacketDescriptions) {
+ if (outPacketDescriptions) {
for (UInt32 i = 0; i < *ioNumPackets; i++) {
AudioStreamPacketDescription curPacket = (*packetTable)[i + inStartingPacket];
- outPacketDescriptions[i] = curPacket;
+ outPacketDescriptions[i] = curPacket;
outPacketDescriptions[i].mStartOffset = curPacket.mStartOffset - firstPacketOffset;
}
}
@@ -890,20 +890,20 @@ OSStatus AudioFileObject::ReadPacketDataVBR_InTable(
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::WritePackets(
+OSStatus AudioFileObject::WritePackets(
Boolean inUseCache,
UInt32 inNumBytes,
const AudioStreamPacketDescription *inPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
const void *inBuffer)
{
// This only works with CBR. To suppport VBR you must override.
OSStatus err = noErr;
-
+
FailWithAction(inStartingPacket > GetNumPackets(), err = kAudioFileInvalidPacketOffsetError, Bail, "write past end");
FailWithAction((ioNumPackets == NULL) || (inBuffer == NULL), err = kAudioFileUnspecifiedError, Bail, "invalid parameter");
-
+
{
UInt32 byteCount = *ioNumPackets * mDataFormat.mBytesPerPacket;
SInt64 startingByte = inStartingPacket * mDataFormat.mBytesPerPacket;
@@ -922,21 +922,21 @@ Bail:
OSStatus AudioFileObject::GetBitRate( UInt32 *outBitRate)
{
-
+
if (!outBitRate) return kAudioFileUnspecifiedError;
-
+
UInt32 bytesPerPacket = GetDataFormat().mBytesPerPacket;
UInt32 framesPerPacket = GetDataFormat().mFramesPerPacket;
Float64 sampleRate = GetDataFormat().mSampleRate;
const Float64 bitsPerByte = 8.;
-
+
if (bytesPerPacket && framesPerPacket) {
*outBitRate = (UInt32)(bitsPerByte * (Float64)bytesPerPacket * sampleRate / (Float64)framesPerPacket);
- } else {
+ } else {
SInt64 numPackets = GetNumPackets();
SInt64 numBytes = GetNumBytes();
SInt64 numFrames = 0;
-
+
if (framesPerPacket) {
numFrames = numPackets * framesPerPacket;
} else {
@@ -953,12 +953,12 @@ OSStatus AudioFileObject::GetBitRate( UInt32 *outBitRate)
#endif
{
numFrames += (*packetTable)[i].mVariableFramesInPacket;
- }
+ }
} else {
return kAudioFileUnsupportedPropertyError;
}
}
-
+
if (numFrames == 0 || (sampleRate == 0.)) {
*outBitRate = 0;
return noErr;
@@ -1098,18 +1098,18 @@ OSStatus AudioFileObject::GetInfoDictionarySize( UInt32 *outDataSize,
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
+
OSStatus AudioFileObject::GetInfoDictionary(CACFDictionary *infoDict)
-{
+{
Float64 fl;
if (GetEstimatedDuration(&fl) == noErr)
return AddDurationToInfoDictionary(infoDict, fl);
-
+
return kAudioFileUnsupportedPropertyError;
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
+
OSStatus AudioFileObject::SetInfoDictionary(CACFDictionary *infoDict)
{
return kAudioFileUnsupportedPropertyError;
@@ -1120,31 +1120,31 @@ OSStatus AudioFileObject::GetEstimatedDuration(Float64* duration)
{
// calculate duration
AudioStreamBasicDescription ASBD = GetDataFormat();
-
+
*duration = (ASBD.mFramesPerPacket != 0) ? (GetNumPackets() * ASBD.mFramesPerPacket) / ASBD.mSampleRate : 0.0;
-
+
/*
For now, assume that any ASBD that has zero in the frames per packet field has been subclassed for this
method. i.e. A CAF file has a frame count in one of it's chunks.
-
- MP3 has been subclassed because it guesstimates a duration so the entire file does not
+
+ MP3 has been subclassed because it guesstimates a duration so the entire file does not
need to be parsed in order to calculate the total frames.
*/
-
+
return noErr;
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-OSStatus AudioFileObject::GetPropertyInfo (
+OSStatus AudioFileObject::GetPropertyInfo (
AudioFilePropertyID inPropertyID,
UInt32 *outDataSize,
UInt32 *isWritable)
{
OSStatus err = noErr;
UInt32 writable = 0;
-
+
switch (inPropertyID)
{
case kAudioFilePropertyDeferSizeUpdates :
@@ -1161,11 +1161,11 @@ OSStatus AudioFileObject::GetPropertyInfo (
if (outDataSize) *outDataSize = sizeof(AudioStreamBasicDescription);
writable = 1;
break;
-
+
case kAudioFilePropertyFormatList:
err = GetFormatListInfo(*outDataSize, writable);
break;
-
+
case kAudioFilePropertyPacketSizeUpperBound:
case kAudioFilePropertyIsOptimized:
case kAudioFilePropertyMaximumPacketSize:
@@ -1184,25 +1184,25 @@ OSStatus AudioFileObject::GetPropertyInfo (
if (outDataSize) *outDataSize = sizeof(SInt64);
break;
- case kAudioFilePropertyBitRate:
+ case kAudioFilePropertyBitRate:
writable = 0;
if (outDataSize) *outDataSize = sizeof(UInt32);
break;
- case kAudioFilePropertyMagicCookieData:
+ case kAudioFilePropertyMagicCookieData:
err = GetMagicCookieDataSize(outDataSize, &writable);
break;
case kAudioFilePropertyMarkerList :
- err = GetMarkerListSize(outDataSize, &writable);
+ err = GetMarkerListSize(outDataSize, &writable);
break;
-
+
case kAudioFilePropertyRegionList :
- err = GetRegionListSize(outDataSize, &writable);
+ err = GetRegionListSize(outDataSize, &writable);
break;
-
+
case kAudioFilePropertyChannelLayout :
- err = GetChannelLayoutSize(outDataSize, &writable);
+ err = GetChannelLayoutSize(outDataSize, &writable);
break;
case kAudioFilePropertyPacketToFrame :
@@ -1218,11 +1218,11 @@ OSStatus AudioFileObject::GetPropertyInfo (
break;
case kAudioFilePropertyInfoDictionary :
- err = GetInfoDictionarySize(outDataSize, &writable);
+ err = GetInfoDictionarySize(outDataSize, &writable);
break;
case kTEMPAudioFilePropertySoundCheckDictionary :
- err = GetSoundCheckDictionarySize(outDataSize, &writable);
+ err = GetSoundCheckDictionarySize(outDataSize, &writable);
break;
case kTEMPAudioFilePropertyGenerateLoudnessInfo :
@@ -1253,7 +1253,7 @@ OSStatus AudioFileObject::GetPropertyInfo (
if (outDataSize) *outDataSize = sizeof(SInt32);
if (isWritable) *isWritable = CanWrite();
break;
-
+
default:
writable = 0;
err = kAudioFileUnsupportedPropertyError;
@@ -1275,109 +1275,109 @@ OSStatus AudioFileObject::GetProperty(
OSStatus err = noErr;
UInt32 neededSize;
UInt32 writable;
-
+
switch (inPropertyID)
{
case kAudioFilePropertyFileFormat:
- FailWithAction(*ioDataSize != sizeof(UInt32),
+ FailWithAction(*ioDataSize != sizeof(UInt32),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
-
+
*(UInt32 *) ioPropertyData = GetFileType();
break;
case kAudioFilePropertyFormatList:
err = GetFormatList(*ioDataSize, (AudioFormatListItem*)ioPropertyData);
break;
-
+
case kAudioFilePropertyDataFormat:
- FailWithAction(*ioDataSize != sizeof(AudioStreamBasicDescription),
+ FailWithAction(*ioDataSize != sizeof(AudioStreamBasicDescription),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
-
+
memcpy(ioPropertyData, &mDataFormat, sizeof(AudioStreamBasicDescription));
break;
case kAudioFilePropertyDataOffset:
- FailWithAction(*ioDataSize != sizeof(SInt64),
+ FailWithAction(*ioDataSize != sizeof(SInt64),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
*(SInt64 *) ioPropertyData = mDataOffset;
break;
case kAudioFilePropertyIsOptimized:
- FailWithAction(*ioDataSize != sizeof(UInt32),
+ FailWithAction(*ioDataSize != sizeof(UInt32),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
*(UInt32 *) ioPropertyData = mIsOptimized;
break;
case kAudioFilePropertyAudioDataByteCount:
- FailWithAction(*ioDataSize != sizeof(SInt64),
+ FailWithAction(*ioDataSize != sizeof(SInt64),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
*(SInt64 *)ioPropertyData = GetNumBytes();
break;
case kAudioFilePropertyAudioDataPacketCount:
- FailWithAction(*ioDataSize != sizeof(SInt64),
+ FailWithAction(*ioDataSize != sizeof(SInt64),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
*(SInt64 *)ioPropertyData = GetNumPackets();
break;
case kAudioFilePropertyPacketSizeUpperBound:
- FailWithAction(*ioDataSize != sizeof(UInt32),
+ FailWithAction(*ioDataSize != sizeof(UInt32),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
*(UInt32 *)ioPropertyData = GetPacketSizeUpperBound();
break;
-
+
case kAudioFilePropertyMaximumPacketSize:
- FailWithAction(*ioDataSize != sizeof(UInt32),
+ FailWithAction(*ioDataSize != sizeof(UInt32),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
*(UInt32 *)ioPropertyData = FindMaximumPacketSize();
break;
- case kAudioFilePropertyBitRate:
- FailWithAction(*ioDataSize != sizeof(UInt32),
+ case kAudioFilePropertyBitRate:
+ FailWithAction(*ioDataSize != sizeof(UInt32),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
err = GetBitRate((UInt32*)ioPropertyData);
break;
- case kAudioFilePropertyMagicCookieData:
-
+ case kAudioFilePropertyMagicCookieData:
+
err = GetMagicCookieData(ioDataSize, ioPropertyData);
break;
case kAudioFilePropertyMarkerList :
- err = GetMarkerList(ioDataSize, static_cast<AudioFileMarkerList*>(ioPropertyData));
+ err = GetMarkerList(ioDataSize, static_cast<AudioFileMarkerList*>(ioPropertyData));
break;
-
+
case kAudioFilePropertyRegionList :
memset(ioPropertyData, 0, *ioDataSize);
- err = GetRegionList(ioDataSize, static_cast<AudioFileRegionList*>(ioPropertyData));
+ err = GetRegionList(ioDataSize, static_cast<AudioFileRegionList*>(ioPropertyData));
break;
-
+
case kAudioFilePropertyChannelLayout :
err = GetChannelLayoutSize(&neededSize, &writable);
FailIf(err, Bail, "GetChannelLayoutSize failed");
FailWithAction(*ioDataSize != neededSize, err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
-
- err = GetChannelLayout(ioDataSize, static_cast<AudioChannelLayout*>(ioPropertyData));
+
+ err = GetChannelLayout(ioDataSize, static_cast<AudioChannelLayout*>(ioPropertyData));
break;
-
+
case kAudioFilePropertyDeferSizeUpdates :
- FailWithAction(*ioDataSize != sizeof(UInt32),
+ FailWithAction(*ioDataSize != sizeof(UInt32),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
-
+
*(UInt32 *) ioPropertyData = DeferSizeUpdates();
break;
- case kAudioFilePropertyPacketToFrame :
+ case kAudioFilePropertyPacketToFrame :
{
- FailWithAction(*ioDataSize != sizeof(AudioFramePacketTranslation),
+ FailWithAction(*ioDataSize != sizeof(AudioFramePacketTranslation),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
-
+
AudioFramePacketTranslation* afpt = (AudioFramePacketTranslation*)ioPropertyData;
err = PacketToFrame(afpt->mPacket, afpt->mFrame);
break;
- }
+ }
case kAudioFilePropertyFrameToPacket :
{
- FailWithAction(*ioDataSize != sizeof(AudioFramePacketTranslation),
+ FailWithAction(*ioDataSize != sizeof(AudioFramePacketTranslation),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
AudioFramePacketTranslation* afpt = (AudioFramePacketTranslation*)ioPropertyData;
@@ -1385,18 +1385,18 @@ OSStatus AudioFileObject::GetProperty(
break;
}
- case kAudioFilePropertyPacketToByte :
+ case kAudioFilePropertyPacketToByte :
{
- FailWithAction(*ioDataSize != sizeof(AudioBytePacketTranslation),
+ FailWithAction(*ioDataSize != sizeof(AudioBytePacketTranslation),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
-
+
AudioBytePacketTranslation* abpt = (AudioBytePacketTranslation*)ioPropertyData;
err = PacketToByte(abpt);
break;
- }
+ }
case kAudioFilePropertyByteToPacket :
{
- FailWithAction(*ioDataSize != sizeof(AudioBytePacketTranslation),
+ FailWithAction(*ioDataSize != sizeof(AudioBytePacketTranslation),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
AudioBytePacketTranslation* abpt = (AudioBytePacketTranslation*)ioPropertyData;
@@ -1406,13 +1406,13 @@ OSStatus AudioFileObject::GetProperty(
case kAudioFilePropertyInfoDictionary :
{
- FailWithAction(*ioDataSize != sizeof(CFDictionaryRef),
+ FailWithAction(*ioDataSize != sizeof(CFDictionaryRef),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
CACFDictionary afInfoDictionary(true);
- err = GetInfoDictionary(&afInfoDictionary);
-
+ err = GetInfoDictionary(&afInfoDictionary);
+
if (!err)
{
*(CFMutableDictionaryRef *)ioPropertyData = afInfoDictionary.CopyCFMutableDictionary();
@@ -1422,7 +1422,7 @@ OSStatus AudioFileObject::GetProperty(
case kTEMPAudioFilePropertySoundCheckDictionary :
{
- FailWithAction(*ioDataSize != sizeof(CFDictionaryRef),
+ FailWithAction(*ioDataSize != sizeof(CFDictionaryRef),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
CACFDictionary afInfoDictionary(true);
@@ -1432,7 +1432,7 @@ OSStatus AudioFileObject::GetProperty(
OSStatus err2 = GetSoundCheckDictionaryFromLoudnessInfo(&afInfoDictionary);
if (err2 == noErr) err = noErr; // else report original error from GetSoundCheckDictionary.
}
-
+
if (!err)
{
*(CFMutableDictionaryRef *)ioPropertyData = afInfoDictionary.CopyCFMutableDictionary();
@@ -1442,7 +1442,7 @@ OSStatus AudioFileObject::GetProperty(
case kTEMPAudioFilePropertyLoudnessInfo :
{
- FailWithAction(*ioDataSize != sizeof(CFDictionaryRef),
+ FailWithAction(*ioDataSize != sizeof(CFDictionaryRef),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
CACFDictionary afInfoDictionary(true);
@@ -1452,8 +1452,8 @@ OSStatus AudioFileObject::GetProperty(
OSStatus err2 = GetLoudnessInfoFromSoundCheckDictionary(&afInfoDictionary);
if (err2 == noErr) err = noErr; // else report original error from GetLoudnessInfo.
}
-
- if (!err)
+
+ if (!err)
{
*(CFMutableDictionaryRef *)ioPropertyData = afInfoDictionary.CopyCFMutableDictionary();
}
@@ -1467,8 +1467,8 @@ OSStatus AudioFileObject::GetProperty(
CACFDictionary afInfoDictionary(true);
- err = GenerateLoudnessInfo(&afInfoDictionary);
-
+ err = GenerateLoudnessInfo(&afInfoDictionary);
+
if (!err)
{
*(CFMutableDictionaryRef *)ioPropertyData = afInfoDictionary.CopyCFMutableDictionary();
@@ -1478,10 +1478,10 @@ OSStatus AudioFileObject::GetProperty(
case kAudioFilePropertyEstimatedDuration :
{
- FailWithAction(*ioDataSize != sizeof(Float64),
+ FailWithAction(*ioDataSize != sizeof(Float64),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
-
- err = GetEstimatedDuration((Float64*)ioPropertyData);
+
+ err = GetEstimatedDuration((Float64*)ioPropertyData);
break;
}
@@ -1492,21 +1492,21 @@ OSStatus AudioFileObject::GetProperty(
*ioDataSize = sizeof(CFStringRef);
err = GetLyrics((CFStringRef*) ioPropertyData);
break;
-
- case 'eof?' :
+
+ case 'eof?' :
{
if (*ioDataSize != sizeof(UInt32))
return kAudioFileBadPropertySizeError;
-
+
SInt64 pos;
err = GetDataSource()->GetPos(pos);
if (err) break;
-
+
SInt64 endOfData = GetDataOffset() + GetNumBytes();
*(UInt32*)ioPropertyData = pos >= endOfData;
-
+
break;
- }
+ }
case 'sbtd' /*kAudioFilePropertySourceBitDepth*/ :
{
if (*ioDataSize != sizeof(SInt32))
@@ -1518,17 +1518,17 @@ OSStatus AudioFileObject::GetProperty(
// if there was no stored source bit depth, and this file is LPCM, then report this file's bit depth.
err = noErr;
outValue = GetDataFormat().mBitsPerChannel;
- if (GetDataFormat().mFormatFlags & kAudioFormatFlagIsFloat)
+ if (GetDataFormat().mFormatFlags & kAudioFormatFlagIsFloat)
outValue = -outValue;
- } else if (err)
+ } else if (err)
break;
-
+
*(SInt32 *) ioPropertyData = outValue;
-
+
break;
- }
+ }
default:
- err = kAudioFileUnsupportedPropertyError;
+ err = kAudioFileUnsupportedPropertyError;
break;
}
@@ -1548,14 +1548,14 @@ OSStatus AudioFileObject::SetProperty(
switch (inPropertyID)
{
case kAudioFilePropertyDataFormat:
- FailWithAction(inDataSize != sizeof(AudioStreamBasicDescription),
+ FailWithAction(inDataSize != sizeof(AudioStreamBasicDescription),
err = kAudioFileBadPropertySizeError, Bail, "Incorrect data size");
err = UpdateDataFormat((AudioStreamBasicDescription *) inPropertyData);
break;
case kAudioFilePropertyFormatList:
err = SetFormatList(inDataSize, (AudioFormatListItem*)inPropertyData);
break;
-
+
case kAudioFilePropertyAudioDataByteCount: {
FailWithAction(inDataSize != sizeof(SInt64), err = kAudioFileBadPropertySizeError, Bail, "Incorrect data size");
SInt64 numBytes = *(SInt64 *) inPropertyData;
@@ -1577,82 +1577,82 @@ OSStatus AudioFileObject::SetProperty(
}
err = UpdateNumPackets(numPackets);
} break;
-
- case kAudioFilePropertyMagicCookieData:
+
+ case kAudioFilePropertyMagicCookieData:
err = SetMagicCookieData(inDataSize, inPropertyData);
break;
case kAudioFilePropertyMarkerList :
- err = SetMarkerList(inDataSize, static_cast<const AudioFileMarkerList*>(inPropertyData));
+ err = SetMarkerList(inDataSize, static_cast<const AudioFileMarkerList*>(inPropertyData));
break;
-
+
case kAudioFilePropertyRegionList :
- err = SetRegionList(inDataSize, static_cast<const AudioFileRegionList*>(inPropertyData));
+ err = SetRegionList(inDataSize, static_cast<const AudioFileRegionList*>(inPropertyData));
break;
-
+
case kAudioFilePropertyChannelLayout :
- err = SetChannelLayout(inDataSize, static_cast<const AudioChannelLayout*>(inPropertyData));
+ err = SetChannelLayout(inDataSize, static_cast<const AudioChannelLayout*>(inPropertyData));
break;
case kAudioFilePropertyDeferSizeUpdates :
- FailWithAction(inDataSize != sizeof(UInt32),
+ FailWithAction(inDataSize != sizeof(UInt32),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
SetDeferSizeUpdates(*(UInt32 *) inPropertyData);
break;
case kAudioFilePropertyInfoDictionary :
{
- FailWithAction(inDataSize != sizeof(CFDictionaryRef),
+ FailWithAction(inDataSize != sizeof(CFDictionaryRef),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
// pass the SetInfoDictionary a CACFDictionary object made with the provided CFDictionaryRef
// Let the caller release their own CFObject so pass false for th erelease parameter
CACFDictionary afInfoDictionary(*(CFDictionaryRef *)inPropertyData, false);
- err = SetInfoDictionary(&afInfoDictionary);
-
+ err = SetInfoDictionary(&afInfoDictionary);
+
break;
}
-
+
case kTEMPAudioFilePropertySoundCheckDictionary :
{
- FailWithAction(inDataSize != sizeof(CFDictionaryRef),
+ FailWithAction(inDataSize != sizeof(CFDictionaryRef),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
// pass the SetInfoDictionary a CACFDictionary object made with the provided CFDictionaryRef
// Let the caller release their own CFObject so pass false for the release parameter
CACFDictionary afInfoDictionary(*(CFDictionaryRef *)inPropertyData, false);
- err = SetSoundCheckDictionary(&afInfoDictionary);
-
+ err = SetSoundCheckDictionary(&afInfoDictionary);
+
break;
}
case kTEMPAudioFilePropertyLoudnessInfo :
{
- FailWithAction(inDataSize != sizeof(CFDictionaryRef),
+ FailWithAction(inDataSize != sizeof(CFDictionaryRef),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
// pass the SetInfoDictionary a CACFDictionary object made with the provided CFDictionaryRef
// Let the caller release their own CFObject so pass false for the release parameter
CACFDictionary afInfoDictionary(*(CFDictionaryRef *)inPropertyData, false);
- err = SetLoudnessInfo(&afInfoDictionary);
-
+ err = SetLoudnessInfo(&afInfoDictionary);
+
break;
}
-
+
case 'sbtd' /*kAudioFilePropertySourceBitDepth*/ :
{
- FailWithAction(inDataSize != sizeof(SInt32),
+ FailWithAction(inDataSize != sizeof(SInt32),
err = kAudioFileBadPropertySizeError, Bail, "inDataSize is wrong");
SInt32 inValue = *(SInt32 *)inPropertyData;
err = SetSourceBitDepth(inValue);
-
+
break;
- }
+ }
default:
- err = kAudioFileUnsupportedPropertyError;
+ err = kAudioFileUnsupportedPropertyError;
break;
}
@@ -1666,17 +1666,17 @@ Bail:
OSStatus AudioFileObject::SetDataFormat(const AudioStreamBasicDescription* inStreamFormat)
{
OSStatus err = noErr;
-
+
if (!IsDataFormatValid(inStreamFormat))
return kAudioFileUnsupportedDataFormatError;
- if (!IsDataFormatSupported(inStreamFormat))
+ if (!IsDataFormatSupported(inStreamFormat))
return kAudioFileUnsupportedDataFormatError;
-
+
UInt32 prevBytesPerPacket = mDataFormat.mBytesPerPacket;
-
+
mDataFormat = *inStreamFormat;
-
+
// if CBR and bytes per packet changes, we need to change the number of packets we think we have.
if (mDataFormat.mBytesPerPacket && mDataFormat.mBytesPerPacket != prevBytesPerPacket)
{
@@ -1687,9 +1687,9 @@ OSStatus AudioFileObject::SetDataFormat(const AudioStreamBasicDescription* inStr
if (!mFirstSetFormat)
SizeChanged();
}
-
+
mFirstSetFormat = false;
-
+
return err;
}
@@ -1712,7 +1712,7 @@ OSStatus AudioFileObject::GetFormatList( UInt32 &ioDataSize,
// default implementation is to just return the data format
if (ioDataSize < sizeof(AudioFormatListItem))
return kAudioFileBadPropertySizeError;
-
+
AudioFormatListItem afli;
afli.mASBD = mDataFormat;
AudioChannelLayoutTag layoutTag = /*kAudioChannelLayoutTag_Unknown*/ 0xFFFF0000 | mDataFormat.mChannelsPerFrame;
@@ -1727,14 +1727,14 @@ OSStatus AudioFileObject::GetFormatList( UInt32 &ioDataSize,
layoutTag = layout->mChannelLayoutTag;
}
}
- afli.mChannelLayoutTag = layoutTag;
-
+ afli.mChannelLayoutTag = layoutTag;
+
memcpy(ioPropertyData, &afli, sizeof(AudioFormatListItem));
-
+
ioDataSize = sizeof(AudioFormatListItem);
return noErr;
}
-
+
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OSStatus AudioFileObject::SetFormatList( UInt32 inDataSize,
@@ -1765,22 +1765,22 @@ Boolean AudioFileObject::IsDataFormatValid(AudioStreamBasicDescription const* in
return false;
if (inDesc->mFormatID == kAudioFormatLinearPCM)
- {
+ {
if (inDesc->mBitsPerChannel < 1 || inDesc->mBitsPerChannel > 64)
return false;
-
+
if (inDesc->mFramesPerPacket != 1)
return false;
-
- if (inDesc->mBytesPerPacket == 0)
+
+ if (inDesc->mBytesPerPacket == 0)
return false;
if (inDesc->mBytesPerFrame != inDesc->mBytesPerPacket)
return false;
-
+
// [3605260] we assume here that a packet is an integer number of frames.
UInt32 minimumBytesPerPacket = (inDesc->mBitsPerChannel * inDesc->mChannelsPerFrame + 7) / 8;
- if (inDesc->mBytesPerPacket < minimumBytesPerPacket)
+ if (inDesc->mBytesPerPacket < minimumBytesPerPacket)
return false;
}
return true;
@@ -1788,7 +1788,7 @@ Boolean AudioFileObject::IsDataFormatValid(AudioStreamBasicDescription const* in
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-void AudioFileObject::SetDataSource(DataSource* inDataSource)
+void AudioFileObject::SetDataSource(DataSource* inDataSource)
{
if (mDataSource != inDataSource) {
delete mDataSource;
@@ -1811,21 +1811,21 @@ OSStatus AudioFileObject::OpenFile(SInt8 inPermissions, int inFD)
OSStatus err = noErr;
SetDataSource(new Cached_DataSource(new UnixFile_DataSource(inFD, inPermissions, true)));
-
+
mFileD = inFD;
SetPermissions (inPermissions);
return err;
}
-
+
OSStatus AudioFileObject::CreateDataFile (CFURLRef inFileRef, int &outFileD)
-{
- UInt8 fPath[FILENAME_MAX];
+{
+ UInt8 fPath[FILENAME_MAX];
if (!CFURLGetFileSystemRepresentation (inFileRef, true, fPath, FILENAME_MAX))
return kAudio_FileNotFoundError;
-
+
struct stat stbuf;
- if (stat ((const char*)fPath, &stbuf) == 0)
+ if (stat ((const char*)fPath, &stbuf) == 0)
return kAudioFilePermissionsError;
#if TARGET_OS_WIN32
@@ -1863,7 +1863,7 @@ OSStatus AudioFileObject::AddDurationToInfoDictionary(CACFDictionary *infoDict,
OSStatus AudioFileObject::SizeChanged()
{
OSStatus err = noErr;
- if (mPermissions & kAudioFileWritePermission)
+ if (mPermissions & kAudioFileWritePermission)
{
if (DeferSizeUpdates())
SetNeedsSizeUpdate(true);
@@ -1874,8 +1874,8 @@ OSStatus AudioFileObject::SizeChanged()
}
OSStatus AudioFileObject::UpdateSizeIfNeeded()
-{
- if (GetNeedsSizeUpdate())
+{
+ if (GetNeedsSizeUpdate())
{
OSStatus err = UpdateSize();
if (err) return err;
@@ -1896,7 +1896,7 @@ OSStatus AudioFileObject::GetUserDataSize( UInt32 /*inUserDataID*/,
{
return kAudioFileOperationNotSupportedError;
}
-
+
OSStatus AudioFileObject::GetUserData( UInt32 /*inUserDataID*/,
UInt32 /*inIndex*/,
UInt32* /*ioDataSize*/,
@@ -1904,7 +1904,7 @@ OSStatus AudioFileObject::GetUserData( UInt32 /*inUserDataID*/,
{
return kAudioFileOperationNotSupportedError;
}
-
+
OSStatus AudioFileObject::SetUserData( UInt32 /*inUserDataID*/,
UInt32 /*inIndex*/,
UInt32 /*inDataSize*/,
@@ -1912,7 +1912,7 @@ OSStatus AudioFileObject::SetUserData( UInt32 /*inUserDataID*/,
{
return kAudioFileOperationNotSupportedError;
}
-
+
OSStatus AudioFileObject::RemoveUserData( UInt32 /*inUserDataID*/,
UInt32 /*inIndex*/)
{
@@ -1921,7 +1921,7 @@ OSStatus AudioFileObject::RemoveUserData( UInt32 /*inUserDataID*/,
OSStatus AudioFileObject::MoveData(SInt64 fromPos, SInt64 toPos, SInt64 size)
{
- if (fromPos == toPos)
+ if (fromPos == toPos)
return noErr;
OSStatus err = noErr;
@@ -1933,13 +1933,13 @@ OSStatus AudioFileObject::MoveData(SInt64 fromPos, SInt64 toPos, SInt64 size)
{
// read from old file
UInt32 byteCount;
- SInt64 count = (bytesRemaining < kCopySoundDataBufferSize) ? bytesRemaining : kCopySoundDataBufferSize;
+ SInt64 count = (bytesRemaining < kCopySoundDataBufferSize) ? bytesRemaining : kCopySoundDataBufferSize;
err = GetDataSource()->ReadBytes(SEEK_SET, fromPos+(bytesRemaining-count), (UInt32)count, audioData(), &byteCount);
FailIf (err != noErr, Bail, "MoveData ReadBytes failed");
err = GetDataSource()->WriteBytes(SEEK_SET, toPos+(bytesRemaining-count), (UInt32)count, audioData(), &byteCount);
FailIf (err != noErr, Bail, "WriteBytes failed");
-
+
bytesRemaining -= count;
}
} else {
@@ -1947,17 +1947,17 @@ OSStatus AudioFileObject::MoveData(SInt64 fromPos, SInt64 toPos, SInt64 size)
{
// read from old file
UInt32 byteCount;
- SInt64 count = (bytesRemaining < kCopySoundDataBufferSize) ? bytesRemaining : kCopySoundDataBufferSize;
+ SInt64 count = (bytesRemaining < kCopySoundDataBufferSize) ? bytesRemaining : kCopySoundDataBufferSize;
err = GetDataSource()->ReadBytes(SEEK_SET, fromPos+(size - bytesRemaining), (UInt32)count, audioData(), &byteCount);
FailIf (err != noErr, Bail, "MoveData ReadBytes failed");
-
+
err = GetDataSource()->WriteBytes(SEEK_SET, toPos+(size - bytesRemaining), (UInt32)count, audioData(), &byteCount);
FailIf (err != noErr, Bail, "WriteBytes failed");
-
+
bytesRemaining -= count;
}
}
-
+
Bail:
return err;
}
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.h b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.h
index 6d7c868976..9af04ec972 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.h
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/AudioFileObject.h
@@ -2,14 +2,14 @@
File: AudioFileObject.h
Abstract: Part of CoreAudio Utility Classes
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#ifndef _AudioFileObject_H_
#define _AudioFileObject_H_
@@ -96,12 +96,12 @@ enum {
// as described by the magic cookie.
// The specifier is an AudioFormatInfo struct. At a minimum formatID member of the ASBD struct must filled in. Other fields
// may be filled in.
-
+
kAudioFormatProperty_OutputFormatList = 'ofls',
// Returns a list of AudioFormatListItem structs describing the audio formats which may be obtained by decoding the format
// described by the specifier.
// The specifier is an AudioFormatInfo struct. At a minimum formatID member of the ASBD struct must filled in. Other fields
- // may be filled in. If there is no magic cookie, then the number of channels and sample rate should be filled in.
+ // may be filled in. If there is no magic cookie, then the number of channels and sample rate should be filled in.
};
@@ -134,7 +134,7 @@ enum {
kUpperCase_IMACompression = 'IMA4', /*IMA 4:1*/
kUpperCase_ULawCompression = 'ULAW', /*µLaw 2:1*/
kUpperCase_ALawCompression = 'ALAW', /*aLaw 2:1*/
-
+
kUpperCase_Float32 = 'FL32',
kUpperCase_Float64 = 'FL64'
};
@@ -142,7 +142,7 @@ enum {
enum
{
// in what header is this defined? what is it?
- kGSM = 'agsm',
+ kGSM = 'agsm',
kUpperCase_GSM = 'GSM '
};
@@ -209,9 +209,9 @@ private:
AudioStreamBasicDescription mDataFormat; // format of the audio data
SInt64 mDataOffset; // position if the file where audio data begins
UInt32 mIsOptimized; // 1 if there is nothing in the file following the audio data, 0 if there is
- UInt32 mFileType; // file type of the audio file (i.e. AIFF, WAVE, etc.)
+ UInt32 mFileType; // file type of the audio file (i.e. AIFF, WAVE, etc.)
CFURLRef mFileRef; // URL of the file passed to AudioFileOpen or AudioFileCreate
- int mFileD; // Ref num of the file after opening within Audio File
+ int mFileD; // Ref num of the file after opening within Audio File
SInt8 mPermissions; // file permissions indicated by the caller, passed by AudioFileOpen or set with SetProperty function
Boolean mIsInitialized; // has the AudioFileObject for this file been intialized?
DataSource *mDataSource;
@@ -221,9 +221,9 @@ private:
Boolean mNeedsSizeUpdate;
Boolean mFirstSetFormat;
Boolean mAlignDataWithFillerChunks;
-
-public:
-
+
+public:
+
AudioFileObject (UInt32 inFileType)
: mNumBytes(0),
mNumPackets(0),
@@ -244,159 +244,159 @@ public:
{
memset(&mDataFormat, 0, sizeof(mDataFormat));
}
-
+
virtual ~AudioFileObject();
-
+
/* Public API Function Implementation */
// The DoSomething() versions of these functions are wrappers that perform a standard prologue.
// The Something() methods are those which should be overridden in the subclasses.
-
+
OSStatus DoCreate( CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags);
-
+
virtual OSStatus Create( CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat);
-
- OSStatus DoOpen( CFURLRef inFileRef,
+
+ OSStatus DoOpen( CFURLRef inFileRef,
SInt8 inPermissions,
int inFD);
-
- virtual OSStatus Open( CFURLRef inFileRef,
+
+ virtual OSStatus Open( CFURLRef inFileRef,
SInt8 inPermissions,
int inFD);
OSStatus DoOpenWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc);
-
-
+
+
OSStatus DoInitialize( CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags);
-
+
virtual OSStatus Initialize( CFURLRef inFileRef,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags);
-
+
OSStatus DoInitializeWithCallbacks(
- void * inRefCon,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ void * inRefCon,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc,
UInt32 inFileType,
const AudioStreamBasicDescription *inFormat,
UInt32 inFlags);
-
+
virtual OSStatus OpenFromDataSource(void);
-
+
virtual OSStatus InitializeDataSource(const AudioStreamBasicDescription *inFormat, UInt32 inFlags);
-
+
OSStatus DoClose();
-
+
virtual OSStatus Close();
-
+
OSStatus DoOptimize();
-
+
virtual OSStatus Optimize();
-
+
virtual OSStatus ReadBytes( Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
void *outBuffer);
-
+
virtual OSStatus WriteBytes( Boolean inUseCache,
- SInt64 inStartingByte,
- UInt32 *ioNumBytes,
+ SInt64 inStartingByte,
+ UInt32 *ioNumBytes,
const void *inBuffer);
-
+
virtual OSStatus ReadPackets( Boolean inUseCache,
UInt32 *outNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer);
- virtual OSStatus ReadPacketData(
+ virtual OSStatus ReadPacketData(
Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer);
-
- virtual OSStatus ReadPacketDataVBR(
+
+ virtual OSStatus ReadPacketDataVBR(
Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer);
virtual OSStatus HowManyPacketsCanBeReadIntoBuffer(UInt32* ioNumBytes, SInt64 inStartingPacket, UInt32 *ioNumPackets);
- virtual OSStatus ReadPacketDataVBR_InTable(
+ virtual OSStatus ReadPacketDataVBR_InTable(
Boolean inUseCache,
UInt32 *ioNumBytes,
AudioStreamPacketDescription *outPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
void *outBuffer);
-
+
virtual OSStatus WritePackets( Boolean inUseCache,
UInt32 inNumBytes,
const AudioStreamPacketDescription *inPacketDescriptions,
- SInt64 inStartingPacket,
- UInt32 *ioNumPackets,
+ SInt64 inStartingPacket,
+ UInt32 *ioNumPackets,
const void *inBuffer);
/* Property Support */
- virtual OSStatus GetPropertyInfo (
+ virtual OSStatus GetPropertyInfo (
AudioFilePropertyID inPropertyID,
UInt32 *outDataSize,
UInt32 *isWritable);
-
+
virtual OSStatus GetProperty ( AudioFilePropertyID inPropertyID,
UInt32 *ioDataSize,
void *ioPropertyData);
-
+
virtual OSStatus SetProperty ( AudioFilePropertyID inPropertyID,
UInt32 inDataSize,
const void *inPropertyData);
-
+
UInt32 GetFileType() const { return mFileType; }
void SetFileType(UInt32 inFileType) { mFileType = inFileType; }
-
+
// this will set the format in memory only.
virtual OSStatus SetDataFormat(const AudioStreamBasicDescription* inStreamFormat);
-
+
// this will update the format info on disk and in memory.
virtual OSStatus UpdateDataFormat(const AudioStreamBasicDescription* inStreamFormat);
-
+
const UInt32 GetBytesPerPacket() const { return mDataFormat.mBytesPerPacket; }
-
+
const AudioStreamBasicDescription &GetDataFormat() const { return mDataFormat; }
-
+
virtual OSStatus GetFormatListInfo( UInt32 &outDataSize,
UInt32 &outWritable);
-
+
virtual OSStatus GetFormatList( UInt32 &ioDataSize,
AudioFormatListItem *ioPropertyData);
-
+
virtual OSStatus SetFormatList( UInt32 inDataSize,
const AudioFormatListItem *inPropertyData);
-
+
virtual OSStatus UpdateSize() { return noErr; }
UInt32 DeferSizeUpdates() { return mDeferSizeUpdates; }
void SetDeferSizeUpdates(UInt32 inFlag) { mDeferSizeUpdates = inFlag; }
OSStatus UpdateSizeIfNeeded();
OSStatus SizeChanged();
-
+
Boolean IsOptimized() const { return mIsOptimized != 0; }
void SetIsOptimized(Boolean inIsOptimized) { mIsOptimized = inIsOptimized ? 1 : 0; }
@@ -407,79 +407,79 @@ public:
// this will update the header size info on disk
OSStatus UpdateNumBytes(SInt64 inNumBytes);
-
+
virtual SInt64 GetNumPackets(){ return mNumPackets; }
virtual void SetNumPackets(SInt64 inNumPackets) { mNumPackets = inNumPackets; }
-
+
// this will update the header size info on disk
OSStatus UpdateNumPackets(SInt64 inNumPackets);
virtual OSStatus PacketToFrame(SInt64 inPacket, SInt64& outFirstFrameInPacket);
virtual OSStatus FrameToPacket(SInt64 inFrame, SInt64& outPacket, UInt32& outFrameOffsetInPacket);
-
+
virtual OSStatus PacketToByte(AudioBytePacketTranslation* abpt);
-
+
virtual OSStatus ByteToPacket(AudioBytePacketTranslation* abpt);
-
+
virtual OSStatus GetBitRate( UInt32 *outBitRate);
-
+
virtual OSStatus GetMagicCookieDataSize( UInt32 *outDataSize,
UInt32 *isWritable);
-
+
virtual OSStatus GetMagicCookieData( UInt32 *ioDataSize,
void *ioPropertyData);
-
+
virtual OSStatus SetMagicCookieData( UInt32 inDataSize,
const void *inPropertyData);
virtual OSStatus GetMarkerListSize( UInt32 *outDataSize,
UInt32 *isWritable);
-
+
virtual OSStatus GetMarkerList( UInt32 *ioDataSize,
AudioFileMarkerList *ioMarkerList);
-
+
virtual OSStatus SetMarkerList( UInt32 inDataSize,
const AudioFileMarkerList *inMarkerList);
virtual OSStatus GetRegionListSize( UInt32 *outDataSize,
UInt32 *isWritable);
-
+
virtual OSStatus GetRegionList( UInt32 *ioDataSize,
AudioFileRegionList *ioRegionList);
-
+
virtual OSStatus SetRegionList( UInt32 inDataSize,
const AudioFileRegionList *inRegionList);
virtual OSStatus GetChannelLayoutSize( UInt32 *outDataSize,
UInt32 *isWritable);
-
+
virtual OSStatus GetChannelLayout( UInt32 *ioDataSize,
AudioChannelLayout *ioChannelLayout);
-
+
virtual OSStatus SetChannelLayout( UInt32 inDataSize,
const AudioChannelLayout *inChannelLayout);
virtual OSStatus GetInfoDictionarySize( UInt32 *outDataSize,
UInt32 *isWritable);
-
+
virtual OSStatus GetInfoDictionary( CACFDictionary *infoDict);
-
+
virtual OSStatus SetInfoDictionary( CACFDictionary *infoDict);
virtual OSStatus GetSoundCheckDictionarySize( UInt32 *outDataSize,
UInt32 *isWritable) { return kAudioFileUnsupportedPropertyError; }
-
+
virtual OSStatus GetSoundCheckDictionary( CACFDictionary *infoDict) { return kAudioFileUnsupportedPropertyError; }
-
+
virtual OSStatus SetSoundCheckDictionary( CACFDictionary *infoDict) { return kAudioFileUnsupportedPropertyError; }
-
+
virtual OSStatus GetLoudnessInfo( CACFDictionary *infoDict) { return kAudioFileUnsupportedPropertyError; }
-
+
virtual OSStatus GetSoundCheckDictionaryFromLoudnessInfo(CACFDictionary* outInfoDict) { return kAudioFileUnsupportedPropertyError; }
virtual OSStatus GetLoudnessInfoFromSoundCheckDictionary(CACFDictionary* outInfoDict) { return kAudioFileUnsupportedPropertyError; }
-
+
virtual OSStatus SetLoudnessInfo( CACFDictionary *infoDict) { return kAudioFileUnsupportedPropertyError; }
virtual OSStatus GetLoudnessInfoSize( UInt32 *outDataSize,
@@ -491,16 +491,16 @@ public:
virtual OSStatus CountUserData( UInt32 inUserDataID,
UInt32 *outNumberItems);
-
+
virtual OSStatus GetUserDataSize( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 *outDataSize);
-
+
virtual OSStatus GetUserData( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 *ioDataSize,
void *ioUserData);
-
+
virtual OSStatus SetUserData( UInt32 inUserDataID,
UInt32 inIndex,
UInt32 inDataSize,
@@ -516,14 +516,14 @@ public:
Boolean CanWrite() const { return mPermissions & kAudioFileWritePermission; }
void SetPermissions(SInt8 inPermissions) { mPermissions = inPermissions; }
-
+
/* Other Helper Methods: (some may not be necessary depending on how things are refactored) */
-
+
OSStatus OpenFile(SInt8 inPermissions, int inFD);
OSStatus CreateDataFile (CFURLRef inFileRef, int &outFileD);
- OSStatus AddDurationToInfoDictionary(CACFDictionary *infoDict, Float64 &inDuration);
+ OSStatus AddDurationToInfoDictionary(CACFDictionary *infoDict, Float64 &inDuration);
virtual Boolean IsDataFormatSupported(const AudioStreamBasicDescription *inFormat) = 0;
virtual Boolean IsDataFormatValid(const AudioStreamBasicDescription *inFormat);
@@ -535,21 +535,21 @@ public:
/* Accessors: */
Boolean IsInitialized() const { return mIsInitialized; }
void SetInitialized(Boolean inFlag) { mIsInitialized = inFlag; }
-
+
DataSource* GetDataSource() const { return mDataSource; }
void SetDataSource(DataSource *inDataSource);
-
+
void SetURL (CFURLRef inURL);
-
+
virtual UInt32 GetMaximumPacketSize() { return mMaximumPacketSize; }
virtual UInt32 FindMaximumPacketSize() { return mMaximumPacketSize; }
virtual void SetMaximumPacketSize(const UInt32 inPacketSize) { mMaximumPacketSize = inPacketSize; }
-
+
virtual UInt32 GetPacketSizeUpperBound() { return GetMaximumPacketSize (); }
-
- SInt64 GetDataOffset() const { return mDataOffset; }
- void SetDataOffset(SInt64 inOffset) { mDataOffset = inOffset; }
-
+
+ SInt64 GetDataOffset() const { return mDataOffset; }
+ void SetDataOffset(SInt64 inOffset) { mDataOffset = inOffset; }
+
// I like this idiom better than DoesPacketTableExist+NewPacketTable:
CompressedPacketTable* GetPacketTable(Boolean inCreateIt = false)
{
@@ -557,35 +557,35 @@ public:
mPacketTable = new CompressedPacketTable(mDataFormat.mFramesPerPacket);
return mPacketTable;
}
- void ClearPacketTable()
+ void ClearPacketTable()
{
DeletePacketTable();
GetPacketTable(true);
}
-
- virtual OSStatus ScanForPackets(SInt64 inToPacketCount, DataSource* inDataSrc = NULL, bool fullyParsedIfEndOfDataReached = true)
+
+ virtual OSStatus ScanForPackets(SInt64 inToPacketCount, DataSource* inDataSrc = NULL, bool fullyParsedIfEndOfDataReached = true)
{
// In formats that read packets lazily, this will be overridden to scan for packets up to the index.
if (inToPacketCount > GetNumPackets())
return kAudioFileEndOfFileError;
-
- return noErr;
+
+ return noErr;
}
-
- void AppendPacket(const AudioStreamPacketDescription &inPacket)
+
+ void AppendPacket(const AudioStreamPacketDescription &inPacket)
{
CompressedPacketTable* packetTable = GetPacketTable(true);
UInt32 numFramesInPacket = mDataFormat.mFramesPerPacket ? mDataFormat.mFramesPerPacket : inPacket.mVariableFramesInPacket;
-
+
AudioStreamPacketDescriptionExtended pext;
memset(&pext, 0, sizeof(pext));
pext.mStartOffset = inPacket.mStartOffset;
pext.mDataByteSize = inPacket.mDataByteSize;
pext.mVariableFramesInPacket = inPacket.mVariableFramesInPacket;
pext.mFrameOffset = numFramesInPacket + (packetTable->size() ? packetTable->back().mFrameOffset : 0);
-
- packetTable->push_back(pext);
- if (inPacket.mDataByteSize > mMaximumPacketSize)
+
+ packetTable->push_back(pext);
+ if (inPacket.mDataByteSize > mMaximumPacketSize)
mMaximumPacketSize = inPacket.mDataByteSize;
}
void DeletePacketTable() { delete mPacketTable; mPacketTable = NULL;}
@@ -597,9 +597,9 @@ public:
{
// only get as many packet descriptions as can fit in outPacketDescriptions
UInt32 count = *ioDataSize / sizeof(AudioStreamPacketDescription);
- if (count + inStartingPacket > GetPacketTableSize())
+ if (count + inStartingPacket > GetPacketTableSize())
count = (UInt32)(GetPacketTableSize() - inStartingPacket);
-
+
*ioDataSize = 0;
for (UInt32 i = inStartingPacket; i < (count + inStartingPacket); i++)
{
@@ -632,7 +632,7 @@ public:
Boolean GetNeedsSizeUpdate() const { return mNeedsSizeUpdate; }
void SetNeedsSizeUpdate(Boolean inNeedsSizeUpdate) { mNeedsSizeUpdate = inNeedsSizeUpdate; }
-
+
CFURLRef GetURL () const { return mFileRef; }
virtual OSStatus GetSourceBitDepth(SInt32& outValue) { outValue = 0; return kAudioFileUnsupportedPropertyError; }
@@ -646,7 +646,7 @@ private:
void SetAlignDataWithFillerChunks(Boolean inFlag) { mAlignDataWithFillerChunks = inFlag; }
OSStatus ValidateFormatAndData();
-
+
/* debug */
// virtual void PrintFile (FILE* inFile, const char *indent) = 0;
};
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.cpp b/libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.cpp
index ba07580bba..d2c08906fb 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.cpp
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.cpp
@@ -2,14 +2,14 @@
File: CompressedPacketTable.cpp
Abstract: CompressedPacketTable.h
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#include "CompressedPacketTable.h"
#include "CAAutoDisposer.h"
@@ -66,7 +66,7 @@ void CompressedPacketTable::push_back(const AudioStreamPacketDescriptionExtended
{
SInt64 baseIndex = mSize >> kShift;
UInt32 packetIndex = (UInt32)(mSize & kMask);
-
+
if (packetIndex == 0) {
// first packet in a new sequence. create a new PacketBase.
PacketBase newBase;
@@ -75,16 +75,16 @@ void CompressedPacketTable::push_back(const AudioStreamPacketDescriptionExtended
newBase.mDescType = kExtendedPacketDescription;
mBases.push_back(newBase);
}
-
+
PacketBase& base = mBases[(size_t)baseIndex];
AudioStreamPacketDescriptionExtended* descs = (AudioStreamPacketDescriptionExtended*)base.mDescs;
descs[packetIndex] = inDesc;
-
+
if (packetIndex == kMask) {
// last packet in a sequence. compress the sequence.
Compress(base);
}
-
+
mSize++;
}
@@ -109,13 +109,13 @@ const AudioStreamPacketDescriptionExtended CompressedPacketTable::operator[](SIn
if ((size_t)baseIndex >= mBases.size())
throw -1;
-
+
const PacketBase& base = mBases[(size_t)baseIndex];
-
+
SInt64 packetOffset = 0;
UInt32 packetSize = 0;
-
- switch (base.mDescType)
+
+ switch (base.mDescType)
{
ACCESS_TYPE(Tiny)
ACCESS_TYPE(Small)
@@ -123,7 +123,7 @@ const AudioStreamPacketDescriptionExtended CompressedPacketTable::operator[](SIn
case kExtendedPacketDescription :
return ((AudioStreamPacketDescriptionExtended*)base.mDescs)[packetIndex];
}
-
+
AudioStreamPacketDescriptionExtended outDesc;
outDesc.mStartOffset = base.mBaseOffset + packetOffset;
outDesc.mDataByteSize = packetSize;
@@ -131,14 +131,14 @@ const AudioStreamPacketDescriptionExtended CompressedPacketTable::operator[](SIn
outDesc.mFrameOffset = mFramesPerPacket * inPacketIndex;
//printf("get %d %10qd %10qd %2d %10qd %6d %10qd\n", base.mDescType, inPacketIndex, baseIndex, packetIndex, outDesc.mStartOffset, outDesc.mDataByteSize, outDesc.mFrameOffset);
-
+
return outDesc;
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool CompressedPacketTable::isContiguous(PacketBase& base)
-{
+{
AudioStreamPacketDescriptionExtended* descs = (AudioStreamPacketDescriptionExtended*)base.mDescs;
SInt64 expectedOffset = descs[0].mStartOffset + descs[0].mDataByteSize;
for (UInt32 i = 1; i <= kMask; ++i) {
@@ -149,7 +149,7 @@ bool CompressedPacketTable::isContiguous(PacketBase& base)
}
bool CompressedPacketTable::hasVariableFrames(PacketBase& base)
-{
+{
AudioStreamPacketDescriptionExtended* descs = (AudioStreamPacketDescriptionExtended*)base.mDescs;
for (UInt32 i = 0; i <= kMask; ++i) {
if (descs[i].mVariableFramesInPacket) return true;
@@ -158,7 +158,7 @@ bool CompressedPacketTable::hasVariableFrames(PacketBase& base)
}
UInt32 CompressedPacketTable::largestPacket(PacketBase& base)
-{
+{
UInt32 maxPacketSize = 0;
AudioStreamPacketDescriptionExtended* descs = (AudioStreamPacketDescriptionExtended*)base.mDescs;
for (UInt32 i = 0; i <= kMask; ++i) {
@@ -193,17 +193,17 @@ UInt32 CompressedPacketTable::largestPacket(PacketBase& base)
void CompressedPacketTable::Compress(PacketBase& base)
{
- if (hasVariableFrames(base))
+ if (hasVariableFrames(base))
return;
-
+
bool contiguous = isContiguous(base);
-
+
AudioStreamPacketDescriptionExtended* descs = (AudioStreamPacketDescriptionExtended*)base.mDescs;
SInt64 delta = descs[kMask].mStartOffset + descs[kMask].mDataByteSize - descs[0].mStartOffset;
-
+
SInt64 baseOffset = descs[0].mStartOffset;
base.mBaseOffset = baseOffset;
-
+
if (delta <= 65535LL) {
COMPRESS_TYPE(Tiny, UInt16)
} else if (delta <= 4294967295LL && largestPacket(base) <= 65535) {
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.h b/libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.h
index 47e28ca499..8ca0ccfa50 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.h
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/CompressedPacketTable.h
@@ -2,14 +2,14 @@
File: CompressedPacketTable.h
Abstract: Part of CoreAudio Utility Classes
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#include <iterator>
#include <vector>
@@ -72,17 +72,17 @@ class CompressedPacketTable
public:
CompressedPacketTable(UInt32 inFramesPerPacket) : mSize(0), mFramesPerPacket(inFramesPerPacket) {}
~CompressedPacketTable();
-
+
SInt64 size() const { return mSize; }
void push_back(const AudioStreamPacketDescriptionExtended& inDesc);
-
+
const AudioStreamPacketDescriptionExtended operator[](SInt64 inPacketIndex) const;
const AudioStreamPacketDescriptionExtended front() const { return (*this)[0]; }
const AudioStreamPacketDescriptionExtended back() const { return (*this)[mSize-1]; }
-
+
//SInt64 PacketForByte(SInt64 inByteOffset) const;
SInt64 ByteForPacket(SInt64 inPacketIndex) const { return (*this)[inPacketIndex].mStartOffset; }
-
+
class iterator {
public:
typedef std::input_iterator_tag iterator_category;
@@ -90,18 +90,18 @@ public:
typedef SInt64 difference_type;
typedef AudioStreamPacketDescriptionExtended value_type;
typedef value_type& reference;
-
+
iterator() : mTable(NULL), mIndex(0) {}
iterator(const CompressedPacketTable* table, SInt64 index) : mTable(table), mIndex(index) {}
iterator(const iterator& that) : mTable(that.mTable), mIndex(that.mIndex) {}
-
+
iterator& operator=(const iterator& that) { mTable = that.mTable; mIndex = that.mIndex; return *this; }
-
+
const AudioStreamPacketDescriptionExtended operator*() const { return (*mTable)[mIndex]; }
const AudioStreamPacketDescriptionExtended* const operator->() { mValue = (*mTable)[mIndex]; return &mValue; }
iterator& operator++() { ++mIndex; return *this; }
iterator& operator--() { --mIndex; return *this; }
-
+
SInt64 operator-(const iterator& that) { return mIndex - that.mIndex; }
const iterator operator-(SInt64 index) { return iterator(mTable, mIndex - index); }
const iterator operator+(SInt64 index) { return iterator(mTable, mIndex + index); }
@@ -114,52 +114,52 @@ public:
SInt64 mIndex;
AudioStreamPacketDescriptionExtended mValue; // in order to support operator-> .
};
-
+
iterator begin() const { return iterator(this, 0); }
iterator end() const { return iterator(this, mSize); }
-
+
private:
struct TinyContiguousPacketDescription
{
UInt16 mNextOffset;
};
-
+
struct TinyDiscontiguousPacketDescription : TinyContiguousPacketDescription
{
UInt16 mDataByteSize;
};
-
- // There could be a 24 bit packet description. But ALAC is who usually needs SmallContiguousPacketDescription and
- // it already uses 8x fewer packet descriptions than AAC due to the mFramesPerPacket being 8x greater.
+
+ // There could be a 24 bit packet description. But ALAC is who usually needs SmallContiguousPacketDescription and
+ // it already uses 8x fewer packet descriptions than AAC due to the mFramesPerPacket being 8x greater.
// So there isn't as great a need for saving space. 4 bytes per packet is OK for ALAC.
-
+
struct SmallContiguousPacketDescription
{
UInt32 mNextOffset;
};
-
+
struct SmallDiscontiguousPacketDescription : SmallContiguousPacketDescription
{
UInt16 mDataByteSize;
};
-
+
struct BigContiguousPacketDescription
{
UInt64 mNextOffset;
};
-
+
struct BigDiscontiguousPacketDescription : BigContiguousPacketDescription
{
UInt32 mDataByteSize;
};
-
+
struct PacketBase
{
SInt64 mBaseOffset;
UInt8 mDescType;
void* mDescs;
};
-
+
enum {
kTinyContiguousPacketDescription,
kTinyDiscontiguousPacketDescription,
@@ -171,14 +171,14 @@ private:
};
static const UInt32 kShift;
static const UInt32 kMask;
-
+
bool isContiguous(PacketBase& base);
bool hasVariableFrames(PacketBase& base);
UInt32 largestPacket(PacketBase& base);
-
+
void Compress(PacketBase& base);
-private:
+private:
std::vector<PacketBase> mBases;
UInt64 mSize;
UInt32 mFramesPerPacket;
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.cpp b/libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.cpp
index c8a93d2756..9ef9be24fb 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.cpp
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.cpp
@@ -2,14 +2,14 @@
File: DataSource.cpp
Abstract: DataSource.h
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#include "DataSource.h"
#if TARGET_OS_WIN32
@@ -70,7 +70,7 @@ DataSource::~DataSource()
{
}
-SInt64 DataSource::CalcOffset( UInt16 positionMode,
+SInt64 DataSource::CalcOffset( UInt16 positionMode,
SInt64 positionOffset,
SInt64 currentOffset,
SInt64 size)
@@ -120,10 +120,10 @@ OSStatus MacFile_DataSource::SetSize(SInt64 inSize)
OSStatus MacFile_DataSource::ReadBytes(
- UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+ UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount)
{
if (actualCount) *actualCount = 0;
@@ -135,10 +135,10 @@ OSStatus MacFile_DataSource::ReadBytes(
}
OSStatus MacFile_DataSource::WriteBytes(
- UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+ UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount)
{
if (!buffer) return kAudio_ParamError;
@@ -162,7 +162,7 @@ UnixFile_DataSource::~UnixFile_DataSource()
{
if (mCloseOnDelete) close(mFileD);
}
-
+
OSStatus UnixFile_DataSource::GetSize(SInt64& outSize)
{
#if 0 // 6764274 using the cached file size causes a regression for apps that play a file while writing to it.
@@ -197,31 +197,31 @@ OSStatus UnixFile_DataSource::GetPos(SInt64& outPos) const
return noErr;
}
-SInt64 UnixFile_DataSource::UFCurrentOffset (UInt16 positionMode,
+SInt64 UnixFile_DataSource::UFCurrentOffset (UInt16 positionMode,
SInt64 positionOffset)
{
SInt64 offset = -1;
- switch (positionMode & kPositionModeMask)
+ switch (positionMode & kPositionModeMask)
{
- /*case fsAtMark :
+ /*case fsAtMark :
{
SInt64 pos;
OSStatus result = GetPos (pos);
if (result) return result;
- offset = pos;
+ offset = pos;
break;
}*/
case SEEK_SET :
{
- offset = positionOffset;
+ offset = positionOffset;
break;
}
- case SEEK_END :
+ case SEEK_END :
{
SInt64 size;
OSStatus result = GetSize (size);
if (result) return result;
- offset = size + positionOffset;
+ offset = size + positionOffset;
break;
}
case SEEK_CUR :
@@ -229,23 +229,23 @@ SInt64 UnixFile_DataSource::UFCurrentOffset (UInt16 positionMode,
SInt64 pos;
OSStatus result = GetPos (pos);
if (result) return result;
- offset = positionOffset + pos;
+ offset = positionOffset + pos;
break;
}
}
return offset;
}
-
+
OSStatus UnixFile_DataSource::ReadBytes( UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount)
{
if (actualCount) *actualCount = 0;
if (!buffer) return kAudio_ParamError;
- // can't use current offset as we need to go to the disk too much
+ // can't use current offset as we need to go to the disk too much
SInt64 offset = UFCurrentOffset (positionMode, positionOffset);
if (offset < 0) return kAudioFilePositionError;
@@ -260,7 +260,7 @@ OSStatus UnixFile_DataSource::ReadBytes( UInt16 positionMode,
else if (requestCount > remain) requestCount = remain;
} while (false);
#endif
-
+
if (requestCount <= 0) {
if (actualCount) *actualCount = 0;
return noErr;
@@ -283,20 +283,20 @@ OSStatus UnixFile_DataSource::ReadBytes( UInt16 positionMode,
#endif
if (numBytes == -1) return kAudioFilePositionError;
mFilePointer = offset + numBytes;
-
+
if (actualCount) *actualCount = (UInt32)numBytes;
return noErr;
}
-
-OSStatus UnixFile_DataSource::WriteBytes(UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+
+OSStatus UnixFile_DataSource::WriteBytes(UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount)
{
if (!buffer) return kAudio_ParamError;
- // can't use current offset as we need to go to the disk too much
+ // can't use current offset as we need to go to the disk too much
SInt64 offset = UFCurrentOffset (positionMode, positionOffset);
if (offset < 0) return kAudioFilePositionError;
@@ -320,7 +320,7 @@ OSStatus UnixFile_DataSource::WriteBytes(UInt16 positionMode,
#endif
if (numBytes == -1) return kAudioFilePositionError;
mFilePointer = offset + numBytes;
-
+
if (actualCount) *actualCount = (UInt32)numBytes;
return noErr;
}
@@ -330,50 +330,50 @@ OSStatus UnixFile_DataSource::WriteBytes(UInt16 positionMode,
#define NO_CACHE 0
OSStatus Cached_DataSource::ReadFromHeaderCache(
- SInt64 offset,
+ SInt64 offset,
UInt32 requestCount,
- void *buffer,
+ void *buffer,
UInt32* actualCount)
{
if (actualCount) *actualCount = 0;
OSStatus err = noErr;
ByteCount theActualCount = 0;
-#if VERBOSE
+#if VERBOSE
printf("read from header %lld %lu %lld %lu\n", offset, requestCount, 0LL, mHeaderCacheSize);
#endif
- if (!mHeaderCache())
+ if (!mHeaderCache())
{
mHeaderCache.allocBytes(mHeaderCacheSize, true);
err = mDataSource->ReadBytes(SEEK_SET, 0, mHeaderCacheSize, mHeaderCache(), &mHeaderCacheSize);
if (err == kAudioFileEndOfFileError) err = noErr;
if (err) return err;
}
-
+
ByteCount firstPart = std::min((ByteCount)requestCount, (ByteCount)(mHeaderCacheSize - offset));
ByteCount secondPart = requestCount - firstPart;
-
+
memcpy(buffer, mHeaderCache + (ByteCount)offset, firstPart);
theActualCount = firstPart;
-
+
if (secondPart) {
UInt32 secondPartActualCount = 0;
err = mDataSource->ReadBytes(SEEK_SET, mHeaderCacheSize, static_cast<UInt32>(secondPart), (char*)buffer + firstPart, &secondPartActualCount);
theActualCount += secondPartActualCount;
}
-
+
if (actualCount) *actualCount = (UInt32)theActualCount;
mOffset = offset + theActualCount;
-
+
return err;
}
OSStatus Cached_DataSource::ReadBytes(
- UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+ UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount)
{
if (actualCount) *actualCount = 0;
@@ -384,7 +384,7 @@ OSStatus Cached_DataSource::ReadBytes(
if (!buffer) return kAudio_ParamError;
if ((positionMode & kPositionModeMask) != SEEK_END) size = 0; // not used in this case
- else
+ else
{
err = GetSize(size);
if (err) return err;
@@ -392,7 +392,7 @@ OSStatus Cached_DataSource::ReadBytes(
SInt64 offset = CalcOffset(positionMode, positionOffset, mOffset, size);
if (offset < 0) return kAudioFilePositionError;
-
+
if (offset < mHeaderCacheSize) {
return ReadFromHeaderCache(offset, requestCount, buffer, actualCount);
}
@@ -405,10 +405,10 @@ OSStatus Cached_DataSource::ReadBytes(
SInt64 cacheEnd = mBodyCacheOffset + mBodyCacheCurSize;
if (mBodyCache() && requestCount < mBodyCacheSize && offset >= mBodyCacheOffset && offset < cacheEnd)
{
- if (offset + requestCount <= cacheEnd)
+ if (offset + requestCount <= cacheEnd)
{
// request is entirely within cache
-#if VERBOSE
+#if VERBOSE
printf("request is entirely within cache %lld %lu %lld %lu\n", offset, requestCount, mBodyCacheOffset, mBodyCacheCurSize);
#endif
memcpy(buffer, mBodyCache + (size_t)(offset - mBodyCacheOffset), requestCount);
@@ -417,25 +417,25 @@ OSStatus Cached_DataSource::ReadBytes(
else
{
// part of request is within cache. copy, read next cache block, copy.
-#if VERBOSE
+#if VERBOSE
printf("part of request is within cache %lld %lu %lld %lu\n", offset, requestCount, mBodyCacheOffset, mBodyCacheCurSize);
#endif
-
+
// copy first part.
ByteCount firstPart = (ByteCount)(cacheEnd - offset);
ByteCount secondPart = requestCount - firstPart;
-#if VERBOSE
- printf("memcpy offset %lld mBodyCacheOffset %lld offset - mBodyCacheOffset %lld firstPart %lu requestCount %lu\n",
+#if VERBOSE
+ printf("memcpy offset %lld mBodyCacheOffset %lld offset - mBodyCacheOffset %lld firstPart %lu requestCount %lu\n",
offset, mBodyCacheOffset, offset - mBodyCacheOffset, firstPart, requestCount);
#endif
memcpy(buffer, mBodyCache + (size_t)(offset - mBodyCacheOffset), firstPart);
-
+
theActualCount = static_cast<UInt32>(firstPart);
-
+
// read new block
SInt64 nextOffset = mBodyCacheOffset + mBodyCacheCurSize;
err = mDataSource->ReadBytes(SEEK_SET, nextOffset, mBodyCacheSize, mBodyCache(), &mBodyCacheCurSize);
-
+
if (err == kAudioFileEndOfFileError) err = noErr;
if (err) goto leave;
@@ -447,11 +447,11 @@ OSStatus Cached_DataSource::ReadBytes(
theActualCount = static_cast<UInt32>(firstPart + secondPart);
}
}
- else
+ else
{
if (requestCount > mBodyCacheSize)
{
-#if VERBOSE
+#if VERBOSE
printf("large request %lld %lu %lld %lu\n", offset, requestCount, mBodyCacheOffset, mBodyCacheCurSize);
#endif
// the request is larger than we normally cache, just do a read and don't cache.
@@ -461,19 +461,19 @@ OSStatus Cached_DataSource::ReadBytes(
else
{
// request is outside cache. read new block.
-#if VERBOSE
+#if VERBOSE
printf("request is outside cache %lld %lu %lld %lu\n", offset, requestCount, mBodyCacheOffset, mBodyCacheCurSize);
#endif
- if (!mBodyCache())
+ if (!mBodyCache())
{
mBodyCache.allocBytes(mBodyCacheSize, true);
-#if VERBOSE
+#if VERBOSE
printf("alloc mBodyCache %08X\n", mBodyCache());
#endif
}
mBodyCacheOffset = offset;
err = mDataSource->ReadBytes(SEEK_SET, mBodyCacheOffset, mBodyCacheSize, mBodyCache(), &mBodyCacheCurSize);
-#if VERBOSE
+#if VERBOSE
printf("read %08X %d mBodyCacheOffset %lld %lu %lu\n", err, err, mBodyCacheOffset, mBodyCacheSize, mBodyCacheCurSize);
#endif
if (err == kAudioFileEndOfFileError) err = noErr;
@@ -482,32 +482,32 @@ OSStatus Cached_DataSource::ReadBytes(
theActualCount = std::min(requestCount, mBodyCacheCurSize);
memcpy(buffer, mBodyCache(), theActualCount);
}
-
+
}
leave:
#endif
if (actualCount) *actualCount = (UInt32)theActualCount;
-#if VERBOSE
+#if VERBOSE
printf("<<read err %d actualCount %lu\n", err, *actualCount);
#endif
return err;
}
OSStatus Cached_DataSource::WriteBytes(
- UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+ UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount)
{
OSStatus err = noErr;
SInt64 size;
if (!buffer) return kAudio_ParamError;
-
+
if ((positionMode & kPositionModeMask) != SEEK_END) size = 0; // not used in this case
- else
+ else
{
err = GetSize(size);
if (err) return err;
@@ -515,18 +515,18 @@ OSStatus Cached_DataSource::WriteBytes(
SInt64 offset = CalcOffset(positionMode, positionOffset, mOffset, size);
if (offset < 0) return kAudioFilePositionError;
-
- if (mHeaderCache() && offset < mHeaderCacheSize)
+
+ if (mHeaderCache() && offset < mHeaderCacheSize)
{
// header cache write through
ByteCount firstPart = std::min((ByteCount)requestCount, (ByteCount)(mHeaderCacheSize - offset));
-#if VERBOSE
+#if VERBOSE
printf("header cache write through %lu %lu\n", mHeaderCacheSize, firstPart);
#endif
memcpy(mHeaderCache + (size_t)offset, buffer, firstPart);
}
-
-#if VERBOSE
+
+#if VERBOSE
printf("write %lld %lu %lld %d %lld\n", offset, requestCount, mOffset, positionMode, positionOffset);
#endif
@@ -535,18 +535,18 @@ OSStatus Cached_DataSource::WriteBytes(
{
// body cache write through
ByteCount firstPart = std::min((SInt64)requestCount, cacheEnd - offset);
-#if VERBOSE
+#if VERBOSE
printf("body cache write through %lld %lu %lld %lu\n", mBodyCacheOffset, mBodyCacheCurSize, offset, firstPart);
#endif
memcpy(mBodyCache + (offset - mBodyCacheOffset), buffer, firstPart);
}
-
+
UInt32 theActualCount;
err = mDataSource->WriteBytes(positionMode, positionOffset, requestCount, buffer, &theActualCount);
-
+
mOffset = offset + theActualCount;
if (actualCount) *actualCount = (UInt32)theActualCount;
-
+
return err;
}
@@ -555,11 +555,11 @@ OSStatus Cached_DataSource::WriteBytes(
//////////////////////////////////////////////////////////////////////////////////////////
Seekable_DataSource::Seekable_DataSource( void * inClientData,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc)
- : DataSource(false), mClientData(inClientData), mReadFunc(inReadFunc), mWriteFunc(inWriteFunc),
+ : DataSource(false), mClientData(inClientData), mReadFunc(inReadFunc), mWriteFunc(inWriteFunc),
mSizeFunc(inGetSizeFunc), mSetSizeFunc(inSetSizeFunc)
{
}
@@ -585,15 +585,15 @@ OSStatus Seekable_DataSource::SetSize(SInt64 inSize)
return (*mSetSizeFunc)(mClientData, inSize);
}
-OSStatus Seekable_DataSource::ReadBytes(
- UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+OSStatus Seekable_DataSource::ReadBytes(
+ UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount)
{
OSStatus err;
-
+
if (actualCount) *actualCount = 0;
if (!mReadFunc) return kAudioFileOperationNotSupportedError;
if (!buffer) return kAudio_ParamError;
@@ -605,16 +605,16 @@ OSStatus Seekable_DataSource::ReadBytes(
if (err) return err;
SInt64 offset = CalcOffset(positionMode, positionOffset, mOffset, size);
-
+
// request is outside bounds of file
- if (offset < 0)
+ if (offset < 0)
return kAudioFilePositionError;
- if (offset >= size)
+ if (offset >= size)
return kAudioFileEndOfFileError;
-
+
// reduce request if it exceeds the amount available
requestCount = static_cast<UInt32>(std::min((SInt64)requestCount, size - offset));
-
+
UInt32 theActualCount = 0;
err = (*mReadFunc)(mClientData, offset, requestCount, buffer, &theActualCount);
if (actualCount) *actualCount = theActualCount;
@@ -622,23 +622,23 @@ OSStatus Seekable_DataSource::ReadBytes(
return err;
}
-
+
OSStatus Seekable_DataSource::WriteBytes(
- UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+ UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount)
{
OSStatus err;
-
+
if (!mWriteFunc) return kAudioFileOperationNotSupportedError;
if (!buffer) return kAudio_ParamError;
SInt64 size;
positionMode &= kPositionModeMask;
if (positionMode != SEEK_END) size = 0; // not used in this case
- else
+ else
{
err = GetSize(size);
if (err) return err;
@@ -646,7 +646,7 @@ OSStatus Seekable_DataSource::WriteBytes(
SInt64 offset = CalcOffset(positionMode, positionOffset, mOffset, size);
if (offset < 0) return kAudioFilePositionError;
-
+
UInt32 theActualCount;
err = (*mWriteFunc)(mClientData, offset, requestCount, buffer, &theActualCount);
if (err) return err;
@@ -658,16 +658,16 @@ OSStatus Seekable_DataSource::WriteBytes(
//////////////////////////////////////////////////////////////////////////////////////////
OSStatus Buffer_DataSource::ReadBytes(
- UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+ UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount)
{
if (actualCount) *actualCount = 0;
- SInt64 offsetWithinBuffer = CalcOffset(positionMode, positionOffset, mOffset, mDataByteSize + mStartOffset) - mStartOffset;
+ SInt64 offsetWithinBuffer = CalcOffset(positionMode, positionOffset, mOffset, mDataByteSize + mStartOffset) - mStartOffset;
if (offsetWithinBuffer < 0 || offsetWithinBuffer >= mDataByteSize) return kAudioFilePositionError;
-
+
SInt64 bytesAfterOffset = mDataByteSize - offsetWithinBuffer;
SInt64 theActualCount = std::min(bytesAfterOffset, (SInt64)requestCount);
@@ -677,7 +677,7 @@ OSStatus Buffer_DataSource::ReadBytes(
}
memcpy(buffer, mData + offsetWithinBuffer, theActualCount);
-
+
if (actualCount) *actualCount = static_cast<UInt32>(theActualCount);
mOffset = offsetWithinBuffer + theActualCount;
diff --git a/libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.h b/libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.h
index 6c79c94df9..916ae071ef 100644
--- a/libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.h
+++ b/libs/appleutility/CoreAudio/AudioFile/AFPublic/DataSource.h
@@ -2,14 +2,14 @@
File: DataSource.h
Abstract: Part of CoreAudio Utility Classes
Version: 1.1
-
+
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
Inc. ("Apple") in consideration of your agreement to the following
terms, and your use, installation, modification or redistribution of
this Apple software constitutes acceptance of these terms. If you do
not agree with these terms, please do not use, install, modify or
redistribute this Apple software.
-
+
In consideration of your agreement to abide by the following terms, and
subject to these terms, Apple grants you a personal, non-exclusive
license, under Apple's copyrights in this original Apple software (the
@@ -25,13 +25,13 @@
implied, are granted by Apple herein, including but not limited to any
patent rights that may be infringed by your derivative works or by other
works in which the Apple Software may be incorporated.
-
+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
-
+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@@ -40,9 +40,9 @@
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
+
Copyright (C) 2014 Apple Inc. All Rights Reserved.
-
+
*/
#ifndef __DataSource_h__
#define __DataSource_h__
@@ -63,10 +63,10 @@
class DataSource
{
public:
-
+
DataSource(Boolean inCloseOnDelete);
virtual ~DataSource();
-
+
virtual OSStatus GetSize32(UInt32& outSize)
{
SInt64 size64;
@@ -76,43 +76,43 @@ public:
outSize = (UInt32)size64;
return noErr;
}
-
+
virtual OSStatus GetSize(SInt64& outSize) =0;
-
+
virtual OSStatus SetSize(SInt64 inSize)=0;
-
- virtual OSStatus GetPos(SInt64& outPos) const=0;
-
- /* non seekable data sources should use fsAtMark for the positionMode (or SEEK_CUR with offset zero,
- or SEEK_SET with offset equal to the current position in the stream, in other words no seeking from the
+
+ virtual OSStatus GetPos(SInt64& outPos) const=0;
+
+ /* non seekable data sources should use fsAtMark for the positionMode (or SEEK_CUR with offset zero,
+ or SEEK_SET with offset equal to the current position in the stream, in other words no seeking from the
current position is allowed.)
*/
-
- virtual OSStatus ReadBytes( UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+
+ virtual OSStatus ReadBytes( UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount)=0;
-
- virtual OSStatus WriteBytes(UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+
+ virtual OSStatus WriteBytes(UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount)=0;
-
+
virtual void SetCloseOnDelete(Boolean inFlag) { mCloseOnDelete = inFlag; }
-
+
virtual Boolean CanSeek() const=0;
virtual Boolean CanGetSize() const=0;
virtual Boolean CanSetSize() const=0;
virtual Boolean CanRead() const=0;
virtual Boolean CanWrite() const=0;
-
+
protected:
Boolean mCloseOnDelete;
-
+
/* utility method */
- SInt64 CalcOffset( UInt16 positionMode,
+ SInt64 CalcOffset( UInt16 positionMode,
SInt64 positionOffset,
SInt64 currentOffset,
SInt64 size);
@@ -131,33 +131,33 @@ class MacFile_DataSource : public DataSource
{
FSIORefNum mFileNum;
SInt8 mPermissions;
-
+
public:
MacFile_DataSource( FSIORefNum inForkRefNum, SInt8 inPermissions, Boolean inCloseOnDelete);
virtual ~MacFile_DataSource();
-
+
virtual OSStatus GetSize(SInt64& outSize);
- virtual OSStatus GetPos(SInt64& outPos) const;
-
+ virtual OSStatus GetPos(SInt64& outPos) const;
+
virtual OSStatus SetSize(SInt64 inSize);
-
- virtual OSStatus ReadBytes( UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+
+ virtual OSStatus ReadBytes( UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount);
-
- virtual OSStatus WriteBytes(UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+
+ virtual OSStatus WriteBytes(UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount);
-
+
virtual Boolean CanSeek() const { return true; }
virtual Boolean CanGetSize() const { return true; }
virtual Boolean CanSetSize() const { return true; }
-
+
virtual Boolean CanRead() const { return mPermissions & kAudioFileReadPermission; }
virtual Boolean CanWrite() const { return mPermissions & kAudioFileWritePermission; }
};
@@ -171,39 +171,39 @@ class UnixFile_DataSource : public DataSource
UInt32 mNoCache;
SInt64 mCachedSize;
SInt64 mFilePointer;
-
+
public:
UnixFile_DataSource( int inFD, SInt8 inPermissions, Boolean inCloseOnDelete);
virtual ~UnixFile_DataSource();
-
+
virtual OSStatus GetSize(SInt64& outSize);
- virtual OSStatus GetPos(SInt64& outPos) const;
-
+ virtual OSStatus GetPos(SInt64& outPos) const;
+
virtual OSStatus SetSize(SInt64 inSize);
-
- virtual OSStatus ReadBytes( UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+
+ virtual OSStatus ReadBytes( UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount);
-
- virtual OSStatus WriteBytes(UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+
+ virtual OSStatus WriteBytes(UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount);
-
+
virtual Boolean CanSeek() const { return true; }
virtual Boolean CanGetSize() const { return true; }
virtual Boolean CanSetSize() const { return true; }
-
+
virtual Boolean CanRead() const { return mPermissions & kAudioFileReadPermission; }
virtual Boolean CanWrite() const { return mPermissions & kAudioFileWritePermission; }
private:
- SInt64 UFCurrentOffset (UInt16 positionMode,
+ SInt64 UFCurrentOffset (UInt16 positionMode,
SInt64 positionOffset);
};
@@ -225,50 +225,50 @@ class Cached_DataSource : public DataSource
SInt64 mBodyCacheOffset;
SInt64 mOffset;
Boolean mOwnDataSource;
-
+
public:
Cached_DataSource(DataSource* inDataSource, UInt32 inHeaderCacheSize = 4096, UInt32 inBodyCacheSize = 32768, Boolean inOwnDataSource = true)
- : DataSource(false),
- mDataSource(inDataSource), mHeaderCacheSize(inHeaderCacheSize),
- mBodyCacheSize(inBodyCacheSize), mBodyCacheCurSize(0), mBodyCacheOffset(-1),
+ : DataSource(false),
+ mDataSource(inDataSource), mHeaderCacheSize(inHeaderCacheSize),
+ mBodyCacheSize(inBodyCacheSize), mBodyCacheCurSize(0), mBodyCacheOffset(-1),
mOffset(0),
mOwnDataSource(inOwnDataSource)
{
}
-
+
virtual ~Cached_DataSource()
{
if (mOwnDataSource) delete mDataSource;
}
-
+
virtual OSStatus GetSize(SInt64& outSize) { return mDataSource->GetSize(outSize); }
- virtual OSStatus GetPos(SInt64& outPos) const { return mDataSource->GetPos(outPos); }
-
+ virtual OSStatus GetPos(SInt64& outPos) const { return mDataSource->GetPos(outPos); }
+
virtual OSStatus SetSize(SInt64 inSize) { return mDataSource->SetSize(inSize); }
-
- virtual OSStatus ReadBytes( UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+
+ virtual OSStatus ReadBytes( UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount);
-
- virtual OSStatus WriteBytes( UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+
+ virtual OSStatus WriteBytes( UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount);
-
- OSStatus ReadFromHeaderCache( SInt64 offset,
+
+ OSStatus ReadFromHeaderCache( SInt64 offset,
UInt32 requestCount,
- void *buffer,
+ void *buffer,
UInt32* actualCount);
-
+
virtual Boolean CanSeek() const { return mDataSource->CanSeek(); }
virtual Boolean CanGetSize() const { return mDataSource->CanGetSize(); }
virtual Boolean CanSetSize() const { return mDataSource->CanSetSize(); }
-
+
virtual Boolean CanRead() const { return mDataSource->CanRead(); }
virtual Boolean CanWrite() const { return mDataSource->CanWrite(); }
};
@@ -286,37 +286,37 @@ class Seekable_DataSource : public DataSource
{
void * mClientData;
SInt64 mOffset;
-
+
AudioFile_ReadProc mReadFunc;
AudioFile_WriteProc mWriteFunc;
AudioFile_GetSizeProc mSizeFunc;
AudioFile_SetSizeProc mSetSizeFunc;
-
+
public:
Seekable_DataSource( void * inClientData,
- AudioFile_ReadProc inReadFunc,
- AudioFile_WriteProc inWriteFunc,
+ AudioFile_ReadProc inReadFunc,
+ AudioFile_WriteProc inWriteFunc,
AudioFile_GetSizeProc inGetSizeFunc,
AudioFile_SetSizeProc inSetSizeFunc
);
-
+
virtual ~Seekable_DataSource();
-
+
virtual OSStatus GetSize(SInt64& outSize);
- virtual OSStatus GetPos(SInt64& outPos) const { outPos = mOffset; return noErr; };
-
+ virtual OSStatus GetPos(SInt64& outPos) const { outPos = mOffset; return noErr; };
+
virtual OSStatus SetSize(SInt64 inSize);
-
- virtual OSStatus ReadBytes( UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+
+ virtual OSStatus ReadBytes( UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount);
-
- virtual OSStatus WriteBytes(UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+
+ virtual OSStatus WriteBytes(UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount);
virtual Boolean CanSeek() const { return true; }
@@ -340,24 +340,24 @@ public:
const void * inData,
SInt64 inStartOffset = 0
) : DataSource(false), mDataByteSize(inDataByteSize), mData((const char*)inData), mStartOffset(inStartOffset), mOffset(mStartOffset) {}
-
+
virtual ~Buffer_DataSource() {}
-
+
virtual OSStatus GetSize(SInt64& outSize) { outSize = mDataByteSize + mStartOffset; return noErr; }
- virtual OSStatus GetPos(SInt64& outPos) const { outPos = mOffset; return noErr; };
-
+ virtual OSStatus GetPos(SInt64& outPos) const { outPos = mOffset; return noErr; };
+
virtual OSStatus SetSize(SInt64 inSize) { throw std::runtime_error("not writable"); }
-
- virtual OSStatus ReadBytes( UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- void *buffer,
+
+ virtual OSStatus ReadBytes( UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ void *buffer,
UInt32* actualCount);
-
- virtual OSStatus WriteBytes(UInt16 positionMode,
- SInt64 positionOffset,
- UInt32 requestCount,
- const void *buffer,
+
+ virtual OSStatus WriteBytes(UInt16 positionMode,
+ SInt64 positionOffset,
+ UInt32 requestCount,
+ const void *buffer,
UInt32* actualCount) { throw std::runtime_error("not writable"); }
virtual Boolean CanSeek() const { return true; }