audio_stream_out Yapı Referansı

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.

Tanımı, audio.h dosyasının 276 satırındadır.

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)

Ses sürücüsünü, sıraya alınmış verileri temizlemesi için bilgilendirir. flush() çağrılmadan önce akış duraklatılmış olmalıdır.

Bu işlevin uygulanması, aktarılmış oynatma için zorunludur.

Tanımı, audio.h dosyasının 380 satırındadır.

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)

Ses sürücüsüne yapılacak bir sonraki yazma işleminin sunulacağı yerel saati alın. Birimler mikrosaniyedir ve başlangıç zamanı yerel ses HAL'i tarafından belirlenir.

Tanımı, audio.h dosyasının 324 satırı

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)

Tanımı, audio.h dosyasının 317 satırı

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.

Tanımı, audio.h dosyasının 345 satırı

int(* resume)(struct audio_stream_out *stream)

Ses sürücüsünü, duraklatma sonrasında oynatmayı devam ettirmesi için bilgilendirir. Eşleşen duraklatma olmadan çağrılırsa hata döndürür.

Bu işlevin uygulanması, aktarılmış oynatma için zorunludur.

audio.h dosyasının 353 satırında tanımı verilmiştir.

int(* set_callback)(struct audio_stream_out *stream, stream_callback_t callback, void *cookie)

Engellemeyen 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 write() ve drain() işlemlerinin engellenmemesi ve tamamlanmayı bildirmek için geri çağırma işlevini kullanması gerektiğini belirtir.

Tanımı, audio.h dosyasının 333 satırı

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.

Tanımı, audio.h dosyasının 296 satırına bakın.

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.

Tanımı, audio.h dosyasının 311 satırı


Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
  • hardware/libhardware/include/hardware/ audio.h