মাল্টি-ক্যামেরা সমর্থন

অ্যান্ড্রয়েড ৯ একটি নতুন লজিক্যাল ক্যামেরা ডিভাইসের মাধ্যমে মাল্টি-ক্যামেরা ডিভাইসের জন্য এপিআই সাপোর্ট চালু করেছে, যা একই দিকে তাক করা দুই বা ততোধিক ফিজিক্যাল ক্যামেরা ডিভাইস দিয়ে গঠিত। এই লজিক্যাল ক্যামেরা ডিভাইসটি একটি অ্যাপের কাছে একক CameraDevice/CaptureSession হিসেবে উন্মুক্ত থাকে, যা HAL-সমন্বিত মাল্টি-ক্যামেরা ফিচারগুলোর সাথে ইন্টারঅ্যাকশনের সুযোগ দেয়। অ্যাপগুলো ঐচ্ছিকভাবে অন্তর্নিহিত ফিজিক্যাল ক্যামেরা স্ট্রিম, মেটাডেটা এবং কন্ট্রোলগুলো অ্যাক্সেস ও নিয়ন্ত্রণ করতে পারে।

একাধিক ক্যামেরা সমর্থন

চিত্র ১। একাধিক ক্যামেরা সমর্থন

এই ডায়াগ্রামে, বিভিন্ন ক্যামেরা আইডি রঙ দিয়ে চিহ্নিত করা হয়েছে। অ্যাপটি একই সময়ে প্রতিটি ফিজিক্যাল ক্যামেরা থেকে র বাফার স্ট্রিম করতে পারে। এছাড়াও, বিভিন্ন ফিজিক্যাল ক্যামেরা থেকে আলাদা কন্ট্রোল সেট করা এবং আলাদা মেটাডেটা গ্রহণ করা সম্ভব।

উদাহরণ এবং উৎস

একাধিক ক্যামেরাযুক্ত ডিভাইসগুলোকে অবশ্যই যৌক্তিক একাধিক ক্যামেরা সক্ষমতা সহ বিজ্ঞাপন দিতে হবে।

ক্যামেরা ক্লায়েন্টরা getPhysicalCameraIds() কল করে একটি নির্দিষ্ট লজিক্যাল ক্যামেরা যে ফিজিক্যাল ডিভাইসগুলো দিয়ে গঠিত, সেগুলোর ক্যামেরা আইডি জানতে পারে। ফলাফলের অংশ হিসেবে ফেরত আসা আইডিগুলো এরপর setPhysicalCameraId() এর মাধ্যমে ফিজিক্যাল ডিভাইসগুলোকে আলাদাভাবে নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এই ধরনের স্বতন্ত্র অনুরোধের ফলাফলগুলো getPhysicalCameraResults() কল করে সম্পূর্ণ ফলাফল থেকে জানতে পারা যায়।

স্বতন্ত্র ফিজিক্যাল ক্যামেরা অনুরোধগুলো শুধুমাত্র সীমিত সংখ্যক প্যারামিটার সমর্থন করতে পারে। সমর্থিত প্যারামিটারগুলোর তালিকা পেতে, ডেভেলপাররা getAvailablePhysicalCameraRequestKeys() কল করতে পারেন।

ফিজিক্যাল ক্যামেরা স্ট্রিম শুধুমাত্র নন-রিপ্রসেসিং অনুরোধের জন্য এবং শুধুমাত্র মনোক্রোম ও বেয়ার সেন্সরের ক্ষেত্রে সমর্থিত।

বাস্তবায়ন

সহায়তা চেকলিস্ট

