camera2_device_ops結構參考

camera2_device_ops結構參考

#include < camera2.h >

資料欄位

整數(* set_request_queue_src_ops )(const structcamera2_device *, constcamera2_request_queue_src_ops_t *request_src_ops)
整數(* notification_request_queue_not_empty )(const structcamera2_device *)
整數(* set_frame_queue_dst_ops )(const structcamera2_device *, constcamera2_frame_queue_dst_ops_t *frame_dst_ops)
整數(* get_in_progress_count )(const structcamera2_device *)
整數(* lush_captures_in_progress )(const structcamera2_device *)
整數(*建構預設請求)(常數結構camera2_device *,int request_template, camera_metadata_t **請求)
整數(* allocate_stream )(常數結構camera2_device *,uint32_t寬度,uint32_t高度,int格式,常量camera2_stream_ops_t *stream_ops,uint32_t *stream_id,uint32_t *format_actual,uint32_t *maxuint32_t
整數(* register_stream_buffers )(const structcamera2_device *,uint32_tstream_id,intnum_buffers,buffer_handle_t*buffers)
整數(* release_stream )(const structcamera2_device *,uint32_tstream_id)
整數(* allocate_reprocess_stream )(常數結構camera2_device *,uint32_t寬度,uint32_t高度,uint32_t格式,常數camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id,uint32_tconsum
整數(* allocate_reprocess_stream_from_stream )(const structcamera2_device *,uint32_toutput_stream_id, constcamera2_stream_in_ops_t *reprocess_stream_ops,uint32_t*stream_id)
整數(* release_reprocess_stream )(const structcamera2_device *,uint32_tstream_id)
整數(*觸發器動作)(常數結構camera2_device *,uint32_t觸發器_id,int32_t ext1,int32_t ext2)
整數(* set_notify_callback )(常數結構camera2_device *, camera2_notify_callback notification_cb,void *使用者)
整數(* get_metadata_vendor_tag_ops )(const structcamera2_device *,vendor_tag_query_ops_t **ops)
整數(*轉儲)(常數結構camera2_device *,int fd)
整數(* get_instance_metadata )(常數結構camera2_device *,camera_metadata **instance_metadata)

詳細說明

檔案camera2.h527行的定義。

現場文檔

int(* allocate_reprocess_stream)(const structcamera2_device *,uint32_t寬度,uint32_t高度,uint32_t格式, constcamera2_stream_in_ops_t *reprocess_stream_ops,uint32_t問題 *stream_id,uint32_t *reconer_h.p.

allocate_reprocess_stream:

分配一個新的輸入流以供使用,由輸出緩衝區寬度、高度和像素格式定義。如果成功,則傳回新串流的 ID、gralloc 使用標誌以及所需的同時可取得緩衝區計數。錯誤條件:

  • 請求感測器靜態特性未列出的寬度/高度/格式組合
  • 要求一次配置太多的後處理流程。

輸入參數:

  • width、height、format:透過此流傳送的緩衝區的規格。格式必須是 HAL_PIXEL_FORMAT_* 清單中的值。
  • reprocess_stream_ops:用於取得和釋放該流的緩衝區的函數指標結構。底層流將根據使用情況和 max_buffers 輸出進行配置。

輸出參數:

  • Stream_id:標識該流的無符號整數。該值用於傳入請求以識別流以及釋放流。這些 id 與輸入流 id 分開編號。
  • Consumer_usage:HAL 裝置使用要求的資料類型所需的 gralloc 使用遮罩。這用於為流緩衝區佇列分配新的 gralloc 緩衝區。
  • max_buffers:HAL設備可能需要同時取得的最大緩衝區數。設備同時取得的緩衝區數不得超過該值。

檔案camera2.h708行的定義。

int(* allocate_reprocess_stream_from_stream)(const structcamera2_device *, uint32_t output_stream_id, constcamera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

allocate_reprocess_stream_from_stream:

分配一個新的輸入流以供使用,它將使用為現有輸出流分配的緩衝區。也就是說,在 HAL 將緩衝區排隊到輸出流上之後,它可能會看到從該輸入重新處理流傳遞給它的相同緩衝區。 HAL 將緩衝區釋放回重新處理流程後,將返回輸出佇列以供重複使用。

錯誤條件:

  • 使用大小/格式不合適的輸出流作為重新處理流的基礎。
  • 嘗試一次分配太多的重新處理流。

輸入參數:

  • output_stream_id:現有輸出流的 ID,其大小和格式適合重新處理。
  • reprocess_stream_ops:用於取得和釋放該流的緩衝區的函數指標結構。底層流將使用與輸出流相同的圖形緩衝區句柄。

輸出參數:

  • Stream_id:標識該流的無符號整數。該值用於傳入請求以識別流以及釋放流。這些 id 與輸入流 id 分開編號。

HAL 用戶端必須始終在釋放其所基於的輸出流之前釋放重新處理流。

檔案camera2.h754行的定義。

int(* allocate_stream)(const structcamera2_device *,uint32_t寬度,uint32_t高度,int格式, constcamera2_stream_ops_t *stream_ops,uint32_t *stream_id,uint32_t *format_actual,ops,uint32_t *stream_id,uint32_t *format_actual,uint3231)

分配流:

分配一個新的輸出流供使用,由輸出緩衝區寬度、高度、目標以及可能的像素格式定義。如果成功,則傳回新流的 ID、gralloc 使用標誌、最小佇列緩衝區計數以及可能的像素格式。錯誤條件:

  • 請求感測器靜態特性未列出的寬度/高度/格式組合
  • 要求給定格式類型的流過多(例如,2 個拜耳原始流)。

輸入參數:

  • width、height、format:透過此流傳送的緩衝區的規格。格式是 HAL_PIXEL_FORMAT_* 清單中的值。如果使用 HAL_PIXEL_FORMAT_IMPLMENTATION_DEFINED,則平台 gralloc 模組將根據相機 HAL 和串流的使用者提供的使用標誌來選擇格式。如有必要,相機 HAL 應檢查在 register_stream_buffers 呼叫中傳遞給它的緩衝區,以取得特定於實作的格式。
  • Stream_ops:用於取得該流的緩衝區並將其排隊的函數指標結構。底層流將根據使用情況和 max_buffers 輸出進行配置。該結構中的方法只有在 allocate_stream 返回後才能被呼叫。

輸出參數:

  • Stream_id:標識該流的無符號整數。該值用於傳入請求以識別流以及釋放流。
  • 用法:HAL 設備產生請求的資料類型所需的 gralloc 用法遮罩。這用於為流緩衝區佇列分配新的 gralloc 緩衝區。
  • max_buffers:HAL 裝置可能需要同時出隊的最大緩衝區數。設備同時出隊的緩衝區數不得超過此值。

檔案camera2.h632行的定義。

int(*construct_default_request)(const structcamera2_device *,intrequest_template, camera_metadata_t **request)

為標準相機用例建立已填寫的預設請求。

裝置必須傳回配置為滿足所請求案例的完整請求,該請求必須是 CAMERA2_TEMPLATE_* 枚舉之一。必須包含所有請求控製字段(android.request.outputStreams 除外)。

傳回的元資料緩衝區必須使用 allocate_camera_metadata 進行指派。框架取得緩衝區的所有權。

檔案camera2.h580行的定義。

int(* dump)(const structcamera2_device *, int fd)

相機硬體的轉儲狀態

定義在檔案camera2.h的第801行。

int(*flush_captures_in_progress)(const structcamera2_device *)

刷新所有正在進行的捕獲。這包括尚未將任何輸出放入串流或幀隊列中的所有出隊請求(常規或重新處理)。部分完成的捕獲必須正常完成。在刷新完成之前,不會有新的請求從請求佇列中出隊。

檔案camera2.h567行的定義。

int(* get_in_progress_count)(const structcamera2_device *)

設備目前正在處理的相機請求數(捕獲/重新處理其請求已出隊,但尚未入隊到輸出管道)。在進行中計數為 0 之前,框架不會釋放任何流。

檔案camera2.h558行的定義。

int(* get_instance_metadata)(const structcamera2_device *,camera_metadata **instance_metadata)

取得設備實例特定的元資料。對於相機裝置的單一實例,此元資料必須是恆定的,但在 open() 呼叫之間可能有所不同。傳回的camera_metadata指標必須在呼叫裝置close()方法之前有效。

版本資訊:

CAMERA_DEVICE_API_VERSION_2_0:

無法使用。框架可能無法存取此函數指標。

CAMERA_DEVICE_API_VERSION_2_1:

有效的。可以被框架呼叫。

檔案camera2.h820行的定義。

int(* get_metadata_vendor_tag_ops)(const structcamera2_device *,vendor_tag_query_ops_t **ops)

取得查詢供應商擴展元資料標籤資訊的方法。如果沒有定義供應商擴充標籤,可以將 ops 設為 NULL。

檔案camera2.h795行的定義。

int(* notification_request_queue_not_empty)(const structcamera2_device *)

通知設備請求隊列不再為空。只有當第一個緩衝區新增至新佇列時,或在來源回應出隊呼叫而傳回 NULL 之後,才必須呼叫。

檔案camera2.h544行的定義。

int(* register_stream_buffers)(const structcamera2_device *,uint32_tstream_id,intnum_buffers,buffer_handle_t*buffers)

為給定流註冊緩衝區。這是在成功呼叫 allocate_stream 之後、引用流的第一個請求入隊之前調用的。此方法旨在允許 HAL 裝置映射或以其他方式準備緩衝區以供以後使用。 num_buffers 保證至少為 max_buffers (來自 allocate_stream),但也可以更大。緩衝區已被鎖定以供使用。呼叫結束時,所有緩衝區必須準備好返回佇列。如果流格式設定為 HAL_PIXEL_FORMAT_IMPLMENTATION_DEFINED,則相機 HAL 應檢查此處傳入的緩衝區以確定任何平台私有的像素格式資訊。

檔案camera2.h657行的定義。

int(*release_reprocess_stream)(const structcamera2_device *,uint32_tstream_id)

釋放重新處理流。如果在 get_in_progress_count 非零時調用,或者流 ID 無效,則傳回錯誤。

檔案camera2.h765行的定義。

int(*release_stream)(const structcamera2_device *,uint32_tstream_id)

釋放一個流。如果在 get_in_progress_count 非零時調用,或者流 ID 無效,則傳回錯誤。

檔案camera2.h667行的定義。

int(* set_frame_queue_dst_ops)(const structcamera2_device *, constcamera2_frame_queue_dst_ops_t *frame_dst_ops)

傳入輸出幀隊列介面方法

檔案camera2.h549行的定義。

int(* set_notify_callback)(const structcamera2_device *, camera2_notify_callbacknotify_cb ,void *user)

通知回調設定

定義在檔案camera2.h的第787行。

int(* set_request_queue_src_ops)(const structcamera2_device *, constcamera2_request_queue_src_ops_t *request_src_ops)

傳入輸入請求佇列介面方法。

檔案camera2.h536行的定義。

int(*trigger_action)(const structcamera2_device *,uint32_ttrigger_id,int32_text1,int32_text2)

觸發異步活動。這用於在使用相機3A例程時觸發它們的特殊行為。有關觸發器 ID 及其參數的詳細信息,請參閱上面的 CAMERA2_TRIGGER_* 文件。

定義位於檔案camera2.h的第779行。


該結構的文檔是從以下文件產生的: