audio_stream_out-Strukturreferenz

audio_stream_out-Strukturreferenz

#include < audio.h >

Datenfelder

struct audio_stream gemeinsam
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 Rückruf, 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(* bündig )(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 Audioausgabe-Hardware.

Es bietet Informationen zu verschiedenen Eigenschaften des Audioausgabe-Hardwaretreibers.

Definition in Zeile 276 der Datei audio.h .

Felddokumentation

struct audio_stream common

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

Definition in Zeile 282 der Datei audio.h .

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

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 Rückruf mitgeteilt. Wenn set_callback() nicht aufgerufen wurde, muss drain() bis zum Abschluss blockieren. Bei type==AUDIO_DRAIN_ALL wird der Drain abgeschlossen, wenn alle zuvor geschriebenen Daten abgespielt wurden. Wenn type==AUDIO_DRAIN_EARLY_NOTIFY, wird der Entleervorgang abgeschlossen, kurz bevor alle Daten für den aktuellen Titel abgespielt wurden, um dem Framework Zeit zu geben, 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 Offloaded-Wiedergabe zwingend erforderlich.

Definition in Zeile 372 der Datei audio.h .

int(* Flush)(struct audio_stream_out *stream)

Benachrichtigt den Audiotreiber, die in der Warteschlange befindlichen Daten zu leeren. Der Stream muss bereits angehalten sein, bevor er „flush()“ aufruft.

Die Implementierung dieser Funktion ist für die Offloaded-Wiedergabe zwingend erforderlich.

Definition in Zeile 380 der Datei audio.h .

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

Gibt die geschätzte Latenz des Audio-Hardwaretreibers 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)

Rufen Sie die Ortszeit ab, zu der der nächste Schreibvorgang für den Audiotreiber durchgeführt wird. Die Einheiten sind Mikrosekunden, wobei die Epoche durch den lokalen 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 timespec *timestamp)

Gibt eine aktuelle Zählung der Anzahl der Audio-Frames zurück, die einem externen Beobachter präsentiert wurden. Davon ausgenommen sind Frames, 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 außerdem den Wert von CLOCK_MONOTONIC ab dieser Präsentationsanzahl zurück. Es wird erwartet, dass die zurückgegebene Anzahl „aktuell“ ist, es muss jedoch nicht unbedingt der aktuellste mögliche Wert sein. Die zugehörige Zeit sollte jedoch der zurückgegebenen Anzahl entsprechen. Beispiel: Nehmen Sie 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 N statt 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/Fortsetzung. Leere Implementierung, falls nicht unterstützt, sollte jedoch für Hardware mit nicht trivialer Latenz implementiert werden. Im Pausenzustand verbraucht die Audio-Hardware möglicherweise noch Strom. Der Benutzer kann erwägen, nach einer Zeitüberschreitung „suspend“ aufzurufen.

Die Implementierung dieser Funktion ist für die Offloaded-Wiedergabe zwingend erforderlich.

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 der Aufruf ohne passende Pause erfolgt.

Die Implementierung dieser Funktion ist für die Offloaded-Wiedergabe zwingend erforderlich.

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 Entleerens zu benachrichtigen. Der Aufruf dieser Funktion impliziert, dass alle zukünftigen write()- und drain()- Operationen nicht blockierend sein dürfen 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 left, float right)

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)

Schreiben Sie den Audiopuffer in den Treiber. Gibt die Anzahl der geschriebenen Bytes oder einen negativen status_t zurück. Wenn vor dem Fehler mindestens ein Frame erfolgreich geschrieben wurde, wird empfohlen, dass der Treiber diese erfolgreiche (kurze) Byteanzahl 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 darf nur die Anzahl der Bytes schreiben, die derzeit in den Treiber-/Hardwarepuffer passen, und dann diese Byteanzahl zurückgeben. Wenn diese kleiner als die angeforderte Schreibgröße ist, muss die Rückruffunktion aufgerufen werden, wenn mehr Platz im Treiber-/Hardwarepuffer 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