HAL সাইডে লজিক্যাল মাল্টি-ক্যামেরা ডিভাইস যোগ করতে:

  • দুই বা ততোধিক ফিজিক্যাল ক্যামেরা দ্বারা সমর্থিত এবং কোনো অ্যাপের কাছে উন্মুক্ত যেকোনো লজিক্যাল ক্যামেরা ডিভাইসের জন্য একটি ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA ক্যাপাবিলিটি যোগ করুন।
  • স্ট্যাটিক ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS মেটাডেটা ফিল্ডটি ফিজিক্যাল ক্যামেরা আইডিগুলোর একটি তালিকা দিয়ে পূরণ করুন।
  • ফিজিক্যাল ক্যামেরা স্ট্রিমের পিক্সেলগুলোর মধ্যে সম্পর্ক স্থাপনের জন্য প্রয়োজনীয় গভীরতা-সম্পর্কিত স্ট্যাটিক মেটাডেটা পূরণ করুন: ANDROID_LENS_POSE_ROTATION , ANDROID_LENS_POSE_TRANSLATION , ANDROID_LENS_INTRINSIC_CALIBRATION , ANDROID_LENS_DISTORTION , ANDROID_LENS_POSE_REFERENCE
  • স্ট্যাটিক ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE মেটাডেটা ফিল্ডটি সেট করুন:

    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE : মেইন-মেইন মোডে থাকা সেন্সরগুলির জন্য, কোনো হার্ডওয়্যার শাটার/এক্সপোজার সিঙ্ক নেই।
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED : প্রধান-সেকেন্ডারি মোডে থাকা সেন্সরগুলির জন্য, হার্ডওয়্যার শাটার/এক্সপোজার সিঙ্ক।
  • প্রতিটি ফিজিক্যাল ক্যামেরার জন্য সমর্থিত প্যারামিটারগুলোর একটি তালিকা দিয়ে ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS পূরণ করুন। যদি লজিক্যাল ডিভাইসটি স্বতন্ত্র অনুরোধ সমর্থন না করে, তবে তালিকাটি খালি থাকতে পারে।

  • যদি স্বতন্ত্র অনুরোধ সমর্থিত হয়, তাহলে ক্যাপচার অনুরোধের অংশ হিসেবে আসা স্বতন্ত্র physicalCameraSettings প্রসেস ও প্রয়োগ করুন এবং সেই অনুযায়ী স্বতন্ত্র physicalCameraMetadata যুক্ত করুন।

  • ক্যামেরা HAL ডিভাইস ভার্সন ৩.৫ (যা অ্যান্ড্রয়েড ১০-এ চালু হয়েছে) বা তার উচ্চতর ভার্সনের ক্ষেত্রে, লজিক্যাল ক্যামেরাকে ব্যাক করা বর্তমান সক্রিয় ফিজিক্যাল ক্যামেরার আইডি ব্যবহার করে ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID রেজাল্ট কী-টি পূরণ করুন।

অ্যান্ড্রয়েড ৯ চালিত ডিভাইসগুলোর ক্ষেত্রে, ক্যামেরা ডিভাইসগুলোকে অবশ্যই দুটি ফিজিক্যাল ক্যামেরা থেকে প্রাপ্ত একই আকারের (RAW স্ট্রিমের ক্ষেত্রে প্রযোজ্য নয়) এবং একই ফরম্যাটের ফিজিক্যাল স্ট্রিম দিয়ে একটি লজিক্যাল YUV বা RAW স্ট্রিম প্রতিস্থাপন করার সুবিধা সমর্থন করতে হবে। অ্যান্ড্রয়েড ১০ চালিত ডিভাইসগুলোর ক্ষেত্রে এটি প্রযোজ্য নয়।

অ্যান্ড্রয়েড ১০ চালিত ডিভাইসগুলির ক্ষেত্রে, যেখানে ক্যামেরা HAL ডিভাইস ভার্সন ৩.৫ বা তার বেশি, সেখানে অ্যাপগুলির পক্ষে ফিজিক্যাল স্ট্রিম সম্বলিত কোনো নির্দিষ্ট স্ট্রিম কম্বিনেশন সমর্থিত কিনা তা জিজ্ঞাসা করার জন্য ক্যামেরা ডিভাইসটিতে অবশ্যই isStreamCombinationSupported সাপোর্ট থাকতে হবে।

স্ট্রিম কনফিগারেশন ম্যাপ

একটি লজিক্যাল ক্যামেরার ক্ষেত্রে, একটি নির্দিষ্ট হার্ডওয়্যার লেভেলের ক্যামেরা ডিভাইসের জন্য বাধ্যতামূলক স্ট্রিম কম্বিনেশনগুলো CameraDevice.createCaptureSession এ যা প্রয়োজন তার মতোই। স্ট্রিম কনফিগারেশন ম্যাপের সমস্ত স্ট্রিম অবশ্যই লজিক্যাল স্ট্রিম হতে হবে।

বিভিন্ন আকারের ফিজিক্যাল সাব-ক্যামেরা সহ RAW সক্ষমতা সম্পন্ন একটি লজিক্যাল ক্যামেরা ডিভাইসের ক্ষেত্রে, যদি কোনো অ্যাপ একটি লজিক্যাল RAW স্ট্রিম কনফিগার করে, তবে সেই লজিক্যাল ক্যামেরা ডিভাইসটি অবশ্যই ভিন্ন সেন্সর আকারের ফিজিক্যাল সাব-ক্যামেরায় সুইচ করবে না। এটি নিশ্চিত করে যে বিদ্যমান RAW ক্যাপচার অ্যাপগুলো যেন অকার্যকর না হয়ে যায়।

