ক্যামেরা সংস্করণ সমর্থন

এই পৃষ্ঠাটি ক্যামেরা HALs, API এবং সংশ্লিষ্ট সামঞ্জস্য পরীক্ষা স্যুট (CTS) পরীক্ষার সংস্করণের পার্থক্যের বিবরণ দেয়। এটি অ্যান্ড্রয়েড 7.0-এ ক্যামেরা ফ্রেমওয়ার্ককে শক্ত ও সুরক্ষিত করার জন্য করা বেশ কয়েকটি স্থাপত্য পরিবর্তন, অ্যান্ড্রয়েড 8.0-এ ট্রেবল-এ স্যুইচ এবং আপডেট বিক্রেতাদের তাদের ক্যামেরা বাস্তবায়নে এই পরিবর্তনগুলিকে সমর্থন করার জন্য করতে হবে।

পরিভাষা

এই পৃষ্ঠায় নিম্নলিখিত পদগুলি ব্যবহার করা হয়েছে:

ক্যামেরা API1
android.hardware.Camera ক্লাসের মাধ্যমে উন্মুক্ত Android 4.4 এবং নিম্নতর ডিভাইসে অ্যাপ-স্তরের ক্যামেরা ফ্রেমওয়ার্ক।
ক্যামেরা API2
অ্যান্ড্রয়েড 5.0 এবং উচ্চতর ডিভাইসে অ্যাপ-লেভেল ক্যামেরা ফ্রেমওয়ার্ক, android.hardware.camera2 প্যাকেজের মাধ্যমে প্রকাশ করা হয়েছে।
ক্যামেরা HAL
SoC বিক্রেতাদের দ্বারা প্রয়োগ করা ক্যামেরা মডিউল স্তর। অ্যাপ-লেভেল পাবলিক ফ্রেমওয়ার্ক ক্যামেরা HAL-এর উপরে তৈরি করা হয়েছে।
ক্যামেরা HAL3.1
ক্যামেরা ডিভাইস HAL এর সংস্করণ অ্যান্ড্রয়েড 4.4 সহ মুক্তি পেয়েছে।
ক্যামেরা HAL3.2
ক্যামেরা ডিভাইস HAL এর সংস্করণ Android 5.0 সহ মুক্তি পেয়েছে।
ক্যামেরা API1 CTS
ক্যামেরা CTS পরীক্ষার সেট যা ক্যামেরা API1 এর উপরে চলে।
ক্যামেরা API2 CTS
ক্যামেরার CTS পরীক্ষার অতিরিক্ত সেট যা Camera API2 এর উপরে চলে।
ট্রেবল
একটি নতুন বিক্রেতা ইন্টারফেসের মাধ্যমে Android OS ফ্রেমওয়ার্ক থেকে বিক্রেতা বাস্তবায়ন (ডিভাইস-নির্দিষ্ট, সিলিকন নির্মাতাদের দ্বারা লিখিত নিম্ন-স্তরের সফ্টওয়্যার) আলাদা করে৷
এইচআইডিএল
HAL ইন্টারফেস সংজ্ঞা ভাষা ট্রেবলের সাথে প্রবর্তিত হয়েছে এবং HAL এবং এর ব্যবহারকারীদের মধ্যে ইন্টারফেস নির্দিষ্ট করতে ব্যবহৃত হয়েছে।
ভিটিএস
ট্রেবলের পাশাপাশি ভেন্ডর টেস্ট স্যুট চালু হয়েছে।

ক্যামেরা API

অ্যান্ড্রয়েডে নিম্নলিখিত ক্যামেরা APIগুলি অন্তর্ভুক্ত রয়েছে৷

ক্যামেরা API1

অ্যান্ড্রয়েড 5.0 ক্যামেরা API1 অবচয় করেছে, যেটি পর্যায়ক্রমে অব্যাহত রয়েছে কারণ নতুন প্ল্যাটফর্ম ডেভেলপমেন্ট ক্যামেরা API2 এর উপর ফোকাস করে। যাইহোক, ফেজ-আউট সময়কাল দীর্ঘ হবে, এবং অ্যান্ড্রয়েড রিলিজগুলি কিছু সময়ের জন্য ক্যামেরা API1 অ্যাপগুলিকে সমর্থন করতে থাকবে। বিশেষভাবে, এর জন্য সমর্থন অব্যাহত থাকে:

  • অ্যাপের জন্য ক্যামেরা API1 ইন্টারফেস। Camera API1-এর উপরে নির্মিত ক্যামেরা অ্যাপগুলিকে Android রিলিজ সংস্করণের নিম্ন সংস্করণে চালিত ডিভাইসগুলির মতো কাজ করা উচিত।
  • ক্যামেরা HAL সংস্করণ। ক্যামেরা HAL1.0 এর জন্য সমর্থন অন্তর্ভুক্ত।

ক্যামেরা API2

ক্যামেরা API2 ফ্রেমওয়ার্ক অ্যাপে নিম্ন-স্তরের ক্যামেরা নিয়ন্ত্রণ উন্মুক্ত করে, যার মধ্যে রয়েছে দক্ষ শূন্য-কপি বার্স্ট/স্ট্রিমিং ফ্লো এবং প্রতি-ফ্রেম নিয়ন্ত্রণ এক্সপোজার, লাভ, হোয়াইট ব্যালেন্স লাভ, রঙ রূপান্তর, ডিনোইসিং, শার্পনিং এবং আরও অনেক কিছু। বিস্তারিত জানার জন্য, Google I/O ভিডিও ওভারভিউ দেখুন।

