পরীক্ষা ক্যামেরা HAL

এই পৃষ্ঠায় অ্যান্ড্রয়েড ক্যামেরা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) মূল্যায়নের জন্য উপলব্ধ সমস্ত পরীক্ষার তালিকা দেওয়া আছে। এটি মূল সরঞ্জাম প্রস্তুতকারক (OEM) এবং অ্যাপ্লিকেশন প্রসেসর (AP) বিক্রেতাদের জন্য তৈরি করা হয়েছে, যাতে তারা ন্যূনতম ত্রুটির সাথে ক্যামেরা HAL-এর সঠিক বাস্তবায়ন নিশ্চিত করতে পারেন। যদিও এটি অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS)-এ একটি ঐচ্ছিক সংযোজন, এটি ক্যামেরা পরীক্ষার পরিধি ব্যাপকভাবে বৃদ্ধি করে এবং নিশ্চিতভাবে সম্ভাব্য বাগ শনাক্ত করবে।

এই পরীক্ষাগুলিতে উত্তীর্ণ হওয়ার মাধ্যমে, OEM-রা যাচাই করে যে তারা অ্যান্ড্রয়েড ক্যামেরা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) 3 ইন্টারফেসগুলিকে সঠিকভাবে সংহত করেছে কিনা। চেকলিস্টের সমস্ত শর্ত পূরণ হলে, একটি ডিভাইস ইমপ্লিমেন্টেশনকে অ্যান্ড্রয়েড ক্যামেরা HAL ইন্টারফেসগুলির ক্ষেত্রে সম্পূর্ণ বলে গণ্য করা যেতে পারে। এর ফলে ডিভাইসটি android.hardware.camera2 প্যাকেজটিকে সঠিকভাবে সমর্থন করতে সক্ষম হবে, যার উপর ভিত্তি করে ক্যামেরা অ্যাপগুলি তৈরি হয়।

ক্যামেরা HAL3 স্পেসিফিকেশন

ডিভাইসগুলোকে কী কী শর্ত পূরণ করতে হবে, সে বিষয়ে অ্যান্ড্রয়েড ক্যামেরা HAL3 স্পেসিফিকেশনই হলো তথ্যের প্রামাণ্য উৎস; এই পৃষ্ঠায় সমস্ত পরীক্ষার একটি সারসংক্ষেপ দেওয়া হয়েছে যা একটি চেকলিস্ট হিসাবে ব্যবহার করা যেতে পারে। ক্যামেরা HAL বাস্তবায়নকারীদের (যেমন AP বিক্রেতাদের) উচিত ক্যামেরা HAL3 স্পেসিফিকেশনটি লাইন-বাই-লাইন পর্যালোচনা করা এবং নিশ্চিত করা যে তাদের ডিভাইসগুলো এটি মেনে চলে।

বর্তমান HAL স্পেসিফিকেশনটি অ্যান্ড্রয়েড ৫.০ এবং পরবর্তী জেনেরিক অ্যান্ড্রয়েড প্ল্যাটফর্ম ডেভেলপমেন্ট কিট (PDK)-এর মধ্যে থাকা এই ফাইলগুলিতে সংজ্ঞায়িত করা হয়েছে:

ক্যামেরা পরীক্ষার ধরণ

সর্বশেষ অ্যান্ড্রয়েড ক্যামেরার জন্য উপলব্ধ প্রধান পরীক্ষাগুলোর ধরন এবং সংশ্লিষ্ট নির্দেশাবলী নিচে দেওয়া হলো:

এই সমস্ত পরীক্ষার ধরণগুলি নীচে বিস্তারিতভাবে বর্ণনা করা হয়েছে। এই পরীক্ষাগুলি সেই কালানুক্রমিক ক্রমে উপস্থাপন করা হয়েছে, যে ক্রমে OEM-দের সেগুলি সম্পাদন করার কথা।

উদাহরণস্বরূপ, যদি কোনো ডিভাইস নেটিভ টেস্টে ব্যর্থ হয়, তবে এটি পরবর্তী কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) টেস্টেও নিশ্চিতভাবে ব্যর্থ হবে। আর যদি কোনো ডিভাইস CTS-এ ব্যর্থ হয়, তবে ইমেজ টেস্ট স্যুট (ITS)-এর দিকে অগ্রসর হওয়ার তেমন কোনো অর্থ থাকে না। আমরা পরবর্তী টেস্টের সেটে যাওয়ার আগে প্রতিটি টেস্টের ধরনের ব্যর্থতাগুলো সমাধান করার পরামর্শ দিই।

ভেন্ডর টেস্ট স্যুট (VTS) পরীক্ষা