RAW ক্যাপচারের সময় ফিজিক্যাল সাব-ক্যামেরাগুলোর মধ্যে স্যুইচ করে HAL-প্রয়োগকৃত অপটিক্যাল জুমের সুবিধা নিতে হলে, অ্যাপগুলোকে লজিক্যাল RAW স্ট্রিমের পরিবর্তে ফিজিক্যাল সাব-ক্যামেরা স্ট্রিম কনফিগার করতে হবে।

নিশ্চিত স্ট্রিম সংমিশ্রণ

লজিক্যাল ক্যামেরা এবং এর অন্তর্নিহিত ফিজিক্যাল ক্যামেরা উভয়কেই তাদের ডিভাইস লেভেলের জন্য প্রয়োজনীয় বাধ্যতামূলক স্ট্রিম কম্বিনেশনগুলো নিশ্চিত করতে হবে।

একটি লজিক্যাল ক্যামেরা ডিভাইস তার হার্ডওয়্যার স্তর এবং সক্ষমতার উপর ভিত্তি করে একটি ফিজিক্যাল ক্যামেরা ডিভাইসের মতোই কাজ করবে। এটি সুপারিশ করা হয় যে এর ফিচার সেটটি স্বতন্ত্র ফিজিক্যাল ক্যামেরাগুলোর ফিচার সেটের একটি সুপারসেট হবে।

অ্যান্ড্রয়েড ৯ চালিত ডিভাইসগুলিতে, প্রতিটি নিশ্চিত স্ট্রিম সংমিশ্রণের জন্য, লজিক্যাল ক্যামেরাকে অবশ্যই নিম্নলিখিত বিষয়গুলো সমর্থন করতে হবে:

  • একটি লজিক্যাল YUV_420_888 বা র স্ট্রিমকে একই আকার ও ফরম্যাটের দুটি ফিজিক্যাল স্ট্রিম দ্বারা প্রতিস্থাপন করা, যেখানে প্রতিটি স্ট্রিম আলাদা আলাদা ফিজিক্যাল ক্যামেরা থেকে প্রাপ্ত এবং শর্ত থাকে যে উক্ত আকার ও ফরম্যাট ফিজিক্যাল ক্যামেরাগুলো দ্বারা সমর্থিত।

  • যদি লজিক্যাল ক্যামেরাটি RAW সক্ষমতার বিজ্ঞাপন না দেয়, কিন্তু অন্তর্নিহিত ফিজিক্যাল ক্যামেরাগুলো তা দেয়, তাহলে প্রতিটি ফিজিক্যাল ক্যামেরা থেকে একটি করে দুটি RAW স্ট্রিম যোগ করা হয়। এটি সাধারণত ঘটে যখন ফিজিক্যাল ক্যামেরাগুলোর সেন্সরের আকার ভিন্ন হয়।

  • একই আকার ও ফরম্যাটের লজিক্যাল স্ট্রিমের পরিবর্তে ফিজিক্যাল স্ট্রিম ব্যবহার করা। যখন ফিজিক্যাল এবং লজিক্যাল স্ট্রিমের সর্বনিম্ন ফ্রেমের সময়কাল একই হয়, তখন এটি ক্যাপচারের ফ্রেম রেট কমিয়ে দেবে না।

কর্মক্ষমতা এবং শক্তি বিবেচনা

  • পারফরম্যান্স:

    • রিসোর্স সীমাবদ্ধতার কারণে ফিজিক্যাল স্ট্রিম কনফিগার ও স্ট্রিমিং করার ফলে লজিক্যাল ক্যামেরার ক্যাপচার রেট কমে যেতে পারে।
    • ক্যামেরার ভৌত সেটিংস প্রয়োগ করলে ক্যাপচারের গতি কমে যেতে পারে, যদি ক্যামেরা দুটিকে ভিন্ন ভিন্ন ফ্রেম রেটে সেট করা হয়।
  • ক্ষমতা:

    • ডিফল্ট ক্ষেত্রেও HAL-এর পাওয়ার অপটিমাইজেশন কাজ করতে থাকে।
    • ফিজিক্যাল স্ট্রিম কনফিগার করা বা অনুরোধ করার ফলে HAL-এর অভ্যন্তরীণ পাওয়ার অপটিমাইজেশন ব্যাহত হতে পারে এবং এর ফলে অতিরিক্ত বিদ্যুৎ খরচ হতে পারে।

