Strukturreferenz für „audio_stream_out“

Strukturreferenz für „audio_stream_out“

#include < audio.h >

Datenfelder

struct audio_stream   common
 
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)
 

Detaillierte Beschreibung

audio_stream_out ist die Abstraktionsschnittstelle für die Audioausgabehardware.

Er enthält Informationen zu verschiedenen Eigenschaften des Audioausgabe-Hardwaretreibers.

Definition in Zeile 276 der Datei audio.h .

Felddokumentation

struct audio_stream common

Gängige Methoden für den Audiostream. Dies muss das erste Mitglied von audio_stream_out sein, da Nutzer dieser Struktur einen audio_stream in einen audio_stream_out -Pointer umwandeln, wenn bekannt ist, dass audio_stream auf audio_stream_out verweist.

Definition in Zeile 282 der Datei audio.h .

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

Erfordert eine Benachrichtigung, wenn Daten, die vom Treiber/von der Hardware gepuffert wurden, wiedergegeben wurden. Wenn set_callback() zuvor aufgerufen wurde, um den nicht blockierenden Modus zu aktivieren, darf drain() nicht blockieren, sondern sollte schnell zurückkehren. Der Abschluss des Drains wird über den Rückgabewert des Callbacks mitgeteilt. Wenn set_callback() nicht aufgerufen wurde, muss drain() bis zum Abschluss blockieren. Wenn „type“ den Wert „AUDIO_DRAIN_ALL“ hat, ist der Vorgang abgeschlossen, wenn alle zuvor geschriebenen Daten abgespielt wurden. Wenn „type“ den Wert „AUDIO_DRAIN_EARLY_NOTIFY“ hat, wird der Vorgang kurz vor dem Abspielen aller Daten für den aktuellen Titel abgeschlossen, damit das Framework Zeit für einen nahtlosen Titelwechsel hat.

Drain muss bei den Aufrufen von „stop()“ und flush() sofort zurückgeben.

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 gepufferten Daten zu löschen. Der Stream muss bereits angehalten sein, 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)

die lokale Zeit abrufen, zu der die nächste Schreiboperation an den Audiotreiber erfolgt. Die Einheiten sind Mikrosekunden. Die Epoche wird von der lokalen Audio-HAL festgelegt.

Definition in Zeile 324 der Datei audio.h .

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

Gibt die Anzahl der Audioframes zurück, die einem externen Beobachter in letzter Zeit präsentiert wurden. Ausgenommen sind Frames, die bereits geschrieben wurden, sich aber noch in der Pipeline befinden. Die Zählung wird nicht auf null zurückgesetzt, wenn die Ausgabe in den Standbymodus wechselt. Außerdem wird der Wert von CLOCK_MONOTONIC zu diesem Zeitpunkt zurückgegeben. Die zurückgegebene Anzahl sollte „aktuell“ sein, muss aber nicht der aktuellste Wert sein. Die zugehörige Zeit sollte jedoch der zurückgegebenen Anzahl entsprechen. Beispiel: Angenommen, es wurden N + M Frames präsentiert, wobei M eine „kleine“ Zahl ist. Dann ist es zulässig, N anstelle von N + M zurückzugeben. Der Zeitstempel sollte N und nicht N + M entsprechen. Die Begriffe „recent“ (aktuell) und „small“ (klein) sind nicht definiert. Sie spiegeln die Qualität der Implementierung wider.

Nur Version 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)

Der Audiotreiber wird angewiesen, die Wiedergabe anzuhalten. Die gepufferten Daten werden jedoch von der Hardware beibehalten. Nützlich für die Implementierung von Pausieren/Fortsetzen. Eine leere Implementierung sollte jedoch für Hardware mit nicht unerheblicher Latenz implementiert werden, wenn sie nicht unterstützt wird. Im Pausierstatus verbraucht die Audiohardware möglicherweise weiterhin Strom. Der Nutzer kann nach einem Zeitlimit die Funktion „Sperren“ aufrufen.

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)

Der Audiotreiber wird benachrichtigt, die Wiedergabe nach einer Pause fortzusetzen. Gibt einen Fehler zurück, wenn sie 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)

die Callback-Funktion zum Benachrichtigen über den Abschluss des nicht blockierenden Schreibens und Entleerens festlegen. Wenn Sie diese Funktion aufrufen, müssen alle zukünftigen write()- - und drain()- -Aufrufe nicht blockierend sein und den Callback verwenden, um den Abschluss zu signalisieren.

Definition in Zeile 333 der Datei audio.h .

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

Verwenden Sie diese Methode, wenn die Audiomischung in der Hardware erfolgt. Diese Methode dient als direkte Schnittstelle zur Hardware, sodass Sie die Lautstärke direkt und nicht ü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)

Audio-Puffer in den Treiber schreiben. Gibt die Anzahl der geschriebenen Byte oder einen negativen status_t zurück. Wenn vor dem Fehler mindestens ein Frame erfolgreich geschrieben wurde, sollte der Treiber die Anzahl der erfolgreich geschriebenen (kurzen) Bytes zurückgeben und dann im nächsten Aufruf einen Fehler zurückgeben.

Wenn set_callback() bereits aufgerufen wurde, um den nicht blockierenden Modus zu aktivieren, darf write() nicht blockieren. Es muss nur die Anzahl der Byte geschrieben werden, die derzeit in den Treiber-/Hardware-Puffer passen, und dann diese Byteanzahl zurückgeben. Wenn dies kleiner als die angeforderte Schreibgröße ist, muss die Callback-Funktion aufgerufen werden, wenn im Treiber-/Hardwarepuffer mehr Speicherplatz 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