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 )(const struct audio_stream_out *stream)
entier(* set_volume )(struct audio_stream_out *stream, flotter à gauche, flotter à droite)
ssize_t(* écrire )(struct audio_stream_out *stream, const void *buffer, size_t octets)
entier(* get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames)
entier(* get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *timestamp)
entier(* set_callback )(struct audio_stream_out *stream, rappel stream_callback_t , 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

struct audio_stream commun

Méthodes courantes de sortie du flux audio. Il doit s'agir du premier membre de audio_stream_out car les utilisateurs de cette structure convertiront un audio_stream en pointeur audio_stream_out dans des contextes où l'on sait 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, type audio_drain_type_t )

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, drain() ne doit pas bloquer, mais doit revenir rapidement et la fin du drain est notifié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 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 ne soient lues pour laisser le temps au framework d'effectuer un changement de piste sans interruption.

Drain doit revenir immédiatement lors des appels stop() et flush()

La mise en œuvre 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)

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

La mise en œuvre de cette fonction est obligatoire pour la lecture déchargée.

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 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 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 décompte récent du nombre d’images audio présentées à un observateur externe. Cela exclut les frames qui ont été écrites mais qui sont encore en cours de préparation. Le compte 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 décompte renvoyé est censé être « récent », mais il n’est pas nécessaire qu’il soit la valeur la plus récente possible. Cependant, le temps associé doit correspondre au nombre renvoyé. Exemple : supposons que N+M images 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)(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)

Avertit le 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. Une 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. En état de pause, le matériel audio peut encore utiliser de l'énergie. L'utilisateur peut envisager d'appeler la suspension après un délai d'attente.

La mise en œuvre de cette fonction est obligatoire pour la lecture déchargée.

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

int(* reprendre)(struct audio_stream_out *stream)

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

La mise en œuvre 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éfinissez la fonction de rappel pour notifier la fin de l'écriture et du drainage 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 l’achèvement.

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

int(* set_volume)(struct audio_stream_out *stream, flotter à gauche, flotter à 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 définir directement le volume comme indiqué via le framework. Cette méthode peut produire plusieurs sorties PCM ou codecs à accélération matérielle, 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 octets)

Écrivez 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 (courts) réussis, 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 le tampon 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 le tampon 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 :
  • matériel/libhardware/include/hardware/ audio.h