audio_stream_out Tham chiếu cấu trúc
#include < audio.h >
Trường dữ liệu | |
cấu trúc audio_stream | chung |
uint32_t(* | get_latency )(const struct audio_stream_out *stream) |
int(* | set_volume )(struct audio_stream_out *stream, nổi sang trái, nổi sang phải) |
kích thước_t(* | write )(struct audio_stream_out *stream, const void *buffer, size_t byte) |
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 *dấu thời gian) |
int(* | set_callback )(struct audio_stream_out *stream, gọi lại streaming_callback_t , void *cookie) |
int(* | tạm dừng )(struct audio_stream_out *stream) |
int(* | sơ yếu lý lịch )(struct audio_stream_out *stream) |
int(* | Drain )(struct audio_stream_out *stream, loại audio_drain_type_t ) |
int(* | tuôn ra )(struct audio_stream_out *stream) |
int(* | get_trình bày_position )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp) |
miêu tả cụ thể
audio_stream_out là giao diện trừu tượng cho phần cứng đầu ra âm thanh.
Nó cung cấp thông tin về các thuộc tính khác nhau của trình điều khiển phần cứng đầu ra âm thanh.
Tài liệu hiện trường
cấu trúc audio_stream chung |
Các phương pháp phổ biến của luồng âm thanh ra. Đây phải là thành viên đầu tiên của audio_stream_out vì người dùng cấu trúc này sẽ truyền một con trỏ audio_stream tới audio_stream_out trong các bối cảnh đã biết audio_stream tham chiếu đến audio_stream_out .
int(* Drain)(struct audio_stream_out *stream, loại audio_drain_type_t ) |
Yêu cầu thông báo khi dữ liệu được đệm bởi trình điều khiển/phần cứng đã được phát. Nếu set_callback() trước đó đã được gọi để bật chế độ không chặn, thì Drain() không được chặn, thay vào đó nó sẽ quay trở lại nhanh chóng và quá trình thoát được thông báo qua lệnh gọi lại. Nếu set_callback() chưa được gọi, Drain() phải chặn cho đến khi hoàn thành. Nếu loại==AUDIO_DRAIN_ALL, quá trình thoát hoàn tất khi tất cả dữ liệu đã ghi trước đó đã được phát. Nếu loại==AUDIO_DRAIN_EARLY_NOTIFY, quá trình thoát sẽ hoàn thành ngay trước khi tất cả dữ liệu cho bản nhạc hiện tại được phát để có thời gian cho hệ thống thực hiện chuyển đổi bản nhạc không có khe hở.
Drain phải quay lại ngay lập tức khi gọi lệnh dừng() và tuôn ra()
Việc thực hiện chức năng này là bắt buộc đối với việc phát lại đã giảm tải.
int(* tuôn ra)(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 *dấu thời gian) |
int(* get_trình bày_position)(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *dấu thời gian) |
Trả về số lượng khung âm thanh gần đây được trình bày cho người quan sát bên ngoài. Điều này không bao gồm các khung đã được viết nhưng vẫn đang được xử lý. Số đếm không được đặt lại về 0 khi đầu ra chuyển sang chế độ chờ. Đồng thời trả về giá trị CLOCK_MONOTONIC tính theo số lượng bản trình bày này. Số lượng trả về dự kiến là 'gần đây' nhưng không cần phải là giá trị gần đây nhất có thể. Tuy nhiên, thời gian liên quan phải tương ứng với số lượng được trả về. Ví dụ: giả sử rằng N+M khung đã được trình bày, trong đó M là số 'nhỏ'. Khi đó, được phép trả về N thay vì N+M và dấu thời gian phải tương ứng với N thay vì N+M. Các thuật ngữ 'gần đây' và 'nhỏ' không được xác định. Chúng phản ánh chất lượng của việc thực hiện.
chỉ 3.0 trở lên.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(* tạm dừng)(struct audio_stream_out *stream) |
Thông báo cho trình điều khiển âm thanh để dừng phát lại tuy nhiên bộ đệm được xếp hàng đợi vẫn được phần cứng giữ lại. Hữu ích cho việc thực hiện tạm dừng/tiếp tục. Tuy nhiên, việc triển khai trống nếu không được hỗ trợ nên được triển khai cho phần cứng có độ trễ không hề nhỏ. Ở trạng thái tạm dừng, phần cứng âm thanh vẫn có thể đang sử dụng nguồn điện. Người dùng có thể xem xét tạm dừng cuộc gọi sau khi hết thời gian chờ.
Việc thực hiện chức năng này là bắt buộc đối với việc phát lại đã giảm tải.
int(* sơ yếu lý lịch)(struct audio_stream_out *stream) |
int(* set_callback)(struct audio_stream_out *stream, gọi lại streaming_callback_t , void *cookie) |
đặt chức năng gọi lại để thông báo hoàn thành quá trình ghi và thoát không chặn. Việc gọi hàm này ngụ ý rằng tất cả các lệnh write() và Drain() trong tương lai phải không bị chặn và sử dụng lệnh gọi lại để báo hiệu hoàn thành.
int(* set_volume)(struct audio_stream_out *stream, thả nổi sang trái, thả nổi sang phải) |
Sử dụng phương pháp này trong trường hợp việc trộn âm thanh được thực hiện trong phần cứng. Phương pháp này đóng vai trò như một giao diện trực tiếp với phần cứng, cho phép bạn trực tiếp đặt âm lượng như mong muốn thông qua khung. Phương pháp này có thể tạo ra nhiều đầu ra PCM hoặc codec tăng tốc phần cứng, chẳng hạn như MP3 hoặc AAC.
ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t byte) |
Ghi bộ đệm âm thanh vào trình điều khiển. Trả về số byte đã ghi hoặc status_t âm. Nếu ít nhất một khung được ghi thành công trước khi xảy ra lỗi, thì trình điều khiển nên trả về số byte (ngắn) thành công đó rồi trả về lỗi trong lệnh gọi tiếp theo.
Nếu set_callback() trước đó đã được gọi để bật chế độ không chặn thì write() không được phép chặn. Nó chỉ phải ghi số byte hiện phù hợp với bộ đệm trình điều khiển/phần cứng và sau đó trả về số byte này. Nếu kích thước này nhỏ hơn kích thước ghi được yêu cầu thì chức năng gọi lại phải được gọi khi có thêm dung lượng trong bộ đệm trình điều khiển/phần cứng.
Tài liệu cho cấu trúc này được tạo từ tệp sau:
- phần cứng/libhardware/bao gồm/phần cứng/ audio.h