مرجع بنية audio_stream_out

مرجع بنية audio_stream_out

#include < audio.h >

حقول البيانات

struct audio_stream   شائعة
 
uint32_t(*  get_latency )(const struct audio_stream_out *stream)
 
int(*  set_volume )(struct audio_stream_out *stream, float left, float right)
 
ssize_t(*  write )(struct audio_stream_out *stream, const void *buffer, size_t bytes)
 
int(*  get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames)
 
int(*  get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *timestamp)
 
int(*  set_callback )(struct audio_stream_out *stream, stream_callback_t callback, void *cookie)
 
int(*  pause )(struct audio_stream_out *stream)
 
int(*  resume )(struct audio_stream_out *stream)
 
int(*  drain )(struct audio_stream_out *stream, audio_drain_type_t type)
 
int(*  flush )(struct audio_stream_out *stream)
 
int(*  get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)
 

وصف مفصّل

audio_stream_out هي واجهة تجريدية لأجهزة إخراج الصوت.

يوفّر هذا القسم معلومات عن السمات المختلفة لبرنامج تشغيل أجهزة إخراج الصوت.

التعريف في السطر 276 من الملف audio.h .

مستندات الحقل

struct audio_stream common

الطرق الشائعة لبث الصوت يجب أن يكون هذا العنصر هو العنصر الأول في audio_stream_out لأنّ مستخدمي هذه البنية سيرسلون إشارة audio_stream إلى مؤشر audio_stream_out في السياقات التي يُعرف فيها أنّ audio_stream يشير إلى audio_stream_out .

التعريف في السطر 282 من الملف audio.h .

int(* drain)(struct audio_stream_out *stream, audio_drain_type_t type)

يطلب الإشعار عند تشغيل البيانات التي تم تخزينها مؤقتًا بواسطة برنامج تشغيل/الأجهزة. إذا سبق أن تم استدعاء set_callback() لتفعيل وضع عدم الحظر، يجب ألا تحظر السلسلة drain() العملية، بل يجب أن تُرجع القيمة بسرعة ويتم إعلامك من خلال دالة الاستدعاء باكتمال عملية التصفية. إذا لم يتم استدعاء set_callback() ، يجب أن يتم حظر drain() إلى أن تكتمل العملية. إذا كان type==AUDIO_DRAIN_ALL، تكتمل عملية التفريغ عند تشغيل جميع البيانات التي تم كتابتها سابقًا. إذا كان type==AUDIO_DRAIN_EARLY_NOTIFY، تكتمل عملية التصفية قبل وقت قصير من تشغيل جميع بيانات المقطع الصوتي الحالي للسماح للإطار الأساسي بإجراء تبديل بدون انقطاع للمقطع الصوتي.

يجب أن يعود Drain على الفور عند استدعاء stop() و flush()

إنّ تنفيذ هذه الدالة إلزامي لتشغيل المحتوى بلا إنترنت.

التعريف في السطر 372 من الملف audio.h .

int(* flush)(struct audio_stream_out *stream)

إرسال إشعار إلى برنامج تشغيل الصوت لتفريغ البيانات في "قائمة الانتظار" يجب أن يكون البث متوقفًا مؤقتًا قبل استدعاء flush() .

إنّ تنفيذ هذه الدالة إلزامي لتشغيل المحتوى بلا إنترنت.

التعريف في السطر 380 من الملف audio.h .

uint32_t(* get_latency)(const struct audio_stream_out *stream)

عرض وقت الاستجابة المقدَّر لبرنامج تشغيل أجهزة الصوت بالمللي ثانية

التعريف في السطر 287 من الملف audio.h .

int(* get_next_write_timestamp)(const struct audio_stream_out *stream, int64_t *timestamp)

الحصول على الوقت المحلي الذي سيتم فيه عرض عملية الكتابة التالية إلى برنامج تشغيل الصوت يتم التعبير عن الوحدات بالميكرو ثانية، ويتم تحديد الحقبة من خلال واجهة برمجة التطبيقات لمعالجة الصوت المحلية.

التعريف في السطر 324 من الملف audio.h .

int(* get_presentation_position)(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp)

