עזרה בנושא המבנה camera3_stream_buffer

עזרה בנושא המבנה 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.

ההגדרה מופיעה בשורה 1755 בקובץ camera3.h .

מסמכי תיעוד של שדה

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 אף פעם לא ממתין למחסום רכישה של מאגר קלט בגלל שגיאה, צריך לטפל במחסומי הסנכרון באופן דומה לאופן שבו מטפלים בהם במאגרי פלט.

ההגדרה נמצאת בשורה 1800 בקובץ camera3.h .

buffer_handle_t* buffer

ה-handle המקורי למאגר

ההגדרה נמצאת בשורה 1764 בקובץ camera3.h .

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.

ההגדרה מופיעה בשורה 1827 בקובץ camera3.h .

סטטוס int

המצב הנוכחי של המאגר, אחד מהערכים של camera3_buffer_status_t. המסגרת לא תעביר לממשק HAL מאגרים שנמצאים במצב שגיאה. אם ה-HAL לא הצליח למלא מאגר, הסטטוס שלו צריך להיות מוגדר כ-CAMERA3_BUFFER_STATUS_ERROR כשהוא מוחזר למסגרת באמצעות process_capture_result().

ההגדרה מופיעה בשורה 1773 בקובץ camera3.h .

הכינוי של השידור שאליו המאגר הזה משויך

ההגדרה מופיעה בשורה 1759 בקובץ camera3.h .


התיעוד של המבנה הזה נוצר מהקובץ הבא: