HAL সাবসিস্টেম

অনুরোধ

অ্যাপ ফ্রেমওয়ার্কটি ক্যামেরা সাবসিস্টেমের কাছে ধারণকৃত ফলাফলের জন্য অনুরোধ পাঠায়। একটি অনুরোধ এক সেট ফলাফলের জন্য ব্যবহৃত হয়। একটি অনুরোধ সেই ফলাফলগুলো ধারণ ও প্রক্রিয়াকরণ সম্পর্কিত সমস্ত কনফিগারেশন তথ্য ধারণ করে। এর মধ্যে রয়েছে রেজোলিউশন ও পিক্সেল ফরম্যাট; ম্যানুয়াল সেন্সর, লেন্স ও ফ্ল্যাশ নিয়ন্ত্রণ; 3A অপারেটিং মোড; RAW থেকে YUV প্রক্রিয়াকরণ নিয়ন্ত্রণ; এবং পরিসংখ্যান তৈরি করার মতো বিষয়গুলো। এটি ফলাফলের আউটপুট এবং প্রক্রিয়াকরণের উপর অনেক বেশি নিয়ন্ত্রণ প্রদান করে। একই সাথে একাধিক অনুরোধ চালু থাকতে পারে এবং অনুরোধ জমা দেওয়া একটি নন-ব্লকিং প্রক্রিয়া। আর অনুরোধগুলো সবসময় প্রাপ্তির ক্রমানুসারেই প্রক্রিয়াকরণ করা হয়।

ক্যামেরা অনুরোধ মডেল

চিত্র ১. ক্যামেরা মডেল

এইচএএল এবং ক্যামেরা সাবসিস্টেম

ক্যামেরা সাবসিস্টেমে ক্যামেরা পাইপলাইনের উপাদান, যেমন 3A অ্যালগরিদম এবং প্রসেসিং কন্ট্রোলের ইমপ্লিমেন্টেশন অন্তর্ভুক্ত থাকে। ক্যামেরা HAL আপনাকে এই উপাদানগুলোর নিজস্ব সংস্করণ ইমপ্লিমেন্ট করার জন্য ইন্টারফেস সরবরাহ করে। একাধিক ডিভাইস নির্মাতা এবং ইমেজ সিগন্যাল প্রসেসর (ISP, বা ক্যামেরা সেন্সর) বিক্রেতাদের মধ্যে ক্রস-প্ল্যাটফর্ম সামঞ্জস্যতা বজায় রাখার জন্য, ক্যামেরা পাইপলাইন মডেলটি ভার্চুয়াল এবং কোনো বাস্তব ISP-এর সাথে সরাসরি সঙ্গতিপূর্ণ নয়। তবে, এটি বাস্তব প্রসেসিং পাইপলাইনের সাথে যথেষ্ট সাদৃশ্যপূর্ণ, যাতে আপনি এটিকে আপনার হার্ডওয়্যারে দক্ষতার সাথে ম্যাপ করতে পারেন। এছাড়াও, এটি যথেষ্ট অ্যাবস্ট্রাক্ট হওয়ায় গুণমান, দক্ষতা বা ক্রস-ডিভাইস সামঞ্জস্যতার সাথে আপোস না করেই একাধিক ভিন্ন অ্যালগরিদম এবং অপারেশন অর্ডার ব্যবহারের সুযোগ দেয়।

ক্যামেরা পাইপলাইন এমন ট্রিগারও সমর্থন করে, যা অ্যাপ ফ্রেমওয়ার্ক অটো-ফোকাসের মতো বিষয়গুলো চালু করার জন্য শুরু করতে পারে। এটি অ্যাপ ফ্রেমওয়ার্কে নোটিফিকেশনও পাঠায়, যা অটো-ফোকাস লক বা ত্রুটির মতো ঘটনা সম্পর্কে অ্যাপগুলোকে অবহিত করে।

ক্যামেরা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার

চিত্র ২. ক্যামেরা পাইপলাইন