অ্যান্ড্রয়েড 5.0 এবং উচ্চতর ক্যামেরা API2 অন্তর্ভুক্ত; যাইহোক, Android 5.0 এবং উচ্চতর সংস্করণে চালিত ডিভাইসগুলি সমস্ত ক্যামেরা API2 বৈশিষ্ট্যগুলিকে সমর্থন নাও করতে পারে৷ android.info.supportedHardwareLevel প্রপার্টি যা অ্যাপগুলি ক্যামেরা API2 ইন্টারফেসের মাধ্যমে অনুসন্ধান করতে পারে তা নিম্নোক্ত সমর্থন স্তরগুলির একটি রিপোর্ট করে:

  • লিগ্যাসি : এই ডিভাইসগুলি ক্যামেরা LEGACY ইন্টারফেসের মাধ্যমে অ্যাপগুলিতে ক্ষমতাগুলি প্রকাশ করে যা ক্যামেরা API1 ইন্টারফেসের মাধ্যমে অ্যাপগুলির সাথে এক্সপোজ করা প্রায় একই ক্ষমতা। লিগ্যাসি ফ্রেমওয়ার্ক কোড ধারণাগতভাবে ক্যামেরা API2 কলগুলিকে ক্যামেরা API1 কলে অনুবাদ করে; লিগ্যাসি ডিভাইসগুলি প্রতি-ফ্রেম নিয়ন্ত্রণের মতো ক্যামেরা API2 বৈশিষ্ট্যগুলিকে সমর্থন করে না৷
  • LIMITED : এই ডিভাইসগুলি কিছু ক্যামেরা API2 ক্ষমতা সমর্থন করে (কিন্তু সব নয়) এবং অবশ্যই ক্যামেরা HAL 3.2 বা উচ্চতর ব্যবহার করতে হবে।
  • সম্পূর্ণ : এই ডিভাইসগুলি ক্যামেরা FULL এর সমস্ত প্রধান ক্ষমতা সমর্থন করে এবং অবশ্যই ক্যামেরা HAL 3.2 বা উচ্চতর এবং Android 5.0 বা উচ্চতর ব্যবহার করতে হবে৷
  • LEVEL_3 : এই ডিভাইসগুলি অতিরিক্ত আউটপুট স্ট্রীম কনফিগারেশন সহ YUV পুনঃপ্রসেসিং এবং RAW চিত্র ক্যাপচার সমর্থন করে৷
  • EXTERNAL : এই ডিভাইসগুলি কিছু ব্যতিক্রম সহ LIMITED ডিভাইসের অনুরূপ; উদাহরণস্বরূপ, কিছু সেন্সর বা লেন্সের তথ্য রিপোর্ট করা যাবে না বা কম স্থিতিশীল ফ্রেম রেট থাকতে পারে। এই স্তরটি ইউএসবি ওয়েবক্যামের মতো বাহ্যিক ক্যামেরার জন্য ব্যবহৃত হয়।

ক্যামেরা API2 ইন্টারফেসে android.request.availableCapabilities প্রপার্টির মাধ্যমে ব্যক্তিগত ক্ষমতা প্রকাশ করা হয়। FULL ডিভাইসগুলির জন্য অন্যদের মধ্যে MANUAL_SENSOR এবং MANUAL_POST_PROCESSING ক্ষমতার প্রয়োজন৷ RAW ক্ষমতা FULL ডিভাইসের জন্যও ঐচ্ছিক। LIMITED ডিভাইসগুলি এই ক্ষমতাগুলির যেকোনও উপসেটের বিজ্ঞাপন দিতে পারে, যার মধ্যে কোনওটিই নেই৷ যাইহোক, BACKWARD_COMPATIBLE ক্ষমতা সর্বদা সংজ্ঞায়িত করা আবশ্যক।

ডিভাইসের সমর্থিত হার্ডওয়্যার স্তর, সেইসাথে নির্দিষ্ট ক্যামেরা API2 ক্ষমতাগুলি এটি সমর্থন করে, নিম্নলিখিত বৈশিষ্ট্য ফ্ল্যাগ হিসাবে উপলব্ধ রয়েছে যাতে ক্যামেরা API2 ক্যামেরা অ্যাপগুলির Google Play ফিল্টারিং মঞ্জুরি দেয়৷

  • android.hardware.camera.hardware_level.full
  • android.hardware.camera.capability.raw
  • android.hardware.camera.capability.manual_sensor
  • android.hardware.camera.capability.manual_post_processing

CTS প্রয়োজনীয়তা

অ্যান্ড্রয়েড 5.0 এবং উচ্চতর সংস্করণে চলমান ডিভাইসগুলিকে অবশ্যই ক্যামেরা API1 CTS, Camera API2 CTS, এবং CTS ভেরিফায়ার ক্যামেরা পরীক্ষায় উত্তীর্ণ হতে হবে।

যে ডিভাইসগুলিতে ক্যামেরা HAL3.2 বাস্তবায়ন বৈশিষ্ট্য নেই এবং সম্পূর্ণ ক্যামেরা API2 ইন্টারফেস সমর্থন করতে সক্ষম নয় সেগুলিকে এখনও ক্যামেরা API2 CTS পরীক্ষায় উত্তীর্ণ হতে হবে। যাইহোক, ডিভাইসটি ক্যামেরা LEGACY লেগ্যাসি মোডে চলে (যেটিতে ক্যামেরা API2 কলগুলি ধারণাগতভাবে ক্যামেরা API1 কলগুলিতে ম্যাপ করা হয়) তাই ক্যামেরা API1 এর বাইরে বৈশিষ্ট্য বা ক্ষমতা সম্পর্কিত যেকোনো ক্যামেরা API2 CTS পরীক্ষা স্বয়ংক্রিয়ভাবে এড়িয়ে যায়।

লিগ্যাসি ডিভাইসগুলিতে, ক্যামেরা API2 CTS পরীক্ষাগুলি যেগুলি চালিত হয় সেগুলি কোনও নতুন প্রয়োজনীয়তা ছাড়াই বিদ্যমান সর্বজনীন ক্যামেরা API1 ইন্টারফেস এবং ক্ষমতাগুলি ব্যবহার করে৷ যে বাগগুলি উন্মোচিত হয় (এবং যেগুলি একটি ক্যামেরা API2 CTS ব্যর্থতার কারণ হয়) সেগুলি ডিভাইসের বিদ্যমান ক্যামেরা HAL-এ ইতিমধ্যেই উপস্থিত বাগ, এবং এইভাবে বিদ্যমান ক্যামেরা API1 অ্যাপগুলি খুঁজে পাবে৷ আমরা এই প্রকৃতির অনেক বাগ আশা করি না (তবে, ক্যামেরা API2 CTS পরীক্ষায় উত্তীর্ণ হওয়ার জন্য এই ধরনের যেকোন বাগ সংশোধন করা আবশ্যক)।

VTS প্রয়োজনীয়তা

বাইন্ডারাইজড HAL বাস্তবায়ন সহ Android 8.0 এবং উচ্চতর সংস্করণে চলমান ডিভাইসগুলিকে অবশ্যই ক্যামেরা VTS পরীক্ষায় উত্তীর্ণ হতে হবে৷

ক্যামেরা ফ্রেমওয়ার্ক শক্ত করা

