Tham chiếu cấu trúc audio_stream_out
#include < audio.h >
Trường dữ liệu | |
struct audio_stream | phổ thông |
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 (* | tạm dừng ) (struct audio_stream_out * stream) |
int (* | tiếp tục ) (struct audio_stream_out * stream) |
int (* | cống ) (struct audio_stream_out * stream, audio_drain_type_t type) |
int (* | tuôn ra ) (struct audio_stream_out * stream) |
int (* | get_presentation_position ) (const struct audio_stream_out * stream, uint64_t * khung, struct timespec * dấu thời gian) |
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 thực địa
struct audio_stream chung |
Các phương pháp phổ biến của luồng âm thanh ra ngoài. Đâ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 ngữ cảnh mà nó được biết là audio_stream tham chiếu đến audio_stream_out .
int (* cống) (struct audio_stream_out * stream, audio_drain_type_t type) |
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ì cống () không được chặn, thay vào đó, nó sẽ trở lại nhanh chóng và việc hoàn thành cống được thông báo thông qua lệnh gọi lại. Nếu set_callback () chưa được gọi, thì thoát () 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 được ghi trước đó đã được phát. Nếu nhập == AUDIO_DRAIN_EARLY_NOTIFY, quá trình thoát hoàn tất ngay trước khi tất cả dữ liệu cho bản nhạc hiện tại phát để có thời gian cho khung thực hiện chuyển đổi rãnh không khoảng cách.
Drain phải trở lại ngay lập tức khi gọi stop () và flush ()
Việc triển khai chức năng này là bắt buộc đối với phát lại không tải.
int (* flush) (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 * khung, struct timespec * dấu thời gian) |
Trả lại số lượng gần đây của số lượng khung âm thanh được hiển thị 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 còn trong đường dẫn. 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ị của CLOCK_MONOTONIC kể từ 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 bất kỳ số lượng nào được trả về. Ví dụ: giả sử rằng N + M khung đã được trình bày, trong đó M là một số 'nhỏ'. Sau đó, có thể trả về N thay vì N + M và dấu thời gian phải tương ứng với N chứ không phải N + M. Các thuật ngữ 'gần đây' và 'nhỏ' không được định nghĩa. Chúng phản ánh chất lượng của việc thực hiện.
Chỉ 3.0 và cao hơn.
int (* get_render_position) (const struct audio_stream_out * stream, uint32_t * dsp_frames) |
int (* pause) (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 phần cứng đã xếp hàng đợi các bộ đệm được giữ lại. Hữu ích để thực hiện tạm dừng / tiếp tục. Tuy nhiên, 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 đáng kể. Ở trạng thái tạm dừng, phần cứng âm thanh vẫn có thể đang sử dụng nguồn. Người dùng có thể cân nhắc việc tạm ngừng cuộc gọi sau khi hết thời gian chờ.
Việc triển khai chức năng này là bắt buộc đối với phát lại không tải.
int (* sơ yếu lý lịch) (struct audio_stream_out * stream) |
int (* set_callback) (struct audio_stream_out * stream, stream_callback_t callback, void * cookie) |
int (* set_volume) (struct audio_stream_out * stream, float left, float right) |
Sử dụng phương pháp này trong các trường hợp 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ư được áp dụng 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 (* ghi) (struct audio_stream_out * stream, const void * buffer, size_t bytes) |
Ghi bộ đệm âm thanh vào trình điều khiển. Trả về số byte được viết hoặc trạng thái phủ định. Nếu ít nhất một khung được ghi thành công trước khi xảy ra lỗi, trình điều khiển nên trả về số byte thành công (ngắn) đó và sau đó trả về lỗi trong lần 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 vừa trong 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ì hàm 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
Tham chiếu cấu trúc audio_stream_out
#include < audio.h >
Trường dữ liệu | |
struct audio_stream | phổ thông |
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 (* | tạm dừng ) (struct audio_stream_out * stream) |
int (* | tiếp tục ) (struct audio_stream_out * stream) |
int (* | cống ) (struct audio_stream_out * stream, audio_drain_type_t type) |
int (* | tuôn ra ) (struct audio_stream_out * stream) |
int (* | get_presentation_position ) (const struct audio_stream_out * stream, uint64_t * khung, struct timespec * dấu thời gian) |
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 thực địa
struct audio_stream chung |
Các phương pháp phổ biến của luồng âm thanh ra ngoài. Đâ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 ngữ cảnh mà nó được biết là audio_stream tham chiếu đến audio_stream_out .
int (* cống) (struct audio_stream_out * stream, audio_drain_type_t type) |
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ì cống () không được chặn, thay vào đó, nó sẽ trở lại nhanh chóng và việc hoàn thành cống được thông báo thông qua lệnh gọi lại. Nếu set_callback () chưa được gọi, thì thoát () 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 được ghi trước đó đã được phát. Nếu nhập == AUDIO_DRAIN_EARLY_NOTIFY, quá trình thoát hoàn tất ngay trước khi tất cả dữ liệu cho bản nhạc hiện tại phát để có thời gian cho khung thực hiện chuyển đổi rãnh không khoảng cách.
Drain phải trở lại ngay lập tức khi gọi stop () và flush ()
Việc triển khai chức năng này là bắt buộc đối với phát lại không tải.
int (* flush) (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 * khung, struct timespec * dấu thời gian) |
Trả lại số lượng gần đây của số lượng khung âm thanh được hiển thị 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 còn trong đường dẫn. 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ị của CLOCK_MONOTONIC kể từ 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 bất kỳ số lượng nào được trả về. Ví dụ: giả sử rằng N + M khung đã được trình bày, trong đó M là một số 'nhỏ'. Sau đó, có thể trả về N thay vì N + M và dấu thời gian phải tương ứng với N chứ không phải N + M. Các thuật ngữ 'gần đây' và 'nhỏ' không được định nghĩa. Chúng phản ánh chất lượng của việc thực hiện.
Chỉ 3.0 và cao hơn.
int (* get_render_position) (const struct audio_stream_out * stream, uint32_t * dsp_frames) |
int (* pause) (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 phần cứng đã xếp hàng đợi các bộ đệm được giữ lại. Hữu ích để thực hiện tạm dừng / tiếp tục. Tuy nhiên, 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 đáng kể. Ở trạng thái tạm dừng, phần cứng âm thanh vẫn có thể đang sử dụng nguồn. Người dùng có thể cân nhắc việc tạm ngừng cuộc gọi sau khi hết thời gian chờ.
Việc triển khai chức năng này là bắt buộc đối với phát lại không tải.
int (* sơ yếu lý lịch) (struct audio_stream_out * stream) |
int (* set_callback) (struct audio_stream_out * stream, stream_callback_t callback, void * cookie) |
int (* set_volume) (struct audio_stream_out * stream, float left, float right) |
Sử dụng phương pháp này trong các trường hợp 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ư được áp dụng 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 (* ghi) (struct audio_stream_out * stream, const void * buffer, size_t bytes) |
Ghi bộ đệm âm thanh vào trình điều khiển. Trả về số byte được viết hoặc trạng thái phủ định. Nếu ít nhất một khung được ghi thành công trước khi xảy ra lỗi, trình điều khiển nên trả về số byte thành công (ngắn) đó và sau đó trả về lỗi trong lần 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 vừa trong 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ì hàm 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