অনুগ্রহ করে মনে রাখবেন, উপরের ডায়াগ্রামে দেখানো কিছু ইমেজ প্রসেসিং ব্লক প্রাথমিক রিলিজে ভালোভাবে সংজ্ঞায়িত নয়। ক্যামেরা পাইপলাইনটি নিম্নলিখিত অনুমানগুলো করে থাকে:

  • ISP-এর অভ্যন্তরে RAW Bayer আউটপুটের কোনো প্রক্রিয়াকরণ হয় না।
  • কাঁচা সেন্সর ডেটার উপর ভিত্তি করে পরিসংখ্যান তৈরি করা হয়।
  • কাঁচা সেন্সর ডেটাকে YUV-তে রূপান্তরকারী বিভিন্ন প্রসেসিং ব্লকগুলো একটি যথেচ্ছ ক্রমে থাকে।
  • একাধিক স্কেল এবং ক্রপ ইউনিট দেখানো হলেও, সমস্ত স্কেলার ইউনিট আউটপুট অঞ্চল নিয়ন্ত্রণ (ডিজিটাল জুম) শেয়ার করে। তবে, প্রতিটি ইউনিটের আউটপুট রেজোলিউশন এবং পিক্সেল ফরম্যাট ভিন্ন হতে পারে।

এপিআই ব্যবহারের সারসংক্ষেপ
এটি অ্যান্ড্রয়েড ক্যামেরা এপিআই ব্যবহারের ধাপগুলোর একটি সংক্ষিপ্ত সারসংক্ষেপ। এপিআই কল সহ এই ধাপগুলোর বিস্তারিত বিবরণের জন্য ‘স্টার্টআপ এবং প্রত্যাশিত কার্যপ্রণালী’ অংশটি দেখুন।

  1. ক্যামেরা ডিভাইসগুলো শনাক্ত করুন এবং গণনা করুন।
  2. ডিভাইসটি খুলুন এবং লিসেনারগুলো সংযুক্ত করুন।
  3. নির্দিষ্ট ব্যবহারের ক্ষেত্র অনুযায়ী আউটপুট কনফিগার করুন (যেমন স্থিরচিত্র ধারণ, রেকর্ডিং, ইত্যাদি)।
  4. নির্দিষ্ট ব্যবহারের ক্ষেত্রের জন্য অনুরোধ তৈরি করুন।
  5. ক্যাপচার/পুনরাবৃত্তি অনুরোধ এবং বার্স্ট।
  6. ফলাফলের মেটাডেটা এবং ছবির ডেটা গ্রহণ করুন।
  7. ব্যবহারের ক্ষেত্র পরিবর্তন করার সময়, ধাপ ৩-এ ফিরে যান।

এইচএএল অপারেশন সারাংশ

  • ক্যাপচারের জন্য অ্যাসিঙ্ক্রোনাস অনুরোধগুলো ফ্রেমওয়ার্ক থেকে আসে।
  • HAL ডিভাইসকে অবশ্যই অনুরোধগুলো ক্রমানুসারে প্রক্রিয়া করতে হবে। এবং প্রতিটি অনুরোধের জন্য, আউটপুট ফলাফলের মেটাডেটা এবং এক বা একাধিক আউটপুট ইমেজ বাফার তৈরি করতে হবে।
  • অনুরোধ এবং ফলাফলের ক্ষেত্রে, এবং পরবর্তী অনুরোধ দ্বারা উল্লেখিত স্ট্রিমগুলির ক্ষেত্রে, 'ফার্স্ট-ইন, ফার্স্ট-আউট' নীতি প্রযোজ্য।
  • একটি নির্দিষ্ট অনুরোধের সমস্ত আউটপুটের টাইমস্ট্যাম্প অবশ্যই অভিন্ন হতে হবে, যাতে ফ্রেমওয়ার্ক প্রয়োজনে সেগুলোকে একসাথে মেলাতে পারে।
  • 3A রুটিনগুলো ছাড়া সমস্ত ক্যাপচার কনফিগারেশন ও স্টেট রিকোয়েস্ট এবং রেজাল্টের মধ্যে এনক্যাপসুলেট করা থাকে।
ক্যামেরা HAL ওভারভিউ

চিত্র ৩. ক্যামেরা এইচএএল-এর সার্বিক চিত্র

স্টার্টআপ এবং প্রত্যাশিত অপারেশন ক্রম

এই বিভাগে ক্যামেরা এপিআই ব্যবহারের জন্য প্রয়োজনীয় ধাপগুলোর বিস্তারিত ব্যাখ্যা রয়েছে। HIDL ইন্টারফেসের সংজ্ঞার জন্য অনুগ্রহ করে platform/hardware/interfaces/camera/ দেখুন।

