بث المحتوى والاقتصاص والتكبير أو التصغير

مصادر الإخراج

ويعمل النظام الفرعي للكاميرا فقط على المسار المستند إلى ANativeWindow جميع درجات الدقة وتنسيقات الإخراج. يمكن ضبط عدّة أحداث بث مباشر على: مرة واحدة لإرسال إطار واحد إلى العديد من الأهداف مثل وحدة معالجة الرسومات، فإن وحدة معالجة الرسومات أو برنامج ترميز RenderScript، أو التخزين المؤقت المرئي للتطبيق (RAW Bayer أو YUV الذي تمت معالجته) أو مخازن مؤقتة بترميز JPEG).

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

للحصول على مزيد من المعلومات عن تركيبات إخراج البث المضمونة التي تعتمد على مستوى الأجهزة المتوافقة، راجع createCaptureSession()

الاقتصاص

يشير اقتصاص صفيفة البكسل بالكامل (للتكبير/التصغير الرقمي وحالات الاستخدام الأخرى التي مجال وجهة نظر أصغر يُفضل) يتم الإعلان عنه من خلال ANDROID_SCALER_CROP_ معرفة الإعداد. يكون هذا الإعداد لكل طلب، ويمكن أن يتغير وفقًا لكل طلب، وهو أمر بالغ الأهمية لتطبيق التكبير/التصغير الرقمي السلس.

يتم تحديد المنطقة على أنها مستطيل (س، ص، عرض، ارتفاع) بـ (س، ص) يصف الزاوية العلوية اليسرى من المستطيل. يتم تحديد المستطيل على النظام الإحداثي لمصفوفة البكسل النشطة لأداة الاستشعار، ويمثل (0,0) أعلى اليسار لمصفوفة البكسل النشطة. ومن ثم لا يمكن لعرض أكبر من الأبعاد المذكورة في ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY حقل معلومات ثابت. يتم الإبلاغ عن الحد الأدنى المسموح به للعرض والارتفاع بواسطة HAL. من خلال حقل المعلومات الثابتة لنظام ANDROID_SCALER_MAX_DIGITAL_ZOOM، والذي يصف الحد الأقصى لعامل التكبير المدعوم. وبالتالي، لا يمكن الحد الأدنى لعرض منطقة الاقتصاص الارتفاع:

  {width, height} =
   { floor(ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY[0] /
       ANDROID_SCALER_MAX_DIGITAL_ZOOM),
     floor(ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY[1] /
       ANDROID_SCALER_MAX_DIGITAL_ZOOM) }

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

بما أنّ منطقة الاقتصاص تنطبق على جميع أحداث البث، قد يكون لها جانب مختلف عن منطقة الاقتصاص، قد تكون منطقة الاستشعار الدقيقة المستخدمة لكل بث أصغر من منطقة الاقتصاص. على وجه التحديد، يجب أن تحافظ كل ساحة مشاركات على شكل البكسل ونسبة العرض إلى الارتفاع الخاصة بها عن طريق إجراء اقتصاص إضافي للاقتصاص المحدد . إذا كانت نسبة العرض إلى الارتفاع للبث المباشر أكبر من منطقة الاقتصاص، سيتم يجب اقتصاصها عموديًا أكثر، وإذا كانت نسبة العرض إلى الارتفاع للبث أضيق من منطقة الاقتصاص، يجب اقتصاص ساحة المشاركات أكثر أفقيًا.

في جميع الحالات، يجب أن يكون اقتصاص البث في الوسط ضمن منطقة الاقتصاص الكاملة يتم اقتصاص كل ساحة مشاركات إما أفقيًا أو عموديًا بالنسبة إلى البث ومنطقة المحاصيل وليس كليهما.

على سبيل المثال، في حال تحديد نوعَي بث، بث بحجم 640 × 480 (عرض بنسبة عرض إلى ارتفاع 4:3) مجموعة البث بدقة 1280 x 720 (نسبة عرض إلى ارتفاع 16:9)، في ما يلي توضيح مناطق الإخراج المتوقعة لكل بث لعينة من مناطق الاقتصاص، وذلك وفقًا للإعدادات الافتراضية التي تبلغ 3 ميغا بكسل (2000 × صفيف 1500 بكسل).

