Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

audio_stream_out Odniesienie do struktury

audio_stream_out Odniesienie do struktury

#include < audio.h >

Pola danych

struktury audio_stream wspólny
uint32_t(* get_latency )(const struct audio_stream_out *stream)
int(* set_volume )(struct audio_stream_out *stream, float w lewo, float w prawo)
rozmiar_t(* write )(struct audio_stream_out *stream, const void *buffer, size_t bajtów)
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(* pauza )(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 abstrakcji dla sprzętu wyjściowego audio.

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

Definicja w wierszu 276 pliku audio.h .

Dokumentacja terenowa

struktura audio_stream wspólne

Typowe metody wyjścia strumienia audio. Musi to być pierwszy element elementu audio_stream_out , ponieważ użytkownicy tej struktury będą rzucać 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 wierszu 282 pliku audio.h .

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

Żąda powiadomienia, gdy dane zbuforowane przez sterownik/sprzęt zostały odtworzone. Jeśli set_callback() została wcześniej wywołana w celu włączenia trybu nieblokującego, Drain( ) nie może blokować, zamiast tego powinien szybko powrócić, a zakończenie procesu spustowego jest powiadamiane przez wywołanie zwrotne. Jeśli set_callback() nie została wywołana, Drain( ) musi blokować aż do zakończenia. Jeśli type==AUDIO_DRAIN_ALL, drenaż zakończy się po odtworzeniu wszystkich zapisanych wcześniej danych. Jeśli type==AUDIO_DRAIN_EARLY_NOTIFY, drenaż zakończy się na krótko przed odtworzeniem wszystkich danych dla bieżącej ścieżki, aby umożliwić frameworkowi wykonanie bezprzerwowego przełączania ścieżek.

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 wierszu 372 pliku audio.h .

int(* flush)(struct audio_stream_out *stream)

Powiadamia sterownik audio o opróżnieniu danych w kolejce. Strumień musi być już wstrzymany przed wywołaniem flush() .

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

Definicja w wierszu 380 pliku audio.h .

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

Zwróć 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)

pobierz czas lokalny, w którym zostanie przedstawiony następny zapis do sterownika audio. Jednostkami są mikrosekundy, gdzie epoka jest określana przez lokalny dźwięk HAL.

Definicja w wierszu 324 pliku audio.h .

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

Zwróć ostatnią liczbę ramek audio przedstawionych zewnętrznemu obserwatorowi. Wyklucza to ramki, które zostały napisane, ale wciąż są w przygotowaniu. Licznik nie jest resetowany do zera, gdy wyjście przechodzi w stan czuwania. Zwraca również wartość CLOCK_MONOTONIC od tej liczby prezentacji. Zwrócona liczba powinna być „najnowsza”, ale nie musi być najnowszą możliwą wartością. Jednak skojarzony czas powinien odpowiadać zwróconej liczbie. Przykład: załóżmy, że zostało przedstawionych N+M ramek, gdzie M to „mała” liczba. 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ść realizacji.

Tylko 3.0 i nowsze.

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(* pauza)(struct audio_stream_out *stream)

Powiadamia sterownik audio o zatrzymaniu odtwarzania, jednak bufory w kolejce są zachowywane przez sprzęt. Przydatne do wdrażania pauzy/wznawiania. Pusta implementacja, jeśli nie jest obsługiwana, powinna zostać zaimplementowana dla sprzętu z nietrywialnymi opóźnieniami. W stanie wstrzymania sprzęt audio może nadal zużywać energię. Użytkownik może rozważyć wywołanie zawieszenia po upływie limitu czasu.

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

Definicja w wierszu 345 pliku audio.h .

int(* resume)(struct audio_stream_out *stream)

Powiadamia sterownik audio o wznowieniu odtwarzania po pauzie. Zwraca błąd, jeśli zostanie wywołany bez dopasowania pauzy.

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

Definicja w wierszu 353 pliku audio.h .

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

ustawić funkcję zwrotną do powiadamiania o zakończeniu nieblokującego zapisu i drenażu. Wywołanie tej funkcji oznacza, że ​​wszystkie przyszłe write() i Drain() muszą być nieblokują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 w lewo, float 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 zgodnie z aprobatą za pośrednictwem frameworka. Ta metoda może generować wiele wyjść PCM lub akcelerowanych sprzętowo kodeków, takich jak MP3 lub AAC.

Definicja w wierszu 296 pliku audio.h .

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

Zapisz bufor audio do sterownika. Zwraca liczbę zapisanych bajtów lub ujemny status_t. Jeśli co najmniej jedna ramka została pomyślnie zapisana przed błędem, sugeruje się, aby sterownik zwrócił tę pomyślną (krótką) liczbę bajtów, a następnie zwrócił błąd w kolejnym wywołaniu.

Jeśli set_callback() została wcześniej wywołana w celu włączenia trybu nieblokującego, write() nie może blokować. Musi zapisać tylko liczbę bajtów, które aktualnie mieszczą się w buforze sterownika/sprzętu, a następnie zwrócić tę liczbę bajtów. Jeśli jest to mniej 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 pliku audio.h .


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

