ক্যামেরা HAL

Android এর ক্যামেরা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) আপনার অন্তর্নিহিত ক্যামেরা ড্রাইভার এবং হার্ডওয়্যারের সাথে android.hardware.camera2- এর উচ্চ স্তরের ক্যামেরা ফ্রেমওয়ার্ক APIগুলিকে সংযুক্ত করে। Android 13 দিয়ে শুরু করে, ক্যামেরা HAL ইন্টারফেস ডেভেলপমেন্ট AIDL ব্যবহার করে। অ্যান্ড্রয়েড 8.0 ট্রেবল চালু করেছে, ক্যামেরা HAL API-কে HAL ইন্টারফেস বর্ণনা ভাষা (HIDL) দ্বারা সংজ্ঞায়িত একটি স্থিতিশীল ইন্টারফেসে পরিবর্তন করেছে। আপনি যদি পূর্বে অ্যান্ড্রয়েড 7.0 এবং তার নিচের জন্য একটি ক্যামেরা HAL মডিউল এবং ড্রাইভার তৈরি করে থাকেন, তাহলে ক্যামেরা পাইপলাইনে উল্লেখযোগ্য পরিবর্তনগুলি সম্পর্কে সচেতন থাকুন৷

এআইডিএল ক্যামেরা HAL

অ্যান্ড্রয়েড 13 বা উচ্চতর সংস্করণে চলমান ডিভাইসগুলির জন্য, ক্যামেরা ফ্রেমওয়ার্ক এআইডিএল ক্যামেরা HAL-এর জন্য সমর্থন অন্তর্ভুক্ত করে। ক্যামেরা ফ্রেমওয়ার্ক HIDL ক্যামেরা HALগুলিকেও সমর্থন করে, তবে Android 13 বা উচ্চতর ক্যামেরা বৈশিষ্ট্যগুলি শুধুমাত্র AIDL ক্যামেরা HAL ইন্টারফেসের মাধ্যমে উপলব্ধ। Android 13 বা উচ্চতর ডিভাইসে আপগ্রেড করা ডিভাইসগুলিতে এই ধরনের বৈশিষ্ট্যগুলি প্রয়োগ করতে, ডিভাইস নির্মাতাদের অবশ্যই তাদের HAL প্রক্রিয়া HIDL ক্যামেরা ইন্টারফেস ব্যবহার করা থেকে AIDL ক্যামেরা ইন্টারফেসে স্থানান্তর করতে হবে।

এআইডিএল-এর সুবিধা সম্পর্কে জানতে, এইচএএল-এর জন্য এআইডিএল দেখুন।

AIDL ক্যামেরা HAL প্রয়োগ করুন

একটি AIDL ক্যামেরা HAL এর রেফারেন্স বাস্তবায়নের জন্য, hardware/google/camera/common/hal/aidl_service/ দেখুন।

AIDL ক্যামেরা HAL স্পেসিফিকেশন নিম্নলিখিত অবস্থানে আছে:

AIDL-এ স্থানান্তরিত ডিভাইসগুলির জন্য, ডিভাইস নির্মাতাদের কোড কাঠামোর উপর নির্ভর করে Android SELinux নীতি (sepolicy) এবং RC ফাইলগুলি সংশোধন করতে হতে পারে।

AIDL ক্যামেরা HAL যাচাই করুন

আপনার AIDL ক্যামেরা HAL বাস্তবায়ন পরীক্ষা করতে, নিশ্চিত করুন যে ডিভাইসটি সমস্ত CTS এবং VTS পরীক্ষায় উত্তীর্ণ হয়েছে। Android 13 AIDL VTS পরীক্ষা, VtsAidlHalCameraProvider_TargetTest.cpp প্রবর্তন করেছে।

ক্যামেরা HAL3 বৈশিষ্ট্য