ক্যামেরা ডিভাইসগুলি গণনা করুন, খুলুন এবং একটি সক্রিয় সেশন তৈরি করুন।

  1. প্রারম্ভিকীকরণের পরে, ফ্রেমওয়ার্কটি ICameraProvider ইন্টারফেস বাস্তবায়নকারী যেকোনো উপস্থিত ক্যামেরা প্রোভাইডারের জন্য অপেক্ষা করতে শুরু করে। যদি এই ধরনের প্রোভাইডার বা প্রোভাইডারগুলো উপস্থিত থাকে, তবে ফ্রেমওয়ার্কটি একটি সংযোগ স্থাপন করার চেষ্টা করবে।
  2. ফ্রেমওয়ার্কটি ICameraProvider::getCameraIdList() এর মাধ্যমে ক্যামেরা ডিভাইসগুলোকে তালিকাভুক্ত করে।
  3. ফ্রেমওয়ার্কটি সংশ্লিষ্ট ICameraProvider::getCameraDeviceInterface_VX_X() কল করার মাধ্যমে একটি নতুন ICameraDevice ইনস্ট্যানশিয়েট করে।
  4. ফ্রেমওয়ার্কটি একটি নতুন সক্রিয় ক্যাপচার সেশন ICameraDeviceSession তৈরি করার জন্য ICameraDevice::open() কল করে।

একটি সক্রিয় ক্যামেরা সেশন ব্যবহার করুন

  1. ফ্রেমওয়ার্কটি HAL ডিভাইসের ইনপুট/আউটপুট স্ট্রিমগুলির একটি তালিকা সহ ICameraDeviceSession::configureStreams() কল করে।
  2. ফ্রেমওয়ার্কটি ICameraDeviceSession::constructDefaultRequestSettings() কল করার মাধ্যমে কিছু ব্যবহারের ক্ষেত্রে ডিফল্ট সেটিংসের অনুরোধ করে। ICameraDevice::open দ্বারা ICameraDeviceSession তৈরি হওয়ার পর যেকোনো সময়ে এটি ঘটতে পারে।
  3. ফ্রেমওয়ার্কটি ডিফল্ট সেটিংসের সেটগুলোর একটির উপর ভিত্তি করে এবং ফ্রেমওয়ার্ক দ্বারা পূর্বে নিবন্ধিত অন্তত একটি আউটপুট স্ট্রিম সহ প্রথম ক্যাপচার অনুরোধটি তৈরি করে HAL-এ পাঠায়। এটি ICameraDeviceSession::processCaptureRequest() এর মাধ্যমে HAL-এ পাঠানো হয়। পরবর্তী অনুরোধ পাঠানোর জন্য প্রস্তুত না হওয়া পর্যন্ত HAL-কে অবশ্যই এই কলের রিটার্ন ব্লক করে রাখতে হবে।
  4. ফ্রেমওয়ার্কটি অনুরোধ জমা দিতে থাকে এবং প্রয়োজন অনুযায়ী অন্যান্য ব্যবহারের জন্য ডিফল্ট সেটিংস বাফার পেতে ICameraDeviceSession::constructDefaultRequestSettings() কল করে।
  5. যখন কোনো অনুরোধের ক্যাপচার শুরু হয় (সেন্সর ক্যাপচারের জন্য এক্সপোজ করা শুরু করে), তখন HAL, SHUTTER মেসেজ সহ ICameraDeviceCallback::notify() ফাংশনটিকে কল করে, যার মধ্যে ফ্রেম নম্বর এবং এক্সপোজার শুরুর টাইমস্ট্যাম্প অন্তর্ভুক্ত থাকে। এই notify কলব্যাকটি কোনো অনুরোধের জন্য প্রথম processCaptureResult() কলের আগে ঘটার প্রয়োজন নেই, কিন্তু সেই ক্যাপচারের জন্য notify() কল না হওয়া পর্যন্ত কোনো অ্যাপে ক্যাপচারের ফলাফল সরবরাহ করা হয় না।
  6. কিছু পাইপলাইন বিলম্বের পর, HAL ডিভাইসটি ICameraDeviceCallback::processCaptureResult() ব্যবহার করে ফ্রেমওয়ার্ককে সম্পন্ন হওয়া ক্যাপচারগুলো ফেরত পাঠাতে শুরু করে। অনুরোধগুলো যে ক্রমে জমা দেওয়া হয়েছিল, ঠিক সেই ক্রমেই এগুলো ফেরত পাঠানো হয়। ক্যামেরা HAL ডিভাইসের পাইপলাইন ডেপথের উপর নির্ভর করে, একই সময়ে একাধিক অনুরোধ সক্রিয় থাকতে পারে।

