audio_stream_out Yapı Referansı
#include < audio.h >
Veri alanları | |
audio_stream'i yapılandır | yaygın |
uint32_t(* | get_latency )(const struct audio_stream_out *stream) |
int(* | set_volume )(struct audio_stream_out *stream, sola doğru kayan, sağa doğru kayan) |
ssize_t(* | write )(struct audio_stream_out *stream, const void *buffer, size_t bayt) |
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 geri çağırma, void *cookie) |
int(* | duraklatma )(struct audio_stream_out *stream) |
int(* | devam ettir )(struct audio_stream_out *stream) |
int(* | drenaj )(struct audio_stream_out *stream, audio_drain_type_t tipi) |
int(* | temizleme )(struct audio_stream_out *stream) |
int(* | get_sunum_pozisyon )(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp) |
Detaylı 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.
Saha Dokümantasyonu
audio_stream ortak yapısı |
Ses akışının yaygın yöntemleri. Bu yapının kullanıcıları, audio_stream'in bir audio_stream_out referansına başvurduğu bilinen bağlamlarda audio_stream_out işaretçisine bir audio_stream yayınlayacağından, bu audio_stream_out'un ilk üyesi olmalıdır .
int(* drenaj)(struct audio_stream_out *stream, audio_drain_type_t türü) |
Sürücü/donanım tarafından ara belleğe alınan veriler oynatıldığında bildirim ister. Engellemesiz modu etkinleştirmek için set_callback() daha önce çağrılmışsa, Drain() bloklamamalı, bunun yerine hızlı bir şekilde geri dönmeli ve geri çağırma yoluyla drenajın tamamlandığı bildirilmelidir. set_callback() çağrılmadıysa, Drain() tamamlanana kadar bloke edilmelidir. Type==AUDIO_DRAIN_ALL ise, önceden yazılan tüm veriler oynatıldığında boşaltma tamamlanır. Type==AUDIO_DRAIN_EARLY_NOTIFY ise, çerçevenin boşluksuz bir parça geçişi gerçekleştirmesi için zaman tanımak üzere mevcut parçanın tüm verileri oynatılmadan kısa bir süre önce boşaltma tamamlanır.
Drain stop() veflush() çağrısından hemen sonra geri dönmelidir
Yüksüz oynatma için bu işlevin uygulanması zorunludur.
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_sunum_pozisyon)(const struct audio_stream_out *stream, uint64_t *frames, struct timespec *timestamp) |
Harici bir gözlemciye sunulan ses karelerinin güncel sayısını döndürür. Bu, yazılmış ancak halen yapım aşamasında olan çerçeveleri hariç tutar. Çıkış bekleme moduna geçtiğinde sayım sıfırlanmaz. Ayrıca bu sunum sayısı itibarıyla CLOCK_MONOTONIC değerini de döndürür. Döndürülen sayının 'en güncel' olması beklenir ancak mümkün olan en yeni 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 çerçevelerin sunulduğunu varsayalım. Bu durumda N+M yerine N döndürülmesine izin verilir ve zaman damgası N+M yerine N'ye karşılık gelmelidir. 'Yeni' ve 'küçük' terimleri tanımlanmamıştır. Uygulamanın kalitesini yansıtırlar.
Yalnızca 3.0 ve üzeri.
int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames) |
int(* duraklatma)(struct audio_stream_out *stream) |
Ses sürücüsüne oynatmayı durdurması için bildirimde bulunur ancak sıradaki arabellekler donanım tarafından tutulur. Duraklatma/devam ettirmeyi uygulamak için kullanışlıdır. Desteklenmiyorsa boş uygulama, önemsiz olmayan gecikme süresine sahip donanımlar için uygulanmalıdır. Duraklatma durumunda ses donanımı hâlâ güç kullanıyor olabilir. Kullanıcı bir zaman aşımından sonra askıya almayı çağırmayı düşünebilir.
Yüksüz oynatma için bu işlevin uygulanması zorunludur.
int(* devam ettir)(struct audio_stream_out *stream) |
int(* set_callback)(struct audio_stream_out *stream, stream_callback_t geri çağırma, void *cookie) |
Engellenmeyen yazma ve boşaltma işleminin tamamlandığını bildirmek için geri çağırma işlevini ayarlayın. Bu işlevin çağrılması, gelecekteki tüm yazma() ve boşaltma() işlemlerinin engellemesiz olması ve tamamlanma sinyali için geri çağrıyı kullanması gerektiği anlamına gelir.
int(* set_volume)(struct audio_stream_out *stream, sola kayan, sağa kayan) |
Ses miksajının donanımda yapıldığı durumlarda bu yöntemi kullanın. Bu yöntem, donanımla doğrudan bir arayüz görevi görerek ses düzeyini çerçeve aracılığıyla doğrudan ayarlamanıza olanak tanır. Bu yöntem, birden fazla PCM çıkışı veya MP3 veya AAC gibi donanım hızlandırmalı codec bileşenleri üretebilir.
ssize_t(* write)(struct audio_stream_out *stream, const void *buffer, size_t bayt) |
Ses arabelleğini sürücüye yaz. Yazılan bayt sayısını veya negatif bir status_t değerini döndürür. Hatadan önce en az bir çerçeve 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 bir hata döndürmesi önerilir.
Engellemesiz modu etkinleştirmek için set_callback() daha önce çağrılmışsa write() işlevinin engelleme yapmasına izin verilmez. Yalnızca sürücü/donanım arabelleğine o anda sığan bayt sayısını yazmalı ve ardından bu bayt sayısını döndürmelidir. Bu, istenen yazma boyutundan küçükse, sürücü/donanım arabelleğinde daha fazla alan mevcut olduğunda geri çağırma işlevi çağrılmalıdır.
Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur:
- donanım/libdonanım/include/donanım/ audio.h