মিডিয়া এবং ক্যামেরা ফ্রেমওয়ার্কের নিরাপত্তা শক্ত করতে, Android 7.0 ক্যামেরা পরিষেবাকে মিডিয়া সার্ভারের বাইরে নিয়ে যায়। অ্যান্ড্রয়েড 8.0 দিয়ে শুরু করে, প্রতিটি বাইন্ডারাইজড ক্যামেরা HAL ক্যামেরা পরিষেবা থেকে আলাদা একটি প্রক্রিয়ায় চলে। ব্যবহার করা API এবং HAL সংস্করণের উপর নির্ভর করে বিক্রেতাদের ক্যামেরা HAL-এ পরিবর্তন করতে হতে পারে। নিম্নলিখিত বিভাগগুলি HAL1 এবং HAL3-এর জন্য AP1 এবং AP2-তে স্থাপত্য পরিবর্তনের পাশাপাশি সাধারণ প্রয়োজনীয়তাগুলির বিশদ বিবরণ দেয়৷

API1 এর জন্য স্থাপত্য পরিবর্তন

API1 ভিডিও রেকর্ডিং একই প্রক্রিয়ায় ক্যামেরা এবং ভিডিও এনকোডার লাইভ ধরে নিতে পারে। API1 ব্যবহার করার সময়:

  • HAL3, যেখানে ক্যামেরা পরিষেবা প্রক্রিয়াগুলির মধ্যে বাফারগুলি পাস করতে বাফারকিউ ব্যবহার করে, কোনও বিক্রেতা আপডেটের প্রয়োজন নেই।

    HAL3 এ API1 এ Android 7.0 ক্যামেরা এবং মিডিয়া স্ট্যাক

    চিত্র 1. HAL3 এ API1-এ Android 7.0 ক্যামেরা এবং মিডিয়া স্ট্যাক

  • HAL1, যা ভিডিও বাফারে মেটাডেটা পাস করা সমর্থন করে, kMetadataBufferTypeNativeHandleSource ব্যবহার করতে বিক্রেতাদের অবশ্যই HAL আপডেট করতে হবে। ( kMetadataBufferTypeCameraSource আর Android 7.0-এ সমর্থিত নয়।)

    HAL1 এ API1-এ Android 7.0 ক্যামেরা এবং মিডিয়া স্ট্যাক

    চিত্র 2. HAL1 এ API1-এ Android 7.0 ক্যামেরা এবং মিডিয়া স্ট্যাক

API2 এর জন্য স্থাপত্য পরিবর্তন

HAL1 বা HAL3-এ API2-এর জন্য, বাফারকিউ বাফারগুলি পাস করে যাতে সেই পথগুলি কাজ করতে থাকে। API2 এর জন্য Android 7.0 আর্কিটেকচার:

  • HAL1 ক্যামেরাসার্ভিস মুভ দ্বারা প্রভাবিত হয় না, এবং কোন ভেন্ডর আপডেটের প্রয়োজন নেই।
  • HAL3 প্রভাবিত, কিন্তু কোনো বিক্রেতা আপডেটের প্রয়োজন নেই:

    HAL3 এ API2 এ Android 7.0 ক্যামেরা এবং মিডিয়া স্ট্যাক

    চিত্র 3. HAL3 এ API2-এ Android 7.0 ক্যামেরা এবং মিডিয়া স্ট্যাক

অতিরিক্ত আবশ্যক

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

  • সাধারণ. IPC-এর কারণে ডিভাইসগুলির অতিরিক্ত ব্যান্ডউইথের প্রয়োজন, যা সময়-সংবেদনশীল ক্যামেরা ব্যবহারের ক্ষেত্রে যেমন উচ্চ-গতির ভিডিও রেকর্ডিংকে প্রভাবিত করতে পারে। বিক্রেতারা android.hardware.camera2.cts.PerformanceTest এবং 120/240 FPS উচ্চ-গতির ভিডিও রেকর্ডিংয়ের জন্য Google ক্যামেরা অ্যাপ চালানোর মাধ্যমে প্রকৃত প্রভাব পরিমাপ করতে পারে। নতুন প্রক্রিয়া তৈরি করার জন্য ডিভাইসগুলিরও অল্প পরিমাণে অতিরিক্ত RAM প্রয়োজন।
  • ভিডিও বাফারে মেটাডেটা পাস করুন ( শুধু HAL1 )। যদি HAL1 ভিডিও বাফারগুলিতে বাস্তব YUV ফ্রেম ডেটার পরিবর্তে মেটাডেটা সঞ্চয় করে, তবে HAL কে মেটাডেটা বাফার টাইপ হিসাবে kMetadataBufferTypeNativeHandleSource ব্যবহার করতে হবে এবং ভিডিও বাফারগুলিতে VideoNativeHandleMetadata পাস করতে হবে। ( kMetadataBufferTypeCameraSource Android 7.0-এ আর সমর্থিত নয়।) VideoNativeHandleMetadata এর সাথে, ক্যামেরা এবং মিডিয়া ফ্রেমওয়ার্কগুলি সঠিকভাবে নেটিভ হ্যান্ডেলগুলিকে সিরিয়ালাইজ এবং ডিসিরিয়ালাইজ করে প্রক্রিয়াগুলির মধ্যে ভিডিও বাফারগুলিকে পাস করতে সক্ষম হয়৷
  • বাফার হ্যান্ডেল ঠিকানা সবসময় একই বাফার সংরক্ষণ করে না ( শুধু HAL3 )। প্রতিটি ক্যাপচার অনুরোধের জন্য, HAL3 বাফার হ্যান্ডেলগুলির ঠিকানা পায়। HAL বাফার সনাক্ত করতে ঠিকানাগুলি ব্যবহার করতে পারে না কারণ HAL বাফার ফেরত দেওয়ার পরে ঠিকানাগুলি অন্য বাফার হ্যান্ডেল সংরক্ষণ করতে পারে। বাফার সনাক্ত করতে বাফার হ্যান্ডলগুলি ব্যবহার করতে আপনাকে অবশ্যই HAL আপডেট করতে হবে। উদাহরণস্বরূপ, HAL একটি বাফার হ্যান্ডেল ঠিকানা A পায়, যা বাফার হ্যান্ডেল A সংরক্ষণ করে। HAL বাফার হ্যান্ডেল A ফেরত দেওয়ার পরে, বাফার হ্যান্ডেল ঠিকানা A বাফার হ্যান্ডেল B সংরক্ষণ করতে পারে পরের বার HAL এটি গ্রহণ করে।
  • ক্যামেরা সার্ভারের জন্য SELinux নীতি আপডেট করুন। ডিভাইস-নির্দিষ্ট SELinux নীতিগুলি মিডিয়াসার্ভারকে ক্যামেরা চালানোর অনুমতি দিলে, ক্যামেরা সার্ভারকে যথাযথ অনুমতি দেওয়ার জন্য আপনাকে SELinux নীতিগুলি আপডেট করতে হবে। আমরা ক্যামেরাসার্ভারের জন্য মিডিয়াসার্ভারের SELinux নীতিগুলি প্রতিলিপি করতে নিরুৎসাহিত করি (যেহেতু মিডিয়াসার্ভার এবং ক্যামেরা সার্ভারের জন্য সাধারণত সিস্টেমে বিভিন্ন সংস্থান প্রয়োজন হয়)। ক্যামেরা সার্ভারের শুধুমাত্র ক্যামেরা কার্যকারিতা সঞ্চালনের জন্য প্রয়োজনীয় অনুমতি থাকা উচিত এবং মিডিয়া সার্ভারে ক্যামেরা-সম্পর্কিত যেকোন অপ্রয়োজনীয় অনুমতি মুছে ফেলা উচিত।
  • ক্যামেরা HAL এবং ক্যামেরা সার্ভারের মধ্যে বিচ্ছেদ। অ্যান্ড্রয়েড 8.0 এবং উচ্চতর এছাড়াও ক্যামেরা সার্ভার থেকে ভিন্ন একটি প্রক্রিয়ায় বাইন্ডারাইজড ক্যামেরা HAL আলাদা করে। IPC HIDL-সংজ্ঞায়িত ইন্টারফেসের মাধ্যমে যায়।