কিছুক্ষণ পর নিম্নলিখিত ঘটনাগুলোর মধ্যে একটি ঘটবে:

  • ফ্রেমওয়ার্কটি নতুন অনুরোধ জমা দেওয়া বন্ধ করে দিতে পারে, বিদ্যমান ক্যাপচারগুলো সম্পূর্ণ হওয়ার জন্য অপেক্ষা করতে পারে (সমস্ত বাফার পূর্ণ হওয়া এবং সমস্ত ফলাফল ফেরত আসা পর্যন্ত), এবং তারপর আবার ICameraDeviceSession::configureStreams() কল করতে পারে। এটি নতুন এক সেট ইনপুট/আউটপুট স্ট্রিমের জন্য ক্যামেরা হার্ডওয়্যার এবং পাইপলাইনকে রিসেট করে। পূর্ববর্তী কনফিগারেশন থেকে কিছু স্ট্রিম পুনরায় ব্যবহার করা হতে পারে। এরপর, যদি অন্তত একটি নিবন্ধিত আউটপুট স্ট্রিম অবশিষ্ট থাকে, তাহলে ফ্রেমওয়ার্কটি HAL-এ পাঠানো প্রথম ক্যাপচার অনুরোধ থেকে কাজ চালিয়ে যায়। (অন্যথায়, প্রথমে ICameraDeviceSession::configureStreams() কল করা আবশ্যক।)
  • ফ্রেমওয়ার্কটি ক্যামেরা সেশন শেষ করার জন্য ICameraDeviceSession::close() কল করতে পারে। ফ্রেমওয়ার্ক থেকে অন্য কোনো কল সক্রিয় না থাকলে এটি যেকোনো সময় কল করা যেতে পারে, যদিও সমস্ত ইন-ফ্লাইট ক্যাপচার সম্পূর্ণ না হওয়া পর্যন্ত (সমস্ত ফলাফল ফেরত আসা, সমস্ত বাফার পূর্ণ হওয়া পর্যন্ত) কলটি ব্লক করে রাখতে পারে। close() কলটি রিটার্ন করার পর, HAL থেকে ICameraDeviceCallback এ আর কোনো কল করার অনুমতি নেই। একবার close() কলটি শুরু হয়ে গেলে, ফ্রেমওয়ার্কটি অন্য কোনো HAL ডিভাইস ফাংশন কল করতে পারে না।
  • কোনো ত্রুটি বা অন্য কোনো অ্যাসিঙ্ক্রোনাস ইভেন্টের ক্ষেত্রে, HAL-কে অবশ্যই উপযুক্ত ত্রুটি/ইভেন্ট বার্তা সহ ICameraDeviceCallback::notify() কল করতে হবে। একটি মারাত্মক ডিভাইস-ব্যাপী ত্রুটির নোটিফিকেশন থেকে ফিরে আসার পর, HAL-এর এমনভাবে কাজ করা উচিত যেন এর উপর close() কল করা হয়েছে। তবে, notify() কল করার আগে HAL-কে অবশ্যই সমস্ত অসমাপ্ত ক্যাপচার বাতিল বা সম্পূর্ণ করতে হবে, যাতে একবার একটি মারাত্মক ত্রুটি সহ notify() কল করা হলে, ফ্রেমওয়ার্কটি ডিভাইস থেকে আর কোনো কলব্যাক না পায়। notify() মেথডটি একটি মারাত্মক ত্রুটির বার্তা থেকে ফিরে আসার পর close() ব্যতীত অন্যান্য মেথডগুলোর -ENODEV বা NULL রিটার্ন করা উচিত।
ক্যামেরা পরিচালনার প্রবাহ

চিত্র ৪. ক্যামেরার কার্যপ্রণালী

হার্ডওয়্যার স্তর

ক্যামেরা ডিভাইসগুলো তাদের সক্ষমতার ওপর নির্ভর করে বিভিন্ন হার্ডওয়্যার স্তর বাস্তবায়ন করতে পারে। আরও তথ্যের জন্য, সমর্থিত হার্ডওয়্যার স্তর দেখুন।

অ্যাপ ক্যাপচার অনুরোধ, 3A নিয়ন্ত্রণ এবং প্রসেসিং পাইপলাইনের মধ্যে মিথস্ক্রিয়া

