audio_stream_out Odniesienie do struktury

audio_stream_out Odniesienie do struktury

#include < audio.h >

Pola danych

struktura audio_stream wspólny
uint32_t(* get_latency )(stała struktura audio_stream_out *stream)
int(* set_volume )(struct audio_stream_out *stream, pływaj w lewo, pływaj w prawo)
rozmiar_t(* napisz ) (struct audio_stream_out *stream, const void *buffer, size_t bajtów)
int(* get_render_position )(const struktura audio_stream_out *stream, uint32_t *dsp_frames)
int(* get_next_write_timestamp )(const struktura audio_stream_out *stream, int64_t *znacznik czasu)
int(* set_callback )(struct audio_stream_out *stream, stream_callback_t wywołanie zwrotne, void *cookie)
int(* pauza )(struktura audio_stream_out *stream)
int(* wznów )(struktura audio_stream_out *stream)
int(* dren )(struct audio_stream_out *stream, typ audio_drain_type_t )
int(* opróżnij )(struktura 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ściowego audio.

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

Definicja w linii 276 pliku audio.h .

Dokumentacja terenowa

wspólna struktura audio_stream

Typowe metody wyjścia strumienia audio. Musi to być pierwszy element audio_stream_out , ponieważ użytkownicy tej struktury będą rzutować wskaźnik audio_stream na wskaźnik audio_stream_out w kontekstach, w których wiadomo, że audio_stream odwołuje się do audio_stream_out .

Definicja w linii 282 pliku audio.h .

int(* drenaż)(struct audio_stream_out *stream, typ audio_drain_type_t )

Żąda powiadomienia w przypadku odtworzenia danych buforowanych przez sterownik/sprzęt. Jeśli funkcja set_callback() została już wywołana w celu włączenia trybu nieblokującego, funkcja dren() nie może się blokować, zamiast tego powinna szybko powrócić, a zakończenie opróżniania zostanie powiadomione poprzez wywołanie zwrotne. Jeśli funkcja set_callback() nie została wywołana, funkcja spustowa() musi zostać zablokowana do czasu zakończenia. Jeśli wpiszesz==AUDIO_DRAIN_ALL, drenaż zakończy się po odtworzeniu wszystkich wcześniej zapisanych danych. Jeśli typ==AUDIO_DRAIN_EARLY_NOTIFY, drenaż kończy się na krótko przed odtworzeniem wszystkich danych bieżącej ścieżki, aby dać frameworkowi czas na wykonanie bezprzerwowej zmiany ścieżki.

Drain musi powrócić natychmiast po wywołaniu stop() i Flush().

Implementacja tej funkcji jest obowiązkowa w przypadku odtwarzania bez obciążenia.

Definicja w linii 372 pliku audio.h .

int(* Flush)(struct audio_stream_out *stream)

Powiadamia sterownik audio o konieczności opróżnienia danych z kolejki. Strumień musi być już wstrzymany przed wywołaniem funkcji Flush() .

Implementacja tej funkcji jest obowiązkowa w przypadku odtwarzania bez obciążenia.

Definicja w linii 380 pliku audio.h .

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

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

Definicja w linii 287 pliku audio.h .

int(* get_next_write_timestamp)(const struktura audio_stream_out *stream, int64_t *znacznik czasu)

uzyskaj czas lokalny, o którym zostanie wyświetlony następny zapis do sterownika audio. Jednostką są mikrosekundy, a o epoce decyduje lokalny HAL audio.

Definicja w linii 324 pliku audio.h .

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

Zwróć ostatnią liczbę klatek audio przedstawionych zewnętrznemu obserwatorowi. Nie obejmuje to ramek, które zostały zapisane, ale nadal są w przygotowaniu. Licznik nie jest resetowany do zera, gdy wyjście przechodzi w stan gotowości. Zwraca również wartość CLOCK_MONOTONIC według licznika prezentacji. Oczekuje się, że zwrócona liczba będzie „najnowsza”, ale nie musi to być najnowsza możliwa wartość. Jednak powiązany czas powinien odpowiadać dowolnej zwróconej liczbie. Przykład: załóżmy, że zaprezentowano ramki N+M, gdzie M jest „małą” liczbą. Wtedy dopuszczalne jest zwrócenie N zamiast N+M, a znacznik czasu powinien odpowiadać N, a nie N+M. Terminy „niedawny” i „mały” nie są zdefiniowane. Odzwierciedlają jakość wdrożenia.

Tylko wersja 3.0 i wyższa.

Definicja w linii 398 pliku audio.h .

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

Definicja w linii 317 pliku audio.h .

int(* pauza)(struct audio_stream_out *stream)

Powiadamia sterownik audio o konieczności zatrzymania odtwarzania, jednak bufory w kolejce są zachowywane przez sprzęt. Przydatne przy wdrażaniu pauzy/wznowienia. Pustą implementację, jeśli nie jest obsługiwana, należy jednak zaimplementować dla sprzętu z nietrywialnym opóźnieniem. W stanie pauzy sprzęt audio może nadal zużywać energię. Użytkownik może rozważyć zawieszenie połączenia po upływie limitu czasu.

Implementacja tej funkcji jest obowiązkowa w przypadku odtwarzania bez obciążenia.

Definicja w linii 345 pliku audio.h .

int(* CV)(struct audio_stream_out *stream)

Powiadamia sterownik audio o konieczności wznowienia odtwarzania po pauzie. Zwraca błąd, jeśli zostanie wywołany bez pasującej pauzy.

Implementacja tej funkcji jest obowiązkowa w przypadku odtwarzania bez obciążenia.

Definicja w linii 353 pliku audio.h .

int(* set_callback)(struct audio_stream_out *stream, stream_callback_t wywołanie zwrotne, void *cookie)

ustaw funkcję wywołania zwrotnego powiadamiającą o zakończeniu nieblokującego zapisu i drenażu. Wywołanie tej funkcji oznacza, że ​​wszystkie przyszłe funkcje write() i drenaż() muszą nie blokować się i używać wywołania zwrotnego do sygnalizowania zakończenia.

Definicja w linii 333 pliku audio.h .

int(* set_volume)(struct audio_stream_out *stream, pływa w lewo, pływa w prawo)

Użyj tej metody w sytuacjach, gdy miksowanie dźwięku odbywa się sprzętowo. Ta metoda służy jako bezpośredni interfejs ze sprzętem, umożliwiając bezpośrednie ustawienie głośności w porównaniu do platformy. Ta metoda może generować wiele wyjść PCM lub kodeków przyspieszanych sprzętowo, takich jak MP3 lub AAC.

Definicja w linii 296 pliku audio.h .

ssize_t(* zapis)(struct audio_stream_out *stream, const void *buffer, size_t bajtów)

Zapisz bufor audio do sterownika. Zwraca liczbę zapisanych bajtów lub ujemną wartość status_t. Jeśli co najmniej jedna ramka została pomyślnie zapisana przed wystąpieniem błędu, sugeruje się, aby sterownik zwrócił liczbę pomyślnych (krótkich) bajtów, a następnie zwrócił błąd w kolejnym wywołaniu.

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

Definicja w linii 311 pliku audio.h .


Dokumentacja tej struktury została wygenerowana z następującego pliku:
  • hardware/libhardware/include/hardware/ audio.h