বৈধতা

সমস্ত ডিভাইসের জন্য যেগুলিতে একটি ক্যামেরা রয়েছে এবং Android 7.0 চালিত, Android 7.0 CTS চালিয়ে বাস্তবায়ন যাচাই করুন৷ যদিও অ্যান্ড্রয়েড 7.0-তে নতুন CTS পরীক্ষাগুলি অন্তর্ভুক্ত নেই যা ক্যামেরা পরিষেবার পরিবর্তনগুলি যাচাই করে, আপনি যদি উপরে নির্দেশিত আপডেটগুলি না করে থাকেন তবে বিদ্যমান CTS পরীক্ষাগুলি ব্যর্থ হয়৷

সমস্ত ডিভাইসের জন্য যেগুলিতে একটি ক্যামেরা রয়েছে এবং Android 8.0 এবং উচ্চতর সংস্করণ চালিত, VTS চালনা করে ভেন্ডর বাস্তবায়ন যাচাই করুন৷

ক্যামেরা HAL সংস্করণ ইতিহাস

অ্যান্ড্রয়েড ক্যামেরা এইচএএল মূল্যায়নের জন্য উপলব্ধ পরীক্ষার তালিকার জন্য, ক্যামেরা এইচএএল টেস্টিং চেকলিস্ট দেখুন।

অ্যান্ড্রয়েড 10

Android 10 নিম্নলিখিত আপডেটগুলি উপস্থাপন করে।

ক্যামেরা API

  • মাল্টি-ক্যামেরা উন্নতি যা ফিজিক্যাল ক্যামেরা আইডি লুকিয়ে আলাদাভাবে বা সংশ্লিষ্ট লজিক্যাল ক্যামেরার মাধ্যমে ব্যবহার করার অনুমতি দেয়। মাল্টি-ক্যামেরা সমর্থন দেখুন।
  • একটি নতুন সেশন তৈরি করার কার্যক্ষমতা ওভারহেড ছাড়াই একটি নির্দিষ্ট সেশন কনফিগারেশন সমর্থিত কিনা তা পরীক্ষা করার ক্ষমতা। CameraDevice দেখুন।
  • ক্লায়েন্টকে আরও শক্তি দক্ষ এবং পারফরম্যান্স করতে প্রদত্ত ব্যবহারের ক্ষেত্রে প্রস্তাবিত স্ট্রিম কনফিগারেশনগুলি পুনরুদ্ধার করার ক্ষমতা। getRecommendedStreamConfigurationMap দেখুন।
  • গভীরতার JPEG ইমেজ ফরম্যাটের জন্য সমর্থন। আরও বিস্তারিত জানার জন্য, ডায়নামিক ডেপথ স্পেসিফিকেশন দেখুন।
  • HEIC ইমেজ ফরম্যাটের জন্য সমর্থন। HEIF ইমেজিং দেখুন।
  • গোপনীয়তার উন্নতি। ক্যামেরা CameraCharacteristics থেকে পুনরুদ্ধার করার আগে ক্লায়েন্টের কাছে CAMERA অনুমতির জন্য কিছু কীগুলির প্রয়োজন৷ getKeysNeedingPermission দেখুন।

ক্যামেরা HAL

নিম্নলিখিত ক্যামেরা HAL সংস্করণগুলি Android 10-এ আপডেট করা হয়েছে৷

3.5

ICameraDevice

  • getPhysicalCameraCharacteristics : একটি লজিক্যাল ক্যামেরা ডিভাইসকে সমর্থন করে একটি শারীরিক ক্যামেরা আইডির জন্য স্ট্যাটিক ক্যামেরা তথ্য। মাল্টি-ক্যামেরা সমর্থন দেখুন।
  • isStreamCombinationSupported : এই পদ্ধতিটি একটি পাবলিক API সমর্থন করে যা ক্লায়েন্টদের জিজ্ঞাসা করতে সাহায্য করে যদি একটি সেশন কনফিগারেশন সমর্থিত হয়। স্ট্রিম কম্বিনেশনের জন্য API দেখুন।

ICameraDeviceSession

  • isReconfigurationNeeded : পদ্ধতি যা ক্যামেরা ফ্রেমওয়ার্ককে বলে যে নতুন সেশন প্যারামিটারের সম্ভাব্য মানগুলির জন্য সম্পূর্ণ স্ট্রিম পুনর্বিন্যাস প্রয়োজন কিনা। এটি অপ্রয়োজনীয় ক্যামেরা পুনরায় কনফিগারেশন বিলম্ব এড়াতে সাহায্য করে। সেশন পুনর্বিন্যাস ক্যোয়ারী দেখুন।
  • HAL বাফার ম্যানেজমেন্ট API : এই APIগুলি ক্যামেরা HAL কে ক্যামেরার ফ্রেমওয়ার্ক থেকে বাফারের অনুরোধ করার অনুমতি দেয় শুধুমাত্র ক্যামেরা পাইপলাইন জুড়ে প্রতিটি ক্যাপচার অনুরোধের সাথে সংশ্লিষ্ট বাফারের সাথে সংযুক্ত করার পরিবর্তে, যার ফলে সম্ভাব্য উল্লেখযোগ্য মেমরি সঞ্চয় হয়।
    • signalStreamFlush : HAL-কে সংকেত দেয় যে ক্যামেরা পরিষেবা configureStreams_3_5 সম্পাদন করতে চলেছে এবং HAL-কে অবশ্যই নির্ধারিত স্ট্রীমের সমস্ত বাফার ফেরত দিতে হবে৷
    • configureStreams_3_5 : ICameraDevice3.4.configureStreams এর মতোই, কিন্তু উপরন্তু, streamConfigCounter কাউন্টারটি configureStreams_3_5 এবং signalStreamFlush কলের মধ্যে রেসের অবস্থা পরীক্ষা করার জন্য প্রদান করা হয়েছে।

