ক্যামেরা ভার্সন সাপোর্ট

এই পৃষ্ঠায় ক্যামেরা HAL, API এবং সংশ্লিষ্ট কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্টের ভার্সন সংক্রান্ত পার্থক্য সম্পর্কে বিস্তারিত তথ্য দেওয়া আছে। এছাড়াও, এটি Android 7.0-এ ক্যামেরা ফ্রেমওয়ার্ককে আরও শক্তিশালী ও সুরক্ষিত করতে করা বিভিন্ন আর্কিটেকচারাল পরিবর্তন, Android 8.0-এ Treble-এ পরিবর্তন এবং ক্যামেরা ইমপ্লিমেন্টেশনে এইসব পরিবর্তনকে সাপোর্ট করার জন্য ভেন্ডরদের করা আপডেট কভার করে।

পরিভাষা

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

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

ক্যামেরা API

Android-এ নিম্নলিখিত ক্যামেরা API অন্তর্ভুক্ত থাকে।

Camera API1

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

  • অ্যাপের জন্য Camera API1 ইন্টারফেস। Camera API1-এর উপরে তৈরি করা ক্যামেরা অ্যাপগুলি, Android-এর অপেক্ষাকৃত পুরনো ভার্সনে যেভাবে কাজ করে, সেইভাবেই কাজ করা উচিত।
  • Camera HAL ভার্সন। ক্যামেরা HAL1.0-এর জন্য সহায়তা অন্তর্ভুক্ত।

Camera API2

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

Android 5.0 ও তার পরবর্তী যেকোনও ভার্সনে Camera API2 অন্তর্ভুক্ত থাকে; তবে, Android 5.0 ও তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে সব Camera API2 ফিচার কাজ নাও করতে পারে। Camera API2 ইন্টারফেসের মাধ্যমে অ্যাপ কোয়েরি করতে পারে এমন android.info.supportedHardwareLevel প্রপার্টি নিম্নলিখিত সাপোর্ট লেভেলের মধ্যে একটি রিপোর্ট করে:

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

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

ডিভাইসের কাজ করে এমন হার্ডওয়্যার লেভেল এবং এটি কাজ করে এমন নির্দিষ্ট Camera API2 ক্ষমতা, Camera 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 সংক্রান্ত প্রয়োজনীয়তা

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

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

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

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

বাইন্ডারাইজড HAL ইমপ্লিমেন্টেশন সহ Android 8.0 ও তার পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসকে অবশ্যই ক্যামেরা VTS পরীক্ষায় পাস করতে হবে।

ক্যামেরা ফ্রেমওয়ার্ক হার্ডেনিং

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

API1-এর জন্য আর্কিটেকচার সংক্রান্ত পরিবর্তন

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

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

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

    ছবি ১. Android 7.0 ক্যামেরা ও মিডিয়া API1-এ HAL3-তে স্ট্যাক করা আছে

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

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

    ছবি ২. HAL1-এ API1-এ Android 7.0 ক্যামেরা ও মিডিয়া স্ট্যাক

API2-এর জন্য আর্কিটেকচার সংক্রান্ত পরিবর্তন

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

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

    API2-তে Android 7.0 ক্যামেরা ও
HAL3-এ মিডিয়া স্ট্যাক

    ছবি ৩. Android 7.0 ক্যামেরা ও মিডিয়া API2-তে HAL3-এ স্ট্যাক করা আছে