منطقة الاقتصاص: (500، 375، 1000، 750) (نسبة العرض إلى الارتفاع 4:3)
اقتصاص ساحة المشاركات بحجم 640×480: (500، 375، 1000، 750) (يساوي منطقة الاقتصاص)
اقتصاص ساحة المشاركات 1280×720: (500 أو 469 أو 1000 أو 562)

منطقة الاقتصاص 43

الشكل 1. نسبة العرض إلى الارتفاع 4‏:3

منطقة الاقتصاص: (500، 375، 1333، 750) (نسبة العرض إلى الارتفاع 16:9)
اقتصاص ساحة المشاركات بحجم 640×480: (666، 375، 1000، 750)
اقتصاص ساحة المشاركات 1280×720: (500، 375، 1333، 750) (يساوي منطقة الاقتصاص)

منطقة الاقتصاص 169

الشكل 2. نسبة العرض إلى الارتفاع 16:9

منطقة الاقتصاص: (500، 375، 750، 750) (نسبة العرض إلى الارتفاع 1:1)
اقتصاص ساحة المشاركات بحجم 640×480: (500 و469 و750 و562)
اقتصاص ساحة المشاركات 1280×720: (500، 543، 750، 414)

منطقة الاقتصاص 11

الشكل 3. نسبة العرض إلى الارتفاع: 1:1

ومثال أخير، بث بنسبة عرض إلى ارتفاع مربّعة 1024×1024 بدلاً من 480p ساحة المشاركات:
منطقة الاقتصاص: (500، 375، 1000، 750) (نسبة العرض إلى الارتفاع 4:3)
اقتصاص ساحة المشاركات 1024×1024: (625، 375، 750، 750)
اقتصاص ساحة المشاركات 1280×720: (500 أو 469 أو 1000 أو 562)

نسبة منطقة الاقتصاص 43

الشكل 4. نسبة العرض إلى الارتفاع 4:3، مربّع

إعادة المعالجة

يتم توفير دعم إضافي لملفات الصور الأولية من خلال إعادة معالجة ملفات RAW Bayer. البيانات. يتيح هذا الدعم لمسار الكاميرا معالجة لقطة تم التقاطها سابقًا المخزن المؤقت لـ RAW والبيانات الوصفية (إطار كامل تم تسجيله مسبقًا)، وتُنتج ناتج YUV أو JPEG جديدًا.

Zoom

على الأجهزة التي تعمل بنظام التشغيل Android 11 أو الإصدارات الأحدث، يمكن للتطبيق استخدام ميزة التكبير أو التصغير في الكاميرا (رقمية وبصرية) من خلال إعدادات ANDROID_CONTROL_ZOOM_RATIO.

تُعرّف نسبة التكبير/التصغير كعامل نقطة عائمة. بدلاً من باستخدام ANDROID_SCALER_CROP_REGION للاقتصاص والتكبير/التصغير، يمكن للتطبيق استخدام ANDROID_CONTROL_ZOOM_RATIO للتحكم في مستوى التكبير/التصغير واستخدام ANDROID_SCALER_CROP_REGION للاقتصاص الأفقي والعمودي إلى تحقيق نِسب عرض إلى ارتفاع مختلفة عن أداة استشعار الكاميرا الأصلية.

قد يحتوي نظام الكاميرات المتعددة على أكثر من عدسة واحدة بمختلف والأطوال البؤرية، ويمكن للمستخدم استخدام التكبير/التصغير البصري عن طريق التبديل بين العدسات. يمكن استخدام ANDROID_CONTROL_ZOOM_RATIO للاستفادة من المزايا في الحالات التالية:

  • التكبير من عدسة واسعة إلى عدسة مقرِّبة (تيليفوتو): نسبة النقطة العائمة دقة أفضل مقارنةً بقيم الأعداد الصحيحة ANDROID_SCALER_CROP_REGION
  • التصغير من عدسة لالتقاط صور موسّعة إلى عدسة لالتقاط صور موسّعة: ANDROID_CONTROL_ZOOM_RATIO يتيح التصغير (<1.0f) بينما ANDROID_SCALER_CROP_REGION لا يفعل ذلك.