عرض عدد اللقطات الأخيرة لعدد لقطات الصوت التي تم عرضها على مراقب خارجي ولا يشمل ذلك اللقطات التي تمّت كتابتها ولكنّها لا تزال في قناة الإصدار. لا تتم إعادة ضبط العدد على الصفر عندما يدخل الإخراج في وضع الاستعداد. تعرض أيضًا قيمة CLOCK_MONOTONIC اعتبارًا من عدد العروض التقديمية هذا. من المتوقّع أن يكون العدد المعروض "حديثًا"، ولكن ليس من الضروري أن يكون أحدث قيمة ممكنة. ومع ذلك، يجب أن يكون الوقت المرتبط مطابقًا لأي عدد يتم إرجاعه. مثال: لنفترض أنّه تم عرض N+M إطارًا، حيث يكون M عددًا "صغيرًا". في هذه الحالة، يُسمح بعرض N بدلاً من N+M، ويجب أن يتطابق الطابع الزمني مع N بدلاً من N+M. لم يتم تحديد المصطلحين "الأخيرة" و"صغيرة". وتعكس هذه الأرقام جودة التنفيذ.

الإصدار 3.0 والإصدارات الأحدث فقط

التعريف في السطر 398 من الملف audio.h .

int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames)

التعريف في السطر 317 من الملف audio.h .

int(* pause)(struct audio_stream_out *stream)

يتم إرسال إشعار إلى برنامج تشغيل الصوت لإيقاف التشغيل، ولكن يحتفظ الجهاز بوحدات التخزين المؤقت في قائمة الانتظار. مفيدة لتنفيذ ميزة الإيقاف المؤقت/استئناف. يجب تنفيذ التنفيذ الفارغ إذا لم يكن متوافقًا مع الأجهزة التي تتسم بوقت استجابة غير بسيط. في حالة الإيقاف المؤقت، قد يستمر استخدام أجهزة الصوت للطاقة. قد يطلب المستخدم تعليق الجلسة بعد انتهاء مهلة.

إنّ تنفيذ هذه الدالة إلزامي لتشغيل المحتوى بلا إنترنت.

التعريف في السطر 345 من الملف audio.h .

int(* resume)(struct audio_stream_out *stream)

إرسال إشعار إلى برنامج تشغيل الصوت لاستئناف التشغيل بعد إيقافه مؤقتًا تعرِض رسالة خطأ إذا تمّت الدعوة بدون مطابقة الفاصل الزمني.

إنّ تنفيذ هذه الدالة إلزامي لتشغيل المحتوى بلا إنترنت.

التعريف في السطر 353 من الملف audio.h .

int(* set_callback)(struct audio_stream_out *stream, stream_callback_t callback, void *cookie)

اضبط وظيفة الاستدعاء لإشعار اكتمال الكتابة والتفريغ غير المحظورَين. يشير استدعاء هذه الدالة إلى أنّه يجب أن تكون كل طلبات write() drain() المستقبلية غير محظورة وأن تستخدم دالة ردّ الاتصال للإشارة إلى اكتمالها.

التعريف في السطر 333 من الملف audio.h .

int(* set_volume)(struct audio_stream_out *stream, float left, float right)

استخدِم هذه الطريقة في الحالات التي يتم فيها مزج الصوت في الجهاز. تُعدّ هذه الطريقة واجهة مباشرة مع الأجهزة، ما يتيح لك ضبط مستوى الصوت مباشرةً بدلاً من استخدام إطار العمل. قد تؤدي هذه الطريقة إلى إنشاء عدة نواتج PCM أو برامج ترميز مُسرَّعة بالأجهزة، مثل MP3 أو AAC.

التعريف في السطر 296 من الملف audio.h .

ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t bytes)

كتابة ذاكرة التخزين المؤقت للصوت إلى برنامج تشغيل الصوت تعرِض عدد وحدات البايت التي تمّ كتابتها، أو قيمة سالبة لـ status_t. إذا تمّت كتابة إطار واحد على الأقلّ بنجاح قبل حدوث الخطأ، يُنصح بأن يعرض برنامج التشغيل عدد البايتات (القصير) الناجح ثم يعرض خطأ في الطلب اللاحق.

إذا سبق أن تم استدعاء دالة set_callback() لتفعيل وضع عدم الحظر، لا يُسمح بحظر دالة write() . يجب أن يكتب فقط عدد وحدات البايت التي تتناسب حاليًا مع وحدة تخزين المؤقت للبرنامج أو الجهاز، ثم يعرض عدد وحدات البايت هذا. إذا كان هذا الحجم أقل من حجم الكتابة المطلوب، يجب استدعاء وظيفة ردّ الاتصال عندما تتوفّر مساحة أكبر في مخزن الوسائط للسائق أو الجهاز.

التعريف في السطر 311 من الملف audio.h .


تم إنشاء مستندات هذه البنية من الملف التالي:
  • hardware/libhardware/include/hardware/ audio.h