ICameraDeviceCallback আপডেট:

  • requestStreamBuffers : সিঙ্ক্রোনাস কলব্যাক যা ক্যামেরা HAL ক্যামেরা সার্ভারকে বাফারের জন্য জিজ্ঞাসা করতে কল করে। requestStreamBuffers দেখুন।
  • returnStreamBuffers : ক্যামেরা সার্ভারে আউটপুট বাফার ফেরত দিতে ক্যামেরা HAL-এর জন্য সিঙ্ক্রোনাস কলব্যাক। returnStreamBuffers দেখুন।

3.4

নিম্নলিখিত কীগুলি Android 10-এ ক্যামেরা মেটাডেটাতে যোগ করা হয়েছে।

  • ইমেজ ফরম্যাট
    • ANDROID_SCALER_AVAILABLE_FORMATS_RAW10
    • ANDROID_SCALER_AVAILABLE_FORMATS_RAW12
    • ANDROID_SCALER_AVAILABLE_FORMATS_Y8
  • ক্যামেরা মেটাডেটা ট্যাগ
    • ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION
    • ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS
    • ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP
    • ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION
    • ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS
    • ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
    • ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS
    • ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS
    • ANDROID_HEIC_INFO_SUPPORTED
    • ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
  • ক্ষমতা
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA
  • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT কী-এর মান
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR
  • উপলব্ধ গতিশীল গভীরতা স্ট্রীম কনফিগারেশন
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT
  • উপলব্ধ HEIC স্ট্রিম কনফিগারেশন
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT

ক্যামেরা মডিউল

নিম্নলিখিত ক্যামেরা মডিউল সংস্করণগুলি Android 10 এ আপডেট করা হয়েছে৷

2.5

  • ক্যামেরা HAL-কে জানানোর জন্য ডিভাইসগুলির জন্য notifyDeviceStateChange পদ্ধতি যোগ করে যখন শারীরিক পরিবর্তন, যেমন ভাঁজ করা, ক্যামেরা এবং রাউটিংকে প্রভাবিত করে।

2.4

  • API স্তর 29 বা উচ্চতর সাথে চালু হওয়া ডিভাইসগুলি isTorchModeSupported জন্য true রিপোর্ট করতে হবে৷

অ্যান্ড্রয়েড 9

Android 9 রিলিজ ক্যামেরা API2 এবং HAL ইন্টারফেসে নিম্নলিখিত আপডেটগুলি প্রবর্তন করে৷

ক্যামেরা API

  • মাল্টি-ক্যামেরা এপিআই প্রবর্তন করে একাধিক ক্যামেরা একই দিকে মুখ করে থাকা ডিভাইসগুলিকে আরও ভাল সমর্থন করার জন্য, বোকেহ এবং সিমলেস জুমের মতো বৈশিষ্ট্যগুলিকে সক্ষম করে৷ এটি অ্যাপগুলিকে একটি ডিভাইসে একাধিক ক্যামেরাকে একটি লজিক্যাল ইউনিট (লজিক্যাল ক্যামেরা) হিসেবে দেখতে দেয়। ক্যাপচার অনুরোধগুলি একটি লজিক্যাল ক্যামেরা দ্বারা বেষ্টিত পৃথক ক্যামেরা ডিভাইসগুলিতেও পাঠানো যেতে পারে। মাল্টি-ক্যামেরা সমর্থন দেখুন।
  • অধিবেশন পরামিতি প্রবর্তন. সেশন প্যারামিটারগুলি উপলব্ধ ক্যাপচার প্যারামিটারগুলির একটি উপসেট যা সংশোধন করার সময় গুরুতর প্রক্রিয়াকরণ বিলম্বের কারণ হতে পারে। ক্যাপচার সেশন ইনিশিয়ালাইজেশনের সময় ক্লায়েন্টরা তাদের প্রাথমিক মানগুলি পাস করলে এই খরচগুলি হ্রাস করা যেতে পারে। সেশন প্যারামিটার দেখুন।
  • অ্যাপ-লেভেল স্টেবিলাইজেশন এবং প্রভাবের জন্য অপটিক্যাল স্ট্যাবিলাইজেশন (OIS) ডেটা কী যোগ করে। STATISTICS_OIS_SAMPLES দেখুন।
  • বাহ্যিক ফ্ল্যাশ সমর্থন যোগ করে। CONTROL_AE_MODE_ON_EXTERNAL_FLASH দেখুন।
  • CAPTURE_INTENT এ একটি মোশন ট্র্যাকিং অভিপ্রায় যোগ করে। CONTROL_CAPTURE_INTENT_MOTION_TRACKING দেখুন।
  • LENS_RADIAL_DISTORTION অবমূল্যায়ন করে এবং এর জায়গায় LENS_DISTORTION যোগ করে।
  • CaptureRequest এ বিকৃতি সংশোধন মোড যোগ করে। DISTORTION_CORRECTION_MODE দেখুন।
  • সমর্থিত ডিভাইসগুলিতে বহিরাগত USB/UVC ক্যামেরাগুলির জন্য সমর্থন যোগ করে। INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL দেখুন।

ক্যামেরা HAL

3.4

ICameraDeviceSession আপডেট

  • configureStreams_3_4 : sessionParameters এবং লজিক্যাল ক্যামেরার জন্য সমর্থন যোগ করে।
  • processCaptureRequest_3_4 : স্ট্রীম কাঠামোতে ফিজিক্যাল ক্যামেরা আইডি অন্তর্ভুক্ত করার জন্য সমর্থন যোগ করে।

ICameraDeviceCallback আপডেট

  • processCaptureResult_3_4 : ক্যাপচার ফলাফলে শারীরিক ক্যামেরা মেটাডেটা যোগ করে।

3.3

নিম্নলিখিত কীগুলি Android 9-এ ক্যামেরা মেটাডেটাতে যোগ করা হয়েছে।

  • ক্ষমতা
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME
  • ক্যামেরা মেটাডেটা ট্যাগ
    • ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
    • ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES
    • ANDROID_LENS_POSE_REFERENCE
    • ANDROID_LENS_DISTORTION
    • ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
    • ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS
    • ANDROID_STATISTICS_OIS_DATA_MODE
    • ANDROID_STATISTICS_OIS_TIMESTAMPS
    • ANDROID_STATISTICS_OIS_X_SHIFTS
    • ANDROID_STATISTICS_OIS_Y_SHIFTS