কাস্টমাইজেশন

আপনি নিম্নলিখিত উপায়ে আপনার ডিভাইস বাস্তবায়ন কাস্টমাইজ করতে পারেন।

  • লজিক্যাল ক্যামেরা ডিভাইসের ফিউজড আউটপুট সম্পূর্ণরূপে HAL ইমপ্লিমেন্টেশনের উপর নির্ভর করে। ফিজিক্যাল ক্যামেরাগুলো থেকে কীভাবে ফিউজড লজিক্যাল স্ট্রিমগুলো তৈরি করা হবে, সেই সিদ্ধান্তটি অ্যাপ এবং অ্যান্ড্রয়েড ক্যামেরা ফ্রেমওয়ার্কের কাছে স্বচ্ছ থাকে।
  • স্বতন্ত্র ভৌত অনুরোধ এবং ফলাফল ঐচ্ছিকভাবে সমর্থন করা যেতে পারে। এই ধরনের অনুরোধে উপলব্ধ প্যারামিটারগুলির সেটও নির্দিষ্ট HAL বাস্তবায়নের উপর সম্পূর্ণরূপে নির্ভরশীল।
  • অ্যান্ড্রয়েড ১০ থেকে, HAL getCameraIdList এ কিছু বা সমস্ত `PHYSICAL_ID` প্রচার না করার সিদ্ধান্ত নিয়ে কোনো অ্যাপ দ্বারা সরাসরি খোলা যায় এমন ক্যামেরার সংখ্যা কমাতে পারে। সেক্ষেত্রে getPhysicalCameraCharacteristics কল করলে অবশ্যই ফিজিক্যাল ক্যামেরার বৈশিষ্ট্যগুলো ফেরত দিতে হবে।

বৈধতা

অন্যান্য সাধারণ ক্যামেরার মতোই লজিক্যাল মাল্টি-ক্যামেরা ডিভাইসগুলোকেও ক্যামেরা CTS পরীক্ষায় উত্তীর্ণ হতে হবে। এই ধরনের ডিভাইসকে লক্ষ্য করে তৈরি টেস্ট কেসগুলো LogicalCameraDeviceTest মডিউলে পাওয়া যাবে।

এই তিনটি ITS পরীক্ষা মাল্টি-ক্যামেরা সিস্টেমকে লক্ষ্য করে ছবির সঠিক ফিউজিং সহজতর করে:

সিন ১ এবং সিন ৪ টেস্টগুলো ITS-in-a-box টেস্ট রিগ দিয়ে চালানো হয়। test_multi_camera_match টেস্টটি নিশ্চিত করে যে, দুটি ক্যামেরাই চালু থাকা অবস্থায় ছবিগুলোর কেন্দ্রের উজ্জ্বলতা মিলে যায়। test_multi_camera_alignment টেস্টটি নিশ্চিত করে যে ক্যামেরার ব্যবধান, অভিমুখ এবং বিকৃতির প্যারামিটারগুলো সঠিকভাবে লোড হয়েছে। যদি মাল্টি-ক্যামেরা সিস্টেমে একটি ওয়াইড FoV ক্যামেরা (>90°) থাকে, তাহলে ITS বক্সের rev2 সংস্করণটি প্রয়োজন হবে।

Sensor_fusion হলো একটি দ্বিতীয় টেস্ট রিগ যা ফোনের বারবার ও পূর্বনির্ধারিত নড়াচড়া সক্ষম করে এবং নিশ্চিত করে যে জাইরোস্কোপ ও ইমেজ সেন্সরের টাইমস্ট্যাম্পগুলো মিলে যাচ্ছে এবং একাধিক ক্যামেরার ফ্রেমগুলো সিঙ্কে রয়েছে।

সমস্ত বক্স AcuSpec, Inc. ( www.acuspecinc.com , fred@acuspecinc.com) এবং MYWAY Manufacturing ( www.myway.tw , sales@myway.tw) থেকে পাওয়া যায়। এছাড়াও, rev1 ITS বক্সটি West-Mark ( www.west-mark.com , dgoodman@west-mark.com) থেকে কেনা যাবে।

সর্বোত্তম অনুশীলন

