التخزين المؤقت لإطارات الكاميرا

تمت الإضافة في ARCore 1.17.0

لا تحتاج معظم التطبيقات إلا إلى التخزين المؤقت لإطار كاميرا واحد من أجل العرض. ومع ذلك، يدعم ARCore أيضًا التخزين المؤقت لإطارات صور متعددة بحجم ثابت قائمة انتظار القوام الدائري.

يمكن للتطبيقات التي تتضمّن مسار عرض متعدد السلاسل استخدام التخزين المؤقت للمساعدة في تحسين. أداء العرض. يمكن أن يساعد التخزين المؤقت أيضًا في عرض الإطارات بمعدّل أكبر معدل عرض إطارات ثابت، والذي يمكن أن يقلل من تقطيع اللقطات المرئية الناتج عن العرض البطيء لواجهة المستخدم.

الشروط المسبقة

يصبح التخزين المؤقت لصور الكاميرا مفعَّلاً وفقًا لأي من الحالات التالية:

  1. عندما يفعّل التطبيق هذه الميزة، من خلال الاتصال بالرقم ArSession_setCameraTextureNames(ids) ذات معرفات زخرفة متعددة.

  2. عندما يتم إيقاف ميزة واحدة أو أكثر من ميزات ARCore التي تتطلّب تخزينًا داخليًا، مفعَّلة. وتشمل هذه الميزات حاليًا الميزات التالية:

    • الصور المعزَّزة
    • وجوه معززة
  3. على بعض الأجهزة المتوافقة مع ARCore والتي تتطلب تخزين مؤقت داخلي لا تعمل بشكل صحيح.

تحديد ما إذا كان قد تم تفعيل تأخير الإطار

لتحديد ما إذا كان هناك تخزين مؤقت للإطارات على جهاز معين وجلسة الواقع المعزّز المعروف باسم تأخُّر الإطار)، يمكنك استخدام إخراج Logcat adb:

# Camera frame buffering is turned off when frame delay is zero.
adb logcat | grep 'Update Frame Delay'
 I native  : session.cc:3141 Update Frame Delay to 0 frames.
# Camera frame buffering is turned on when frame count is non-zero.
# Note: The size of the buffer can vary over time.
adb logcat | grep 'Update Frame Delay'
 I native  : session.cc:3141 Update Frame Delay to 6 frames.

 I native  : session.cc:3141 Update Frame Delay to 4 frames.

 I native  : session.cc:3141 Update Frame Delay to 2 frames.

الذاكرة

يزيد كل إطار إضافي من إطارات الكاميرا التي يتم تخزينها مؤقتًا من استخدام الذاكرة. على سبيل المثال: تستهلك مساحة 1080p تقريبًا 6 ميغابايت من الذاكرة (يتم الحصول عليها من خلال ضرب درجة دقة تبلغ 1920 × 1080 × ثلاثة بايت من بيانات النموذج اللوني RGB لكل بكسل).

اعتبارات الأداء

وليس من المضمون أن يؤدي استخدام إطارات كاميرات متعددة إلى تقليل كما أن استخدام مسار عرض متعدد السلاسل ليس مضمونًا تقديم أداء أفضل في جميع الظروف تؤثر العوامل التالية في الأداء الحقيقي:

  • مسار عرض التطبيق

  • نموذج سلاسل المحادثات

  • بنية وحدة المعالجة المركزية (CPU) للجهاز

  • نظام جدولة نظام التشغيل

إذا تعذّر على تطبيقك الاستفادة من إطارات الكاميرا الإضافية، لن يكون في الأداء عند استخدام أكثر من زخرفة.

تفعيل التخزين المؤقت

لتوجيه ARCore إلى الزخارف المطلوب استخدامها لتخزين إطارات الكاميرا الواردة مؤقتًا، استخدم ArSession_setCameraTextureNames(ids) لتوفير مصفوفة من معرّفات زخارف واحدة أو أكثر. لا يتم استدعاء هذه الدالة إلا بعد إنشاء الجلسة، ويطلق عليها عادةً فقط مرة واحدة.

أثناء كل استدعاء إلى ArSession_update()، يستبدل ARCore المادة التالية في قائمة الانتظار في تسلسل دائري. إذا كان تطبيقك يضبط معرّفًا واحدًا فقط للزخرفة، فسيتم استبدال نفس الهيئة في كل مرة.

يمكنك استخدام ArFrame_getCameraTextureName() لتحديد معرّف الزخرفة المرتبط. بالإطار الحالي.