للتوضيح، في ما يلي عدة سيناريوهات لنسب التكبير أو التصغير ومناطق الاقتصاص والنتيجة المختلفة. عمليات البث، باستخدام الكاميرا الافتراضية نفسها المحددة في القسم السابق.

نسبة التكبير/التصغير: 2.0؛ 1/4 من مجال الرؤية الأصلي
منطقة الاقتصاص: (0، 0، 2000، 1500) (نسبة العرض إلى الارتفاع 4:3)
اقتصاص ساحة المشاركات بحجم 640×480: (0، 0، 2000، 1500) (يساوي منطقة الاقتصاص)
اقتصاص ساحة المشاركات 1280×720: (0، 187، 2000، 1125)

نسبة التكبير/التصغير-2-اقتصاص-43

الشكل 5. تكبير 2.0 أو نسبة العرض إلى الارتفاع 4:3

نسبة التكبير/التصغير: 2.0؛ 1/4 من مجال الرؤية الأصلي
منطقة الاقتصاص: (0، 187، 2000، 1125) (نسبة العرض إلى الارتفاع 16:9)
اقتصاص مجموعة البث بمقاس 640×480: (250، 187، 1500، 1125) (مُعدّ للعرض على شاشة عريضة عموديًا)
اقتصاص ساحة المشاركات 1280×720: (0، 187، 2000، 1125) (يساوي منطقة الاقتصاص)

نسبة التكبير/التصغير-2-اقتصاص-169

الشكل 6. تكبير 2.0 أو نسبة العرض إلى الارتفاع 16:9

نسبة التكبير/التصغير: 0.5؛ 4 أضعاف مجال الرؤية الأصلي (تم التبديل من عدسة لالتقاط صور عريضة إلى عدسة لالتقاط صور موسّعة)
منطقة الاقتصاص: (250، 0، 1500، 1500) (نسبة العرض إلى الارتفاع 1:1)
اقتصاص ساحة المشاركات بحجم 640×480: (250، 187، 1500، 1125) (مُعدّ للعرض على شاشة عريضة أفقيًا)
اقتصاص ساحة المشاركات 1280×720: (250، 328، 1500، 844) (مُعد للعرض على شاشة عريضة أفقيًا)

صور/نسبة التكبير/التصغير-0.5-اقتصاص-11

الشكل 7. تكبير 0.5، نسبة العرض إلى الارتفاع 1:1

وكما هو موضح من الرسوم البيانية أعلاه، يتغير النظام الإحداثي لمنطقة الاقتصاص إلى القيمة مجال رؤية ما بعد التكبير، ويتم تمثيله بمستطيل بالأبعاد التالية: (0 و0 وactiveArrayWith وactiveArrayHeight). وينطبق ذلك أيضًا على مناطق ووجوه AE/AWB/AF. لا ينطبق تغيير نظام الإحداثيات هذا على التقاط صور RAW والبيانات الوصفية ذات الصلة بها، مثل intrinsicCalibration و lensShadingMap

باستخدام المثال الافتراضي أعلاه، وبافتراض أنّ مصدر المخرجات رقم 1 (640×480) هو بث عدسة الكاميرا، يمكن التكبير بمقدار 2.0x بإحدى الطريقتين التاليتين:

  • zoomRatio = 2.0، scaler.cropRegion = (0, 0, 2000, 1500)
  • zoomRatio = 1.0 (الخيار التلقائي)، scaler.cropRegion = (500, 375, 1000, 750)

لكي يتم ضبط أحد التطبيقات ليكون android.control.aeRegions في أعلى يمين الشاشة ربع مجال رؤية عدسة الكاميرا من android.control.aeRegions إلى (0, 0, 1000, 750) باستخدام تم ضبط android.control.zoomRatio على 2.0. بدلاً من ذلك، يمكن للتطبيق ضبط android.control.aeRegions على القيمة المكافئة منطقة (500, 375, 1000, 750) لـ android.control.zoomRatio من إجمالي 1.0