मैं iPhone aurioTouch उदाहरण को विशेष रूप से निम्न कोड पर देख रहा हूं:
स्थिर OSStatus PerformThru (रिक्त) * रिकॉफन, ऑडियोउन्टररेंडरएक्शनफ्लैग्स * आइएएक्शनफ्लैग्स, ऑडियोटैमस्टैम्प कॉन्टेक्ट * इनटाइमस्टैम्प, यूआईआईटी 32 इनबुसनैम्बर, यूआईआईटी 32 इननंबरफ़्रेम, ऑडियोबफ़रलाइस्ट * आईओएडाटा) {एरियोटूचैप डिलीगेट * यह = (एयूआरओटीउच डिस्लेगेट *) आरफकॉन में; OSStatus err = ऑडियोयूएनआईटीआरएंडर (इस- & gt; आरआईयूआईआईटी, ioActionFlags, इनटाइमस्टैम्प, 1, एनएम्बरफ़्रेम, आईओडाटा); यदि (त्रुटि) {printf ("PerformThru: त्रुटि% d \ n", (int) err); वापसी गलती; } // डीसी घटक को निकालने के लिए (UInt32 i = 0; i & lt; ioData- & gt; mNumberBuffers; ++ i) इस- & gt; डीसीफ़िल्टर [i] .फ़िल्टर ((SInt32 *) (ioData- & gt; mBuffers [i] .mData), इन नंबरफ़्रेम्स, 1); // ...}
फाइल में aurioTouchAppDelegate.mm।
शुरुआती प्रश्न: "डीसी घटक निकालें" क्या करता है?
आपकी मदद के लिए अग्रिम धन्यवाद।
आपकी मदद के लिए अग्रिम धन्यवाद।
इनफ़ेसफ़िल्टर विधि के लिए यहां कोड है:
<पूर्व> शून्य डीसीआरएजेक्शनफ़िल्टर :: इनप्लेफेटर (SInt32 * ioData, UInt32 numframes, UInt32 प्रगति) {रजिस्टर सीआईएनटी 32 y1 = एमआई 1, एक्स 1 = एमएक्स 1; (UInt32 I = 0; i & lt; numFrames; i ++) के लिए {रजिस्टर SInt32 x0, y0; X0 = ioData [i * प्रगति]; Y0 = smul32by16 (y1, mA1); Y1 = smulAdd32by16 (x0 - x1, mGain, y0) & lt; & lt; 1; IoData [i * प्रगति] = y1; X1 = x0; } एमआई 1 = y1; एमएक्स 1 = एक्स 1; }
असल में, कोड आवृत्ति स्पेक्ट्रम के डीसी घटक को निकालने के लिए ऑडियो पर कर रहा है जो इसे भी कहा जाता है। फिल्टर के लिए गुणांक (विकिपीडिया लेख में अल्फा) 0.775 के लिए कोड में डिफ़ॉल्ट रूप से सेट होता है और डीसी हटाने फिल्टर के लिए विशिष्ट मूल्य 0.9 और 1.0 के बीच होता है यदि आप नमूना दर को समायोजित करते हैं तो आप उस गुणांक को समायोजित करना चाहेंगे, लेकिन मैं इसके बारे में बहुत ज्यादा चिंता नहीं करता।
Comments
Post a Comment