3A কন্ট্রোল ব্লকের সেটিংসের উপর নির্ভর করে, ক্যামেরা পাইপলাইন অ্যাপের ক্যাপচার অনুরোধের কিছু প্যারামিটার উপেক্ষা করে এবং এর পরিবর্তে 3A কন্ট্রোল রুটিন দ্বারা প্রদত্ত মানগুলি ব্যবহার করে। উদাহরণস্বরূপ, যখন অটো-এক্সপোজার সক্রিয় থাকে, তখন সেন্সরের এক্সপোজার টাইম, ফ্রেম ডিউরেশন এবং সেনসিটিভিটি প্যারামিটারগুলি প্ল্যাটফর্মের 3A অ্যালগরিদম দ্বারা নিয়ন্ত্রিত হয় এবং অ্যাপ-নির্দিষ্ট যেকোনো মান উপেক্ষা করা হয়। 3A রুটিন দ্বারা ফ্রেমের জন্য নির্বাচিত মানগুলি অবশ্যই আউটপুট মেটাডেটাতে রিপোর্ট করতে হবে। নিম্নলিখিত সারণীটি 3A কন্ট্রোল ব্লকের বিভিন্ন মোড এবং এই মোডগুলি দ্বারা নিয়ন্ত্রিত প্রোপার্টিগুলি বর্ণনা করে। এই প্রোপার্টিগুলির সংজ্ঞার জন্য platform/system/media/camera/docs/docs.html ফাইলটি দেখুন।

প্যারামিটার রাজ্য নিয়ন্ত্রিত বৈশিষ্ট্য
android.control.aeMode বন্ধ কোনোটিই না
চালু android.sensor.exposureTime android.sensor.frameDuration android.sensor.sensitivity android.lens.aperture (যদি সমর্থিত হয়) android.lens.filterDensity (যদি সমর্থিত হয়)
অন_অটো_ফ্ল্যাশ সবকিছুই চালু আছে, সাথে android.flash.firingPower, android.flash.firingTime, এবং android.flash.mode-ও।
সর্বদা ফ্ল্যাশ চালু ON_AUTO_FLASH এর মতোই
ON_AUTO_FLASH_RED_EYE ON_AUTO_FLASH এর মতোই
android.control.awbMode বন্ধ কোনোটিই না
সাদা_ভারসাম্য_* android.colorCorrection.transform. যদি android.colorCorrection.mode-এর মান FAST বা HIGH_QUALITY হয়, তবে এটি প্ল্যাটফর্ম-ভিত্তিক সমন্বয় সাধন করে।
android.control.afMode বন্ধ কোনোটিই না
ফোকাস_মোড_* android.lens.focusDistance
android.control.videoStabilization বন্ধ কোনোটিই না
চালু ভিডিও স্ট্যাবিলাইজেশন বাস্তবায়নের জন্য android.scaler.cropRegion অ্যাডজাস্ট করা যায়।
অ্যান্ড্রয়েড.কন্ট্রোল.মোড বন্ধ AE, AWB, এবং AF নিষ্ক্রিয় করা হয়েছে
অটো পৃথক AE, AWB, এবং AF সেটিংস ব্যবহার করা হয়
দৃশ্য_মোড_* উপরে তালিকাভুক্ত সমস্ত প্যারামিটার ওভাররাইড করা যাবে। স্বতন্ত্র 3A নিয়ন্ত্রণগুলি নিষ্ক্রিয় করা হয়েছে।

