AudioFilePropertyID

// Audio File Properties

音频文件获取/设置属性调用的常量
@enum       Audio File Properties
@abstract   constants for AudioFile get/set property call

具体的参数

       音频文件的格式   char *
@constant   kAudioFilePropertyFileFormat 
                An AudioFileTypeID that identifies the format of the file

音频数据的格式   AudioStreamPacketDescription
@constant   kAudioFilePropertyDataFormat 
                An AudioStreamBasicDescription describing the format of the audio data

支持的格式列表 编码格式list
@constant   kAudioFilePropertyFormatList 
                In order to support formats such as AAC SBR where an encoded data stream can be decoded to 
                multiple destination formats, this property returns an array of AudioFormatListItems (see AudioFormat.h) of those formats.
                The default behavior is to return the an AudioFormatListItem that has the same AudioStreamBasicDescription 
                that kAudioFilePropertyDataFormat returns.

是否可以优化  0/1
@constant   kAudioFilePropertyIsOptimized 
                A UInt32 indicating whether an Audio File has been optimized.
                Optimized means it is ready to start having sound data written to it. 
                A value of 0 indicates the file needs to be optimized.
                A value of 1 indicates the file is currently optimized.

Magic Cookie文件头 char *
@constant   kAudioFilePropertyMagicCookieData 
                A void * pointing to memory set up by the caller.
                Some file types require that a magic cookie be provided before packets can be written
                to the file, so this property should be set before calling 
                AudioFileWriteBytes()/AudioFileWritePackets() if a magic cookie exists.

文件长度    Uint64
@constant   kAudioFilePropertyAudioDataByteCount 
                a UInt64 that indicates the number of bytes of audio data contained in the file

Packet的数目   Uint64
@constant   kAudioFilePropertyAudioDataPacketCount 
                a UInt64 that indicates the number of packets of audio data contained in the file

最大的Packet大小 Uint32
@constant   kAudioFilePropertyMaximumPacketSize 
                a UInt32 that indicates the maximum size of a packet for the data contained in the file

数据的偏移量  SInt64
@constant   kAudioFilePropertyDataOffset 
                a SInt64 that indicates the byte offset in the file of the audio data.

声道结构    AudioFormatListItem
@constant   kAudioFilePropertyChannelLayout 
                An AudioChannelLayout struct.

是否更新文件头信息   1/0
@constant   kAudioFilePropertyDeferSizeUpdates 
                A UInt32. If 1, then updating the files sizes in the header is not done for every write, 
                but deferred until the file is read, optimized or closed. This is more efficient, but less safe
                since, if the application crashes before the size is updated, the file may not be readable.
                The default value is one, it doesn't update the header.

@constant   kAudioFilePropertyDataFormatName 
                This is deprecated. Use kAudioFormatProperty_FormatName in AudioFormat.h instead.

音频中所有markers    CFStringRef表示的Markers列表
@constant   kAudioFilePropertyMarkerList 
                access the list of markers defined in the file. returns an AudioFileMarkerList.
                The CFStringRefs in the returned structs must be released by the client.
                (available in 10.2.4 and later)

音频中所有Region CFStringRef表示的Region列表
@constant   kAudioFilePropertyRegionList 
                access the list of regions defined in the file. returns an Array of AudioFileRegions.
                The CFStringRefs in the returned structs must be released by the client.
                (available in 10.2.4 and later)

将包数转换成帧数    AudioFramePacketTranslation中mPacket做输入,mFrame做输出
@constant   kAudioFilePropertyPacketToFrame 
                pass a AudioFramePacketTranslation with mPacket filled out and get mFrame back. mFrameOffsetInPacket is ignored.

将帧数转换成包数    AudioFramePacketTranslation中mFrame做输入,mFrameOffsetInPacket,mPacket做输出
@constant   kAudioFilePropertyFrameToPacket 
                pass a AudioFramePacketTranslation with mFrame filled out and get mPacket and mFrameOffsetInPacket back.
                
@constant   kAudioFilePropertyRestrictsRandomAccess
                A UInt32 indicating whether an Audio File contains packets that cannot be used as random access points.
                A value of 0 indicates that any packet can be used as a random access point, i.e. that a decoder can start decoding with any packet.
                A value of 1 indicates that some packets cannot be used as random access points, i.e. that kAudioFilePropertyPacketToRollDistance must be employed in order to identify an appropriate initial packet for decoding.
@constant   kAudioFilePropertyPacketToRollDistance
                Pass an AudioPacketRollDistanceTranslation with mPacket filled out and get mRollDistance back.
                The roll distance indicates the count of packets that must be decoded prior to the packet with the specified number in order to achieve the best practice for the decoding of that packet.
                For file types for which a minimal roll distance is prohibitively expensive to determine per packet, the value returned may be derived from an upper bound for all packet roll distances.
                If the value of kAudioFilePropertyRestrictsRandomAccess is 1, either kAudioFilePropertyPacketToRollDistance
                or kAudioFilePropertyPacketToDependencyInfo must be used in order to identify an appropriate random access point.
                If the value of kAudioFilePropertyRestrictsRandomAccess is 0, kAudioFilePropertyPacketToRollDistance can be used in
                order to identify the best available random access point, which may be prior to the specified packet even if the specified
                packet can be used as a random access point.
@constant   kAudioFilePropertyPreviousIndependentPacket
@constant   kAudioFilePropertyNextIndependentPacket
                Pass an AudioIndependentPacketTranslation with mPacket filled out and get mIndependentlyDecodablePacket back.
                A value of -1 means that no independent packet is present in the stream in the direction of interest. Otherwise,
                for kAudioFilePropertyPreviousIndependentPacket, mIndependentlyDecodablePacket will be less than mPacket, and
                for kAudioFilePropertyNextIndependentPacket, mIndependentlyDecodablePacket will be greater than mPacket.
