Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Référence de structure audio_stream_out

Référence de structure audio_stream_out

#include < audio.h >

Champs de données

structure audio_stream commun
uint32_t(* get_latency )(structure const audio_stream_out *stream)
entier(* set_volume )(struct audio_stream_out *stream, flottant à gauche, flottant à droite)
taille_t(* écrire )(struct audio_stream_out *stream, const void *buffer, size_t octets)
entier(* get_render_position )(structure const audio_stream_out *stream, uint32_t *dsp_frames)
entier(* get_next_write_timestamp )(structure const audio_stream_out *stream, int64_t *timestamp)
entier(* set_callback )(struct audio_stream_out *stream, stream_callback_t rappel, void *cookie)
entier(* pause )(struct audio_stream_out *stream)
entier(* reprendre )(struct audio_stream_out *stream)
entier(* drain )(struct audio_stream_out *stream, type audio_drain_type_t )
entier(* flush )(struct audio_stream_out *stream)
entier(* 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 pour le 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 de terrain

structure audio_stream commune

Méthodes courantes de sortie du flux audio. Ce doit être le premier membre de audio_stream_out car les utilisateurs de cette structure convertiront un pointeur audio_stream en audio_stream_out dans des contextes où il est connu que 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/matériel ont été lues. Si set_callback() a déjà été appelé pour activer le mode non bloquant, le drain() ne doit pas bloquer, mais il doit revenir rapidement et l'achèvement du drain est notifié via le rappel. Si set_callback() n'a pas été appelé, le drain() doit bloquer jusqu'à la fin. Si type==AUDIO_DRAIN_ALL, le drain se termine lorsque toutes les données précédemment écrites ont été lues. Si type==AUDIO_DRAIN_EARLY_NOTIFY, le drain se termine peu de temps avant que toutes les données de la piste actuelle aient été lues pour laisser le temps à la structure d'effectuer un changement de piste sans interruption.

Drain doit revenir immédiatement à l'appel stop() et flush()

L'implémentation de cette fonction est obligatoire pour la lecture déchargée.

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

int(* flush)(struct audio_stream_out *stream)

Notifie au pilote audio de vider les données 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 déchargée.

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

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

Renvoie la latence estimée du pilote de 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 sur le pilote audio sera présentée. Les unités sont des microsecondes, où l'époque est décidée par la HAL audio locale.

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 décompte récent du nombre de trames audio présentées à un observateur externe. Cela exclut les trames qui ont été écrites mais qui sont toujours dans le pipeline. Le comptage n'est pas remis à zéro lorsque la sortie passe en veille. Renvoie également la valeur de CLOCK_MONOTONIC à partir de ce nombre de présentations. Le nombre renvoyé est supposé être "récent", mais n'a pas besoin d'être la valeur la plus récente possible. Cependant, l'heure associée doit correspondre au décompte renvoyé. Exemple : supposons que N+M trames ont été présentées, où M est un « petit » nombre. Il est alors permis de renvoyer N au lieu de N+M, et l'horodatage 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 la mise en œuvre.

3.0 et supérieur uniquement.

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

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

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

int(* pause)(struct audio_stream_out *stream)

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

L'implémentation de cette fonction est obligatoire pour la lecture déchargée.

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

int(* resume)(struct audio_stream_out *stream)

Notifie au pilote audio de reprendre la lecture après une pause. Renvoie une erreur si elle est appelée sans pause correspondante.

L'implémentation de cette fonction est obligatoire pour la lecture déchargée.

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

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

définir la fonction de rappel pour notifier l'achèvement de l'écriture non bloquante et du drain. L'appel de cette fonction implique que tous les futurs write() et drain() doivent être non bloquants et utiliser le rappel pour signaler l'achèvement.

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

int(* set_volume)(struct audio_stream_out *stream, flottant à gauche, flottant à droite)

Utilisez cette méthode dans les situations où le mixage audio est effectué dans le matériel. Cette méthode sert d'interface directe avec le matériel, vous permettant de régler directement le volume par rapport à via le framework. Cette méthode peut produire plusieurs sorties PCM ou des codecs à accélération matérielle, tels que MP3 ou AAC.

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

ssize_t(* écriture)(struct audio_stream_out *stream, const void *buffer, size_t octets)

Écrire le tampon audio dans le pilote. Renvoie le nombre d'octets écrits ou un status_t négatif. Si au moins une trame a été écrite avec succès avant l'erreur, il est suggéré que le pilote renvoie ce nombre d'octets réussis (courts), puis renvoie une erreur lors de l'appel suivant.

Si set_callback() a déjà été appelé pour activer le mode non bloquant, write() n'est pas autorisé à bloquer. Il doit écrire uniquement le nombre d'octets qui tiennent actuellement dans la mémoire tampon du pilote/matériel, puis renvoyer ce nombre d'octets. Si celle-ci est inférieure à la taille d'écriture demandée, la fonction de rappel doit être appelée lorsque plus d'espace est disponible dans la mémoire tampon du pilote/matériel.

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


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