অ্যান্ড্রয়েড ক্যামেরা এপিআই রিডিজাইন করার লক্ষ্য হল এপিআইকে আরও দক্ষ এবং রক্ষণাবেক্ষণযোগ্য করার জন্য এপিআইকে পুনর্গঠন করার সময় অ্যান্ড্রয়েড ডিভাইসে ক্যামেরা সাবসিস্টেম নিয়ন্ত্রণ করার জন্য অ্যাপের ক্ষমতাকে উল্লেখযোগ্যভাবে বৃদ্ধি করা। অতিরিক্ত নিয়ন্ত্রণ Android ডিভাইসে উচ্চ-মানের ক্যামেরা অ্যাপ তৈরি করা সহজ করে যা একাধিক পণ্য জুড়ে নির্ভরযোগ্যভাবে কাজ করতে পারে যখনই গুণমান এবং কর্মক্ষমতা সর্বাধিক করার জন্য ডিভাইস-নির্দিষ্ট অ্যালগরিদম ব্যবহার করে।

ক্যামেরা সাবসিস্টেমের সংস্করণ 3 অপারেশন মোডগুলিকে একটি একক ইউনিফাইড ভিউতে গঠন করে, যা পূর্ববর্তী যেকোন মোড এবং বার্স্ট মোডের মতো আরও কয়েকটি মোড প্রয়োগ করতে ব্যবহার করা যেতে পারে। এর ফলে ফোকাস এবং এক্সপোজারের জন্য আরও ভাল ব্যবহারকারীর নিয়ন্ত্রণ এবং আরও পোস্ট-প্রসেসিং, যেমন শব্দ হ্রাস, বৈসাদৃশ্য এবং তীক্ষ্ণকরণ। আরও, এই সরলীকৃত দৃশ্যটি অ্যাপ্লিকেশন বিকাশকারীদের জন্য ক্যামেরার বিভিন্ন ফাংশন ব্যবহার করা সহজ করে তোলে।

API ক্যামেরা সাবসিস্টেমকে একটি পাইপলাইন হিসাবে মডেল করে যা ফ্রেম ক্যাপচারের জন্য আগত অনুরোধগুলিকে 1:1 ভিত্তিতে ফ্রেমে রূপান্তর করে। অনুরোধগুলি একটি ফ্রেমের ক্যাপচার এবং প্রক্রিয়াকরণ সম্পর্কে সমস্ত কনফিগারেশন তথ্যকে এনক্যাপসুলেট করে৷ এর মধ্যে রয়েছে রেজোলিউশন এবং পিক্সেল বিন্যাস; ম্যানুয়াল সেন্সর, লেন্স এবং ফ্ল্যাশ নিয়ন্ত্রণ; 3A অপারেটিং মোড; RAW-> YUV প্রক্রিয়াকরণ নিয়ন্ত্রণ; পরিসংখ্যান প্রজন্ম; এবং তাই

সহজ শর্তে, অ্যাপ্লিকেশন ফ্রেমওয়ার্ক ক্যামেরা সাবসিস্টেম থেকে একটি ফ্রেম অনুরোধ করে এবং ক্যামেরা সাবসিস্টেম একটি আউটপুট স্ট্রীমে ফলাফল প্রদান করে। এছাড়াও, মেটাডেটা যাতে রঙের স্থান এবং লেন্সের ছায়ার মতো তথ্য থাকে ফলাফলের প্রতিটি সেটের জন্য তৈরি করা হয়। আপনি ক্যামেরা সংস্করণ 3 কে ক্যামেরা সংস্করণ 1 এর ওয়ান-ওয়ে স্ট্রিম থেকে পাইপলাইন হিসাবে ভাবতে পারেন। এটি প্রতিটি ক্যাপচার অনুরোধকে সেন্সর দ্বারা ক্যাপচার করা একটি ছবিতে রূপান্তরিত করে, যা এতে প্রক্রিয়া করা হয়:

  • ক্যাপচার সম্পর্কে মেটাডেটা সহ একটি ফলাফল বস্তু।
  • ছবি ডেটার এক থেকে N বাফার, প্রতিটি তার নিজস্ব গন্তব্য পৃষ্ঠে।

