audio_stream_out 구조체 참조
#include < audio.h >
데이터 필드 | |
구조체 audio_stream | 흔한 |
uint32_t(* | get_latency )(const struct audio_stream_out *stream) |
정수(* | set_volume )(struct audio_stream_out *stream, 왼쪽 부동, 오른쪽 부동) |
ssize_t(* | 쓰기 )(struct audio_stream_out *stream, const void *buffer, size_t 바이트) |
정수(* | get_render_position )(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
정수(* | get_next_write_timestamp )(const struct audio_stream_out *stream, int64_t *timestamp) |
정수(* | set_callback )(struct audio_stream_out *stream, stream_callback_t 콜백, void *cookie) |
정수(* | 일시 중지 )(struct audio_stream_out *stream) |
정수(* | 재개 )(struct audio_stream_out *stream) |
정수(* | 배수 )(struct audio_stream_out *stream, audio_drain_type_t 유형) |
정수(* | 플러시 )(struct audio_stream_out *stream) |
정수(* | get_presentation_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp) |
상세 설명
audio_stream_out은 오디오 출력 하드웨어에 대한 추상화 인터페이스입니다.
오디오 출력 하드웨어 드라이버의 다양한 속성에 대한 정보를 제공합니다.
현장 문서
구조체 audio_stream 공통 |
오디오 스트림 출력의 일반적인 방법. audio_stream이 audio_stream_out 을 참조하는 것으로 알려진 컨텍스트에서 이 구조의 사용자가 audio_stream을 audio_stream_out 포인터로 캐스팅하므로 이는 audio_stream_out 의 첫 번째 멤버 여야 합니다.
int(* 배수)(struct audio_stream_out *stream, audio_drain_type_t 유형) |
드라이버/하드웨어에 의해 버퍼링된 데이터가 재생되면 알림을 요청합니다. 비차단 모드를 활성화하기 위해 이전에 set_callback()을 호출한 경우, 배수()는 차단되어서는 안 되며, 대신 신속하게 반환되어야 하며 배수 완료는 콜백을 통해 통지됩니다. set_callback()이 호출되지 않은 경우 Drain()은 완료될 때까지 차단되어야 합니다. type==AUDIO_DRAIN_ALL인 경우 이전에 기록된 모든 데이터가 재생되면 배수가 완료됩니다. type==AUDIO_DRAIN_EARLY_NOTIFY인 경우 프레임워크가 간격 없는 트랙 전환을 수행할 시간을 허용하기 위해 현재 트랙의 모든 데이터가 재생되기 직전에 드레인이 완료됩니다.
stop() 및 플러시() 호출 시 배수가 즉시 반환되어야 합니다.
오프로드된 재생에는 이 기능의 구현이 필수입니다.
int(* 플러시)(struct audio_stream_out *stream) |
uint32_t(* get_latency)(const struct audio_stream_out *stream) |
int(* get_next_write_timestamp)(const struct audio_stream_out *stream, int64_t *timestamp) |
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 이상만 가능합니다.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(* 일시 중지)(struct audio_stream_out *stream) |
int(* 이력서)(struct audio_stream_out *stream) |
int(* set_callback)(struct audio_stream_out *stream, stream_callback_t 콜백, void *cookie) |
int(* set_volume)(struct audio_stream_out *stream, 왼쪽 부동, 오른쪽 부동) |
ssize_t(* 쓰기)(struct audio_stream_out *stream, const void *buffer, size_t 바이트) |
드라이버에 오디오 버퍼를 씁니다. 쓴 바이트 수 또는 음수 status_t를 반환합니다. 오류가 발생하기 전에 하나 이상의 프레임이 성공적으로 기록된 경우 드라이버가 해당 성공적인(짧은) 바이트 수를 반환한 다음 후속 호출에서 오류를 반환하는 것이 좋습니다.
비차단 모드를 활성화하기 위해 이전에 set_callback()을 호출한 경우 write()는 차단할 수 없습니다. 현재 드라이버/하드웨어 버퍼에 맞는 바이트 수만 쓴 다음 이 바이트 수를 반환해야 합니다. 요청된 쓰기 크기보다 작으면 드라이버/하드웨어 버퍼에 더 많은 공간을 사용할 수 있을 때 콜백 함수를 호출해야 합니다.
이 구조체에 대한 문서는 다음 파일에서 생성되었습니다.
- hardware/libhardware/include/hardware/ audio.h