audio_stream_out Yapı Referansı

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.

audio.h dosyasının 276. satırındaki tanım.

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 .

audio.h dosyasının 282. satırındaki tanım.

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.

audio.h dosyasının 372. satırındaki tanım.

int(*flush)(struct audio_stream_out *stream)

Kuyruğa alınan verileri temizlemesi için ses sürücüsüne bildirimde bulunur. Flush() çağrılmadan önce akışın zaten duraklatılmış olması gerekir.

Yüksüz oynatma için bu işlevin uygulanması zorunludur.

audio.h dosyasının 380. satırındaki tanım.

uint32_t(* get_latency)(const struct audio_stream_out *stream)

Ses donanımı sürücüsünün tahmini gecikme süresini milisaniye cinsinden döndürür.

audio.h dosyasının 287. satırındaki tanım.

int(* get_next_write_timestamp)(const struct audio_stream_out *stream, int64_t *timestamp)

ses sürücüsüne bir sonraki yazmanın sunulacağı yerel saati alın. Birimler mikrosaniyedir ve çağa yerel ses HAL tarafından karar verilir.

audio.h dosyasının 324. satırındaki tanım.

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.

audio.h dosyasının 398. satırındaki tanım.

int(* get_render_position)(const struct audio_stream_out *stream, uint32_t *dsp_frames)

audio.h dosyasının 317. satırındaki tanım.

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.

audio.h dosyasının 345. satırındaki tanım.

int(* devam ettir)(struct audio_stream_out *stream)

Bir duraklatmanın ardından oynatmaya devam edilmesi için ses sürücüsüne bildirimde bulunur. Eşleşen duraklama olmadan çağrılırsa hata döndürür.

Yüksüz oynatma için bu işlevin uygulanması zorunludur.

audio.h dosyasının 353. satırındaki tanım.

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.

audio.h dosyasının 333. satırındaki tanım.

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.

audio.h dosyasının 296. satırındaki tanım.

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.

audio.h dosyasının 311. satırındaki tanım.


Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur:
  • donanım/libdonanım/include/donanım/ audio.h