audio_stream_out Odniesienie do struktury

audio_stream_out Odniesienie do struktury

#include < audio.h >

Pola danych

struktury audio_stream wspólny
uint32_t(* get_latency )(const struct audio_stream_out *stream)
int(* set_volume )(struct audio_stream_out *stream, float w lewo, float w prawo)
rozmiar_t(* write )(struct audio_stream_out *stream, const void *buffer, size_t bajtów)
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(* pauza )(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 abstrakcji dla sprzętu wyjściowego audio.

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

Definicja w wierszu 276 pliku audio.h .

Dokumentacja terenowa

struktura audio_stream wspólne

Typowe metody wyprowadzania strumienia audio. Musi to być pierwszy element elementu audio_stream_out , ponieważ użytkownicy tej struktury będą rzucać 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 wierszu 282 pliku audio.h .

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

Żąda powiadomienia, gdy dane zbuforowane przez sterownik/sprzęt zostały odtworzone. Jeśli set_callback() została wcześniej wywołana w celu włączenia trybu nieblokującego, Drain( ) nie może blokować, zamiast tego powinien szybko powrócić, a zakończenie procesu spustowego jest powiadamiane przez wywołanie zwrotne. Jeśli set_callback() nie została wywołana, Drain( ) musi blokować aż do zakończenia. Jeśli type==AUDIO_DRAIN_ALL, drenaż zakończy się po odtworzeniu wszystkich zapisanych wcześniej danych. Jeśli type==AUDIO_DRAIN_EARLY_NOTIFY, drenaż zakończy się na krótko przed odtworzeniem wszystkich danych dla bieżącej ścieżki, aby umożliwić frameworkowi wykonanie bezprzerwowego przełączania ścieżek.

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 wierszu 372 pliku audio.h .

int(* flush)(struct audio_stream_out *stream)

Powiadamia sterownik audio o opróżnieniu danych w kolejce. Strumień musi być już wstrzymany przed wywołaniem flush() .

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

Definicja w wierszu 380 pliku audio.h .

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

Zwróć 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)

pobierz czas lokalny, w którym zostanie przedstawiony następny zapis do sterownika audio. Jednostkami są mikrosekundy, gdzie epoka jest określana przez lokalny dźwięk HAL.

Definicja w wierszu 324 pliku audio.h .

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

Zwróć ostatnią liczbę ramek audio przedstawionych zewnętrznemu obserwatorowi. Wyklucza to ramki, które zostały napisane, ale wciąż są w przygotowaniu. Licznik nie jest resetowany do zera, gdy wyjście przechodzi w stan czuwania. Zwraca również wartość CLOCK_MONOTONIC od tej liczby prezentacji. Zwrócona liczba powinna być „najnowsza”, ale nie musi być najnowszą możliwą wartością. Jednak skojarzony czas powinien odpowiadać zwróconej liczbie. Przykład: załóżmy, że zostało przedstawionych N+M ramek, gdzie M to „mała” liczba. 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ść realizacji.

Tylko 3.0 i nowsze.

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(* pauza)(struct audio_stream_out *stream)

Powiadamia sterownik audio o zatrzymaniu odtwarzania, jednak bufory w kolejce są zachowywane przez sprzęt. Przydatne do wdrażania pauzy/wznawiania. Pusta implementacja, jeśli nie jest obsługiwana, powinna zostać zaimplementowana dla sprzętu z nietrywialnymi opóźnieniami. W stanie wstrzymania sprzęt audio może nadal zużywać energię. Użytkownik może rozważyć wywołanie zawieszenia po upływie limitu czasu.

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

Definicja w wierszu 345 pliku audio.h .

int(* resume)(struct audio_stream_out *stream)

Powiadamia sterownik audio o wznowieniu odtwarzania po pauzie. Zwraca błąd, jeśli zostanie wywołany bez dopasowania pauzy.

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

Definicja w wierszu 353 pliku audio.h .

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

ustawić funkcję zwrotną do powiadamiania o zakończeniu nieblokującego zapisu i drenażu. Wywołanie tej funkcji oznacza, że ​​wszystkie przyszłe write() i Drain() muszą być nieblokują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 w lewo, float 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 zgodnie z aprobatą za pośrednictwem frameworka. Ta metoda może generować wiele wyjść PCM lub akcelerowanych sprzętowo kodeków, takich jak MP3 lub AAC.

Definicja w wierszu 296 pliku audio.h .

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

Zapisz bufor audio do sterownika. Zwraca liczbę zapisanych bajtów lub ujemny status_t. Jeśli co najmniej jedna ramka została pomyślnie zapisana przed błędem, sugeruje się, aby sterownik zwrócił tę pomyślną (krótką) liczbę bajtów, a następnie zwrócił błąd w kolejnym wywołaniu.

Jeśli set_callback() została wcześniej wywołana w celu włączenia trybu nieblokującego, write() nie może blokować. Musi zapisać tylko liczbę bajtów, które aktualnie mieszczą się w buforze sterownika/sprzętu, a następnie zwrócić tę liczbę bajtów. Jeśli jest to mniej 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 pliku audio.h .


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