সম্ভাব্য আউটপুট পৃষ্ঠতলের সেটটি পূর্বে কনফিগার করা হয়েছে:

  • প্রতিটি পৃষ্ঠ একটি নির্দিষ্ট রেজোলিউশনের ইমেজ বাফারগুলির একটি স্ট্রিমের জন্য একটি গন্তব্য।
  • শুধুমাত্র অল্প সংখ্যক পৃষ্ঠকে একবারে আউটপুট হিসাবে কনফিগার করা যেতে পারে (~3)।

একটি অনুরোধে সমস্ত পছন্দসই ক্যাপচার সেটিংস এবং আউটপুট পৃষ্ঠের তালিকা রয়েছে যা এই অনুরোধের জন্য চিত্র বাফারগুলিকে পুশ করতে পারে (মোট কনফিগার করা সেটের মধ্যে)। একটি অনুরোধ এক-শট হতে পারে ( capture() সহ), অথবা এটি অনির্দিষ্টকালের জন্য পুনরাবৃত্তি হতে পারে ( setRepeatingRequest() সহ)। অনুরোধের পুনরাবৃত্তির চেয়ে ক্যাপচারের অগ্রাধিকার রয়েছে।

ক্যামেরা ডেটা মডেল

চিত্র 1. ক্যামেরা কোর অপারেশন মডেল

ক্যামেরা HAL1 ওভারভিউ

ক্যামেরা সাবসিস্টেমের সংস্করণ 1 উচ্চ-স্তরের নিয়ন্ত্রণ এবং নিম্নলিখিত তিনটি অপারেটিং মোড সহ একটি কালো বক্স হিসাবে ডিজাইন করা হয়েছিল:

  • পূর্বরূপ
  • ভিডিও রেকর্ড
  • এখনও ক্যাপচার

প্রতিটি মোডের সামান্য ভিন্ন এবং ওভারল্যাপিং ক্ষমতা আছে। এটি বার্স্ট মোডের মতো নতুন বৈশিষ্ট্যগুলি বাস্তবায়ন করা কঠিন করে তুলেছে, যা দুটি অপারেটিং মোডের মধ্যে পড়ে।

ক্যামেরা ব্লক ডায়াগ্রাম

চিত্র 2. ক্যামেরার উপাদান

অ্যান্ড্রয়েড 7.0 ক্যামেরা HAL1 সমর্থন করে চলেছে কারণ অনেক ডিভাইস এখনও এটির উপর নির্ভর করে। এছাড়াও, অ্যান্ড্রয়েড ক্যামেরা পরিষেবা HALs (1 এবং 3) উভয়ই বাস্তবায়নে সমর্থন করে, যেটি কার্যকর যখন আপনি ক্যামেরা HAL1 সহ একটি কম-সক্ষম ফ্রন্ট-ফেসিং ক্যামেরা এবং ক্যামেরা HAL3 সহ আরও উন্নত ব্যাক-ফেসিং ক্যামেরা সমর্থন করতে চান।

একটি একক ক্যামেরা HAL মডিউল রয়েছে (এর নিজস্ব সংস্করণ নম্বর সহ), যা একাধিক স্বাধীন ক্যামেরা ডিভাইসের তালিকা করে যার প্রত্যেকটির নিজস্ব সংস্করণ নম্বর রয়েছে। ক্যামেরা মডিউল 2 বা তার চেয়ে নতুন ডিভাইস 2 বা তার পরবর্তী ডিভাইসগুলিকে সমর্থন করার জন্য প্রয়োজন, এবং এই ধরনের ক্যামেরা মডিউলগুলিতে ক্যামেরা ডিভাইস সংস্করণগুলির একটি মিশ্রণ থাকতে পারে (আমরা যখন বলি যে Android উভয় HALs বাস্তবায়নকে সমর্থন করে তখন আমরা এটি বলতে চাই)৷