ক্যামেরা HAL পরীক্ষার চেকলিস্ট

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

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

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

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

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

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

লেটেস্ট অ্যান্ড্রয়েড ক্যামেরার জন্য উপলব্ধ প্রাথমিক ধরনের পরীক্ষা এবং নীচে সংশ্লিষ্ট নির্দেশাবলীর উল্লেখ রয়েছে:

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

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

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

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

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

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

ক্যামেরা CTS পরীক্ষার জন্য শুরুর পথ হল: platform/cts

বাহ্যিক ক্যামেরা সমর্থন করে এমন ডিভাইসগুলির জন্য ক্যামেরা CTS চালানোর সময় (যেমন USB ওয়েবক্যাম), CTS চালানোর সময় আপনার একটি ডিভাইস প্লাগ ইন থাকতে হবে বা পরীক্ষাগুলি স্বয়ংক্রিয়ভাবে ব্যর্থ হবে। বাহ্যিক ক্যামেরার উদাহরণগুলির মধ্যে রয়েছে: Logitech HD Pro ওয়েবক্যাম C920 এবং Microsoft LifeCam HD-3000

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) পরীক্ষাগুলি ছবির সঠিকতার উপর ফোকাস করে। পরীক্ষাগুলি সম্পাদন করতে, USB এর মাধ্যমে সংযুক্ত Android ডিভাইসের সাথে একটি ওয়ার্কস্টেশনে পাইথন স্ক্রিপ্টগুলি চালান৷

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

পরীক্ষাগুলি কীভাবে সেট আপ এবং চালাতে হয় সে সম্পর্কে আরও তথ্যের জন্য, ক্যামেরা আইটিএস দেখুন।

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

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

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

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

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

ক্যামেরা-সম্পর্কিত মিডিয়া ফ্রেমওয়ার্ক পরীক্ষার জন্য শুরুর পথ হল: 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 ক্লাস পাস করুন যুক্তি, যেমন:

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

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

এখানে একটি কার্যকরী পরীক্ষা চালানোর একটি উদাহরণ। এই পরীক্ষাটি ক্যামেরা সেটিংসের বিভিন্ন সমন্বয়ের মৌলিক কার্যকারিতা যাচাই করে। (যেমন, ফ্ল্যাশ, এক্সপোজার, WB, দৃশ্য, ছবির আকার এবং জিওট্যাগ)

পরীক্ষা কমান্ড চালান:

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

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

এখানে একটি ইন্টিগ্রেশন টেস্ট চালানোর একটি উদাহরণ দেওয়া হল, এই ক্ষেত্রে mediaframeworktest/integration/CameraBinderTest.java এবং mediaframeworktest/CameraStressTestRunner.java:

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)

-----

মিডিয়া কর্মক্ষমতা পরীক্ষা

এই প্রিভিউ মেমরি টেস্টটি 200 বার ক্যামেরা প্রিভিউ খুলবে এবং প্রকাশ করবে। প্রতিটি 20টি পুনরাবৃত্তিতে, ps মিডিয়াসার্ভারের স্ন্যাপশট রেকর্ড করা হবে এবং এটি 200টি পুনরাবৃত্তির পরে মেমরি ব্যবহারের ভিন্নতার তুলনা করবে। পার্থক্য 150kM এর বেশি হলে পরীক্ষা ব্যর্থ হবে।

পরীক্ষা কমান্ড চালান:

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 অ্যাপটি ম্যানুয়ালি সঞ্চালিত নিম্নলিখিত চেকগুলির সাথে চালানো উচিত। টেস্টিংক্যামের উৎস এখানে: pdk/apps/TestingCamera/

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

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

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

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

TestingCam2 অ্যাপটি ম্যানুয়ালি চালানো উচিত, নিম্নলিখিত পরীক্ষাগুলি সম্পাদিত করা হয়েছে৷ TestingCam2 এর উৎস এখানে: pdk/apps/TestingCamera2/

JPEG ক্যাপচার

TestingCam2 শুরু করুন এবং JPEG বোতাম টিপুন। ভিউফাইন্ডার চিত্রের ডানদিকে যে চিত্রটি প্রদর্শিত হবে সেটি একই অভিযোজন সহ ভিউফাইন্ডারের মতোই প্রদর্শিত হবে।