@constant   kAudioFilePropertyPacketToDependencyInfo
                Pass an AudioPacketDependencyInfoTranslation with mPacket filled out and get mIsIndependentlyDecodable
                and mPrerollPacketCount back.
                A value of 0 for mIsIndependentlyDecodable indicates that the specified packet is not independently decodable.
                A value of 1 for mIsIndependentlyDecodable indicates that the specified packet is independently decodable.
                For independently decodable packets, mPrerollPacketCount indicates the count of packets that must be decoded
                after the packet with the specified number in order to refresh the decoder.
                If the value of kAudioFilePropertyRestrictsRandomAccess is 1, either kAudioFilePropertyPacketToRollDistance or
                kAudioFilePropertyPacketToDependencyInfo must be used in order to identify an appropriate random access point.

将包数转换成字节数   AudioFramePacketTranslation中mPacket做输入,mByte做输出
    @constant   kAudioFilePropertyPacketToByte
                pass an AudioBytePacketTranslation struct with mPacket filled out and get mByte back.
                mByteOffsetInPacket is ignored. If the mByte value is an estimate then 
                kBytePacketTranslationFlag_IsEstimate will be set in the mFlags field.

 将字节数转换成包数  AudioFramePacketTranslation中mByte做输入,mPacket和mByteOffsetInPacket做输出
 @constant  kAudioFilePropertyByteToPacket
                pass an AudioBytePacketTranslation struct with mByte filled out and get mPacket and
                mByteOffsetInPacket back. If the mPacket value is an estimate then 
                kBytePacketTranslationFlag_IsEstimate will be set in the mFlags field.
            
文件中的chunk编码格式   4字符编码格式数组       
@constant   kAudioFilePropertyChunkIDs 
                returns an array of OSType four char codes for each kind of chunk in the file.

字典表示的Info   CFDictionary
@constant   kAudioFilePropertyInfoDictionary 
                returns a CFDictionary filled with information about the data contained in the file. 
                See dictionary key constants already defined for info string types. 
                AudioFileComponents are free to add keys to the dictionaries that they return for this property...
                caller is responsible for releasing the CFObject

设置PacketTableInfo   PacketTableInfo
@constant   kAudioFilePropertyPacketTableInfo 
                Gets or sets an AudioFilePacketTableInfo struct for the file types that support it.
                When setting, the sum of mNumberValidFrames, mPrimingFrames and mRemainderFrames must be the same as the total
                number of frames in all packets. If not you will get a kAudio_ParamError. The best way to ensure this is to get the value of
                the property and make sure the sum of the three values you set has the same sum as the three values you got.

理论上的最大Packet大小  Uint64
@constant   kAudioFilePropertyPacketSizeUpperBound
                a UInt32 for the theoretical maximum packet size in the file (without actually scanning
                the whole file to find the largest packet, as may happen with kAudioFilePropertyMaximumPacketSize).


@constant   kAudioFilePropertyPacketRangeByteCountUpperBound
                Pass an AudioPacketRangeByteCountTranslation with mPacket and mPacketCount filled out
                and get mByteCountUpperBound back. The value of mByteCountUpperBound can be used to allocate a buffer
                for use with AudioFileReadPacketData in order to accommodate the entire packet range.
                May require scanning in order to obtain the requested information, but even if so, no scanning will occur
                beyond the last packet in the specified range.
                For file formats in which packets are directly accessible and stored both contiguously and byte-aligned,
                the returned upper bound will be equal to the total size of the packets in the range. Otherwise the
                upper bound may reflect per-packet storage overhead.

设置写保护区大小,单位为秒   Uint32
@constant   kAudioFilePropertyReserveDuration
                The value is a Float64 of the duration in seconds of data that is expected to be written.
                Setting this property before any data has been written reserves space in the file header for a packet table 
                and/or other information so that it can appear before the audio data. Otherwise the packet table may get written at the 
                end of the file, preventing the file from being streamable.

估算的音频时长 , 单位秒   Uint32
@constant   kAudioFilePropertyEstimatedDuration
                The value is a Float64 representing an estimated duration in seconds. If duration can be calculated without scanning the entire file,
                or all the audio data packets have been scanned, the value will accurately reflect the duration of the audio data. 
码率  Uint32
@constant   kAudioFilePropertyBitRate
                Returns the bit rate for the audio data as a UInt32. For some formats this will be approximate.

    位深度 Uint32
@constant   kAudioFilePropertySourceBitDepth
                For encoded data this property returns the bit depth of the source as an SInt32, if known.
                The bit depth is expressed as a negative number if the source was floating point, e.g. -32 for float, -64 for double.

     专辑名    CFDataRef
@constant   kAudioFilePropertyAlbumArtwork
                returns a CFDataRef filled with the Album Art or NULL. 
                The caller is responsible for releasing a non-NULL CFDataRef.
                In order to parse the contents of the data, CGImageSourceCreateWithData may be used.

@constant   kAudioFilePropertyAudioTrackCount
                a UInt32 that indicates the number of audio tracks contained in the file. (get property only)
@constant   kAudioFilePropertyUseAudioTrack
                a UInt32 that indicates the number of audio tracks contained in the file. (set property only)


@constant   kAudioFilePropertyID3Tag
                A void * pointing to memory set up by the caller to contain a fully formatted ID3 tag (get/set v2.2, v2.3, or v2.4, v1 get only).
                The ID3 tag is not manipulated in anyway either for read or write. 
                When setting, this property must be called before calling AudioFileWritePackets.

你可能感兴趣的:(AudioFilePropertyID)