চিত্র ২-এর ইমেজ প্রসেসিং ব্লকের কন্ট্রোলগুলো সবই একই নীতিতে কাজ করে এবং সাধারণত প্রতিটি ব্লকের তিনটি মোড থাকে:

  • বন্ধ: এই প্রসেসিং ব্লকটি নিষ্ক্রিয় করা হয়েছে। ডিমোসাইক, কালার কারেকশন এবং টোন কার্ভ অ্যাডজাস্টমেন্ট ব্লকগুলো নিষ্ক্রিয় করা যাবে না।
  • ফাস্ট (FAST): এই মোডে, প্রসেসিং ব্লকটি অফ (OFF) মোডের তুলনায় আউটপুট ফ্রেম রেট কমিয়ে নাও দিতে পারে, তবে এই সীমাবদ্ধতার মধ্যে এটি সম্ভাব্য সর্বোত্তম মানের আউটপুট তৈরি করবে। সাধারণত, এটি প্রিভিউ বা ভিডিও রেকর্ডিং মোডে, অথবা স্থির ছবির জন্য বার্স্ট ক্যাপচারে ব্যবহৃত হয়। কিছু ডিভাইসে, এটি অফ (OFF) মোডের সমতুল্য হতে পারে (যেখানে ফ্রেম রেট না কমিয়ে কোনো প্রসেসিং করা যায় না), এবং কিছু ডিভাইসে, এটি হাই-কোয়ালিটি (HIGH_QUALITY) মোডের সমতুল্য হতে পারে (যেখানে সর্বোত্তম মান থাকা সত্ত্বেও ফ্রেম রেট কমে না)।
  • HIGH_QUALITY: এই মোডে, প্রসেসিং ব্লকটি সম্ভাব্য সর্বোত্তম মানের ফলাফল তৈরি করবে এবং প্রয়োজনে আউটপুট ফ্রেম রেট কমিয়ে দেবে। সাধারণত, এটি উচ্চ-মানের স্থিরচিত্র তোলার জন্য ব্যবহৃত হয়। কিছু ব্লকে একটি ম্যানুয়াল কন্ট্রোল থাকে যা FAST বা HIGH_QUALITY-এর পরিবর্তে ঐচ্ছিকভাবে নির্বাচন করা যেতে পারে। উদাহরণস্বরূপ, কালার কারেকশন ব্লকটি একটি কালার ট্রান্সফর্ম ম্যাট্রিক্স সমর্থন করে, অন্যদিকে টোন কার্ভ অ্যাডজাস্টমেন্ট একটি যথেচ্ছ গ্লোবাল টোন ম্যাপিং কার্ভ সমর্থন করে।

একটি ক্যামেরা সাবসিস্টেম দ্বারা সমর্থিত সর্বোচ্চ ফ্রেম রেট অনেকগুলো বিষয়ের উপর নির্ভরশীল:

  • আউটপুট ইমেজ স্ট্রিমের অনুরোধকৃত রেজোলিউশন
  • ইমেজারে বিনিং/স্কিপিং মোডের উপলব্ধতা
  • ইমেজার ইন্টারফেসের ব্যান্ডউইথ
  • বিভিন্ন আইএসপি প্রসেসিং ব্লকের ব্যান্ডউইথ

যেহেতু এই বিষয়গুলো বিভিন্ন আইএসপি এবং সেন্সরের মধ্যে ব্যাপকভাবে ভিন্ন হতে পারে, তাই ক্যামেরার এইচএএল ইন্টারফেস ব্যান্ডউইথের সীমাবদ্ধতাগুলোকে যথাসম্ভব সরল একটি মডেলে তুলে ধরার চেষ্টা করে। উপস্থাপিত মডেলটির নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • অ্যাপের অনুরোধ করা আউটপুট স্ট্রিম সাইজ অনুযায়ী সম্ভাব্য সর্বনিম্ন রেজোলিউশন আউটপুট করার জন্য ইমেজ সেন্সরটি সর্বদা কনফিগার করা থাকে। সর্বনিম্ন রেজোলিউশনকে অনুরোধ করা বৃহত্তম আউটপুট স্ট্রিম সাইজের সমান বা তার চেয়ে বড় হিসেবে সংজ্ঞায়িত করা হয়।
  • যেহেতু যেকোনো অনুরোধ বর্তমানে কনফিগার করা যেকোনো বা সমস্ত আউটপুট স্ট্রিম ব্যবহার করতে পারে, তাই সেন্সর এবং আইএসপি-কে অবশ্যই এমনভাবে কনফিগার করতে হবে যাতে এটি একটি একক ক্যাপচারকে একই সময়ে সমস্ত স্ট্রিমে স্কেল করা সমর্থন করে।
  • যেসব অনুরোধে JPEG স্ট্রিম অন্তর্ভুক্ত থাকে না, সেগুলোর ক্ষেত্রে এগুলো প্রক্রিয়াকৃত YUV স্ট্রিমের মতো কাজ করে; আর যেসব অনুরোধে এগুলোকে সরাসরি উল্লেখ করা হয়, সেখানে এগুলো JPEG স্ট্রিম হিসেবেই কাজ করে।
  • JPEG প্রসেসর ক্যামেরা পাইপলাইনের বাকি অংশের সাথে একই সময়ে চলতে পারে, কিন্তু এটি একবারে একাধিক ক্যাপচার প্রসেস করতে পারে না।