অ্যান্ড্রয়েড ভেন্ডর টেস্ট স্যুট (VTS) হলো একটি টেস্টিং স্যুট যা HIDL ইন্টারফেস লেভেলে কাজ করে। VTS ব্যবহারের বিষয়ে আরও তথ্যের জন্য, ভেন্ডর টেস্ট স্যুট দেখুন।

সামঞ্জস্য পরীক্ষা স্যুট (CTS) পরীক্ষা

ক্যামেরা অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) পরীক্ষাগুলো ডিভাইসের সামঞ্জস্যতার উপর আলোকপাত করে। একটি পরীক্ষার পরিবেশ তৈরি করার তথ্যের জন্য, CTS সেট আপ করা দেখুন।

ক্যামেরা CTS টেস্টের জন্য শুরুর পথটি হলো: platform/cts

যেসব ডিভাইস এক্সটার্নাল ক্যামেরা সাপোর্ট করে (যেমন ইউএসবি ওয়েবক্যাম), সেগুলোর জন্য ক্যামেরা সিটিএস (CTS) চালানোর সময় অবশ্যই ডিভাইসটি প্লাগ ইন করা থাকতে হবে, অন্যথায় টেস্টগুলো স্বয়ংক্রিয়ভাবে ব্যর্থ হয়ে যাবে। এক্সটার্নাল ক্যামেরার উদাহরণ হলো: লজিটেক এইচডি প্রো ওয়েবক্যাম সি৯২০ এবং মাইক্রোসফট লাইফক্যাম এইচডি-৩০০০

CTS চালানোর সাধারণ নির্দেশাবলীর জন্য CTS-এর ভূমিকা এবং এর উপ-পৃষ্ঠাগুলি দেখুন।

android.hardware.Camera API-এর জন্য CTS পরীক্ষা

এই ক্যামেরা টেস্টগুলো cts/tests/tests/ ফোল্ডারে খুঁজুন:

  • hardware/src/android/hardware/cts/CameraTest.java
  • hardware/src/android/hardware/cts/CameraGLTest.java
  • hardware/src/android/hardware/cts/Camera_SizeTest.java
  • permission/src/android/permission/cts/CameraPermissionTest.java

android.hardware.camera2 API-এর জন্য CTS পরীক্ষা

এই ক্যামেরা টেস্টগুলো cts/tests/tests/ ফোল্ডারে খুঁজুন:

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

CTS ভেরিফায়ার ক্যামেরা পরীক্ষা

এই ক্যামেরা টেস্টগুলো এখানে খুঁজুন: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

ইমেজ টেস্ট স্যুট (ITS) পরীক্ষা

ক্যামেরা ইমেজ টেস্ট স্যুট (ITS) পরীক্ষাগুলো ছবির নির্ভুলতার উপর আলোকপাত করে। পরীক্ষাগুলো সম্পাদন করতে, ইউএসবি-র মাধ্যমে অ্যান্ড্রয়েড ডিভাইসটি সংযুক্ত করে একটি ওয়ার্কস্টেশনে পাইথন স্ক্রিপ্টগুলো চালান।

ক্যামেরা আইটিএস পরিকাঠামো এবং পরীক্ষাগুলো cts/apps/CameraITS ডিরেক্টরিতে অবস্থিত। প্রতিটি পরীক্ষা tests/scene # সাবডিরেক্টরিতে থাকে।

টেস্টগুলো কীভাবে সেট আপ ও রান করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, ক্যামেরা আইটিএস (Camera ITS) দেখুন।

দৃশ্য এবং পরীক্ষার বিবরণের জন্য, ক্যামেরা আইটিএস পরীক্ষাসমূহ দেখুন।

ITS টেস্টগুলো হয় পাস করে অথবা ফেল করে। প্রতিটি সিন ফোল্ডারের সমস্ত বাধ্যতামূলক টেস্ট অবশ্যই পাস করতে হবে। যে টেস্টগুলো বাধ্যতামূলক নয়, সেগুলো ফেল করলেও CtsVerifier এ পাস হিসেবে গণ্য হবে।

ITS এমন সব টেস্ট সিনারিও পরীক্ষা করে যা CTS-এ পরীক্ষা করা হয় না এবং এটি HAL 3.2 টেস্ট প্ল্যানের একটি গুরুত্বপূর্ণ অংশ।

মিডিয়া ফ্রেমওয়ার্ক পরীক্ষা

MediaFrameworkTest-এ ক্যামেরা-সম্পর্কিত সমস্ত মিডিয়া টেস্ট পাস করুন। অনুগ্রহ করে মনে রাখবেন, এই টেস্টগুলো করার জন্য অ্যান্ড্রয়েড ডিভাইসে mediaframeworktest.apk ফাইলটি ইনস্টল করা থাকতে হবে। আপনাকে make mediaframeworktest করতে হবে এবং তারপর adb ব্যবহার করে তৈরি হওয়া .apk ফাইলটি ইনস্টল করতে হবে। উদাহরণস্বরূপ কমান্ডগুলো নিচে দেওয়া হলো।