অ্যান্ড্রয়েড 8.0

অ্যান্ড্রয়েড 8.0 রিলিজ ট্রেবল প্রবর্তন করে। Treble এর সাথে, বিক্রেতা ক্যামেরা HAL বাস্তবায়ন অবশ্যই বাইন্ডারাইজড হতে হবে। অ্যান্ড্রয়েড 8.0-তে ক্যামেরা পরিষেবার এই মূল বর্ধনগুলিও রয়েছে:

  • ভাগ করা পৃষ্ঠতল: একই OutputConfiguration ভাগ করে একাধিক পৃষ্ঠ সক্রিয় করুন৷
  • কাস্টম ক্যামেরা মোডের জন্য সিস্টেম API
  • onCaptureQueueEmpty

এই বৈশিষ্ট্যগুলি সম্পর্কে আরও তথ্যের জন্য নীচের বিভাগগুলি দেখুন৷

ভাগ করা পৃষ্ঠতল

এই বৈশিষ্ট্যটি দুটি আউটপুট যেমন প্রিভিউ এবং ভিডিও এনকোডিং চালানোর জন্য বাফারগুলির একটি মাত্র সেট সক্ষম করে, যা শক্তি এবং মেমরি খরচ কম করে। এই বৈশিষ্ট্যটিকে সমর্থন করার জন্য, ডিভাইস নির্মাতাদের নিশ্চিত করতে হবে তাদের ক্যামেরা HAL এবং gralloc HAL প্রয়োগগুলি গ্র্যালক বাফার তৈরি করতে পারে যা শুধুমাত্র একজন গ্রাহকের পরিবর্তে একাধিক ভিন্ন গ্রাহক (যেমন হার্ডওয়্যার কম্পোজার/GPU এবং ভিডিও এনকোডার) দ্বারা ব্যবহৃত হয়। ক্যামেরা পরিষেবা ভোক্তা ব্যবহারের পতাকা ক্যামেরা HAL এবং gralloc HAL-তে প্রেরণ করে; তাদের হয় সঠিক ধরণের বাফার বরাদ্দ করতে হবে, অথবা ক্যামেরা HAL-কে একটি ত্রুটি ফেরত দিতে হবে যে গ্রাহকদের এই সংমিশ্রণটি সমর্থিত নয়।

অতিরিক্ত বিবরণের জন্য enableSurfaceSharing বিকাশকারী ডকুমেন্টেশন দেখুন।

কাস্টম ক্যামেরা মোডের জন্য সিস্টেম API

পাবলিক ক্যামেরা API দুটি অপারেটিং মোড সংজ্ঞায়িত করে: স্বাভাবিক এবং সীমাবদ্ধ উচ্চ-গতির রেকর্ডিং। তাদের মোটামুটি ভিন্ন শব্দার্থ আছে; উদাহরণস্বরূপ, উচ্চ-গতির মোড একবারে সর্বাধিক দুটি নির্দিষ্ট আউটপুটের মধ্যে সীমাবদ্ধ। বিভিন্ন OEM হার্ডওয়্যার-নির্দিষ্ট ক্ষমতার জন্য অন্যান্য কাস্টম মোড সংজ্ঞায়িত করতে আগ্রহ প্রকাশ করেছে। হুডের নিচে, মোডটি configure_streams এ পাস করা একটি পূর্ণসংখ্যা মাত্র। দেখুন: hardware/camera/device/3.2/ICameraDeviceSession#configurestreams

এই বৈশিষ্ট্যটিতে একটি সিস্টেম API কল রয়েছে যা OEM ক্যামেরা অ্যাপগুলি একটি কাস্টম মোড সক্ষম করতে ব্যবহার করতে পারে৷ সর্বজনীন API-এ যুক্ত ভবিষ্যত মোডগুলির সাথে বিরোধ এড়াতে এই মোডগুলিকে পূর্ণসংখ্যার মান 0x8000 থেকে শুরু করতে হবে৷

এই বৈশিষ্ট্যটিকে সমর্থন করার জন্য, OEM-কে শুধুমাত্র তাদের HAL-এ নতুন মোড যোগ করতে হবে, এই পূর্ণসংখ্যা দ্বারা ট্রিগার করা হয়েছে configure_streams-এ HAL-এ পাস করা হয়েছে, এবং তারপরে তাদের কাস্টম ক্যামেরা অ্যাপকে সিস্টেম API ব্যবহার করতে হবে।

পদ্ধতির নাম android.hardware.camera2.CameraDevice#createCustomCaptureSession । দেখুন: frameworks/base/core/java/android/hardware/camera2/CameraDevice

onCaptureQueueEmpty

এই API-এর উদ্দেশ্য হল অনুরোধের সারি যতটা সম্ভব খালি রেখে জুমের মতো নিয়ন্ত্রণ পরিবর্তনের বিলম্ব কমানো। onCaptureQueueEmpty জন্য কোনো HAL কাজের প্রয়োজন নেই; এটি ছিল সম্পূর্ণরূপে একটি কাঠামো-পার্শ্ব সংযোজন। যে অ্যাপ্লিকেশনগুলি এটির সুবিধা নিতে চায় তাদের সেই কলব্যাকে একজন শ্রোতা যোগ করতে হবে এবং যথাযথভাবে প্রতিক্রিয়া জানাতে হবে। সাধারণত এটি ক্যামেরা ডিভাইসে আরেকটি ক্যাপচার অনুরোধ পাঠানোর মাধ্যমে।

ক্যামেরা HIDL ইন্টারফেস

ক্যামেরা HIDL ইন্টারফেস হল ক্যামেরা HAL ইন্টারফেসের একটি সম্পূর্ণ ওভারহল যা স্থিতিশীল HIDL-সংজ্ঞায়িত API ব্যবহার করে। সাম্প্রতিক লিগ্যাসি সংস্করণ 3.4 এবং 2.4 (ক্যামেরা মডিউলের জন্য) প্রবর্তিত সমস্ত বৈশিষ্ট্য এবং ক্যামেরা ক্ষমতাগুলিও HIDL সংজ্ঞার অংশ।

3.4