অতিরিক্ত প্রয়োজনীয়তা

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

  • সাধারণ। IPC-র কারণে ডিভাইসের অতিরিক্ত ব্যান্ডউইথের প্রয়োজন হয়, যা হাই-স্পিড ভিডিও রেকর্ডিংয়ের মতো সময়-সংবেদনশীল ক্যামেরা ব্যবহারের ক্ষেত্রে প্রভাব ফেলতে পারে। ১২০/২৪০ FPS হাই-স্পিড ভিডিও রেকর্ডিংয়ের জন্য android.hardware.camera2.cts.PerformanceTest এবং Google Camera অ্যাপ চালিয়ে বিক্রেতারা প্রকৃত প্রভাব পরিমাপ করতে পারবেন। নতুন প্রসেস তৈরি করতে ডিভাইসে অল্প পরিমাণে অতিরিক্ত RAM-এরও প্রয়োজন হয়।
  • ভিডিও বাফারে মেটাডেটা পাস করুন (শুধুমাত্র HAL1)। HAL1 ভিডিও বাফারে আসল YUV ফ্রেম ডেটার পরিবর্তে মেটাডেটা স্টোর করলে, HAL-কে অবশ্যই মেটাডেটা বাফার টাইপ হিসেবে kMetadataBufferTypeNativeHandleSource ব্যবহার করতে হবে এবং ভিডিও বাফারে VideoNativeHandleMetadata পাস করতে হবে। (Android 7.0-এ kMetadataBufferTypeCameraSource আর কাজ করে না।) VideoNativeHandleMetadata-এর সাহায্যে, ক্যামেরা ও মিডিয়া ফ্রেমওয়ার্ক নেটিভ হ্যান্ডেল সঠিকভাবে সিরিয়ালাইজ ও ডিসিয়ারিয়ালাইজ করার মাধ্যমে প্রসেসের মধ্যে ভিডিও বাফার পাস করতে পারে।
  • বাফার হ্যান্ডেল অ্যাড্রেস সবসময় একই বাফার স্টোর করে না (শুধুমাত্র HAL3)। প্রতিটি ক্যাপচার অনুরোধের জন্য, HAL3 বাফার হ্যান্ডেলের ঠিকানা পায়। HAL বাফার শনাক্ত করার জন্য ঠিকানা ব্যবহার করতে পারে না কারণ HAL বাফার ফেরত দেওয়ার পরে ঠিকানা অন্য বাফার হ্যান্ডেল স্টোর করতে পারে। বফার শনাক্ত করতে বাফার হ্যান্ডেল ব্যবহার করতে হলে আপনাকে অবশ্যই HAL আপডেট করতে হবে। যেমন, HAL, একটি বাফার হ্যান্ডেল অ্যাড্রেস A পায়, যা বাফার হ্যান্ডেল A সেভ করে। HAL, বাফার হ্যান্ডেল A রিটার্ন করার পরে, HAL সেটি পরের বার পেলে, বাফার হ্যান্ডেল A-এর অ্যাড্রেসে বাফার হ্যান্ডেল B সেভ করতে পারে।
  • cameraserver-এর জন্য SELinux নীতি আপডেট করুন। ডিভাইস-নির্দিষ্ট SELinux নীতি যদি ক্যামেরা চালানোর জন্য মিডিয়াসার্ভারকে অনুমতি দেয়, তাহলে ক্যামেরাসার্ভারকে সঠিক অনুমতি দেওয়ার জন্য আপনাকে SELinux নীতি আপডেট করতে হবে। আমরা cameraserver-এর জন্য mediaserver-এর SELinux নীতি রেপ্লিকেট করার বিরোধিতা করি (কারণ mediaserver ও cameraserver-এর সাধারণত সিস্টেমে আলাদা আলাদা রিসোর্স প্রয়োজন হয়)। ক্যামেরা ফাংশনালিটি পারফর্ম করার জন্য ক্যামেরাসার্ভারের শুধুমাত্র প্রয়োজনীয় অনুমতি থাকা উচিত এবং mediaserver-এ থাকা ক্যামেরা সম্পর্কিত যেকোনও অপ্রয়োজনীয় অনুমতি সরিয়ে দেওয়া উচিত।
  • Camera HAL ও cameraserver-এর মধ্যে পার্থক্য। ৮.০ ও এর পরের যেকোনও Android ভার্সনে, ক্যামেরাসার্ভার থেকে আলাদা প্রসেসে বাইন্ডারাইজড ক্যামেরা HAL আলাদা করা হয়। IPC, HIDL-defined ইন্টারফেসের মাধ্যমে কাজ করে।

যাচাইকরণ

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

ক্যামেরা আছে এবং Android 8.0 বা তার পরবর্তী ভার্সনে চলে এমন সব ডিভাইসের জন্য, VTS চালিয়ে ভেন্ডর ইমপ্লিমেন্টেশন যাচাই করুন।

Camera HAL ভার্সনের ইতিহাস

Android Camera HAL মূল্যায়ন করার জন্য উপলভ্য টেস্টের তালিকা দেখতে, Camera HAL Testing Checklist দেখুন।

Android 10

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

Camera API

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

ক্যামেরা HAL

Android 10-এ নিম্নলিখিত ক্যামেরা HAL ভার্সন আপডেট করা হয়েছে।

৩.৫

ICameraDevice

ICameraDeviceSession

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

ICameraDeviceCallback-এ করা আপডেট:

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

৩.৪

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-এ নিম্নলিখিত ক্যামেরা মডিউল ভার্সন আপডেট করা হয়েছে।

২.৫

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

২.৪

  • API লেভেল ২৯ বা তার পরবর্তী যেকোনও ভার্সন সহ লঞ্চ করা ডিভাইসকে অবশ্যই true-এর জন্য isTorchModeSupported রিপোর্ট করতে হবে।

Android 9

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

Camera API

  • একই দিকে মুখ করা একাধিক ক্যামেরা সহ ডিভাইসকে আরও ভালোভাবে সাপোর্ট করার জন্য মাল্টি-ক্যামেরা 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

৩.৪

ICameraDeviceSession-এ আপডেট

  • configureStreams_3_4: sessionParameters এবং লজিক্যাল ক্যামেরার জন্য সহায়তা যোগ করে।
  • processCaptureRequest_3_4: স্ট্রিম স্ট্রাকচারে ফিজিক্যাল ক্যামেরা আইডি যোগ করার জন্য সহায়তা যোগ করে।

