27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main
yerine android-latest-release
kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
camera3_callback_ops Yapı Referansı
#include <
camera3.h
>
Dosyanın
camera3.h
satırında
2397
tanımı.
bildir:
HAL'den çeşitli nedenlerle tetiklenen eşzamansız bildirim geri araması. Yalnızca kare yakalamadan bağımsız olan veya belirli bir zamanlama gerektiren bilgiler için. Mesaj yapısının sahipliği HAL'de kalır ve msg'nin yalnızca bu görüşme süresince geçerli olması gerekir.
Birden fazla iş parçacığı aynı anda
notify()
çağırabilir.
<= CAMERA_DEVICE_API_VERSION_3_1:
Belirli bir istek için pozlamanın başlangıcıyla ilgili bildirim, bu istek için
process_capture_result()
ilk çağrısı yapılmadan önce HAL tarafından gönderilmelidir.
>= CAMERA_DEVICE_API_VERSION_3_2:
Çerçeveye teslim edilen arabellekler, SHUTTER
notify()
çağrısı aracılığıyla pozlama başlangıcı zaman damgası (yeniden işleme isteği için giriş resminin pozlama başlangıcı zaman damgası) alınana kadar uygulama katmanına gönderilmez. Bu çağrının mümkün olduğunca erken gönderilmesi önemle tavsiye edilir.
Performans koşulları:
Bu, engelleyici olmayan bir çağrıdır. Çerçeve, bu aramayı 5 ms içinde döndürür.
Dosyanın
camera3.h
satırındaki
2499
tanımı.
process_capture_result:
Tamamlanan bir yakalamadan elde edilen sonuçları çerçeveye gönderin.
process_capture_result()
tek bir yakalama isteğine yanıt olarak HAL tarafından birden fazla kez çağrılabilir. Bu sayede, örneğin meta veriler ve düşük çözünürlüklü arabellekler tek bir çağrıda döndürülebilir. Kullanıma sunulduktan sonra ise daha sonraki bir çağrıda JPEG arabellekleri işlenebilir. Her çağrı, meta verileri veya arabellekleri döndürdüğü isteğin çerçeve numarasını içermelidir.
Tam sonucun bir bileşeni (arabellek veya meta veri) yalnızca bir process_capture_result çağrısına dahil edilebilir. Her akış için bir arabellek ve sonuç meta verileri, bazı çıkışların oluşturulmasıyla ilgili hatalar olsa bile, her istek için HAL tarafından process_capture_result çağrılarından birinde döndürülmelidir. Çıkış arabellekleri veya sonuç meta verileri olmadan
process_capture_result()
çağrısına izin verilmez.
Tek bir sonuç için meta verilerin ve arabelleklerin döndürülme sırası önemli değildir ancak belirli bir akışın arabellekleri FIFO sırasına göre döndürülmelidir. Bu nedenle, A akışındaki 5. isteğin arabelleği, A akışındaki 6. isteğin arabelleğinden önce döndürülmelidir. Bu durum, sonuç meta verileri için de geçerlidir. 5. isteğin meta verileri, 6. isteğin meta verilerinden önce döndürülmelidir.
Ancak farklı akışlar birbirinden bağımsızdır. Bu nedenle, A akışındaki 5. istek için arabellek, B akışındaki 6. istek için arabellekten sonra döndürülebilir. Ayrıca, B akışındaki 6. istek için sonuç meta verileri, A akışındaki 5. istek için arabellekten önce döndürülebilir.
HAL, sonuç yapısının sahipliğini korur. Bu yapıya yalnızca bu görüşme sırasında erişmek için geçerli olması gerekir. Çerçeve, bu çağrı döndürülmeden önce gereken her şeyi kopyalar.
Çıkış arabelleklerinin henüz doldurulması gerekmez. Çerçeve, arabellek verilerini okumadan önce akış arabelleği yayınlama senkronizasyon çitinin yayınlanmasını bekler. Bu nedenle, çıkış arabelleklerinin bir kısmı veya tamamı henüz doldurulmamış olsa bile bu yöntem, HAL tarafından mümkün olan en kısa sürede çağrılmalıdır. HAL, her output_buffers akış arabelleği girişine geçerli yayın senkronizasyonu bariyerleri eklemelidir. Akış arabelleği zaten doluysa -1 eklenmelidir.
Bir istek için sonuç arabelleği oluşturulamıyorsa HAL, boş bir meta veri arabelleği döndürmeli ancak çıkış arabelleklerini ve bunların senkronizasyon çitlerini sağlamaya devam etmelidir. Ayrıca,
notify()
bir ERROR_RESULT mesajıyla çağrılmalıdır.
Bir çıkış arabelleği doldurulamıyorsa durum alanı STATUS_ERROR olarak ayarlanmalıdır. Ayrıca,
notify()
bir ERROR_BUFFER mesajıyla çağrılmalıdır.
Tüm yakalama işlemi başarısız olduysa çıkış arabelleklerini çerçeveye döndürmek için bu yöntemin yine de çağrılması gerekir. Tüm arabellek durumları STATUS_ERROR olmalı ve sonuç meta verileri boş bir arabellek olmalıdır. Ayrıca,
notify()
ERROR_REQUEST mesajıyla çağrılmalıdır. Bu durumda, ayrı ERROR_RESULT/ERROR_BUFFER mesajları gönderilmemelidir.
Performans koşulları:
Bu, engelleyici olmayan bir çağrıdır. Çerçeve, bu aramayı 5 ms içinde döndürür.
İşlem hattı gecikmesi (tanım için S7'ye bakın) 4 kare aralığından küçük veya bu aralığa eşit olmalı ve 8 kare aralığından küçük veya bu aralığa eşit olmalıdır.
Dosyanın
2466
satırındaki
camera3.h
tanımı.
Bu yapı için doküman, aşağıdaki dosyadan oluşturuldu:
-
hardware/libhardware/include/hardware/
camera3.h
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Android Hardware Abstraction Layer: camera3_callback_ops Struct Reference\n\ncamera3_callback_ops Struct Reference\n=====================================\n\n[Data Fields](#pub-attribs) \ncamera3_callback_ops Struct Reference \n\n`\n#include \u003c\n`[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)`\n\u003e\n`\n\n|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| void(\\* | [process_capture_result](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n| ||\n| void(\\* | [notify](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nDefinition at line\n[2397](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\nField Documentation\n-------------------\n\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* notify)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n\n\nnotify:\n\n\nAsynchronous notification callback from the HAL, fired for various reasons. Only for information independent of frame capture, or that require specific timing. The ownership of the message structure remains with the HAL, and the msg only needs to be valid for the duration of this call.\n\n\nMultiple threads may call\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nsimultaneously.\n\n\n\\\u003c= CAMERA_DEVICE_API_VERSION_3_1:\n\n\nThe notification for the start of exposure for a given request must be sent by the HAL before the first call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nfor that request is made.\n\n\n\\\u003e= CAMERA_DEVICE_API_VERSION_3_2:\n\n\nBuffers delivered to the framework will not be dispatched to the application layer until a start of exposure timestamp (or input image's start of exposure timestamp for a reprocess request) has been received via a SHUTTER\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\ncall. It is highly recommended to dispatch this call as early as possible.\n\n*** ** * ** ***\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nDefinition at line\n[2499](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* process_capture_result)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n\n\nprocess_capture_result:\n\n\nSend results from a completed capture to the framework.\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nmay be invoked multiple times by the HAL in response to a single capture request. This allows, for example, the metadata and low-resolution buffers to be returned in one call, and post-processed JPEG buffers in a later call, once it is available. Each call must include the frame number of the request it is returning metadata or buffers for.\n\n\nA component (buffer or metadata) of the complete result may only be included in one process_capture_result call. A buffer for each stream, and the result metadata, must be returned by the HAL for each request in one of the process_capture_result calls, even in case of errors producing some of the output. A call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nwith neither output buffers or result metadata is not allowed.\n\n\nThe order of returning metadata and buffers for a single result does not matter, but buffers for a given stream must be returned in FIFO order. So the buffer for request 5 for stream A must always be returned before the buffer for request 6 for stream A. This also applies to the result metadata; the metadata for request 5 must be returned before the metadata for request 6.\n\n\nHowever, different streams are independent of each other, so it is acceptable and expected that the buffer for request 5 for stream A may be returned after the buffer for request 6 for stream B is. And it is acceptable that the result metadata for request 6 for stream B is returned before the buffer for request 5 for stream A is.\n\n\nThe HAL retains ownership of result structure, which only needs to be valid to access during this call. The framework will copy whatever it needs before this call returns.\n\n\nThe output buffers do not need to be filled yet; the framework will wait on the stream buffer release sync fence before reading the buffer data. Therefore, this method should be called by the HAL as soon as possible, even if some or all of the output buffers are still in being filled. The HAL must include valid release sync fences into each output_buffers stream buffer entry, or -1 if that stream buffer is already filled.\n\n\nIf the result buffer cannot be constructed for a request, the HAL should return an empty metadata buffer, but still provide the output buffers and their sync fences. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with an ERROR_RESULT message.\n\n\nIf an output buffer cannot be filled, its status field must be set to STATUS_ERROR. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_BUFFER message.\n\n\nIf the entire capture has failed, then this method still needs to be called to return the output buffers to the framework. All the buffer statuses should be STATUS_ERROR, and the result metadata should be an empty buffer. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_REQUEST message. In this case, individual ERROR_RESULT/ERROR_BUFFER messages should not be sent.\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nThe pipeline latency (see S7 for definition) should be less than or equal to 4 frame intervals, and must be less than or equal to 8 frame intervals.\n\n\nDefinition at line\n[2466](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)"]]