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(* | כתוב )(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 *חותמת זמן) |
תיאור מפורט
audio_stream_out הוא ממשק ההפשטה עבור חומרת פלט האודיו.
הוא מספק מידע על מאפיינים שונים של מנהל ההתקן של חומרת פלט השמע.
תיעוד שטח
struct audio_stream נפוץ |
שיטות נפוצות של זרם האודיו החוצה. זה חייב להיות החבר הראשון ב- audio_stream_out מכיוון שמשתמשים במבנה זה ישליכו מצביע audio_stream ל- audio_stream_out בהקשרים שבהם ידוע שה- audio_stream מתייחס ל- audio_stream_out .
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 חייב לחזור מיד בקריאה לעצור() ו- flush().
יישום של פונקציה זו הוא חובה עבור השמעה מנותקת.
int(* flush)(struct audio_stream_out *stream) |
uint32_t(* get_latency)(const struct audio_stream_out *stream) |
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 timespec *חותמת זמן) |
החזר ספירה עדכנית של מספר מסגרות השמע שהוצגו לצופה חיצוני. זה לא כולל מסגרות שנכתבו אך עדיין בצנרת. הספירה אינה מאופסת לאפס כאשר הפלט נכנס למצב המתנה. מחזירה גם את הערך של CLOCK_MONOTONIC החל מספירת מצגות זו. הספירה המוחזרת צפויה להיות 'עדכנית', אך אינה חייבת להיות הערך העדכני ביותר האפשרי. עם זאת, הזמן המשויך צריך להתאים לכל ספירה שהוחזרה. דוגמה: נניח שהוצגו N+M מסגרות, כאשר M הוא מספר 'קטן'. אז מותר להחזיר N במקום N+M, וחותמת הזמן צריכה להתאים ל-N ולא ל-N+M. המונחים 'אחרונים' ו'קטנים' אינם מוגדרים. הם משקפים את איכות היישום.
3.0 ומעלה בלבד.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(* pause)(struct audio_stream_out *stream) |
מודיע למנהל התקן האודיו להפסיק את ההשמעה, אולם המאגרים בתור נשמרים על ידי החומרה. שימושי ליישום השהייה/קורות חיים. יישום ריק אם אינו נתמך עם זאת, יש ליישם עבור חומרה עם חביון לא טריוויאלי. במצב ההשהיה ייתכן שחומרת השמע עדיין משתמשת בכוח. המשתמש עשוי לשקול להשהות שיחות לאחר פסק זמן.
יישום של פונקציה זו הוא חובה עבור השמעה מנותקת.
int(* resume)(struct audio_stream_out *stream) |
int(* set_callback)(struct audio_stream_out *stream, stream_callback_t callback, void *cookie) |
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) |
כתוב חוצץ שמע לנהג. מחזירה מספר בתים שנכתבו, או status_t שלילי. אם לפחות מסגרת אחת נכתבה בהצלחה לפני השגיאה, מומלץ שהנהג יחזיר את ספירת הבתים המוצלחת (הקצרה) ולאחר מכן יחזיר שגיאה בקריאה הבאה.
אם set_callback() נקרא בעבר כדי לאפשר מצב לא חסימה, ה- write() אינו רשאי לחסום. עליו לכתוב רק את מספר הבתים המתאימים כעת למאגר מנהל ההתקן/חומרה ולאחר מכן להחזיר את ספירת הבתים הזו. אם זה קטן מגודל הכתיבה המבוקש יש לקרוא לפונקציית ה-callback כאשר יש יותר מקום פנוי במאגר מנהל ההתקן/חומרה.
התיעוד עבור מבנה זה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ audio.h