2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
audio_stream_out 구조체 참조
#include <
audio.h
>
|
struct
audio_stream
|
일반적인
|
|
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)
|
|
audio_stream_out
은 오디오 출력 하드웨어의 추상화 인터페이스입니다.
오디오 출력 하드웨어 드라이버의 다양한 속성에 관한 정보를 제공합니다.
audio.h
FILE의
276
행에 정의되어 있습니다.
드라이버/하드웨어에서 버퍼링된 데이터가 재생될 때 알림을 요청합니다. 비차단 모드를 사용 설정하기 위해 이전에
set_callback()
이 호출된 경우
drain()
이 차단되어서는 안 되며 대신 빠르게 반환되어야 하고 콜백을 통해 배출 완료가 알림됩니다.
set_callback()
이 호출되지 않은 경우
drain()
은 완료될 때까지 차단해야 합니다. type==AUDIO_DRAIN_ALL인 경우 이전에 작성된 모든 데이터가 재생되면 배수가 완료됩니다. type==AUDIO_DRAIN_EARLY_NOTIFY인 경우 프레임워크가 갭리스 트랙 전환을 실행할 시간을 확보할 수 있도록 현재 트랙의 모든 데이터가 재생되기 직전에 배수가 완료됩니다.
stop() 및
flush()
호출 시 drain이 즉시 반환되어야 합니다.
오프로드된 재생을 위해서는 이 함수를 구현해야 합니다.
audio.h
FILE의
372
라인에 정의되어 있습니다.
오디오 드라이버에 대기열에 추가된 데이터를 플러시하도록 알립니다.
flush()
를 호출하기 전에 스트림이 이미 일시중지되어 있어야 합니다.
오프로드된 재생을 위해서는 이 함수를 구현해야 합니다.
audio.h
FILE의
380
라인에 정의되어 있습니다.
오디오 하드웨어 드라이버의 예상 지연 시간을 밀리초 단위로 반환합니다.
audio.h
FILE의
287
라인에 정의되어 있습니다.
int(* get_next_write_timestamp)(const struct
audio_stream_out
*stream, int64_t *timestamp)
|
오디오 드라이버에 다음 쓰기가 표시될 로컬 시간을 가져옵니다. 단위는 마이크로초이며, 이때 에포크는 로컬 오디오 HAL에 의해 결정됩니다.
audio.h
FILE의
324
라인에 정의되어 있습니다.
int(* get_presentation_position)(const struct
audio_stream_out
*stream, uint64_t *frames, struct timespec *timestamp)
|
외부 관찰자에게 표시된 최근 오디오 프레임 수를 반환합니다. 여기에는 작성되었지만 아직 파이프라인에 있는 프레임은 제외됩니다. 출력이 대기 모드로 전환되더라도 수는 0으로 재설정되지 않습니다. 또한 이 프레젠테이션 개수의 CLOCK_MONOTONIC 값을 반환합니다. 반환된 개수는 '최근'이어야 하지만 반드시 가장 최근 값일 필요는 없습니다. 하지만 연결된 시간은 반환된 개수와 일치해야 합니다. 예: N+M 프레임이 표시되었다고 가정해 보겠습니다. 여기서 M은 '작은' 숫자입니다. 그러면 N+M 대신 N을 반환할 수 있으며 타임스탬프는 N+M이 아닌 N에 해당해야 합니다. '최근' 및 '작은'이라는 용어가 정의되어 있지 않습니다. 구현 품질을 반영합니다.
3.0 이상만 지원됩니다.
audio.h
FILE의
398
라인에 정의되어 있습니다.
int(* get_render_position)(const struct
audio_stream_out
*stream, uint32_t *dsp_frames)
|
오디오 드라이버에 재생을 중지하도록 알림을 보내지만 대기열에 추가된 버퍼는 하드웨어에 유지됩니다. 일시중지/재개를 구현하는 데 유용합니다. 지원되지 않는 경우 빈 구현이지만 지연 시간이 상당한 하드웨어의 경우 구현해야 합니다. 일시중지 상태에서도 오디오 하드웨어는 계속 전원을 사용할 수 있습니다. 사용자는 시간 초과 후 suspend를 호출할 수 있습니다.
오프로드된 재생을 위해서는 이 함수를 구현해야 합니다.
audio.h
FILE의
345
라인에 정의가 있습니다.
일시중지 후 재생을 재개하도록 오디오 드라이버에 알립니다. 일치하는 일시중지를 사용하지 않고 호출하면 오류가 반환됩니다.
오프로드된 재생을 위해서는 이 함수를 구현해야 합니다.
audio.h
FILE의
353
라인에 정의가 있습니다.
비차단 쓰기 및 배수 완료 알림을 위한 콜백 함수를 설정합니다. 이 함수를 호출하면 향후 모든
write()
및
drain()
이 비차단 방식이어야 하며 콜백을 사용하여 완료 신호를 보내야 함을 의미합니다.
audio.h
FILE의
333
라인에 정의되어 있습니다.
오디오 믹싱이 하드웨어에서 이루어지는 상황에서 이 메서드를 사용합니다. 이 메서드는 하드웨어와의 직접적인 인터페이스 역할을 하므로 프레임워크를 통해 볼륨을 설정하는 대신 볼륨을 직접 설정할 수 있습니다. 이 메서드는 여러 PCM 출력 또는 MP3 또는 AAC와 같은 하드웨어 가속 코덱을 생성할 수 있습니다.
audio.h
FILE의
296
라인에 정의되어 있습니다.
ssize_t(* write)(struct
audio_stream_out
*stream, const void *buffer, size_t bytes)
|
드라이버에 오디오 버퍼를 씁니다. 쓴 바이트 수 또는 음수 status_t를 반환합니다. 오류가 발생하기 전에 하나 이상의 프레임이 성공적으로 쓰여진 경우 드라이버는 성공적인 (짧은) 바이트 수를 반환한 다음 후속 호출에서 오류를 반환하는 것이 좋습니다.
이전에
set_callback()
을 호출하여 비차단 모드를 사용 설정한 경우
write()
가 차단되지 않습니다. 현재 드라이버/하드웨어 버퍼에 맞는 바이트 수만 쓴 다음 이 바이트 수를 반환해야 합니다. 이 값이 요청된 쓰기 크기보다 작으면 드라이버/하드웨어 버퍼에 더 많은 공간이 확보될 때 콜백 함수를 호출해야 합니다.
audio.h
FILE의
311
라인에 정의되어 있습니다.
이 구조체에 관한 문서는 다음 파일에서 생성되었습니다.
-
hardware/libhardware/include/hardware/
audio.h
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-03-26(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-03-26(UTC)"],[],[]]