camera2_device_ops Yapı Referansı
#include <
camera2.h
>
Veri Alanları |
|
int(* | set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* | notify_request_queue_not_empty )(const struct camera2_device *) |
int(* | set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* | get_in_progress_count )(const struct camera2_device *) |
int(* | flush_captures_in_progress )(const struct camera2_device *) |
int(* | construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request) |
int(* | allocate_stream )(const struct camera2_device *, uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers) |
int(* | register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
int(* | release_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | allocate_reprocess_stream )(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
int(* | allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) |
int(* | release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
int(* | set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* | dump )(const struct camera2_device *, int fd) |
int(* | get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata) |
Ayrıntılı Açıklama
Alan Belgeleri
int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
allocate_reprocess_stream:
Çıkış arabelleği genişliği, yüksekliği ve piksel biçimiyle tanımlanan yeni bir giriş akışı ayırın. Başarılı olduğunda yeni akışın kimliğini, gralloc kullanım işaretlerini ve aynı anda edinilebilen gerekli arabellek sayısını döndürür. Hata koşulları:
- Sensörün statik özellikleri tarafından desteklenmediği listelenen bir genişlik/yükseklik/biçim kombinasyonu isteme
- Aynı anda çok fazla yeniden işleme akışının yapılandırılması isteniyor.
Giriş parametreleri:
- width, height, format: Bu akış üzerinden gönderilecek arabellekleri belirtir. Format, HAL_PIXEL_FORMAT_* listesinden bir değer olmalıdır.
- reprocess_stream_ops: Bu akış için arabellekleri edinme ve serbest bırakma işlev işaretçilerinden oluşan bir yapı. Temel akış, usage ve max_buffers çıkışlarına göre yapılandırılır.
Çıkış parametreleri:
- stream_id: Bu akışı tanımlayan, sıfırdan büyük bir tam sayı. Bu değer, gelen isteklerde akışı tanımlamak ve akışı yayınlamak için kullanılır. Bu kimlikler, giriş akışı kimliklerinden ayrı olarak numaralandırılır.
- consumer_usage: İstenen veri türünü kullanmak için HAL cihazının ihtiyaç duyduğu gralloc kullanım maskesi. Bu, akış arabelleği kuyruğu için yeni gralloc arabellekleri ayırırken kullanılır.
- max_buffers: HAL cihazının aynı anda edinmesi gerekebilecek maksimum arabellek sayısı. Cihaz, aynı anda bu değerden daha fazla arabellek edinemez.
Tanımı, camera2.h dosyasının 708. satırı içindedir.
int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
allocate_reprocess_stream_from_stream:
Mevcut bir çıkış akışı için ayrılan arabellekleri kullanacak yeni bir giriş akışı ayırın. Yani HAL, bir arabelleği çıkış akışına ekledikten sonra bu arabelleğin bu giriş yeniden işleme akışından kendisine aktarıldığını görebilir. HAL, arabelleği yeniden işleme akışına geri bıraktıktan sonra arabellek, yeniden kullanılmak üzere çıkış kuyruğuna döndürülür.
Hata koşulları:
- Yeniden işleme akışının temeli için uygun olmayan boyut/biçimde bir çıkış akışı kullanılması.
- Aynı anda çok fazla yeniden işleme akışı ayırmaya çalışılıyor.
Giriş parametreleri:
- output_stream_id: Yeniden işlemeye uygun boyut ve biçime sahip mevcut bir çıkış akışının kimliği.
- reprocess_stream_ops: Bu akış için arabellekleri edinme ve serbest bırakma işlev işaretçilerinden oluşan bir yapı. Temel akış, çıkış akışıyla aynı grafik arabellek tutamaçlarını kullanır.
Çıkış parametreleri:
- stream_id: Bu akışı tanımlayan, sıfırdan büyük bir tam sayı. Bu değer, gelen isteklerde akışı tanımlamak ve akışı yayınlamak için kullanılır. Bu kimlikler, giriş akışı kimliklerinden ayrı olarak numaralandırılır.
HAL istemcisi, temel aldığı çıkış akışını yayınlamadan önce her zaman yeniden işleme akışını yayınlamalıdır.
int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers) |
allocate_stream:
Çıkış arabelleği genişliği, yüksekliği, hedefi ve muhtemelen piksel biçimiyle tanımlanan yeni bir çıkış akışı ayırın. Başarılı olduğunda yeni akışın kimliğini, gralloc kullanım işaretlerini, minimum sıra arabelleği sayısını ve muhtemelen piksel biçimini döndürür. Hata koşulları:
- Sensörün statik özellikleri tarafından desteklenmediği listelenen bir genişlik/yükseklik/biçim kombinasyonu isteme
- Belirli bir biçim türünde çok fazla akış isteme (ör. 2 bayer ham akışı).
Giriş parametreleri:
- width, height, format: Bu akış üzerinden gönderilecek arabellekleri belirtir. Biçim, HAL_PIXEL_FORMAT_* listesinden bir değerdir. HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED kullanılıyorsa platform gralloc modülü, kamera HAL'i ve aktarımın tüketicisi tarafından sağlanan kullanım işaretlerine göre bir biçim seçer. Kamera HAL'i, gerekirse uygulamaya özgü biçimi elde etmek için register_stream_buffers çağrısında kendisine iletilen arabellekleri incelemelidir.
- stream_ops: Bu akış için arabellekleri alma ve sıraya ekleme işlev işaretçilerinden oluşan bir yapı. Temel akış, usage ve max_buffers çıkışlarına göre yapılandırılır. Bu yapıdaki yöntemler, allocate_stream döndürülene kadar çağrılamaz.
Çıkış parametreleri:
- stream_id: Bu akışı tanımlayan, sıfırdan büyük bir tam sayı. Bu değer, gelen isteklerde akışı tanımlamak ve akışı yayınlamak için kullanılır.
- usage: HAL cihazının istenen veri türünü üretmek için ihtiyaç duyduğu gralloc kullanım maskesi. Bu, akış arabelleği kuyruğu için yeni gralloc arabellekleri ayırırken kullanılır.
- max_buffers: HAL cihazının aynı anda sıra dışı bırakması gereken maksimum arabellek sayısı. Cihaz aynı anda bu değerden fazla arabellek çıkaramaz.
int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request) |
Standart kamera kullanım alanları için doldurulmuş bir varsayılan istek oluşturun.
Cihaz, istenen kullanım alanını karşılayacak şekilde yapılandırılmış eksiksiz bir istek döndürmelidir. Bu istek, CAMERA2_TEMPLATE_* enumlarından biri olmalıdır. android.request.outputStreams hariç tüm istek denetim alanları eklenmelidir.
Döndürülen meta veri arabelleği, allocate_camera_metadata ile ayrılmalıdır. Çerçeve, arabelleğin sahipliğini alır.
int(* dump)(const struct camera2_device *, int fd) |
int(* flush_captures_in_progress)(const struct camera2_device *) |
Devam eden tüm yakalamaları temizleyin. Henüz bir akışa veya kare kuyruğuna herhangi bir çıkış yerleştirmemiş olan, sıra dışı bırakılan tüm istekler (normal veya yeniden işleme) buna dahildir. Kısmen tamamlanan yakalamalar normal şekilde tamamlanmalıdır. Boşaltma işlemi tamamlanana kadar istek kuyruğundan yeni istek çıkarılamaz.
int(* get_in_progress_count)(const struct camera2_device *) |
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
Cihaz örneğine özgü meta verileri alma. Bu meta veriler, kamera cihazının tek bir örneği için sabit olmalıdır ancak open() çağrıları arasında farklı olabilir. Döndürülen camera_metadata işaretçisi, cihaz close() yöntemi çağrılana kadar geçerli olmalıdır.
Sürüm bilgileri:
CAMERA_DEVICE_API_VERSION_2_0:
Kullanılamıyor. Çerçeve bu işlev işaretçisine erişemiyor.
CAMERA_DEVICE_API_VERSION_2_1:
Geçerli. Çerçeve tarafından çağrılabilir.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
Belirli bir akış için arabellekleri kaydedin. Bu işlev, başarılı bir allocate_stream çağrısından sonra ve yayına atıfta bulunan ilk istek sıraya alınmadan önce çağrılır. Bu yöntem, HAL cihazının arabellekleri daha sonra kullanmak üzere eşlemesine veya başka bir şekilde hazırlamasına olanak tanır. num_buffers en azından max_buffers (allocate_stream'den) olacak şekilde garanti edilir ancak daha büyük olabilir. Arabellekler kullanım için kilitlenmiş olur. Görüşme sona erdiğinde tüm arabellekler sıraya geri döndürülmeye hazır olmalıdır. Akış biçimi HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED olarak ayarlandıysa kamera HAL'i, platforma özel piksel biçimi bilgilerini belirlemek için burada iletilen arabellekleri incelemelidir.
int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* release_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
- hardware/libhardware/include/hardware/ camera2.h