audio_stream_out مرجع ساختار

audio_stream_out مرجع ساختار

#include < audio.h >

فیلدهای داده

ساخت 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(* نوشتن )(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(* مکث )( ساخت audio_stream_out *stream)
int(* رزومه )(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 مشترک

روش های رایج پخش صدا این باید اولین عضو 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() نباید مسدود شود، در عوض باید به سرعت برگردد و اتمام تخلیه از طریق callback اطلاع داده می شود. اگر set_callback() فراخوانی نشده باشد، drain() باید تا تکمیل مسدود شود. اگر نوع ==AUDIO_DRAIN_ALL، تخلیه زمانی کامل می شود که تمام داده های نوشته شده قبلی پخش شود. اگر نوع ==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)

زمان محلی را دریافت کنید که در آن نوشتن بعدی به درایور صوتی ارائه می شود. واحدها میکروثانیه هستند، که در آن دوره توسط HAL صوتی محلی تعیین می شود.

تعریف در خط 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+M، N را برگردانیم، و مهر زمانی باید به جای N+M با N مطابقت داشته باشد. اصطلاحات "اخیر" و "کوچک" تعریف نشده اند. آنها کیفیت اجرا را منعکس می کنند.

فقط 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() در آینده باید غیر مسدود باشند و از callback برای تکمیل سیگنال استفاده کنند.

تعریف در خط 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 قبلا برای فعال کردن حالت غیر مسدود فراخوانی شده باشد ، نوشتن () مجاز به مسدود کردن نیست. باید فقط تعداد بایت هایی را بنویسد که در حال حاضر در بافر درایور/سخت افزار قرار دارند و سپس این تعداد بایت را برگرداند. اگر این اندازه کمتر از اندازه نوشتن درخواستی باشد، زمانی که فضای بیشتری در بافر درایور/سخت‌افزار در دسترس است، باید تابع تماس را فراخوانی کرد.

تعریف در خط 311 فایل audio.h .


مستندات این ساختار از فایل زیر تولید شده است:
  • hardware/libhardware/include/hardware/ audio.h