ऑडियो_स्ट्रीम_आउट संरचना संदर्भ
#include < audio.h >
डेटा फ़ील्ड | |
संरचना ऑडियो_स्ट्रीम | सामान्य |
uint32_t(* | get_latency )(स्थिरांक संरचना ऑडियो_स्ट्रीम_आउट *स्ट्रीम) |
पूर्णांक(* | सेट_वॉल्यूम )(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम, बाएं फ्लोट, दाएं फ्लोट) |
ssize_t(* | लिखें )(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट * स्ट्रीम, कॉन्स्ट शून्य * बफर, साइज_टी बाइट्स) |
पूर्णांक(* | get_render_position )(const struct Audio_stream_out *stream, uint32_t *dsp_frames) |
पूर्णांक(* | get_next_write_timestamp )(const struct Audio_stream_out *stream, int64_t *timestamp) |
पूर्णांक(* | सेट_कॉलबैक )(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम, स्ट्रीम_कॉलबैक_टी कॉलबैक, शून्य *कुकी) |
पूर्णांक(* | रोकें )(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम) |
पूर्णांक(* | बायोडाटा )(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम) |
पूर्णांक(* | ड्रेन )(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम, ऑडियो_ड्रेन_टाइप_टी प्रकार) |
पूर्णांक(* | फ्लश )(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम) |
पूर्णांक(* | get_presentation_position )(const struct Audio_stream_out *stream, uint64_t *frames, struct timepec *timestamp) |
विस्तृत विवरण
ऑडियो_स्ट्रीम_आउट ऑडियो आउटपुट हार्डवेयर के लिए एब्स्ट्रैक्शन इंटरफ़ेस है।
यह ऑडियो आउटपुट हार्डवेयर ड्राइवर के विभिन्न गुणों के बारे में जानकारी प्रदान करता है।
फ़ील्ड दस्तावेज़ीकरण
स्ट्रक्चर ऑडियो_स्ट्रीम सामान्य |
ऑडियो स्ट्रीम आउट के सामान्य तरीके. यह ऑडियो_स्ट्रीम_आउट का पहला सदस्य होना चाहिए क्योंकि इस संरचना के उपयोगकर्ता उन संदर्भों में ऑडियो_स्ट्रीम को ऑडियो_स्ट्रीम_आउट पॉइंटर में डालेंगे जहां यह ज्ञात है कि ऑडियो_स्ट्रीम एक ऑडियो_स्ट्रीम_आउट का संदर्भ देता है।
int(* ड्रेन)(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम, ऑडियो_ड्रेन_टाइप_टी प्रकार) |
जब ड्राइवर/हार्डवेयर द्वारा बफ़र किया गया डेटा चलाया गया हो तो अधिसूचना का अनुरोध करता है। यदि set_callback() को पहले नॉन-ब्लॉकिंग मोड को सक्षम करने के लिए कॉल किया गया है, तो ड्रेन() को ब्लॉक नहीं करना चाहिए, इसके बजाय इसे जल्दी वापस आना चाहिए और कॉलबैक के माध्यम से ड्रेन के पूरा होने की सूचना दी जाएगी। यदि set_callback() को कॉल नहीं किया गया है, तो ड्रेन() को पूरा होने तक ब्लॉक होना चाहिए। यदि टाइप==AUDIO_DRAIN_ALL, तो पहले लिखा गया सारा डेटा चलने पर ड्रेन पूरी हो जाती है। यदि प्रकार==AUDIO_DRAIN_EARLY_NOTIFY, तो वर्तमान ट्रैक के लिए सभी डेटा चलने से कुछ समय पहले ही ड्रेन पूरा हो जाता है ताकि फ्रेमवर्क को गैपलेस ट्रैक स्विच करने के लिए समय मिल सके।
स्टॉप() और फ्लश() कॉल पर ड्रेन को तुरंत वापस आना चाहिए
ऑफलोडेड प्लेबैक के लिए इस फ़ंक्शन का कार्यान्वयन अनिवार्य है।
int(* फ्लश)(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम) |
uint32_t(* get_latency)(स्थिरांक संरचना ऑडियो_स्ट्रीम_आउट *स्ट्रीम) |
int(* get_next_write_timestamp)(const struct Audio_stream_out *stream, int64_t *timestamp) |
int(* get_presentation_position)(const struct Audio_stream_out *stream, uint64_t *frames, struct timepec *timestamp) |
बाहरी पर्यवेक्षक को प्रस्तुत किए गए ऑडियो फ़्रेमों की संख्या की हाल की गणना लौटाएँ। इसमें वे फ़्रेम शामिल नहीं हैं जो लिखे जा चुके हैं लेकिन अभी भी पाइपलाइन में हैं। जब आउटपुट स्टैंडबाय में प्रवेश करता है तो गिनती शून्य पर रीसेट नहीं होती है। इस प्रस्तुति गणना के अनुसार CLOCK_MONOTONIC का मान भी लौटाता है। लौटाई गई गिनती 'हाल ही में' होने की उम्मीद है, लेकिन सबसे हालिया संभावित मूल्य होने की आवश्यकता नहीं है। हालाँकि, संबंधित समय जो भी लौटाया गया है उसके अनुरूप होना चाहिए। उदाहरण: मान लें कि N+M फ़्रेम प्रस्तुत किए गए हैं, जहां M एक 'छोटी' संख्या है। फिर N+M के बजाय N लौटाने की अनुमति है, और टाइमस्टैम्प को N+M के बजाय N के अनुरूप होना चाहिए। 'हालिया' और 'छोटा' शब्द परिभाषित नहीं हैं। वे कार्यान्वयन की गुणवत्ता को दर्शाते हैं।
केवल 3.0 और उच्चतर।
int(* get_render_position)(const struct Audio_stream_out *stream, uint32_t *dsp_frames) |
int(* रोकें)(struct ऑडियो_स्ट्रीम_आउट *स्ट्रीम) |
ऑडियो ड्राइवर को प्लेबैक रोकने के लिए सूचित करता है, हालांकि कतारबद्ध बफ़र्स हार्डवेयर द्वारा बनाए रखे जाते हैं। पॉज़/रेज़्यूमे लागू करने के लिए उपयोगी। यदि समर्थित नहीं है तो खाली कार्यान्वयन को गैर-तुच्छ विलंबता के साथ हार्डवेयर के लिए लागू किया जाना चाहिए। विराम अवस्था में ऑडियो हार्डवेयर अभी भी पावर का उपयोग कर सकता है। उपयोगकर्ता समय समाप्ति के बाद कॉलिंग निलंबित करने पर विचार कर सकता है।
ऑफलोडेड प्लेबैक के लिए इस फ़ंक्शन का कार्यान्वयन अनिवार्य है।
int(* बायोडाटा)(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम) |
int(* set_callback)(struct ऑडियो_स्ट्रीम_आउट *स्ट्रीम, स्ट्रीम_कॉलबैक_t कॉलबैक, शून्य *कुकी) |
नॉन-ब्लॉकिंग राइट और ड्रेन के पूरा होने की सूचना देने के लिए कॉलबैक फ़ंक्शन सेट करें। इस फ़ंक्शन को कॉल करने का तात्पर्य है कि भविष्य के सभी राइट() और ड्रेन() को गैर-अवरुद्ध होना चाहिए और पूरा होने का संकेत देने के लिए कॉलबैक का उपयोग करना चाहिए।
int(* set_volume)(struct Audio_stream_out *स्ट्रीम, बायीं ओर फ़्लोट, दायीं ओर फ़्लोट) |
इस पद्धति का उपयोग उन स्थितियों में करें जहां हार्डवेयर में ऑडियो मिश्रण किया जाता है। यह विधि हार्डवेयर के साथ सीधे इंटरफ़ेस के रूप में कार्य करती है, जिससे आप फ्रेमवर्क के माध्यम से सीधे वॉल्यूम सेट कर सकते हैं। यह विधि एकाधिक पीसीएम आउटपुट या एमपी3 या एएसी जैसे हार्डवेयर त्वरित कोडेक्स उत्पन्न कर सकती है।
ssize_t(* लिखें)(स्ट्रक्चर ऑडियो_स्ट्रीम_आउट *स्ट्रीम, कॉन्स्ट शून्य *बफर, साइज_टी बाइट्स) |
ड्राइवर को ऑडियो बफ़र लिखें। लिखे गए बाइट्स की संख्या, या एक नकारात्मक status_t लौटाता है। यदि त्रुटि से पहले कम से कम एक फ्रेम सफलतापूर्वक लिखा गया था, तो यह सुझाव दिया जाता है कि ड्राइवर उस सफल (छोटी) बाइट गिनती को वापस कर दे और फिर बाद की कॉल में एक त्रुटि लौटा दे।
यदि set_callback() को पहले नॉन-ब्लॉकिंग मोड को सक्षम करने के लिए कॉल किया गया है तो राइट() को ब्लॉक करने की अनुमति नहीं है। इसे केवल बाइट्स की संख्या लिखनी होगी जो वर्तमान में ड्राइवर/हार्डवेयर बफर में फिट हैं और फिर इस बाइट गिनती को वापस कर दें। यदि यह अनुरोधित लेखन आकार से कम है तो ड्राइवर/हार्डवेयर बफ़र में अधिक स्थान उपलब्ध होने पर कॉलबैक फ़ंक्शन को कॉल किया जाना चाहिए।
इस संरचना के लिए दस्तावेज़ीकरण निम्नलिखित फ़ाइल से तैयार किया गया था:
- हार्डवेयर/लिबहार्डवेयर/शामिल/हार्डवेयर/ ऑडियो.एच