עזרה בנושא המבנה camera3_stream_buffer
#include <
camera3.h
>
שדות נתונים |
|
camera3_stream_t * | stream |
buffer_handle_t * | מאגר |
int | status |
int | acquire_fence |
int | release_fence |
תיאור מפורט
camera3_stream_buffer_t:
מאגר אחד מסטרימינג של camera3. הוא כולל את ה-handle של מקור הנתונים שלו, את ה-handle של מאגר ה-gralloc עצמו ואת גדרות הסנכרון
המאגר לא מציין אם הוא ישמש לקלט או לפלט. הדבר נקבע לפי סוג הסטרימינג של ההורה שלו ועל ידי האופן שבו המאגר מועבר למכשיר ה-HAL.
מסמכי תיעוד של שדה
int acquire_fence |
גדר הסנכרון לרכישה של המאגר הזה. ה-HAL צריך להמתין ל-fd של הגדרת המחסום לפני שהוא מנסה לקרוא מהמאגר או לכתוב אליו.
אפשר להגדיר את המסגרת ל--1 כדי לציין שאין צורך להמתין למאגר הזה.
כש-HAL מחזיר למסגרת מאגר פלט באמצעות process_capture_result(), צריך להגדיר את acquire_fence לערך -1. אם ה-HAL אף פעם לא ממתין ל-acquire_fence בגלל שגיאה במילוי מאגר, בקריאה ל-process_capture_result(), ה-HAL צריך להגדיר את release_fence של המאגר כ-acquire_fence שהועברה אליו על ידי המסגרת. כך המסגרת תוכל להמתין לפני שימוש חוזר במאגר.
במאגרי קלט, ה-HAL לא יכול לשנות את השדה acquire_fence במהלך הקריאה process_capture_request().
>= CAMERA_DEVICE_API_VERSION_3_2:
כש-HAL מחזיר למסגרת מאגר קלט באמצעות process_capture_result(), צריך להגדיר את acquire_fence לערך -1. אם ה-HAL אף פעם לא ממתין למחסום רכישה של מאגר קלט בגלל שגיאה, צריך לטפל במחסומי הסנכרון באופן דומה לאופן שבו מטפלים בהם במאגרי פלט.
int release_fence |
הגדרת הסנכרון של הגרסה הזו למאגר. ה-HAL חייב להגדיר את המחסום הזה כשמחזירים מאגרים למסגרת, או לכתוב -1 כדי לציין שאין צורך בהמתנה למאגר הזה.
במאגרי הפלט, צריך להגדיר את המחסומים במערך output_buffers שמוענק ל-process_capture_result().
<= CAMERA_DEVICE_API_VERSION_3_1:
למאגר הקלט, צריך להגדיר את גידור השחרור באמצעות הקריאה process_capture_request().
>= CAMERA_DEVICE_API_VERSION_3_2:
במאגר הקלט, צריך להגדיר את המחסומים ב-input_buffer שמוענק ל-process_capture_result().
אחרי שליחת האות release_fence למאגר הזה, ה-HAL לא אמור לנסות לגשת למאגר הזה שוב, כי הבעלות הועברה בחזרה למסגרת באופן מלא.
אם צוין גדר של -1, הבעלות על המאגר הזה מועברת חזרה מיד לאחר הקריאה ל-process_capture_result.
סטטוס int |
camera3_stream_t * stream |
התיעוד של המבנה הזה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ camera3.h