2012-01-31 12 views
6

iOS 5.0 प्रलेखन में विहित ऑडियो नमूना डेटा प्रकार यह कहा गया कि विहित ऑडियो डेटा प्रकार 16 बिट पर हस्ताक्षर किए पूर्णांक (link) है:क्या iOS 5

के लिए विहित ऑडियो डेटा नमूना प्रकार इनपुट और आउटपुट।

टाइपपीफ SINT16 ऑडियो नमूना टाइप;

चर्चा

इनपुट और iPhone OS में उत्पादन के लिए विहित ऑडियो नमूना प्रकार 16-बिट पूर्णांक नमूने के साथ रैखिक पीसीएम है।

लेकिन अगर मैं राइट क्लिक करें AudioSampleType मैं निम्नलिखित परिभाषा को देखने पर "परिभाषा के लिए कूद", CoreAudioTypes.h में:

#if !CA_PREFER_FIXED_POINT 
typedef Float32  AudioSampleType; 
typedef Float32  AudioUnitSampleType; 
#else 
typedef SInt16  AudioSampleType; 
typedef SInt32  AudioUnitSampleType; 
#define kAudioUnitSampleFractionBits 24 
#endif 

और फिर जब कूद करने वाली डीईएफ़ CA_PREFER_FIXED_POINT के लिए मैं देख रहा हूँ:

#if !defined(CA_PREFER_FIXED_POINT) 
    #if TARGET_OS_IPHONE 
     #if (TARGET_CPU_X86 || TARGET_CPU_X86_64 || TARGET_CPU_PPC || TARGET_CPU_PPC64) && !TARGET_IPHONE_SIMULATOR 
      #define CA_PREFER_FIXED_POINT 0 
     #else 
      #define CA_PREFER_FIXED_POINT 1 
     #endif 
    #else 
     #define CA_PREFER_FIXED_POINT 0 
    #endif 
#endif 

रन-टाइम पर मेरे कोड में जांच कर, मुझे लगता है कि CA_PREFER_FIXED_POINT को सिम्युलेटर और मेरे आईपॉड दोनों में 1 होना चाहिए।

तो, मेरे सवालों का:

  • क्या विहित प्रकार है? क्या यह डिवाइस पर हमेशाSInt16 है?
  • उपरोक्त तीसरी पंक्ति किस मामले में 'सत्य' का मूल्यांकन करती है? मेरा मतलब है, कौन सा डिवाइस आईफोन ओएस चलाता है और सूचीबद्ध सीपीयू का उपयोग करता है?
  • क्या कोई उपयोग केस है जहां मुझे CA_PREFER_FIXED_POINT से 0 (आईफोन के लिए प्रोग्रामिंग) को फिर से परिभाषित करना चाहिए?

उत्तर

7

फिर से अपने हेडर में लिंक की सामग्री, और इस लाइन पढ़ें:

#define kAudioUnitSampleFractionBits 24 

ऑडियो इनपुट और उत्पादन के लिए विहित प्रकार SInt16 के बराबर है।

अन्य ऑडियो प्रोसेसिंग के लिए कैननिकल प्रकार, जैसे कि नया आईओएस 5 फ़िल्टर ऑडियो यूनिट, 8.24 हस्ताक्षरित निश्चित बिंदु है।

यदि आप रीयल-टाइम आईओएस ऑडियो प्रोसेसिंग के लिए अपना स्वयं का डीएसपी कोड करते हैं, तो इसे विभिन्न प्रकार के बेंचमार्क करें, जैसे कि नवीनतम एआरएम कोरों में से कुछ, 32-बिट फ्लोट के अनुक्रम अक्सर इनमें से किसी भी का उपयोग करने से अधिक तेज़ होते हैं कैनोलिक प्रकारों के ऊपर, और नीयन एएसएम कोड में भी कोडित किया गया।

3

अपने Core Audio Essentials एप्पल में स्पष्ट किया बारे में विहित ऑडियो डेटा स्वरूप:

विहित ऑडियो डाटा प्रारूप मंच पर निर्भर करता है, मुख्य ऑडियो भावना इन कि में एक या दो "प्रामाणिक" ऑडियो डेटा स्वरूप है स्वरूपों हो सकता है:

  • रूपांतरण
  • प्रारूप च में एक मध्यवर्ती प्रारूप के रूप में आवश्यक या जो मुख्य ऑडियो में एक सेवा
  • एक डिफ़ॉल्ट, या मान लिया है, प्रारूप अनुकूलित है, जब आप अन्यथा एक ASBD निर्दिष्ट नहीं करते

मुख्य ऑडियो में विहित प्रारूपों इस प्रकार हैं:

  • आईओएस इनपुट और आउटपुट रैखिक 16-बिट पूर्णांक नमूने के साथ पीसीएम
  • आईओएस ऑडियो इकाइयों और 8.24-बिट निश्चित बिंदु नमूने
  • मैक इनपुट और आउटपुट के साथ अन्य ऑडियो प्रसंस्करण Noninterleaved रैखिक पीसीएम 32-बिट चल बिन्दु नमूने के साथ रैखिक पीसीएम
  • मैक ऑडियो इकाइयों और 32-बिट चल बिन्दु नमूने

लेकिन साथ अन्य ऑडियो प्रसंस्करण Noninterleaved रैखिक पीसीएम: आप CoreAudioTypes.h में में एक नजर है, तो आईओएस 8 आपको उस पर एक चर्चा मिलेगी:

"कैनोलिक" झंडे को हटा दिया गया है। CA_PREFER_FIXED_POINT निराश है क्योंकि आईओएस पर फ्लोटिंग-पॉइंट प्रदर्शन ऐसा है कि निश्चित बिंदु अब वास्तव में पसंदीदा नहीं है। सभी ऐप्पल-आपूर्ति AudioUnits समर्थन फ़्लोटिंग पॉइंट। साथ प्रारूप के सावधानी से विचार निर्दिष्ट किया जा रहा या उम्मीद रिप्लेसमेंट किया जाना चाहिए, लेकिन अक्सर kAudioFormatFlagsCanonical kAudioFormatFlagsNativeFloatPacked साथ बदला जा सकता है, और kAudioFormatFlagsNativeFloatPacked | kAudioFormatFlagIsNonInterleaved साथ kAudioFormatFlagsAudioUnitCanonical