সমর্থিত মেটাডেটাতে সামান্য সংযোজন এবং data_space সমর্থনে পরিবর্তন:

  • ANDROID_SENSOR_OPAQUE_RAW_SIZE স্ট্যাটিক মেটাডেটা বাধ্যতামূলক হিসাবে যোগ করুন যদি RAW_OPAQUE ফর্ম্যাট সমর্থিত হয়।
  • ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE স্ট্যাটিক মেটাডেটা বাধ্যতামূলক হিসেবে যোগ করুন যদি কোনো RAW ফর্ম্যাট সমর্থিত হয়।
  • ডেটাস্পেস এনকোডিংয়ের সংস্করণ 0 সংজ্ঞা ব্যবহার করে camera3_stream_t data_space ফিল্ডকে আরও নমনীয় সংজ্ঞায় পরিবর্তন করুন।
  • সাধারণ মেটাডেটা সংযোজন যা HALv3.2 বা নতুনের জন্য ব্যবহার করার জন্য উপলব্ধ:
    • ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3
    • ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST
    • ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
    • ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL
    • ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL
    • ANDROID_SENSOR_OPAQUE_RAW_SIZE
    • ANDROID_SENSOR_OPTICAL_BLACK_REGIONS

3.3

সম্প্রসারিত-ক্ষমতা HAL-এর ক্ষুদ্র সংশোধন:

  • OPAQUE এবং YUV রিপ্রসেসিং API আপডেট।
  • গভীরতার আউটপুট বাফারের জন্য মৌলিক সমর্থন।
  • camera3_stream_t-এ data_space ফিল্ডের camera3_stream_t
  • ক্যামেরা3_স্ট্রিম_টি-তে ঘূর্ণন ক্ষেত্রের camera3_stream_t
  • camera3_stream_configuration_t-এ camera3 স্ট্রিম কনফিগারেশন অপারেশন মোডের camera3_stream_configuration_t

3.2

সম্প্রসারিত-ক্ষমতা HAL-এর ক্ষুদ্র সংশোধন:

  • get_metadata_vendor_tag_ops । পরিবর্তে get_vendor_tag_opscamera_common.h ব্যবহার করুন।
  • register_stream_buffers বর্জন করে। প্রসেস_ক্যাপচার_রিকোয়েস্টে HAL কে ফ্রেমওয়ার্ক দ্বারা প্রদত্ত সমস্ত process_capture_request বাফার যে কোনো সময় নতুন হতে পারে।
  • আংশিক ফলাফল সমর্থন যোগ করুন. process_capture_result পূর্ণ ফলাফল উপলব্ধ হওয়ার আগে উপলব্ধ ফলাফলের একটি উপসেট সহ একাধিকবার কল করা যেতে পারে।
  • camera3_request_template ম্যানুয়াল টেমপ্লেট যোগ করুন। অ্যাপ্লিকেশন সরাসরি ক্যাপচার সেটিংস নিয়ন্ত্রণ করতে এই টেমপ্লেট ব্যবহার করতে পারে।
  • দ্বিমুখী এবং ইনপুট স্ট্রীম স্পেসিফিকেশন পুনরায় কাজ করুন.
  • ইনপুট বাফার রিটার্ন পাথ পরিবর্তন করুন। বাফারটি process_capture_request এর পরিবর্তে process_capture_result এ ফেরত দেওয়া হয়।

3.1

সম্প্রসারিত-ক্ষমতা HAL-এর ক্ষুদ্র সংশোধন:

  • configure_streams এইচএএল-এ ভোক্তা ব্যবহারের পতাকা পাস করে।
  • যত দ্রুত সম্ভব সমস্ত ইন-ফ্লাইট অনুরোধ/বাফার ড্রপ করতে ফ্লাশ কল করুন।

3.0

সম্প্রসারিত-ক্ষমতা HAL এর প্রথম সংশোধন:

  • ABI সম্পূর্ণ ভিন্ন হওয়ার পর থেকে প্রধান সংস্করণ পরিবর্তন। 2.0 থেকে প্রয়োজনীয় হার্ডওয়্যার ক্ষমতা বা অপারেশনাল মডেলে কোনো পরিবর্তন নেই।
  • পুনরায় কাজ করা ইনপুট অনুরোধ এবং স্ট্রিম সারি ইন্টারফেস: ফ্রেমওয়ার্ক পরবর্তী অনুরোধের সাথে HAL-এ কল করে এবং স্ট্রিম বাফারগুলি ইতিমধ্যেই সারিবদ্ধ। সিঙ্ক ফ্রেমওয়ার্ক সমর্থন অন্তর্ভুক্ত করা হয়েছে, দক্ষ বাস্তবায়নের জন্য প্রয়োজনীয়।
  • অনুরোধে ট্রিগার সরানো হয়েছে, ফলাফলে বেশিরভাগ বিজ্ঞপ্তি।
  • ফ্রেমওয়ার্কে সমস্ত কলব্যাককে এক কাঠামোতে একত্রিত করা হয়েছে, এবং সমস্ত সেটআপ পদ্ধতিকে একটি একক initialize() কলে।
  • স্ট্রিম ম্যানেজমেন্টকে সহজ করতে একটি একক কলে স্ট্রিম কনফিগারেশন তৈরি করা হয়েছে। দ্বিমুখী স্ট্রীমগুলি STREAM_FROM_STREAM গঠন প্রতিস্থাপন করে৷
  • পুরানো/সীমিত হার্ডওয়্যার ডিভাইসের জন্য সীমিত মোড শব্দার্থবিদ্যা।

2.0

প্রসারিত-ক্ষমতা HAL (Android 4.2) [camera2.h]-এর প্রাথমিক প্রকাশ:

  • বিদ্যমান android.hardware.Camera API বাস্তবায়নের জন্য যথেষ্ট।
  • ক্যামেরা পরিষেবা স্তরে ZSL সারির জন্য অনুমতি দেয়।
  • ম্যানুয়াল ক্যাপচার কন্ট্রোল, বেয়ার RAW ক্যাপচার, RAW ডেটা রিপ্রসেসিং ইত্যাদির মতো কোনও নতুন বৈশিষ্ট্যের জন্য পরীক্ষা করা হয়নি।

1.0

প্রাথমিক অ্যান্ড্রয়েড ক্যামেরা HAL (Android 4.0) [camera.h]:

  • C++ CameraHardwareInterface বিমূর্ততা স্তর থেকে রূপান্তরিত।
  • android.hardware.Camera API সমর্থন করে।

ক্যামেরা মডিউল সংস্করণ ইতিহাস

camera_module_t.common.module_api_version এর উপর ভিত্তি করে এই বিভাগে ক্যামেরা হার্ডওয়্যার মডিউলের জন্য মডিউল সংস্করণ তথ্য রয়েছে। দুটি সবচেয়ে তাৎপর্যপূর্ণ হেক্স ডিজিট প্রধান সংস্করণের প্রতিনিধিত্ব করে, এবং দুটি সর্বনিম্ন উল্লেখযোগ্য সংখ্যা ছোট সংস্করণকে উপস্থাপন করে।

2.4