ICameraDeviceCallback-এ আপডেট

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

৩.৩

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

Android 8.0

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

  • শেয়ার করা সারফেস: একই OutputConfiguration শেয়ার করে এমন একাধিক সারফেস চালু করুন
  • কাস্টম ক্যামেরা মোডের জন্য সিস্টেম API
  • onCaptureQueueEmpty

এইসব ফিচার সম্পর্কে আরও তথ্য পেতে, নিচের বিভাগগুলি দেখুন।

শেয়ার করা সারফেস

এই ফিচারটি শুধুমাত্র একটি বাফার সেটকে দুটি আউটপুট চালানোর জন্য সক্ষম করে, যেমন প্রিভিউ এবং ভিডিও এনকোডিং, যা বিদ্যুৎ ও মেমরি খরচ কমিয়ে দেয়। এই ফিচার সাপোর্ট করার জন্য, ডিভাইস প্রস্তুতকারকদের নিশ্চিত করতে হবে যে তাদের ক্যামেরা HAL এবং gralloc HAL প্রয়োগগুলি এমন gralloc বাফার তৈরি করতে পারে যা শুধুমাত্র একটি কনজিউমারের পরিবর্তে একাধিক আলাদা আলাদা কনজিউমার (যেমন, হার্ডওয়্যার কম্পোজার/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 ইন্টারফেস

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

3.4

কাজ করে এমন মেটাডেটা ও data_space সংক্রান্ত সহায়তায় সামান্য পরিবর্তন:

  • RAW_OPAQUE ফর্ম্যাট কাজ করলে, ANDROID_SENSOR_OPAQUE_RAW_SIZE স্ট্যাটিক মেটাডেটা বাধ্যতামূলক হিসেবে যোগ করুন।
  • কোনও RAW ফর্ম্যাট কাজ করলে, বাধ্যতামূলক হিসেবে ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE স্ট্যাটিক মেটাডেটা যোগ করুন।
  • 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

৩.৩

বর্ধিত-ক্ষমতা HAL-এর ছোটখাটো রিভিশন:

  • OPAQUE এবং YUV রিপ্রসেসিং API আপডেট।
  • ডেপথ আউটপুট বাফারের জন্য প্রাথমিক সহায়তা।
  • camera3_stream_t-এ data_space ফিল্ড যোগ করা হয়েছে।
  • camera3_stream_t-এ রোটেশন ফিল্ড যোগ করা হয়েছে।
  • camera3_stream_configuration_t-এ camera3 স্ট্রিম কনফিগারেশন অপারেশন মোড যোগ করা হয়েছে।

৩.২

বর্ধিত-ক্ষমতা HAL-এর ছোটখাটো রিভিশন:

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

৩.১

HAL-এর বর্ধিত-ক্ষমতা সংক্রান্ত মাইনর রিভিশন:

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

৩.০

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

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

2.0

HAL-এর (Android 4.2) বর্ধিত-ক্ষমতা সংক্রান্ত প্রাথমিক রিলিজ [camera2.h]:

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

১.০

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

  • C++ CameraHardwareInterface অ্যাবস্ট্রাকশন লেয়ার থেকে কনভার্ট করা হয়েছে।
  • android.hardware.Camera API কাজ করে।

ক্যামেরা মডিউল ভার্সনের ইতিহাস

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

২.৪

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

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

২.৩

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

2.2

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

2.1

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

2.0

যেসব ক্যামেরা মডিউল এই ভার্সন নম্বর রিপোর্ট করে, সেগুলি ক্যামেরা মডিউল HAL ইন্টারফেসের দ্বিতীয় ভার্সন ইমপ্লিমেন্ট করে। এই মডিউলের মাধ্যমে খোলা যায় এমন ক্যামেরা ডিভাইস ক্যামেরা ডিভাইস HAL ইন্টারফেসের ভার্সন ১.০ বা ভার্সন ২.০-এর মধ্যে যেকোনও একটিতে কাজ করতে পারে। camera_info-এর device_version ফিল্ড সবসময় সঠিক; device_version ফিল্ড 2.0 বা তার বেশি হলে camera_info-এর static_camera_characteristics ফিল্ড সঠিক।

১.০

যেসব ক্যামেরা মডিউল এই ভার্সন নম্বর রিপোর্ট করে সেগুলি প্রাথমিক ক্যামেরা মডিউল HAL ইন্টারফেস প্রয়োগ করে। এই মডিউলের মাধ্যমে খোলা যায় এমন সবকটি ক্যামেরা ডিভাইস শুধুমাত্র ক্যামেরা ডিভাইস HAL-এর ভার্সন ১-এ কাজ করে। camera_info-এর device_version ও static_camera_characteristics ফিল্ড সঠিক নয়। এই মডিউল ও এর ডিভাইস শুধুমাত্র android.hardware.Camera API-এর সাথে কাজ করতে পারে।