ক্যামেরা HAL3

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

ক্যামেরা 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 বাস্তবায়নে সমর্থন করে তখন আমরা এটি বলতে চাই)।