ক্যামেরা-সম্পর্কিত মিডিয়া ফ্রেমওয়ার্ক টেস্টের শুরুর পথটি হলো: platform/frameworks/base

টেস্টগুলোর সোর্স কোড এখানে খুঁজুন: frameworks/base/media/tests/MediaFrameworkTest

এই পরীক্ষাগুলো সেট আপ করতে:

make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk

যেখানে name ভেরিয়েবলটি বিক্রেতার পণ্য ধারণকারী ডিরেক্টরিকে নির্দেশ করে।

নিম্নলিখিত ডিরেক্টরি বা এর সাবডিরেক্টরিগুলোতে সমস্ত পরীক্ষাগুলো খুঁজুন:

frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest

প্রতিটি সাবডিরেক্টরি এক শ্রেণীর পরীক্ষার প্রতিনিধিত্ব করে:

  • functional/
  • integration/
  • performance/
  • power/
  • stress/
  • unit/

মিডিয়া ফ্রেমওয়ার্ক পরীক্ষা চালান

উপলব্ধ সকল পরীক্ষা দেখতে::

adb shell pm list instrumentation

এর ফলে নিম্নলিখিত ধরনের ফলাফল পাওয়া যাবে:

instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
(target=com.android.mediaframeworktest)

প্রতিটি টেস্ট লাইন থেকে ( instrumentation: এবং (target=com.android.mediaframeworktest) এর মধ্যে থাকা কম্পোনেন্টটি শনাক্ত ও নিষ্কাশন করুন। কম্পোনেন্টটি টার্গেট প্যাকেজের নাম ( com.android.mediaframeworktest ) এবং টেস্ট রানারের নাম ( MediaFramework TestRunner দ্বারা গঠিত। MediaFramework TestRunner )।

উদাহরণস্বরূপ:

com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner

এরপর আপনি প্রতিটি কম্পোনেন্টকে adb shell am instrument এ এইভাবে পাস করতে পারেন:

adb shell am instrument -w component.name

যেখানে component.name উপরে নিষ্কাশিত মানের সমান। উদাহরণস্বরূপ:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

অনুগ্রহ করে মনে রাখবেন, ক্লাস পাথ হলো জাভা প্যাকেজ + ক্লাসের নাম হলেও, ইন্সট্রুমেন্টেশন প্যাকেজটি জাভা প্যাকেজের মতো একই নাও হতে পারে। কম্পোনেন্টের নাম যুক্ত করার সময় নিশ্চিত করুন যে আপনি AndroidManifest.xml প্যাকেজটি ব্যবহার করছেন, সেই জাভা প্যাকেজটি নয় যেখানে টেস্ট রানার ক্লাসটি অবস্থিত।

একই শ্রেণীর পরীক্ষা চালানোর জন্য, -e class পাস করুন। যুক্তি, এইরকম:

adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

একটি টেস্ট ক্লাসের শুধুমাত্র একটি মেথড রান করার জন্য, ক্লাস নামের শেষে একটি পাউন্ড (#) চিহ্ন এবং মেথডের নামটি (এই ক্ষেত্রে, testConnectPro ) যুক্ত করুন, যেমন:

adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

মিডিয়া সেটিংসের কার্যকারিতা পরীক্ষা

এখানে একটি ফাংশনাল টেস্টের নমুনা দেখানো হলো। এই টেস্টটি ক্যামেরা সেটিংসের বিভিন্ন সমন্বয়ের (যেমন, ফ্ল্যাশ, এক্সপোজার, হোয়াইট ব্যালেন্স, সিন, পিকচার সাইজ এবং জিওট্যাগ) মৌলিক কার্যকারিতা যাচাই করে।

টেস্ট কমান্ডটি চালান:

adb shell am instrument -w -r  -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner

মিডিয়া ইন্টিগ্রেশন পরীক্ষা

এখানে একটি ইন্টিগ্রেশন টেস্টের রানের উদাহরণ দেওয়া হলো, এক্ষেত্রে মিডিয়াফ্রেমওয়ার্কটেস্ট/ইন্টেগ্রেশন/ক্যামেরাবাইন্ডারটেস্ট.জাভা এবং মিডিয়াফ্রেমওয়ার্কটেস্ট/ক্যামেরাস্ট্রেসটেস্টরানার.জাভা:

adb  shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'

সফল হলে, এর ফলে নিম্নলিখিত ধরনের আউটপুট পাওয়া যায়:

-----

com.android.mediaframeworktest.integration.CameraBinderTest:...........
Test results for CameraStressTestRunner=...........
Time: 3.328

OK (11 tests)

-----

মিডিয়া পারফরম্যান্স পরীক্ষা

এই প্রিভিউ মেমোরি টেস্টটি ২০০ বার ক্যামেরা প্রিভিউ খুলবে এবং বন্ধ করবে। প্রতি ২০টি পুনরাবৃত্তিতে, পিএস মিডিয়াসার্ভারের স্ন্যাপশট রেকর্ড করা হবে এবং ২০০টি পুনরাবৃত্তির পরে মেমোরি ব্যবহারের পার্থক্য তুলনা করা হবে। পার্থক্য ১৫০কেএম-এর বেশি হলে টেস্টটি ব্যর্থ হবে।

টেস্ট কমান্ডটি চালান:

adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner

আরও বিস্তারিত আউটপুট এখানে পাওয়া যাবে: /sdcard/mediaMemOutput.txt

মিডিয়া ইউনিট পরীক্ষা

ইউনিট টেস্ট চালানোর কমান্ডগুলো সবই একই রকম। উদাহরণস্বরূপ, CameraMetadataTest.java-এর জন্য কমান্ডটি হবে:

adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'

মিডিয়া স্ট্রেস টেস্ট

এই পরীক্ষাটি ক্যামেরার ছবি তোলা এবং ভিডিও রেকর্ডিংয়ের ওপর চাপ সৃষ্টি করার জন্য করা হয়।

টেস্ট কমান্ডটি চালান:

adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner

সকল পরীক্ষায় উত্তীর্ণ হতে হবে।

ম্যানুয়াল টেস্টিংক্যাম পরীক্ষা

নিম্নলিখিত চেকগুলি সম্পন্ন করে TestingCam অ্যাপটি ম্যানুয়ালি চালাতে হবে। TestingCam-এর সোর্স এখানে রয়েছে: pdk/apps/TestingCamera/

ক্যামেরা টিল্টের মাধ্যমে ইনফিনিটি ফোকাস

TestingCam চালু করুন, প্রিভিউ অন করুন এবং নিশ্চিত করুন যে অটোফোকাস মোড ইনফিনিটিতে সেট করা আছে। 'টেক পিকচার' বাটন ব্যবহার করে, ক্যামেরাটি আনুভূমিকভাবে, উপরের দিকে (প্রায় উল্লম্বভাবে) এবং নিচের দিকে (প্রায় উল্লম্বভাবে) তাক করে দূরের কোনো বস্তুর (কমপক্ষে ১০ মিটার দূরে) ছবি তুলুন; উপরের দিকের শটের একটি উদাহরণ হতে পারে নিচ থেকে কোনো গাছের উঁচু পাতা বা ডাল এবং নিচের দিকের শটের একটি উদাহরণ হতে পারে কোনো ভবনের ছাদ থেকে দেখা রাস্তা। সব ক্ষেত্রেই, দূরের বস্তুটি স্পষ্ট এবং ফোকাসে থাকতে হবে। ছবিগুলো সেভ করে গ্যালারি ভিউতে দেখুন, যাতে আপনি জুম ইন করে ছবির স্পষ্টতা আরও সহজে পরীক্ষা করতে পারেন।

উল্লেখ্য যে, VCM অ্যাকচুয়েটরযুক্ত কোনো ক্যামেরাকে এই পরীক্ষায় উত্তীর্ণ হতে হলে, সেটিতে হয় একটি ক্লোজড-লুপ AF কন্ট্রোল সিস্টেম থাকতে হবে, অথবা ক্যামেরার ওরিয়েন্টেশন নির্ধারণের জন্য অ্যাক্সেলেরোমিটার ডেটা-ভিত্তিক কোনো সফটওয়্যার কারেকশনের প্রয়োজন হবে। এছাড়াও লেন্সের ইনফিনিটি পজিশনের নির্ভরযোগ্য ফ্যাক্টরি ক্যালিব্রেশনও প্রয়োজন হবে।

ম্যানুয়াল টেস্টিংক্যাম২ পরীক্ষা

TestingCam2 অ্যাপটি ম্যানুয়ালি চালাতে হবে এবং নিম্নলিখিত চেকগুলি সম্পন্ন করতে হবে। TestingCam2-এর সোর্স এখানে রয়েছে: pdk/apps/TestingCamera2/

JPEG ক্যাপচার

TestingCam2 চালু করুন এবং JPEG বাটনটি চাপুন। ভিউফাইন্ডার ইমেজের ডানদিকে যে ছবিটি প্রদর্শিত হবে, সেটি ভিউফাইন্ডারের মতোই দেখতে হবে, যার মধ্যে ওরিয়েন্টেশনও একই থাকবে।