audio_stream_out Yapı Referansı
#include <
audio.h
>
Veri Alanları |
|
struct audio_stream | yaygın |
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) |
Ayrıntılı Açıklama
audio_stream_out ses çıkışı donanımı için soyutlama arayüzüdür.
Ses çıkışı donanım sürücüsünün çeşitli özellikleri hakkında bilgi sağlar.
Alan Belgeleri
struct audio_stream common |
Ses aktarımı için kullanılan yaygın yöntemler. Bu yapının kullanıcıları, audio_stream audio_stream_out i referans aldığı bilinen bağlamlarda audio_stream audio_stream_out i işaretçisine yayınlayacağından bu, audio_stream_out yapısının ilk üyesi olmalıdır.
Tanımı, audio.h dosyasının 282. satırı içindedir.
int(* drain)(struct audio_stream_out *stream, audio_drain_type_t type) |
Sürücü/donanım tarafından arabelleğe alınan veriler oynatıldığında bildirim ister. Engellemeyen modu etkinleştirmek için daha önce set_callback() çağrılmışsa drain() engellenmemelidir. Bunun yerine hızlı bir şekilde geri dönmelidir. Boşaltma işleminin tamamlandığı, geri çağırma yoluyla bildirilir. set_callback() çağrılmadıysa drain() tamamlanana kadar engellenmelidir. type==AUDIO_DRAIN_ALL ise önceden yazılmış tüm veriler oynatıldığında boşaltma işlemi tamamlanır. type==AUDIO_DRAIN_EARLY_NOTIFY ise boşaltma işlemi, çerçevenin kesintisiz bir parça geçişi yapmasına zaman tanımak için geçerli parçanın tüm verileri çalınmadan kısa bir süre önce tamamlanır.
Drain, stop() ve flush() çağrılarında hemen döndürülmelidir
Bu işlevin uygulanması, aktarılan oynatma için zorunludur.
Tanımı, audio.h dosyasının 372. satırı içindedir.
int(* flush)(struct audio_stream_out *stream) |
uint32_t(* get_latency)(const struct audio_stream_out *stream) |
Ses donanım sürücüsünün tahmini gecikmesini milisaniye cinsinden döndürür.
Tanımı, audio.h dosyasının 287. satırı içindedir.
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) |
Harici bir gözlemciye sunulan ses çerçevelerinin sayısının son sayısını döndürür. Yazılmış ancak hâlâ ardışık düzende olan kareler bu kapsamda değildir. Çıkış bekleme moduna girdiğinde sayı sıfıra sıfırlanmaz. Ayrıca, bu sunma sayısı itibarıyla CLOCK_MONOTONIC değerini döndürür. Döndürülen sayının "son" olması beklenir ancak mümkün olan en son değer olması gerekmez. Ancak ilişkili zaman, döndürülen sayıya karşılık gelmelidir. Örnek: M'nin "küçük" bir sayı olduğu N+M karenin sunulduğunu varsayalım. Bu durumda, N+M yerine N döndürülebilir ve zaman damgası N+M yerine N'ye karşılık gelmelidir. "Yakın" ve "küçük" terimleri tanımlanmamış. Bu metrikler, uygulamanın kalitesini yansıtır.
Yalnızca 3.0 ve sonraki sürümler.
Tanımı, audio.h dosyasının 398. satırı içindedir.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(* pause)(struct audio_stream_out *stream) |
Ses sürücüsünü oynatmayı durdurması için bilgilendirir ancak sıraya eklenen arabellekler donanım tarafından saklanır. Duraklatma/devam ettirme özelliğini uygulamak için kullanışlıdır. Desteklenmiyorsa boş uygulama, ancak önemli olmayan gecikmeye sahip donanım için uygulanmalıdır. Duraklatılmış durumdayken ses donanımı güç kullanmaya devam edebilir. Kullanıcı, zaman aşımı sonrasında askıya alma işlemini çağırabilir.
Bu işlevin uygulanması, aktarılmış oynatma için zorunludur.
int(* resume)(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) |
Bu yöntemi, ses mikslemenin donanımda yapıldığı durumlarda kullanın. Bu yöntem, donanımla doğrudan bir arayüz görevi görür ve ses seviyesini çerçeve üzerinden değil doğrudan ayarlamanıza olanak tanır. Bu yöntem, birden fazla PCM çıkışı veya MP3 ya da AAC gibi donanım hızlandırmalı codec'ler oluşturabilir.
ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t bytes) |
Ses arabelleğini sürücüye yazın. Yazılan bayt sayısını veya negatif bir status_t değerini döndürür. Hatadan önce en az bir kare başarıyla yazılmışsa sürücünün bu başarılı (kısa) bayt sayısını döndürmesi ve ardından sonraki çağrıda hata döndürmesi önerilir.
set_callback() daha önce engellenmeyen modu etkinleştirmek için çağrıldıysa write() işlevinin engellemesine izin verilmez. Yalnızca sürücüye/donanım arabelleğine sığabilecek bayt sayısını yazıp bu bayt sayısını döndürmelidir. Bu değer, istenen yazma boyutundan azsa sürücü/donanım arabelleğinde daha fazla alan olduğunda geri çağırma işlevi çağrılmalıdır.
Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
- hardware/libhardware/include/hardware/ audio.h