অ্যাপের সামঞ্জস্যতা বজায় রেখে মাল্টি-ক্যামেরার সুবিধাগুলোর পূর্ণ সদ্ব্যবহার করতে, একটি লজিক্যাল মাল্টি-ক্যামেরা ডিভাইস বাস্তবায়নের সময় এই সর্বোত্তম পদ্ধতিগুলো অনুসরণ করুন:

  • (অ্যান্ড্রয়েড ১০ বা তার উচ্চতর সংস্করণ) getCameraIdList থেকে ফিজিক্যাল সাব-ক্যামেরাগুলো লুকান। এর ফলে অ্যাপ দ্বারা সরাসরি খোলা যায় এমন ক্যামেরার সংখ্যা কমে যায়, এবং অ্যাপগুলোর জন্য জটিল ক্যামেরা নির্বাচন লজিকের প্রয়োজন হয় না।
  • (অ্যান্ড্রয়েড ১১ বা উচ্চতর) অপটিক্যাল জুম সমর্থনকারী একটি লজিক্যাল মাল্টি-ক্যামেরা ডিভাইসের জন্য, ANDROID_CONTROL_ZOOM_RATIO API প্রয়োগ করুন, এবং শুধুমাত্র অ্যাস্পেক্ট রেশিও ক্রপিংয়ের জন্য ANDROID_SCALER_CROP_REGION ব্যবহার করুন। ANDROID_CONTROL_ZOOM_RATIO ডিভাইসটিকে জুম আউট করতে এবং আরও ভালো নির্ভুলতা বজায় রাখতে সক্ষম করে। এই ক্ষেত্রে, HAL-কে অবশ্যই ANDROID_SCALER_CROP_REGION , ANDROID_CONTROL_AE_REGIONS , ANDROID_CONTROL_AWB_REGIONS , ANDROID_CONTROL_AF_REGIONS , ANDROID_STATISTICS_FACE_RECTANGLES , এবং ANDROID_STATISTICS_FACE_LANDMARKS এর কোঅর্ডিনেট সিস্টেম অ্যাডজাস্ট করতে হবে, যাতে জুম-পরবর্তী ফিল্ড অফ ভিউকে সেন্সর অ্যাক্টিভ অ্যারে হিসাবে গণ্য করা যায়। ANDROID_SCALER_CROP_REGION এবং ANDROID_CONTROL_ZOOM_RATIO কীভাবে একত্রে কাজ করে, সে সম্পর্কে আরও তথ্যের জন্য camera3_crop_reprocess#cropping দেখুন।
  • যেসব মাল্টি-ক্যামেরা ডিভাইসের ফিজিক্যাল ক্যামেরাগুলোর সক্ষমতা ভিন্ন, সেগুলোর ক্ষেত্রে নিশ্চিত করুন যে ডিভাইসটি কোনো কন্ট্রোলের জন্য একটি নির্দিষ্ট ভ্যালু বা রেঞ্জের সাপোর্ট তখনই প্রচার করে, যখন সম্পূর্ণ জুম রেঞ্জটি সেই ভ্যালু বা রেঞ্জকে সাপোর্ট করে। উদাহরণস্বরূপ, যদি লজিক্যাল ক্যামেরাটি একটি আলট্রাওয়াইড, একটি ওয়াইড এবং একটি টেলিফটো ক্যামেরা দিয়ে গঠিত হয়, তাহলে নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করুন:
    • যদি ফিজিক্যাল ক্যামেরাগুলোর অ্যাক্টিভ অ্যারে সাইজ ভিন্ন হয়, ANDROID_STATISTICS_FACE_LANDMARKS ক্যামেরা HAL-কে অবশ্যই ANDROID_SCALER_CROP_REGION , ANDROID_CONTROL_AE_REGIONS , ANDROID_CONTROL_AWB_REGIONS , ANDROID_CONTROL_AF_REGIONS, ANDROID_CONTROL_AF_REGIONS , এবং ANDROID_STATISTICS_FACE_RECTANGLES এর জন্য ফিজিক্যাল ক্যামেরাগুলোর অ্যাক্টিভ অ্যারে থেকে লজিক্যাল ক্যামেরা অ্যাক্টিভ অ্যারেতে ম্যাপিং করতে হবে, যাতে অ্যাপের দৃষ্টিকোণ থেকে কোঅর্ডিনেট সিস্টেমটি লজিক্যাল ক্যামেরার অ্যাক্টিভ অ্যারে সাইজ হয়।
    • যদি ওয়াইড এবং টেলিফোটো ক্যামেরা অটোফোকাস সমর্থন করে, কিন্তু আল্ট্রাওয়াইড ক্যামেরাটি ফিক্সড ফোকাস হয়, তবে নিশ্চিত করুন যে লজিক্যাল ক্যামেরাটি অটোফোকাস সমর্থনের বিজ্ঞাপন দিচ্ছে। HAL-কে অবশ্যই আল্ট্রাওয়াইড ক্যামেরার জন্য একটি অটোফোকাস স্টেট মেশিন সিমুলেট করতে হবে, যাতে অ্যাপটি যখন আল্ট্রাওয়াইড লেন্সে জুম আউট করে, তখন অন্তর্নিহিত ফিজিক্যাল ক্যামেরাটি যে ফিক্সড ফোকাস, সেই বিষয়টি অ্যাপের কাছে অদৃশ্য থাকে এবং সমর্থিত AF মোডগুলির জন্য অটোফোকাস স্টেট মেশিনগুলি প্রত্যাশিতভাবে কাজ করে।
    • যদি ওয়াইড এবং টেলিফটো ক্যামেরা 4K @ 60 fps সাপোর্ট করে, এবং আল্ট্রাওয়াইড ক্যামেরা শুধুমাত্র 4K @ 30 fps বা 1080p @ 60 fps সাপোর্ট করে, কিন্তু 4K @ 60 fps সাপোর্ট না করে, তাহলে নিশ্চিত করুন যে লজিক্যাল ক্যামেরাটি তার সাপোর্টেড স্ট্রিম কনফিগারেশনে 4K @ 60 fps অ্যাডভার্টাইজ করছে না। এটি লজিক্যাল ক্যামেরার সক্ষমতার অখণ্ডতা নিশ্চিত করে, যার ফলে ANDROID_CONTROL_ZOOM_RATIO এর মান 1-এর কম হলে অ্যাপটি 4K @ 60 fps অর্জন করতে না পারার সমস্যায় পড়বে না।
  • অ্যান্ড্রয়েড ১০ এবং এর পরবর্তী সংস্করণগুলোতে, ফিজিক্যাল স্ট্রিম অন্তর্ভুক্ত স্ট্রিম কম্বিনেশন সমর্থন করার জন্য লজিক্যাল মাল্টি-ক্যামেরার প্রয়োজন হয় না। যদি HAL ফিজিক্যাল স্ট্রিমসহ কোনো কম্বিনেশন সমর্থন করে:
    • (অ্যান্ড্রয়েড ১১ বা উচ্চতর সংস্করণ) স্টেরিও থেকে ডেপথ এবং মোশন ট্র্যাকিং-এর মতো ব্যবহারের ক্ষেত্রগুলো আরও ভালোভাবে সামলানোর জন্য, ফিজিক্যাল স্ট্রিম আউটপুটগুলোর ফিল্ড অফ ভিউ হার্ডওয়্যারের মাধ্যমে যতটা সম্ভব বড় করুন। তবে, যদি একটি ফিজিক্যাল স্ট্রিম এবং একটি লজিক্যাল স্ট্রিম একই ফিজিক্যাল ক্যামেরা থেকে উৎপন্ন হয়, তাহলে হার্ডওয়্যারের সীমাবদ্ধতার কারণে ফিজিক্যাল স্ট্রিমের ফিল্ড অফ ভিউ লজিক্যাল স্ট্রিমের ফিল্ড অফ ভিউ-এর সমান হতে বাধ্য হতে পারে।
    • একাধিক ফিজিক্যাল স্ট্রিমের কারণে সৃষ্ট মেমোরির চাপ মোকাবেলা করার জন্য, নিশ্চিত করুন যে কোনো ফিজিক্যাল স্ট্রিম কিছু সময়ের জন্য নিষ্ক্রিয় থাকবে বলে আশা করা হলে, অ্যাপগুলো যেন discardFreeBuffers ব্যবহার করে ফ্রি বাফারগুলো (যে বাফারগুলো কনজিউমার দ্বারা রিলিজ করা হয়েছে, কিন্তু প্রডিউসার দ্বারা এখনো ডিকিউ করা হয়নি) ডিঅ্যালোকেট করে।
    • যদি বিভিন্ন ফিজিক্যাল ক্যামেরা থেকে আসা ফিজিক্যাল স্ট্রিমগুলো সাধারণত একই রিকোয়েস্টের সাথে সংযুক্ত না থাকে, তাহলে নিশ্চিত করুন যেন অ্যাপগুলো surface group ব্যবহার করে, যাতে একটি বাফার কিউ দুটি অ্যাপ-ফেসিং সারফেসকে ব্যাক করতে ব্যবহৃত হয় এবং মেমরি খরচ কমে।