Informacje o strukturze audio_stream_out

Informacje o strukturze audio_stream_out

#include < audio.h >

Pola danych

struct audio_stream   wspólne
 
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)
 

Szczegółowy opis

audio_stream_out to interfejs abstrakcyjny dla sprzętu wyjścia audio.

Zawiera on informacje o różnych właściwościach sterownika sprzętu wyjścia audio.

Definicja w wierszu 276 pliku audio.h .

Dokumentacja pola

struct audio_stream common

Typowe metody przesyłania strumienia audio. Ten musi być pierwszym elementem audio_stream_out ponieważ użytkownicy tej struktury będą rzutować audio_stream audio_stream_out wskaźnik w kontekstach, w których wiadomo, że audio_stream odwołuje się do audio_stream_out .

Definicja w wierszu 282 pliku audio.h .

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

Wysyła żądanie powiadomienia, gdy dane buforowane przez sterownik lub sprzęt zostały odtworzone. Jeśli metoda set_callback() została już wywołana w celu włączenia trybu niezablokowanego, metoda drain() nie może blokować, ale powinna szybko zwracać wartość i powiadomić o zakończeniu działania za pomocą funkcji z powrotem. Jeśli funkcja set_callback() nie została wywołana, funkcja drain() musi blokować do momentu zakończenia. Jeśli parametr type ma wartość AUDIO_DRAIN_ALL, odprowadzenie zostanie zakończone po odtworzeniu wszystkich wcześniej zapisanych danych. Jeśli type==AUDIO_DRAIN_EARLY_NOTIFY, odłączenie zostanie zakończone krótko przed odtworzeniem wszystkich danych bieżącego utworu, aby umożliwić frameworkowi wykonanie bezprzerwnego przełączenia utworu.

Wywołanie drain musi zwracać wartość natychmiast po wywołaniu stop() i  flush()

Wdrożenie tej funkcji jest obowiązkowe w przypadku odtwarzania w chmurze.

Definicja w wierszu 372 pliku audio.h .

int(* flush)(struct audio_stream_out *stream)

Informuje sterownik dźwięku o wyczyszczeniu danych z kolejki. Przed wywołaniem funkcji flush() strumień musi być wstrzymany.

Wdrożenie tej funkcji jest obowiązkowe w przypadku odtwarzania w chmurze.

Definicja w wierszu 380 pliku audio.h .

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

Zwraca szacowane opóźnienie sterownika sprzętu audio w milisekundach.

Definicja w wierszu 287 pliku audio.h .

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

uzyskać czas lokalny, w którym zostanie przedstawione następne zapisanie do sterownika audio. Jednostki to mikrosekundy, a epoka jest określana przez lokalny interfejs HAL dźwięku.

Definicja w wierszu 324 pliku audio.h .

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

Zwraca ostatnią liczbę ramek audio przedstawionych obserwatorowi zewnętrznemu. Nie obejmuje to klatek, które zostały zapisane, ale wciąż są w potoku. Liczba nie jest resetowana do zera, gdy wyjście przechodzi w tryb gotowości. Zwraca również wartość CLOCK_MONOTONIC z bieżącego wystąpienia funkcji. Zwracana liczba powinna być „niedawna”, ale nie musi być najnowszą możliwą wartością. Jednak powiązany czas powinien odpowiadać zwróconej liczbie. Przykład: załóżmy, że wyświetlono N + M klatek, gdzie M to „mała” liczba. Wtedy zamiast N + M można zwrócić N, a sygnatura czasowa powinna odpowiadać N, a nie N + M. Terminy „niedawne” i „małe” nie są zdefiniowane. Odzwierciedlają one jakość implementacji.

Tylko wersja 3.0 i nowsza.

Definicja w wierszu 398 pliku audio.h .

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

Definicja w wierszu 317 pliku audio.h .

int(* pause)(struct audio_stream_out *stream)

Informuje sterownik audio o zatrzymaniu odtwarzania, ale bufory w kolejce są przechowywane przez sprzęt. Przydatne do implementacji funkcji wstrzymywania i wznawiania. Jeśli nie jest obsługiwana, pusta implementacja powinna być stosowana w przypadku sprzętu o nietypowym opóźnieniu. W stanie wstrzymania sprzęt audio może nadal pobierać energię. Użytkownik może zawiesić połączenie po upływie limitu czasu.

Wdrożenie tej funkcji jest obowiązkowe w przypadku odtwarzania w chmurze.

Definicja w wierszu 345 pliku audio.h .

int(* resume)(struct audio_stream_out *stream)

Informuje sterownik dźwięku, aby wznowić odtwarzanie po wstrzymaniu. Zwraca błąd, jeśli wywołanie nie zawiera odpowiedniej pauzy.

Wdrożenie tej funkcji jest obowiązkowe w przypadku odtwarzania w chmurze.

Definicja w wierszu 353 pliku audio.h .

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

Ustaw funkcję wywołania zwrotnego, która będzie informować o zakończeniu operacji zapisu i opróżniania bufora bez blokowania. Wywołanie tej funkcji oznacza, że wszystkie przyszłe wywołania write() oraz drain() muszą być bezblokujące i używać wywołania zwrotnego do sygnalizowania zakończenia.

Definicja w wierszu 333 pliku audio.h .

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

Użyj tej metody w sytuacjach, gdy miksowanie dźwięku odbywa się na sprzęcie. Ta metoda służy jako bezpośredni interfejs z urządzeniem, umożliwiając bezpośrednie ustawienie głośności zamiast ustawienia za pomocą frameworka. Ta metoda może wygenerować wiele PCM lub koderów przyspieszonych sprzętowo, takich jak MP3 czy AAC.

Definicja w wierszu 296 pliku audio.h .

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

Zapisz bufor audio do sterownika. Zwraca liczbę zapisanych bajtów lub ujemną wartość status_t. Jeśli przed wystąpieniem błędu co najmniej 1 ramka została zapisana, zalecamy, aby sterownik zwrócił tę liczbę bajtów (krótki) i następnie błąd w kolejnych wywołaniach.

Jeśli funkcja set_callback() została wcześniej wywołana w celu włączenia trybu niezablokowanego, funkcja write() nie może blokować. Musi zapisać tylko liczbę bajtów, która mieści się w buforze sterownika/sprzętu, a następnie zwrócić tę liczbę. Jeśli jest mniejszy niż żądany rozmiar zapisu, funkcja wywołania zwrotnego musi zostać wywołana, gdy w buforze sterownika/sprzętu będzie więcej miejsca.

Definicja w wierszu 311 w pliku audio.h .


Dokumentacja tego typu danych została wygenerowana z tego pliku:
  • hardware/libhardware/include/hardware/ audio.h