এই নথিতে অ্যান্ড্রয়েড ক্যামেরা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) মূল্যায়নের জন্য উপলব্ধ সমস্ত পরীক্ষার তালিকা রয়েছে৷ এটি অরিজিনাল ইকুইপমেন্ট ম্যানুফ্যাকচারার (OEMs) এবং অ্যাপ্লিকেশন প্রসেসর (AP) ভেন্ডরদের জন্য তৈরি যাতে তারা ন্যূনতম ত্রুটি সহ ক্যামেরা HAL এর যথাযথ বাস্তবায়ন নিশ্চিত করতে পারে। যদিও এটি অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (সিটিএস) এর একটি স্বেচ্ছাসেবী সংযোজন, এটি ক্যামেরা পরীক্ষার কভারেজকে ব্যাপকভাবে বৃদ্ধি করে এবং অবশ্যই সম্ভাব্য বাগ শনাক্ত করবে।
এই পরীক্ষাগুলি পাস করার মাধ্যমে, OEMগুলি যাচাই করে যে তারা Android ক্যামেরা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) 3 ইন্টারফেসগুলিকে সঠিকভাবে সংহত করেছে কিনা৷ চেকলিস্টের সমস্ত আইটেমগুলির সাথে সামঞ্জস্যপূর্ণ হলে, Android ক্যামেরা HAL ইন্টারফেসের ক্ষেত্রে একটি ডিভাইস বাস্তবায়ন সম্পূর্ণরূপে বিবেচিত হতে পারে। এটি একটি ডিভাইসকে android.hardware.camera2
প্যাকেজটিকে সঠিকভাবে সমর্থন করতে সক্ষম করবে যা ক্যামেরা অ্যাপগুলি তৈরি করে৷
ক্যামেরা HAL3 স্পেসিফিকেশন
অ্যান্ড্রয়েড ক্যামেরা HAL3 স্পেসিফিকেশন হল তথ্যের প্রামাণিক উৎস যা ডিভাইসগুলিকে সন্তুষ্ট করতে হবে; এই পৃষ্ঠাটি একটি চেকলিস্ট হিসাবে ব্যবহার করা যেতে পারে এমন সমস্ত পরীক্ষার একটি সারাংশ প্রদান করে। ক্যামেরা HAL বাস্তবায়নকারীদের (যেমন AP বিক্রেতাদের) ক্যামেরা HAL3 স্পেসিফিকেশন লাইন-বাই-লাইনের মধ্য দিয়ে যেতে হবে এবং নিশ্চিত করতে হবে যে তাদের ডিভাইসগুলি এটির সাথে সামঞ্জস্যপূর্ণ।
বর্তমান HAL স্পেসিফিকেশনটি Android 5.0 এবং পরবর্তী জেনেরিক অ্যান্ড্রয়েড প্ল্যাটফর্ম ডেভেলপমেন্ট কিট (PDK) এর মধ্যে এই ফাইলগুলিতে সংজ্ঞায়িত করা হয়েছে:
- ক্যামেরা HAL 3.x ইন্টারফেস এবং স্পেক :
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- ক্যামেরা HAL 3.x মেটাডেটা স্পেক :
system/media/camera/docs/docs.html
- এইচএএল পিক্সেল ফরম্যাট ইন্টারফেস এবং বিশেষত্ব:
system/core/libsystem/include/system/graphics.h
ক্যামেরা পরীক্ষার ধরন
লেটেস্ট অ্যান্ড্রয়েড ক্যামেরার জন্য উপলব্ধ প্রাথমিক ধরনের পরীক্ষা এবং নীচে সংশ্লিষ্ট নির্দেশাবলীর উল্লেখ রয়েছে:
- ভেন্ডর টেস্ট স্যুট (VTS) : এমন পরীক্ষা যা সরাসরি ক্যামেরা HAL ইন্টারফেস পরীক্ষা করে
- কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) : ডিভাইসের সামঞ্জস্য নিশ্চিত করতে স্ট্যান্ডার্ড, স্বয়ংক্রিয় অ্যান্ড্রয়েড পরীক্ষা - CTS পরিচিতি এবং ট্রেড ফেডারেশন ওভারভিউ দেখুন
- ইমেজ টেস্ট স্যুট (ITS) : ইমেজ সঠিকতা নিশ্চিত করতে ম্যানুয়ালি পরীক্ষা চালান - সেটআপ নির্দেশাবলীর জন্য শীর্ষ-স্তরের এবং পরীক্ষা-নির্দিষ্ট
README
ফাইল এবংtutorial.py
- ম্যানুয়াল টেস্টিংক্যাম পরীক্ষা :
pdk/apps/TestingCamera/
-এ উত্স থেকে চালান - ম্যানুয়াল টেস্টিংক্যাম২.১ পরীক্ষা :
pdk/apps/TestingCamera2/
-এ উৎস থেকে চালান
এই সমস্ত পরীক্ষার প্রকারগুলি নীচে বিশদে বর্ণনা করা হয়েছে। এই পরীক্ষাগুলি কালানুক্রমিক ক্রমে উপস্থাপিত হয় যেখানে 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 #
সাবডিরেক্টরিতে থাকে।
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
cd CameraITS
source build/envsetup.sh
পরীক্ষাগুলি কীভাবে সেট আপ এবং চালাতে হয় সে সম্পর্কে আরও তথ্যের জন্য, cts cts/apps/CameraITS
এ CameraITS
PDF ফাইলটি দেখুন। স্ক্রিপ্টগুলি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে একটি গাইডের জন্য tests
সাবডিরেক্টরিতে tutorial.py
দেখুন।
আইটিএস পরীক্ষার জন্য একটি লিনাক্স পরিবেশ প্রয়োজন। আইটিএস পরীক্ষা চালানোর জন্য প্রয়োজনীয় নির্দিষ্ট পাইথন সংস্করণগুলির বিশদ বিবরণের জন্য, রিলিজের জন্য CameraITS
পিডিএফ ফাইল বা অ্যান্ড্রয়েড 12 এর জন্য অ্যান্ড্রয়েড 12 রিলিজ নোটগুলি দেখুন।
স্ট্যাটিক দৃশ্যের জন্য প্রস্তাবিত সেটআপটি ক্যামেরা আইটিএস-ইন-এ-বক্সে বর্ণনা করা হয়েছে। সেন্সর_ফিউশন দৃশ্যের জন্য প্রস্তাবিত সেটআপটি সেন্সর ফিউশন বক্স কুইক স্টার্ট গাইডে বর্ণনা করা হয়েছে।
আইটিএস ম্যানুয়ালি চালানোর জন্য, একটি নির্দিষ্ট, পুনঃব্যবহারযোগ্য লক্ষ্য যেমন একটি সাদা প্রাচীর, একটি ধূসর কার্ড এবং একটি ডেস্ক ল্যাম্প সহ একটি সাধারণ শারীরিক পরিবেশ প্রস্তুত করুন। একটি ট্রাইপডে অ্যান্ড্রয়েড ডিভাইস মাউন্ট করুন এবং ক্যামেরা ফাংশন পরীক্ষা করতে স্ক্রিপ্ট চালান। বেশিরভাগ পরীক্ষায় পাস বা ফেল হয় কিন্তু কিছু মেট্রিক্স অফার করে।
এই স্ক্রিপ্টগুলি পরীক্ষা করে এমন পরিস্থিতি যা CTS-এ পরীক্ষা করা হয় না এবং HAL 3.2 পরীক্ষার পরিকল্পনার একটি গুরুত্বপূর্ণ উপাদান।
ITS পরীক্ষা হয় পাস বা ফেল। প্রতিটি দৃশ্য ফোল্ডারে সমস্ত বাধ্যতামূলক পরীক্ষা অবশ্যই পাস করতে হবে। যে পরীক্ষাগুলি বাধ্যতামূলক নয় সেগুলি ব্যর্থ হতে পারে এবং এখনও CtsVerifier
এ পাস হিসাবে গণনা করতে পারে৷
দৃশ্য এবং পরীক্ষার বিবরণের জন্য, ক্যামেরা আইটিএস পরীক্ষা দেখুন।
মিডিয়া ফ্রেমওয়ার্ক পরীক্ষা
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 বোতাম টিপুন। ভিউফাইন্ডার চিত্রের ডানদিকে যে চিত্রটি প্রদর্শিত হবে সেটি একই অভিযোজন সহ ভিউফাইন্ডারের মতোই প্রদর্শিত হবে।