Documentation de référence sur la struct audio_stream_out

Documentation de référence sur la struct audio_stream_out

#include < audio.h >

Champs de données

struct audio_stream   commun
 
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(*  paused (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)
 

Description détaillée

audio_stream_out est l'interface d'abstraction du matériel de sortie audio.

Il fournit des informations sur diverses propriétés du pilote matériel de sortie audio.

Définition à la ligne  276 du fichier audio.h .

Documentation des champs

struct audio_stream common

Méthodes courantes de diffusion du flux audio. Cet élément doit être le premier membre de audio_stream_out , car les utilisateurs de cette structure casteront un audio_stream en pointeur audio_stream_out dans les contextes où il est connu que l' audio_stream fait référence à un audio_stream_out .

Définition à la ligne  282 du fichier audio.h .

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

Demande une notification lorsque les données mises en mémoire tampon par le pilote/le matériel ont été lues. Si set_callback() a déjà été appelé pour activer le mode non bloquant, drain() ne doit pas se bloquer. Il doit plutôt renvoyer rapidement, et la fin du vidage est signalée via le rappel. Si set_callback() n'a pas été appelé, drain() doit se bloquer jusqu'à la fin. Si type==AUDIO_DRAIN_ALL, le vidage se termine lorsque toutes les données précédemment écrites ont été lues. Si type==AUDIO_DRAIN_EARLY_NOTIFY, le vidage se termine peu de temps avant que toutes les données du titre en cours ne soient lues pour laisser le framework effectuer un changement de titre sans coupure.

Le vidage doit renvoyer immédiatement l'appel stop() et flush() .

L'implémentation de cette fonction est obligatoire pour la lecture hors charge.

Définition à la ligne  372 du fichier audio.h .

int(* flush)(struct audio_stream_out *stream)

Informe le pilote audio de vider les données mises en file d'attente. Le flux doit déjà être mis en pause avant d'appeler flush() .

L'implémentation de cette fonction est obligatoire pour la lecture hors charge.

Définition à la ligne  380 du fichier audio.h .

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

Renvoie la latence estimée du pilote matériel audio en millisecondes.

Définition à la ligne  287 du fichier audio.h .

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

obtenir l'heure locale à laquelle la prochaine écriture dans le pilote audio sera présentée. Les unités sont des microsecondes, et l'epoch est déterminée par le HAL audio local.

Définition à la ligne  324 du fichier audio.h .

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

Renvoie un nombre récent de frames audio présentés à un observateur externe. Cela exclut les frames qui ont été écrits, mais qui sont toujours dans le pipeline. Le compteur n'est pas réinitialisé à zéro lorsque la sortie passe en veille. Renvoie également la valeur de CLOCK_MONOTONIC à compter de ce nombre de présentations. Le nombre renvoyé doit être "récent", mais il n'a pas besoin d'être la valeur la plus récente possible. Toutefois, l'heure associée doit correspondre au nombre renvoyé. Exemple: supposons que N + M frames aient été présentés, où M est un nombre "petit". Il est alors permis de renvoyer N au lieu de N+M, et le code temporel doit correspondre à N plutôt qu'à N+M. Les termes "récent" et "petit" ne sont pas définis. Ils reflètent la qualité de l'implémentation.

3.0 et versions ultérieures uniquement.

Définition à la ligne  398 du fichier audio.h .

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

Définition à la ligne  317 du fichier audio.h .

int(* pause)(struct audio_stream_out *stream)

Informe le pilote audio d'arrêter la lecture, mais les tampons mis en file d'attente sont conservés par le matériel. Utile pour implémenter la mise en pause/reprise. Toutefois, si elle n'est pas prise en charge, une implémentation vide doit être implémentée pour le matériel avec une latence non triviale. En état de pause, le matériel audio peut toujours consommer de l'énergie. L'utilisateur peut envisager d'appeler suspend après un délai avant expiration.

L'implémentation de cette fonction est obligatoire pour la lecture hors charge.

Définition à la ligne  345 du fichier audio.h .

int(* resume)(struct audio_stream_out *stream)

Informe le pilote audio de la reprise de la lecture après une mise en pause. Renvoie une erreur si elle est appelée sans pause correspondante.

L'implémentation de cette fonction est obligatoire pour la lecture hors charge.

Définition à la ligne  353 du fichier audio.h .

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

définir la fonction de rappel pour informer de la fin de l'écriture et du vidage non bloquants ; L'appel de cette fonction implique que tous les futurs write() et drain() doivent être non bloquants et utiliser le rappel pour signaler la fin.

Définition à la ligne  333 du fichier audio.h .

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

Utilisez cette méthode lorsque le mixage audio est effectué dans le matériel. Cette méthode sert d'interface directe avec le matériel, ce qui vous permet de définir directement le volume au lieu de le faire via le framework. Cette méthode peut produire plusieurs sorties PCM ou des codecs accélérés matériellement, tels que MP3 ou AAC.

Définition à la ligne  296 du fichier audio.h .

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

Écrire le tampon audio dans le pilote. Renvoie le nombre d'octets écrits ou un status_t négatif. Si au moins un frame a été écrit avec succès avant l'erreur, il est recommandé que le pilote renvoie ce nombre d'octets (court) réussi, puis renvoie une erreur dans l'appel suivant.

Si set_callback() a déjà été appelé pour activer le mode non bloquant, write() n'est pas autorisé à bloquer. Elle ne doit écrire que le nombre d'octets qui tiennent actuellement dans le tampon du pilote/de l'appareil, puis renvoyer ce nombre d'octets. Si cette valeur est inférieure à la taille d'écriture demandée, la fonction de rappel doit être appelée lorsqu'il y a plus d'espace disponible dans la mémoire tampon du pilote/de l'appareil.

Définition à la ligne  311 du fichier audio.h .


La documentation de ce struct a été générée à partir du fichier suivant :
  • hardware/libhardware/include/hardware/ audio.h