এই ক্যামেরা মডিউল সংস্করণ নিম্নলিখিত API পরিবর্তন যোগ করে:

  1. টর্চ মোড সমর্থন। ফ্রেমওয়ার্কটি ক্যামেরা ডিভাইস না খুলেই ফ্ল্যাশ ইউনিট থাকা যেকোনো ক্যামেরা ডিভাইসের জন্য টর্চ মোড চালু করতে পারে। ক্যামেরা মডিউলের তুলনায় ক্যামেরা ডিভাইসের ফ্ল্যাশ ইউনিট অ্যাক্সেস করার জন্য একটি উচ্চ অগ্রাধিকার রয়েছে; একটি ক্যামেরা ডিভাইস খুললে টর্চটি বন্ধ হয়ে যায় যদি এটি মডিউল ইন্টারফেসের মাধ্যমে সক্রিয় করা থাকে। যখন কোনো রিসোর্স দ্বন্দ্ব থাকে, যেমন open() কে একটি ক্যামেরা ডিভাইস খুলতে বলা হয়, ক্যামেরা HAL মডিউলকে টর্চ মোড স্ট্যাটাস কলব্যাকের মাধ্যমে ফ্রেমওয়ার্ককে অবহিত করতে হবে যে টর্চ মোডটি বন্ধ করা হয়েছে।
  2. বাহ্যিক ক্যামেরা (উদাহরণস্বরূপ, USB হট-প্লাগ ক্যামেরা) সমর্থন। API আপডেটগুলি সুনির্দিষ্ট করে যে ক্যামেরা স্ট্যাটিক তথ্য শুধুমাত্র তখনই পাওয়া যায় যখন ক্যামেরা সংযুক্ত থাকে এবং বহিরাগত হট-প্লাগ ক্যামেরার জন্য ব্যবহারের জন্য প্রস্তুত থাকে। স্ট্যাটিক তথ্য পেতে কলগুলি অবৈধ কল হয় যখন ক্যামেরা স্ট্যাটাস CAMERA_DEVICE_STATUS_PRESENT না হয়। উপলব্ধ বহিরাগত ক্যামেরা তালিকা পরিচালনা করতে ফ্রেমওয়ার্কটি শুধুমাত্র ডিভাইসের স্থিতি পরিবর্তন কলব্যাকের উপর নির্ভর করে।
  3. ক্যামেরা সালিসি ইঙ্গিত. একই সাথে খোলা এবং ব্যবহার করা যেতে পারে এমন ক্যামেরা ডিভাইসের সংখ্যা স্পষ্টভাবে নির্দেশ করার জন্য সমর্থন যোগ করে। ডিভাইসগুলির বৈধ সংমিশ্রণ নির্দিষ্ট করতে, resource_cost এবং conflicting_devices ক্ষেত্রগুলি সর্বদা ক্যামেরা_ইনফো কাঠামোতে সেট করা উচিত যেটি camera_info কল দ্বারা ফিরে get_camera_info
  4. মডিউল প্রারম্ভিক পদ্ধতি। HAL মডিউল লোড হওয়ার পরে ক্যামেরা পরিষেবা দ্বারা কল করা হয় যাতে HAL-এর এক-সময়ের শুরুর অনুমতি দেওয়া হয়। অন্য কোনো মডিউল পদ্ধতি চালু করার আগে এটি বলা হয়।

2.3

এই ক্যামেরা মডিউল সংস্করণটি ওপেন লিগ্যাসি ক্যামেরা HAL ডিভাইস সমর্থন যোগ করে। ফ্রেমওয়ার্ক ক্যামেরা ডিভাইসটিকে নিম্ন ডিভাইস HAL সংস্করণ HAL ডিভাইস হিসাবে খুলতে ব্যবহার করতে পারে যদি একই ডিভাইস একাধিক ডিভাইস API সংস্করণ সমর্থন করতে পারে। স্ট্যান্ডার্ড হার্ডওয়্যার মডিউল ওপেন কল ( common.methods->open ) সর্বশেষ সমর্থিত সংস্করণ সহ ক্যামেরা ডিভাইস খুলতে থাকে, যা camera_info_t.device_version এ তালিকাভুক্ত সংস্করণও।

2.2

এই ক্যামেরা মডিউল সংস্করণটি মডিউল থেকে বিক্রেতা ট্যাগ সমর্থন যোগ করে এবং পুরানো vendor_tag_query_ops করে যা আগে শুধুমাত্র একটি ডিভাইস খোলার মাধ্যমে অ্যাক্সেসযোগ্য ছিল৷

2.1

এই ক্যামেরা মডিউল সংস্করণটি ক্যামেরা HAL মডিউল থেকে ফ্রেমওয়ার্কে অ্যাসিঙ্ক্রোনাস কলব্যাকের জন্য সমর্থন যোগ করে, যা ক্যামেরা মডিউল অবস্থার পরিবর্তন সম্পর্কে ফ্রেমওয়ার্ককে অবহিত করতে ব্যবহৃত হয়। একটি বৈধ set_callbacks() পদ্ধতি প্রদান করে এমন মডিউলগুলিকে অন্তত এই সংস্করণ নম্বরটি রিপোর্ট করতে হবে৷

2.0

যে ক্যামেরা মডিউলগুলি এই সংস্করণ নম্বরের রিপোর্ট করে সেগুলি ক্যামেরা মডিউল HAL ইন্টারফেসের দ্বিতীয় সংস্করণ প্রয়োগ করে৷ এই মডিউলের মাধ্যমে খোলাযোগ্য ক্যামেরা ডিভাইসগুলি ক্যামেরা ডিভাইস HAL ইন্টারফেসের সংস্করণ 1.0 বা সংস্করণ 2.0 সমর্থন করতে পারে। camera_info-এর device_version ক্ষেত্র সর্বদা বৈধ; camera_info এর static_camera_characteristics ক্ষেত্রটি বৈধ যদি device_version ক্ষেত্রটি 2.0 বা তার বেশি হয়।

1.0

ক্যামেরা মডিউল যেগুলি এই সংস্করণ নম্বরগুলি রিপোর্ট করে প্রাথমিক ক্যামেরা মডিউল HAL ইন্টারফেস প্রয়োগ করে৷ এই মডিউলের মাধ্যমে খোলা যায় এমন সমস্ত ক্যামেরা ডিভাইস HAL ক্যামেরা ডিভাইসের শুধুমাত্র সংস্করণ 1 সমর্থন করে। camera_info device_version এবং static_camera_characteristics ক্ষেত্রগুলি বৈধ নয়৷ শুধুমাত্র android.hardware.Camera API এই মডিউল এবং এর ডিভাইসগুলি দ্বারা সমর্থিত হতে পারে৷