audio_stream_out Strukturreferenz

audio_stream_out Strukturreferenz

#include < audio.h >

Datenfelder

struct audio_stream gemeinsames
uint32_t(* get_latency )(const struct audio_stream_out *stream)
int(* set_volume )(struct audio_stream_out *stream, float nach links, float nach rechts)
ssize_t(* schreiben ) (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(* fortsetzen )(struct audio_stream_out *stream)
int(* drain )(struct audio_stream_out *stream, audio_drain_type_t typ)
int(* flush )(struct audio_stream_out *stream)
int(* get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timepec *timestamp)

detaillierte Beschreibung

audio_stream_out ist die Abstraktionsschnittstelle für die Audioausgabehardware.

Es liefert Informationen über verschiedene Eigenschaften des Hardwaretreibers für die Audioausgabe.

Definition in Zeile 276 der Datei audio.h .

Felddokumentation

struct audio_stream gemeinsam

Gängige Methoden des Audiostreams out. Dies muss das erste Mitglied von audio_stream_out sein , da Benutzer dieser Struktur einen audio_stream in einen audio_stream_out- Zeiger in Kontexten umwandeln, in denen bekannt ist, dass der audio_stream auf einen audio_stream_out verweist .

Definition in Zeile 282 der Datei audio.h .

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

Fordert eine Benachrichtigung an, wenn vom Treiber/der Hardware gepufferte Daten abgespielt wurden. Wenn set_callback() zuvor aufgerufen wurde, um den nicht blockierenden Modus zu aktivieren, darf drain() nicht blockieren, sondern sollte schnell zurückkehren und der Abschluss des Drains wird durch den Callback mitgeteilt. Wenn set_callback() nicht aufgerufen wurde, muss drain() bis zum Abschluss blockieren. Wenn type==AUDIO_DRAIN_ALL, wird der Drain abgeschlossen, wenn alle zuvor geschriebenen Daten abgespielt wurden. Wenn type==AUDIO_DRAIN_EARLY_NOTIFY ist, wird der Drain kurz vor der Wiedergabe aller Daten für den aktuellen Titel abgeschlossen, damit das Framework Zeit hat, einen lückenlosen Titelwechsel durchzuführen.

Drain muss beim Aufruf von stop() und flush() sofort zurückkehren

Die Implementierung dieser Funktion ist für die ausgelagerte Wiedergabe obligatorisch.

Definition in Zeile 372 der Datei audio.h .

int(* flush)(struct audio_stream_out *stream)

Benachrichtigt den Audiotreiber, die Daten in der Warteschlange zu leeren. Der Stream muss bereits angehalten werden, bevor flush() aufgerufen wird.

Die Implementierung dieser Funktion ist für die ausgelagerte Wiedergabe obligatorisch.

Definition in Zeile 380 der Datei audio.h .

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

Gibt die geschätzte Latenz des Audiohardwaretreibers in Millisekunden zurück.

Definition in Zeile 287 der Datei audio.h .

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

Holen Sie sich die Ortszeit, zu der der nächste Schreibvorgang für den Audiotreiber angezeigt wird. Die Einheiten sind Mikrosekunden, wobei die Epoche durch die lokale Audio-HAL bestimmt wird.

Definition in Zeile 324 der Datei audio.h .

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

Gibt eine aktuelle Zählung der Anzahl von Audioframes zurück, die einem externen Beobachter präsentiert werden. Dies schließt Frames aus, die geschrieben wurden, sich aber noch in der Pipeline befinden. Der Zähler wird nicht auf Null zurückgesetzt, wenn der Ausgang in den Standby-Modus wechselt. Gibt auch den Wert von CLOCK_MONOTONIC ab dieser Präsentationszählung zurück. Es wird erwartet, dass die zurückgegebene Anzahl „aktuell“ ist, muss aber nicht der aktuellste mögliche Wert sein. Die zugeordnete Zeit sollte jedoch dem zurückgegebenen Zählwert entsprechen. Beispiel: Nehmen wir an, dass N+M Frames präsentiert wurden, wobei M eine „kleine“ Zahl ist. Dann ist es zulässig, N statt N+M zurückzugeben, und der Zeitstempel sollte eher N als N+M entsprechen. Die Begriffe „neu“ und „klein“ sind nicht definiert. Sie spiegeln die Qualität der Umsetzung wider.

Nur 3.0 und höher.

Definition in Zeile 398 der Datei audio.h .

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

Definition in Zeile 317 der Datei audio.h .

int(* pause)(struct audio_stream_out *stream)

Benachrichtigt den Audiotreiber, die Wiedergabe zu stoppen, die Puffer in der Warteschlange werden jedoch von der Hardware beibehalten. Nützlich für die Implementierung von Pause/Fortsetzen. Leere Implementierung, falls nicht unterstützt, sollte jedoch für Hardware mit nicht-trivialer Latenz implementiert werden. Im Pausenzustand könnte die Audiohardware noch Strom verbrauchen. Der Benutzer kann nach einem Timeout den Aufruf von suspend in Betracht ziehen.

Die Implementierung dieser Funktion ist für die ausgelagerte Wiedergabe obligatorisch.

Definition in Zeile 345 der Datei audio.h .

int(* Resume)(struct audio_stream_out *stream)

Benachrichtigt den Audiotreiber, die Wiedergabe nach einer Pause fortzusetzen. Gibt einen Fehler zurück, wenn es ohne übereinstimmende Pause aufgerufen wird.

Die Implementierung dieser Funktion ist für die ausgelagerte Wiedergabe obligatorisch.

Definition in Zeile 353 der Datei audio.h .

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

Legen Sie die Rückruffunktion fest, um den Abschluss des nicht blockierenden Schreibens und Löschens zu benachrichtigen. Das Aufrufen dieser Funktion impliziert, dass alle zukünftigen write() und drain() nicht blockierend sein müssen und den Rückruf verwenden müssen, um den Abschluss zu signalisieren.

Definition in Zeile 333 der Datei audio.h .

int(* set_volume)(struct audio_stream_out *stream, float nach links, float nach rechts)

Verwenden Sie diese Methode in Situationen, in denen die Audiomischung in der Hardware erfolgt. Diese Methode dient als direkte Schnittstelle zur Hardware, sodass Sie die Lautstärke direkt über das Framework einstellen können. Diese Methode kann mehrere PCM-Ausgaben oder hardwarebeschleunigte Codecs wie MP3 oder AAC erzeugen.

Definition in Zeile 296 der Datei audio.h .

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

Audiopuffer in Treiber schreiben. Gibt die Anzahl der geschriebenen Bytes oder einen negativen status_t zurück. Wenn vor dem Fehler mindestens ein Frame erfolgreich geschrieben wurde, wird vorgeschlagen, dass der Treiber diese erfolgreiche (kurze) Bytezahl zurückgibt und dann beim nachfolgenden Aufruf einen Fehler zurückgibt.

Wenn set_callback() zuvor aufgerufen wurde, um den nicht blockierenden Modus zu aktivieren, darf write() nicht blockieren. Es muss nur die Anzahl von Bytes schreiben, die aktuell in den Treiber/Hardware-Puffer passen, und dann diese Byte-Zählung zurückgeben. Wenn dies kleiner als die angeforderte Schreibgröße ist, muss die Callback-Funktion aufgerufen werden, wenn mehr Platz im Treiber/Hardware-Puffer verfügbar ist.

Definition in Zeile 311 der Datei audio.h .


Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert:
  • hardware/libhardware/include/hardware/ audio.h
,

audio_stream_out Strukturreferenz

audio_stream_out Strukturreferenz

#include < audio.h >

Datenfelder

struct audio_stream gemeinsames
uint32_t(* get_latency )(const struct audio_stream_out *stream)
int(* set_volume )(struct audio_stream_out *stream, float nach links, float nach rechts)
ssize_t(* schreiben ) (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(* fortsetzen )(struct audio_stream_out *stream)
int(* drain )(struct audio_stream_out *stream, audio_drain_type_t typ)
int(* flush )(struct audio_stream_out *stream)
int(* get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timepec *timestamp)

detaillierte Beschreibung

audio_stream_out ist die Abstraktionsschnittstelle für die Audioausgabehardware.

Es liefert Informationen über verschiedene Eigenschaften des Hardwaretreibers für die Audioausgabe.

Definition in Zeile 276 der Datei audio.h .

Felddokumentation

struct audio_stream gemeinsam

Gängige Methoden des Audiostreams out. Dies muss das erste Mitglied von audio_stream_out sein , da Benutzer dieser Struktur einen audio_stream in einen audio_stream_out- Zeiger in Kontexten umwandeln, in denen bekannt ist, dass der audio_stream auf einen audio_stream_out verweist .

Definition in Zeile 282 der Datei audio.h .

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

Fordert eine Benachrichtigung an, wenn vom Treiber/der Hardware gepufferte Daten abgespielt wurden. Wenn set_callback() zuvor aufgerufen wurde, um den nicht blockierenden Modus zu aktivieren, darf drain() nicht blockieren, sondern sollte schnell zurückkehren und der Abschluss des Drains wird durch den Callback mitgeteilt. Wenn set_callback() nicht aufgerufen wurde, muss drain() bis zum Abschluss blockieren. Wenn type==AUDIO_DRAIN_ALL, wird der Drain abgeschlossen, wenn alle zuvor geschriebenen Daten abgespielt wurden. Wenn type==AUDIO_DRAIN_EARLY_NOTIFY ist, wird der Drain kurz vor der Wiedergabe aller Daten für den aktuellen Titel abgeschlossen, damit das Framework Zeit hat, einen lückenlosen Titelwechsel durchzuführen.

Drain muss beim Aufruf von stop() und flush() sofort zurückkehren

Die Implementierung dieser Funktion ist für die ausgelagerte Wiedergabe obligatorisch.

Definition in Zeile 372 der Datei audio.h .

int(* flush)(struct audio_stream_out *stream)

Benachrichtigt den Audiotreiber, die Daten in der Warteschlange zu leeren. Der Stream muss bereits angehalten werden, bevor flush() aufgerufen wird.

Die Implementierung dieser Funktion ist für die ausgelagerte Wiedergabe obligatorisch.

Definition in Zeile 380 der Datei audio.h .

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

Gibt die geschätzte Latenz des Audiohardwaretreibers in Millisekunden zurück.

Definition in Zeile 287 der Datei audio.h .

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

Holen Sie sich die Ortszeit, zu der der nächste Schreibvorgang für den Audiotreiber angezeigt wird. Die Einheiten sind Mikrosekunden, wobei die Epoche durch die lokale Audio-HAL bestimmt wird.

Definition in Zeile 324 der Datei audio.h .

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

Gibt eine aktuelle Zählung der Anzahl von Audioframes zurück, die einem externen Beobachter präsentiert werden. Dies schließt Frames aus, die geschrieben wurden, sich aber noch in der Pipeline befinden. Der Zähler wird nicht auf Null zurückgesetzt, wenn der Ausgang in den Standby-Modus wechselt. Gibt auch den Wert von CLOCK_MONOTONIC ab dieser Präsentationszählung zurück. Es wird erwartet, dass die zurückgegebene Anzahl „aktuell“ ist, muss aber nicht der aktuellste mögliche Wert sein. Die zugeordnete Zeit sollte jedoch dem zurückgegebenen Zählwert entsprechen. Beispiel: Nehmen wir an, dass N+M Frames präsentiert wurden, wobei M eine „kleine“ Zahl ist. Dann ist es zulässig, N statt N+M zurückzugeben, und der Zeitstempel sollte eher N als N+M entsprechen. Die Begriffe „neu“ und „klein“ sind nicht definiert. Sie spiegeln die Qualität der Umsetzung wider.

Nur 3.0 und höher.

Definition in Zeile 398 der Datei audio.h .

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

Definition in Zeile 317 der Datei audio.h .

int(* pause)(struct audio_stream_out *stream)

Benachrichtigt den Audiotreiber, die Wiedergabe zu stoppen, die Puffer in der Warteschlange werden jedoch von der Hardware beibehalten. Nützlich für die Implementierung von Pause/Fortsetzen. Leere Implementierung, falls nicht unterstützt, sollte jedoch für Hardware mit nicht-trivialer Latenz implementiert werden. Im Pausenzustand könnte die Audiohardware noch Strom verbrauchen. Der Benutzer kann nach einem Timeout den Aufruf von suspend in Betracht ziehen.

Die Implementierung dieser Funktion ist für die ausgelagerte Wiedergabe obligatorisch.

Definition in Zeile 345 der Datei audio.h .

int(* Resume)(struct audio_stream_out *stream)

Benachrichtigt den Audiotreiber, die Wiedergabe nach einer Pause fortzusetzen. Gibt einen Fehler zurück, wenn es ohne übereinstimmende Pause aufgerufen wird.

Die Implementierung dieser Funktion ist für die ausgelagerte Wiedergabe obligatorisch.

Definition in Zeile 353 der Datei audio.h .

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

Legen Sie die Rückruffunktion fest, um den Abschluss des nicht blockierenden Schreibens und Löschens zu benachrichtigen. Das Aufrufen dieser Funktion impliziert, dass alle zukünftigen write() und drain() nicht blockierend sein müssen und den Rückruf verwenden müssen, um den Abschluss zu signalisieren.

Definition in Zeile 333 der Datei audio.h .

int(* set_volume)(struct audio_stream_out *stream, float nach links, float nach rechts)

Verwenden Sie diese Methode in Situationen, in denen die Audiomischung in der Hardware erfolgt. Diese Methode dient als direkte Schnittstelle zur Hardware, sodass Sie die Lautstärke direkt über das Framework einstellen können. Diese Methode kann mehrere PCM-Ausgaben oder hardwarebeschleunigte Codecs wie MP3 oder AAC erzeugen.

Definition in Zeile 296 der Datei audio.h .

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

Audiopuffer in Treiber schreiben. Gibt die Anzahl der geschriebenen Bytes oder einen negativen status_t zurück. Wenn vor dem Fehler mindestens ein Frame erfolgreich geschrieben wurde, wird vorgeschlagen, dass der Treiber diese erfolgreiche (kurze) Bytezahl zurückgibt und dann beim nachfolgenden Aufruf einen Fehler zurückgibt.

Wenn set_callback() zuvor aufgerufen wurde, um den nicht blockierenden Modus zu aktivieren, darf write() nicht blockieren. Es muss nur die Anzahl von Bytes schreiben, die aktuell in den Treiber/Hardware-Puffer passen, und dann diese Byte-Zählung zurückgeben. Wenn dies kleiner als die angeforderte Schreibgröße ist, muss die Callback-Funktion aufgerufen werden, wenn mehr Platz im Treiber/Hardware-Puffer verfügbar ist.

Definition in Zeile 311 der Datei audio.h .


Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert:
  • hardware/libhardware/include/hardware/ audio.h