এই পৃষ্ঠাটি ক্যামেরা ইমেজ টেস্ট স্যুট (ITS) এর অধীনে পরীক্ষাগুলির একটি বিস্তৃত তালিকা প্রদান করে, যা অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) যাচাইকারীর অংশ। আইটিএস পরীক্ষাগুলি কার্যকরী পরীক্ষা, যার অর্থ তারা চিত্রের গুণমান পরিমাপ করে না, তবে বিজ্ঞাপনের সমস্ত ক্যামেরা ফাংশন প্রত্যাশিত হিসাবে কাজ করছে। এই নথিটি বিকাশকারী এবং পরীক্ষকদের পৃথক পরীক্ষাগুলি কী করে এবং কীভাবে পরীক্ষা ব্যর্থতাগুলি ডিবাগ করতে হয় তা বুঝতে দেয়৷
ক্যামেরা আইটিএস গেটগুলি প্রয়োজনীয় ক্যামেরা বৈশিষ্ট্য, API স্তর এবং মিডিয়া পারফরম্যান্স ক্লাস (MPC) স্তর দ্বারা পরীক্ষা করে। API স্তরের জন্য, ITS ব্যবহার করে ro.product.first_api_level
একটি নির্দিষ্ট API স্তরে যোগ করা গেট পরীক্ষা যা নিম্ন API স্তরের কার্যকারিতার জন্য নেতিবাচক ব্যবহারকারীর অভিজ্ঞতার জন্য পরীক্ষা করে। ITS ro.vendor.api_level
ব্যবহার করে একটি নির্দিষ্ট API স্তরে যোগ করা বৈশিষ্ট্যগুলির জন্য গেট পরীক্ষা করার জন্য যার জন্য নতুন হার্ডওয়্যার ক্ষমতা প্রয়োজন। যদি ro.odm.build.media_performance_class
একটি ডিভাইসের জন্য সংজ্ঞায়িত করা হয়, তাহলে MPC স্তরের উপর নির্ভর করে ITS-এর জন্য নির্দিষ্ট পরীক্ষা চালানো প্রয়োজন।
পরীক্ষাগুলি দৃশ্য অনুসারে গোষ্ঠীভুক্ত করা হয়েছে:
- দৃশ্য0 : ক্যাপচার মেটাডেটা, জিটার, জাইরোস্কোপ, কম্পন
- দৃশ্য1 : এক্সপোজার, সংবেদনশীলতা, ইভি ক্ষতিপূরণ, YUV বনাম JPEG/RAW
- দৃশ্য 2 : মুখ শনাক্তকরণ, রঙের দৃশ্যের প্রয়োজন পরীক্ষা
- দৃশ্য 3 : প্রান্ত বর্ধন, লেন্স আন্দোলন
- দৃশ্য 4 : আকৃতির অনুপাত, ক্রপিং, ফিল্ড-অফ-ভিউ
- দৃশ্য 5 : লেন্স শেডিং
- দৃশ্য 6 : জুম
- দৃশ্য7 : মাল্টি ক্যামেরা সুইচ
- দৃশ্য8 : AE এবং AWB অঞ্চল পরিমাপ
- দৃশ্য 9 : JPEG কম্প্রেশন
- দৃশ্য_এক্সটেনশন : ক্যামেরা এক্সটেনশন
- দৃশ্য_ফ্ল্যাশ : অটোফ্ল্যাশ, মিনিট ফ্রেম রেট
- দৃশ্য_ভিডিও : ফ্রেম ড্রপস
- সেন্সর_ফিউশন : ক্যামেরা/জাইরোস্কোপ টাইমিং অফসেট
- ফিচার_কম্বিনেশন : ফিচার কম্বিনেশন
প্রতিটি দৃশ্যের বর্ণনার জন্য পৃথক বিভাগ দেখুন।
দৃশ্য0
Scene0 পরীক্ষার জন্য কোনো নির্দিষ্ট দৃশ্যের তথ্যের প্রয়োজন হয় না। যাইহোক, জাইরোস্কোপ এবং ভাইব্রেশন পরীক্ষার জন্য ফোনটি অবশ্যই স্থির থাকতে হবে।
টেস্ট_জিটার
ক্যামেরার টাইমস্ট্যাম্পে জিটার পরিমাপ করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
পাস: ফ্রেমের মধ্যে কমপক্ষে 30 ms ডেল্টা আছে।
test_jitter_plot.png (ছোট y-অক্ষ পরিসরটি লক্ষ্য করুন। এই প্লটে জিটার আসলে ছোট।)
test_metadata
মেটাডেটা এন্ট্রির বৈধতা পরীক্ষা করে। ক্যাপচার ফলাফল এবং ক্যামেরা বৈশিষ্ট্য বস্তুর দিকে তাকান. এই পরীক্ষাটি auto_capture_request
এক্সপোজার ব্যবহার করে এবং মান অর্জন করে কারণ ছবির বিষয়বস্তু গুরুত্বপূর্ণ নয়।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
পাস: হার্ডওয়্যার লেভেল, rollingShutterSkew
, frameDuration
ট্যাগ, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, এফওভি, হাইপারফোকাল দূরত্ব বিদ্যমান এবং বৈধ মান রয়েছে।
test_request_capture_match
পরীক্ষা করে যে ডিভাইসটি সঠিক এক্সপোজার লেখে এবং ক্যাপচার মেটাডেটা ফিরে পড়ে মান অর্জন করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
পাস: অনুরোধ এবং ক্যাপচার মেটাডেটা মান সমস্ত শট জুড়ে মেলে।
পরীক্ষা_সেন্সর_ইভেন্ট
সেন্সর ফিউশন সমর্থনের বিজ্ঞাপন দেয় এমন ডিভাইসগুলির জন্য সেন্সর ইভেন্টগুলি পরীক্ষা করে এবং সেন্সর ইভেন্টগুলি প্রিন্ট করে। প্রত্যাশিত সেন্সরগুলি হল অ্যাক্সিলোমিটার, জাইরোস্কোপ এবং ম্যাগনেটোমিটার। এই পরীক্ষাটি শুধুমাত্র তখনই কাজ করে যখন স্ক্রিন চালু থাকে, মানে ডিভাইসটি স্ট্যান্ডবাই মোডে না থাকে।
APIs পরীক্ষিত:
পাস: প্রতিটি সেন্সরের জন্য ইভেন্ট প্রাপ্ত হয়.
টেস্ট_সলিড_রং_পরীক্ষা_প্যাটার্ন
ক্যামেরা নিঃশব্দের জন্য কঠিন রঙের পরীক্ষার প্যাটার্নগুলি সঠিকভাবে তৈরি করা হয়েছে এমন পরীক্ষা। ক্যামেরা নিঃশব্দ সমর্থিত হলে, কঠিন রঙ পরীক্ষা নিদর্শন সমর্থিত হতে হবে। ক্যামেরা মিউট করা সমর্থিত না হলে, ক্ষমতার বিজ্ঞাপন দিলেই কঠিন রঙের পরীক্ষার প্যাটার্নগুলি পরীক্ষা করা হয়।
যদি RAW ইমেজ সমর্থিত হয়, রঙের অ্যাসাইনমেন্টও পরীক্ষা করা হয়। পরীক্ষিত রং হল কালো, সাদা, লাল, নীল এবং সবুজ। RAW ছবি সমর্থন করে না এমন ক্যামেরাগুলির জন্য, শুধুমাত্র কালো পরীক্ষা করা হয়।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
পাস: সলিড টেস্ট প্যাটার্ন সমর্থিত সঠিক রঙ এবং ছবিতে কম বৈচিত্র্য রয়েছে।
পরীক্ষা_পরীক্ষা_প্যাটার্ন
প্রতিটি বৈধ পরীক্ষার প্যাটার্নের জন্য ফ্রেমগুলি ক্যাপচার করতে android.sensor.testPatternMode
প্যারামিটার পরীক্ষা করে এবং ফ্রেমগুলি কঠিন রঙ এবং রঙের বারগুলির জন্য সঠিকভাবে তৈরি হয়েছে কিনা তা পরীক্ষা করে। এই পরীক্ষায় নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত রয়েছে:
- সমস্ত সমর্থিত পরীক্ষার নিদর্শনগুলির জন্য চিত্রগুলি ক্যাপচার করে৷
- কঠিন রঙ পরীক্ষার প্যাটার্ন এবং রঙের বারগুলির জন্য একটি সহজ সঠিকতা পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
পাস: সমর্থিত পরীক্ষার নিদর্শন সঠিকভাবে তৈরি করা হয়।
test_test_patterns_2.jpg
test_tonemap_curve
রৈখিক টোনম্যাপ সহ RAW থেকে YUV-তে পরীক্ষার প্যাটার্নের রূপান্তর পরীক্ষা করে। টোনম্যাপ রূপান্তরের জন্য একটি নিখুঁত চিত্র প্যাটার্ন তৈরি করতে এই পরীক্ষার জন্য android.sensor.testPatternMode = 2
(COLOR_BARS) প্রয়োজন। পাইপলাইনে রৈখিক টোনম্যাপ এবং আদর্শ ইমেজ ইনপুট সহ সঠিক রঙের আউটপুট রয়েছে ( test_test_patterns
উপর নির্ভর করে) নিশ্চিত করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
পাস: YUV এবং RAW একে অপরের মতো দেখতে।
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
ইমেজ এবং মোশন সেন্সর ইভেন্ট একই সময়ে ডোমেনে আছে কিনা তা পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
পাস: মোশন টাইমস্ট্যাম্প দুটি ছবির টাইমস্ট্যাম্পের মধ্যে থাকে।
পরীক্ষা_কম্পন_সীমাবদ্ধতা
ডিভাইসের কম্পন প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
পাস: ক্যামেরা অডিও সীমাবদ্ধতা API দ্বারা নিঃশব্দ করা হলে ডিভাইসটি কম্পিত হয় না।
দৃশ্য1
দৃশ্য 1 একটি ধূসর চার্ট। ধূসর চার্টটি অবশ্যই ক্যামেরার দৃশ্যের ক্ষেত্রটির 30% কেন্দ্র কভার করবে৷ ধূসর চার্টটি 3A (অটো এক্সপোজার, অটো হোয়াইট ব্যালেন্স, অটো ফোকাস) মাঝারিভাবে চ্যালেঞ্জ করবে বলে আশা করা হচ্ছে কারণ কেন্দ্র অঞ্চলে কোনো বৈশিষ্ট্য নেই। যাইহোক, ক্যাপচার অনুরোধ পুরো দৃশ্যটি নির্দিষ্ট করে যা 3A-এর একত্রিত হওয়ার জন্য পর্যাপ্ত বৈশিষ্ট্য অন্তর্ভুক্ত করে।
RFoV ক্যামেরাগুলি WFoV বা RFoV টেস্ট রিগ-এ পরীক্ষা করা যেতে পারে। যদি WFoV টেস্ট রিগে একটি RFoV ক্যামেরা পরীক্ষা করা হয়, তাহলে চার্টটি ⅔ দ্বারা স্কেল করা হয় যাতে 3A কে একত্রিত হতে সাহায্য করার জন্য FoV-এ ধূসর চার্টের জন্য কিছু সীমানা নিশ্চিত করা হয়। ক্যামেরা পরীক্ষার রিগগুলির আরও বিশদ বিবরণের জন্য, ক্যামেরা আইটিএস-ইন-এ-বক্স দেখুন।
দৃশ্য1: পূর্ণ আকারের চার্ট (বামে)। ⅔ স্কেল করা চার্ট (ডানদিকে)।
test_ae_precapture_trigger
প্রিক্যাপচার ট্রিগার ব্যবহার করার সময় AE স্টেট মেশিন পরীক্ষা করে। AE অক্ষম সহ পাঁচটি ম্যানুয়াল অনুরোধ ক্যাপচার করে। শেষ অনুরোধে একটি AE প্রিক্যাপচার ট্রিগার রয়েছে, যেটিকে উপেক্ষা করা উচিত কারণ AE অক্ষম করা হয়েছে৷
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
পাস: AE একত্রিত হয়।
test_auto_vs_manual
স্বয়ংক্রিয় এবং ম্যানুয়াল শট ক্যাপচার করা পরীক্ষাগুলি একই দেখায়।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
পাস: ক্যামেরার 3A অ্যালগরিদম থেকে স্বয়ংক্রিয় সাদা ব্যালেন্স estimate
সাথে মেলে প্রতিটি ক্যাপচার ফলাফলে ম্যানুয়াল হোয়াইট ব্যালেন্স লাভ এবং ট্রান্সফর্ম।
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
পরীক্ষা_কালো_সাদা
পরীক্ষা করে যে ডিভাইসটি সম্পূর্ণ কালো এবং সাদা ছবি তৈরি করে। দুটি ক্যাপচার নেয়, প্রথমটি অত্যন্ত কম লাভ এবং সংক্ষিপ্ত এক্সপোজার সহ, যার ফলে একটি কালো ফটো হয় এবং দ্বিতীয়টি অত্যন্ত উচ্চ লাভ এবং দীর্ঘ এক্সপোজার সহ, যার ফলে একটি সাদা ফটো হয়৷
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
পাস: কালো এবং সাদা ছবি তৈরি করে। সাদা ইমেজের স্যাচুরেটেড চ্যানেলের আরজিবি মান রয়েছে [255, 255, 255] যার ত্রুটির মার্জিন 1% এর কম পার্থক্য রয়েছে।
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_capture
যাচাই করে যে পুরো ক্যাপচার পাইপলাইনটি ফুলসাইজ ক্যাপচার এবং CPU সময়ের গতির সাথে চলতে পারে।
APIs পরীক্ষিত:
পাস: পূর্ণ আকারের চিত্রগুলির একটি বিস্ফোরণ ক্যাপচার করে, ফ্রেম ড্রপ এবং ছবির উজ্জ্বলতা পরীক্ষা করে৷
test_burst_samameness_manual
ম্যানুয়াল ক্যাপচার সেটিং সহ 50টি চিত্রের 5টি বিস্ফোরণ নেয় এবং সেগুলি সব অভিন্ন কিনা তা পরীক্ষা করে৷ এই পরীক্ষাটি শনাক্ত করতে ব্যবহার করা যেতে পারে যে বিক্ষিপ্ত ফ্রেমগুলি আলাদাভাবে প্রক্রিয়া করা হয়েছে বা নিদর্শন রয়েছে কিনা।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
পাস: চিত্রগুলি দৃশ্যত এবং RGB মানগুলিতে অভিন্ন৷
ব্যর্থ: প্রতিটি বিস্ফোরণের শুরুতে RGB গড় চার্টের একটি স্পাইক বা ড্রপ দেখায়
-
first_API_level
<30 এর জন্য সহনশীলতা 3% -
first_API_level
>= 30 এর জন্য সহনশীলতা 2%
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
পরীক্ষা_ক্যাপচার_ফলাফল
পরীক্ষা করে যে বৈধ ডেটা CaptureResult
অবজেক্টে ফিরে আসে। একটি স্বয়ংক্রিয়, ম্যানুয়াল, এবং স্বয়ংক্রিয় ক্যাপচার করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
পাস: মেটাডেটা সমস্ত ক্যাপচারের জন্য বৈধ এবং ম্যানুয়াল সেটিংস দ্বিতীয় স্বয়ংক্রিয় ক্যাপচারে ফাঁস হয় না। ক্যাপচারের জন্য লেন্স শেডিং সংশোধন প্লট আউট.
test_capture_result_plot_lsc_auto_ch0.png
পরীক্ষা_ফসলের_অঞ্চল_কাঁচা
পরীক্ষা করে যে RAW স্ট্রীম ক্রপযোগ্য নয়।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
পাস: YUV ছবিগুলি কেন্দ্রে কাটা হয় কিন্তু RAW ছবি নয়৷
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
পরীক্ষা_ফসলের_অঞ্চল
ক্রপ অঞ্চল কাজ করে যে পরীক্ষা. একটি সম্পূর্ণ চিত্র নেয় এবং 5টি ভিন্ন অঞ্চলের প্যাচ তৈরি করে (কোণা এবং কেন্দ্র।) 5টি অঞ্চলের জন্য ক্রপ সেট সহ ছবি তোলে। প্যাচ এবং ক্রপ ছবির মান তুলনা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
পাস: ক্রপ করা অঞ্চলের চিত্রটি প্যাচের সাথে মেলে যা ক্রপ চিত্রের সাথে মিলে যায়।
test_dng_noise_model
DNG কাঁচা মডেলের প্যারামিটার সঠিক কিনা তা যাচাই করে। প্লটটি বিভিন্ন সংবেদনশীলতার পরিসরে ক্যাপচার করা কাঁচা শটগুলিতে ধূসর কার্ডের একটি কেন্দ্রের প্যাচের পরিমাপিত বৈচিত্র্যকে চিত্রিত করে এবং ক্যামেরা HAL-তে DNG নয়েজ মডেলের দ্বারা প্রতিটি সংবেদনশীলতায় প্রত্যাশিত বৈচিত্রের সাথে এই মানগুলির তুলনা করে (এর উপর ভিত্তি করে O,S পরামিতি ক্যাপচার ফলাফল অবজেক্টে ফেরত)। DNG নয়েজ মডেলের আরও বিশদ বিবরণের জন্য, DNG নয়েজ মডেলে নিম্নলিখিত নথিটি ডাউনলোড করুন।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
পাস: DNG কাঁচা মডেলের পরামিতি সঠিক। প্রত্যাশিত RGB মান পরিমাপ করা প্রকৃত RGB মানের সাথে মেলে।
test_dng_noise_model_plog.png
পরীক্ষা_ইভি_ক্ষতিপূরণ_উন্নত
পরীক্ষা করে যে এক্সপোজার মান (EV) ক্ষতিপূরণ প্রয়োগ করা হয়েছে। পরীক্ষাটি আটটি ধাপে এক্সপোজার বাড়ায় এবং প্রত্যাশিত উজ্জ্বলতার বিপরীতে পরিমাপকৃত উজ্জ্বলতা পরীক্ষা করে। প্রত্যাশিত মানগুলি কোনও EV ক্ষতিপূরণ প্রয়োগ না করে ছবির উজ্জ্বলতা থেকে গণনা করা হয় এবং যদি গণনা করা মানগুলি প্রকৃত চিত্র মান পরিসীমা অতিক্রম করে তবে প্রত্যাশিত মান পরিপূর্ণ হবে৷ পরীক্ষা ব্যর্থ হয় যদি প্রত্যাশিত মান এবং পরিমাপ করা মানগুলি মেলে না বা পাঁচটি ধাপের মধ্যে ছবিগুলি অতিরিক্ত প্রকাশ করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
পাস: চিত্রগুলি পাঁচটি ধাপের মধ্যে অতিরিক্ত এক্সপোজার ছাড়াই ক্রমবর্ধমান এক্সপোজার দেখায়৷
test_ev_compensation_advanced_plot_means.png
পরীক্ষা_ইভি_ক্ষতিপূরণ_বেসিক
পরীক্ষা করে যে EV ক্ষতিপূরণটি CONTROL_AE_COMPENSATION_STEP
এর সাথে তৈরি একটি পরিসর ব্যবহার করে প্রয়োগ করা হয়েছে। প্রতিটি ক্ষতিপূরণ মূল্যে আটটি ফ্রেম ক্যাপচার করা হয়।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
পাস: EV ক্ষতিপূরণ সেটিং বৃদ্ধির সাথে লুমাতে ক্যাপচার বৃদ্ধি পায় এবং প্রতিটি EV ক্ষতিপূরণ সেটিং এর জন্য ক্যাপচার করা আটটি ফ্রেমের স্থিতিশীল লুমা মান রয়েছে।
test_ev_compensation_basic.png
test_exposure_x_iso
পরীক্ষা করে যে একটি ধ্রুবক এক্সপোজার ISO হিসাবে অর্জন করা হয় এবং এক্সপোজার সময় পরিবর্তিত হয়। একে অপরের ভারসাম্য বজায় রাখার জন্য ISO এবং এক্সপোজার সময় বেছে নেওয়া শটগুলির একটি সিরিজ নেয়। ফলাফলগুলির উজ্জ্বলতা একই হওয়া উচিত, তবে ক্রম অনুসারে চিত্রটি আরও শোরগোল হওয়া উচিত। নমুনা পিক্সেল গড় মান একে অপরের কাছাকাছি যাচাই করে। নিশ্চিত করে যে ছবিগুলি 0 বা 1 এ আটকানো নেই (যা সেগুলিকে ফ্ল্যাট লাইনের মতো দেখাবে)। পরীক্ষাটি আপনার কনফিগারেশন ফাইলে debug
পতাকা সেট করে RAW চিত্রগুলির সাথেও চালানো যেতে পারে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
পাস: চিত্রগুলির উজ্জ্বলতা একই, তবে উচ্চতর আইএসওর সাথে আরও শোরগোল পান৷ আরজিবি প্লেনগুলি সমতল হয় যখন পরীক্ষিত লাভ স্পেসের উপর ISO*এক্সপোজারের মান স্থির থাকে।
ব্যর্থ প্রক্রিয়া:
-
test_exposure_plot_means.png
তে, লাভ গুণক মান (x-অক্ষ) বৃদ্ধির সাথে সাথে স্বাভাবিককৃত RGB সমতল গড় মান (y-অক্ষ) কম লাভ গুণক মান থেকে বিচ্যুত হতে শুরু করে।
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
YUV ইমেজ এবং ডিভাইস JPEG ইমেজ রূপান্তরিত পরীক্ষা একই দেখায়। পরীক্ষাটি চিত্রের 10% কেন্দ্রে নেয় এবং RGB মান গণনা করে এবং সেগুলি মিলেছে কিনা তা যাচাই করে৷
APIs পরীক্ষিত:
পাস: প্রতিটি ছবির মধ্যে গড় RGB পার্থক্য 3% এর কম।
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
পরীক্ষা করে যে সেটিংস (এক্সপোজার এবং লাভ) FULL
এবং LEVEL_3
ক্যামেরার জন্য সঠিক ফ্রেমে ল্যাচ করে। ব্যাক-টু-ব্যাক অনুরোধগুলি ব্যবহার করে শটগুলির একটি সিরিজ নেয়, শটগুলির মধ্যে ক্যাপচার অনুরোধের পরামিতিগুলিকে আলাদা করে৷ ইমেজ প্রত্যাশিত বৈশিষ্ট্য আছে কিনা পরীক্ষা করে.
APIs পরীক্ষিত:
পাস: ছবিগুলি [2, 3, 6, 8, 10, 12, 13] ISO বা এক্সপোজার বাড়িয়েছে এবং test_latching_plot_means.png
এ উচ্চতর RGB মানে দেখানো হয়েছে।
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
পরীক্ষা করে যে ডিভাইস প্রক্রিয়াকরণ লিনিয়ার পিক্সেলে উল্টানো যেতে পারে। একটি অভিন্ন লক্ষ্যে নির্দেশিত ডিভাইসের সাথে শটের একটি ক্রম ক্যাপচার করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
পাস: R, G, B মান অবশ্যই বর্ধিত সংবেদনশীলতার সাথে রৈখিকভাবে বৃদ্ধি পাবে।
test_linearity_plot_means.png
test_locked_burst
3A লক এবং YUV বার্স্ট পরীক্ষা করে (স্বয়ংক্রিয় সেটিং ব্যবহার করে)। MANUAL_SENSOR
বা PER_FRAME_CONTROLS
নেই এমন সীমিত ডিভাইসগুলিতেও এই পরীক্ষাটি পাস করার জন্য ডিজাইন করা হয়েছে৷ CTS-এ ফ্রেম রেট চেক করার সময় পরীক্ষা YUV ছবির সামঞ্জস্যতা পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
পাস: ক্যাপচারগুলি সামঞ্জস্যপূর্ণ দেখাচ্ছে।
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
পরীক্ষা_পরম_রং_সংশোধন
পরীক্ষা করে যে android.colorCorrection.*
প্যারামিটারগুলি সেট করার সময় প্রয়োগ করা হয়। বিভিন্ন রূপান্তর এবং লাভের মান সহ শট নেয়, এবং পরীক্ষা করে যে তারা অনুরূপভাবে ভিন্ন দেখায়। আউটপুট ক্রমবর্ধমান লাল বা নীল করার জন্য রূপান্তর এবং লাভগুলি বেছে নেওয়া হয়। একটি রৈখিক টোনম্যাপ ব্যবহার করে। টোন ম্যাপিং হল এমন একটি কৌশল যা ইমেজ প্রসেসিং-এ ব্যবহার করা হয় একটি রঙের একটি সেটকে অন্য রঙের সাথে ম্যাপ করার জন্য একটি মাধ্যম যা একটি আরও সীমিত গতিশীল পরিসীমা আছে উচ্চ-ডাইনামিক-রেঞ্জের চিত্রগুলির আনুমানিক উপস্থিতি।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
পাস: রূপান্তর অনুসারে R এবং B মানগুলি বৃদ্ধি পায়।
test_param_color_correction_plot_means.png
*এক্স-অক্ষ হল ক্যাপচার অনুরোধ: 0 = ঐক্য, 1=লাল বুস্ট, 2= নীল বুস্ট
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (আর বুস্ট)
test_param_color_correction_req=2.jpg (B বুস্ট)
test_param_flash_mode
পরীক্ষা করে যে android.flash.mode
প্যারামিটার প্রয়োগ করা হয়েছে। ম্যানুয়ালি এক্সপোজারটিকে অন্ধকার দিকে সেট করে, যাতে এটি স্পষ্ট হয় যে ফ্ল্যাশ ফায়ার হয়েছে কি না, এবং একটি লিনিয়ার টোনম্যাপ ব্যবহার করে৷ ফ্ল্যাশ ফায়ার হয়েছে কিনা তা যাচাই করতে একটি বড় গ্রেডিয়েন্ট তৈরি করা হয়েছে কিনা তা দেখতে টাইল ইমেজ সহ কেন্দ্রটি পরীক্ষা করে।
APIs পরীক্ষিত:
পাস: টাইল চিত্রের কেন্দ্রে একটি বড় গ্রেডিয়েন্ট রয়েছে যার অর্থ হল ফ্ল্যাশ ফায়ার হয়েছে৷
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
পরীক্ষা_পরম_শব্দ_হ্রাস
পরীক্ষা করে যে android.noiseReduction.mode
প্যারামিটার সেট করার সময় সঠিকভাবে প্রয়োগ করা হয়েছে। অস্পষ্টভাবে আলোকিত ক্যামেরা দিয়ে ছবি ক্যাপচার করে। ক্যাপচার করা চিত্রটি শোরগোলপূর্ণ তা নিশ্চিত করতে একটি উচ্চ অ্যানালগ লাভ ব্যবহার করে। NR বন্ধ, "দ্রুত" এবং "উচ্চ মানের" জন্য তিনটি ছবি ক্যাপচার করে। এছাড়াও কম লাভ এবং NR বন্ধ সহ একটি চিত্র ক্যাপচার করে এবং এর বৈচিত্রটিকে বেসলাইন হিসাবে ব্যবহার করে। SNR (সিগন্যাল থেকে নয়েজ রেশিও) যত বেশি হবে, ছবির গুণমান তত ভালো হবে।
APIs পরীক্ষিত:
পাস: SNR বিভিন্ন শব্দ কমানোর মোডের সাথে পরিবর্তিত হয় এবং নীচের গ্রাফের মতো একইভাবে আচরণ করে।
test_param_noise_reduction_plot_SNRs.png
0: বন্ধ, 1: দ্রুত, 2: HQ, 3: MIN , 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_shading_mode
পরীক্ষা করে যে android.shading.mode
প্যারামিটার প্রয়োগ করা হয়েছে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
পাস: শেডিং মোডগুলি সুইচ করা হয়েছে এবং লেন্স শেডিং মানচিত্রগুলি প্রত্যাশিত হিসাবে পরিবর্তিত হয়েছে৷
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
পরীক্ষা করে যে android.tonemap.mode প্যারামিটার প্রয়োগ করা হয়েছে। প্রতিটি R, G, B চ্যানেলে বিভিন্ন টোনম্যাপ বক্ররেখা প্রয়োগ করে এবং আউটপুট চিত্রগুলি প্রত্যাশিত হিসাবে পরিবর্তিত হয়েছে কিনা তা পরীক্ষা করে। এই পরীক্ষাটি দুটি পরীক্ষা নিয়ে গঠিত, পরীক্ষা 1 এবং পরীক্ষা2।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
পাস:
- test1: উভয় চিত্রের একটি রৈখিক টোনম্যাপ আছে, কিন্তু n=1 এর একটি স্টিপার গ্রেডিয়েন্ট রয়েছে। G (সবুজ) চ্যানেলটি n=1 ছবির জন্য উজ্জ্বল।
- test2: একই টোনম্যাপ, কিন্তু ভিন্ন দৈর্ঘ্য। ছবি একই.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
পোস্ট RAW সংবেদনশীলতা বুস্ট চেক করে। বিভিন্ন সংবেদনশীলতার সাথে RAW এবং YUV ছবির একটি সেট ক্যাপচার করে, RAW সংবেদনশীলতা বুস্ট কম্বিনেশন পোস্ট করে এবং আউটপুট পিক্সেল মানে অনুরোধ সেটিংসের সাথে মেলে কিনা তা পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
পাস: বুস্ট বৃদ্ধির সাথে সাথে RAW ছবিগুলি গাঢ় হয় যখন YUV ছবিগুলি উজ্জ্বলতায় স্থির থাকে
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
ক্রমবর্ধমান লাভের সাথে কাঁচা চিত্রের একটি সেট ক্যাপচার করে এবং গোলমাল পরিমাপ করে। শুধুমাত্র কাঁচা ক্যাপচার, একটি বিস্ফোরণ মধ্যে.
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
পাস: প্রতিটি শট আগের শটের চেয়ে বেশি শোরগোল, কারণ লাভ বাড়ছে।
কেন্দ্র পরিসংখ্যান গ্রিড কক্ষের ভিন্নতা ব্যবহার করে।
test_raw_burst_sensitivity_variance.png
test_raw_exposure
ক্রমবর্ধমান এক্সপোজার সময়ের সাথে কাঁচা চিত্রের একটি সেট ক্যাপচার করে এবং পিক্সেল মান পরিমাপ করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
পাস: ISO (লাভ) বৃদ্ধি করা পিক্সেলগুলিকে আলোর প্রতি আরও সংবেদনশীল করে তোলে, তাই প্লটটি বাম দিকে চলে যায়।
test_raw_exposure_s=55.png
(10⁰ হল 1 ms, 10¹ হল 10 ms, 10⁻¹ হল 0.1 ms)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensitivity
ক্রমবর্ধমান সংবেদনশীলতার সাথে কাঁচা চিত্রগুলির একটি সেট ক্যাপচার করে এবং ছবির 10% কেন্দ্রে গোলমাল (ভেরিয়েন্স) পরিমাপ করে৷ পরীক্ষা করে যে প্রতিটি শট আগেরটির চেয়ে বেশি শোরগোল।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
পাস: প্রতিটি শটের সাথে বৈচিত্র্য বাড়ে।
test_raw_sensitivity_variance.png
পরীক্ষা_পুনঃপ্রক্রিয়া_শব্দ_হ্রাস
পরীক্ষা করে যে android.noiseReduction.mode
রিপ্রসেসিং রিকোয়েস্টের জন্য প্রয়োগ করা হয়েছে। অস্পষ্টভাবে আলোকিত ক্যামেরা দিয়ে পুনঃপ্রক্রিয়াকৃত ছবি ক্যাপচার করে। ক্যাপচার ইমেজ শোরগোল নিশ্চিত করতে একটি উচ্চ অ্যানালগ লাভ ব্যবহার করে। NR বন্ধ, "দ্রুত" এবং "উচ্চ মানের" জন্য তিনটি পুনঃপ্রক্রিয়াকৃত ছবি ক্যাপচার করে। কম লাভ এবং NR বন্ধ সহ একটি পুনঃপ্রসেস করা চিত্র ক্যাপচার করে এবং এর বৈচিত্রটিকে বেসলাইন হিসাবে ব্যবহার করে।
APIs পরীক্ষিত:
পাস: দ্রুত >= বন্ধ, সদর দপ্তর >= দ্রুত, সদর দপ্তর >> বন্ধ
সাধারণ SNR বনাম NR_MODE প্লট
test_tonemap_sequence
বিভিন্ন টোনম্যাপ বক্ররেখা দিয়ে শটের একটি ক্রম পরীক্ষা করে। একটি রৈখিক টোনম্যাপ সহ 3টি ম্যানুয়াল শট ক্যাপচার করে৷ ডিফল্ট টোনম্যাপ সহ 3টি ম্যানুয়াল শট ক্যাপচার করে। প্রতিটি পরপর ফ্রেম জোড়ার মধ্যে ডেল্টা গণনা করে।
APIs পরীক্ষিত:
পাস: 3টি অভিন্ন ফ্রেম রয়েছে যার পরে 3টি অভিন্ন ফ্রেমের একটি ভিন্ন সেট রয়েছে৷
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
ইমেজ ক্যাপচারের জন্য সমস্ত রিপোর্ট করা মাপ এবং ফরম্যাটগুলি পরীক্ষা করে। একটি রৈখিক টোনম্যাপ সহ একটি ম্যানুয়াল অনুরোধ ব্যবহার করে যাতে image_processing_utils
মডিউল দ্বারা রূপান্তরিত হলে YUV এবং JPEG একই দেখায়। ছবিগুলি ডিফল্টরূপে সংরক্ষণ করা হয় না, তবে debug_mode
সক্ষম করে সংরক্ষণ করা যেতে পারে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
পাস: সব ইমেজ সেন্টারে সর্বোচ্চ RMS (একটি সিগন্যালের রুট-মিন-স্কয়ার ভ্যালু) RGB কনভার্টেড ইমেজের মধ্যে সর্বোচ্চ রেজোলিউশনের YUV ইমেজের 3% পার্থক্য রয়েছে।
test_yuv_jpeg_all.png
test_yuv_plus_dng
ইমেজ ক্যাপচারের জন্য রিপোর্ট করা মাপ এবং ফরম্যাট কাজ করে তা পরীক্ষা করে।
APIs পরীক্ষিত:
পাস: পরীক্ষা সম্পন্ন হয় এবং অনুরোধ করা ছবি ফেরত দেয়।
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
YUV এবং JPEG উভয় আউটপুট হিসাবে একটি একক ফ্রেম ক্যাপচার করা পরীক্ষা। একটি রৈখিক টোনম্যাপ সহ একটি ম্যানুয়াল অনুরোধ ব্যবহার করে যাতে image_processing_utils
মডিউল দ্বারা রূপান্তরিত হলে YUV এবং JPEG একই দেখায়।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
পাস: YUV এবং JPEG চিত্রগুলি একই রকম এবং 1% এর কম RMS (একটি সংকেতের রুট-মিন-স্কয়ার মান) পার্থক্য রয়েছে৷
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
সমর্থিত হলে RAW/RAW10/RAW12 এবং YUV আউটপুট উভয় হিসাবে একটি একক ফ্রেম ক্যাপচার করা পরীক্ষা। রৈখিক টোনম্যাপের সাথে একটি ম্যানুয়াল অনুরোধ ব্যবহার করে তাই কাঁচা এবং YUV একই হবে বলে আশা করা হচ্ছে। RGB রূপান্তরিত ছবির কেন্দ্রে 10% RGB মান তুলনা করে। লগ android.shading.mode
.
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
-
android.hardware.graphics.ImageFormat#RAW12
পাস: YUV এবং কাঁচা চিত্রগুলি একই রকম এবং 3.5% এর কম RMS (একটি সংকেতের মূল-মান-বর্গ মান) পার্থক্য রয়েছে৷
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
দৃশ্য2_a
দৃশ্য2_a এর তিনটি মুখ রয়েছে যার একটি ধূসর পটভূমি এবং নিরপেক্ষ পোশাক রয়েছে। মুখগুলি ত্বকের টোনগুলির বিস্তৃত পরিসরের জন্য বেছে নেওয়া হয়। সঠিকভাবে কাজ করার জন্য চার্টে মুখ সনাক্তকরণের জন্য সঠিক অভিযোজন থাকতে হবে।
দৃশ্য2_a
test_autoframing
ক্যামেরা ডিভাইসের অটোফ্রেমিং আচরণ পরীক্ষা করে। একটি বড় জুম সঞ্চালন করে যাতে দৃশ্যের কোনও মুখই দৃশ্যমান হয় না, CaptureRequest
AUTOFRAMING
সেট করে অটোফ্রেমিং মোডকে সক্ষম করে , এবং যাচাই করে যে মূল দৃশ্যের সমস্ত মুখগুলি সনাক্ত করা যায় কিনা যখন রাজ্য একত্রিত True
(অর্থাৎ যখন CaptureResult
এ AUTOFRAMING_STATE
AUTOFRAMING_STATE_CONVERGED
এ সেট করা হয়েছে)।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
পাস: তিনটি মুখই সনাক্ত করা হয়েছে।
test_display_p3
ColorSpaceProfiles
API ব্যবহার করে JPEG-তে P3 ক্যাপচার প্রদর্শন করে । পরীক্ষা করে যে ক্যাপচার করা JPEG এর শিরোনামে একটি উপযুক্ত ICC প্রোফাইল রয়েছে এবং ছবিতে sRGB স্বরগ্রামের বাইরের রঙ রয়েছে৷
APIs পরীক্ষিত:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
পাস: JPEG-এ একটি ডিসপ্লে P3 ICC প্রোফাইল এবং sRGB স্বরগ্রামের বাইরের রঙ রয়েছে।
পরীক্ষার_ প্রভাব
সমর্থিত ক্যামেরা প্রভাবগুলির জন্য ফ্রেম ক্যাপচার করে এবং সেগুলি সঠিকভাবে তৈরি হয়েছে কিনা তা পরীক্ষা করে। পরীক্ষাটি শুধুমাত্র প্রভাবগুলি OFF
এবং MONO
পরীক্ষা করে, কিন্তু সমস্ত সমর্থিত প্রভাবগুলির জন্য ছবি সংরক্ষণ করে৷
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
পাস: ইফেক্ট OFF
সহ দৃশ্যের চিত্র ক্যাপচার করে এবং MONO
সেট করা প্রভাব সহ একটি একরঙা চিত্র।
test_effects_MONO.jpg
test_format_combos
আউটপুট ফরম্যাটের বিভিন্ন সমন্বয় পরীক্ষা করে।
APIs পরীক্ষিত:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
পাস: সমস্ত সংমিশ্রণ সফলভাবে ক্যাপচার করা হয়েছে।
পরীক্ষার_সংখ্যা_মুখ
পরীক্ষা মুখ সনাক্তকরণ.
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
পাস: তিনটি মুখ খুঁজে বের করে।
test_num_faces_fd_mode_1.jpg
test_reprocess_uv_swap
পরীক্ষা যে YUV পুনরায় প্রক্রিয়াকরণ U এবং V প্লেনগুলিকে অদলবদল করে না। এটি পুনঃপ্রক্রিয়াজাত চিত্র এবং একটি অ-পুনঃপ্রক্রিয়াজাত ক্যাপচারের মধ্যে পরম পার্থক্যের যোগফল (SAD) গণনা করে সনাক্ত করা হয়। যদি পুনঃপ্রক্রিয়াকৃত ক্যাপচারের আউটপুট U এবং V প্লেনগুলিকে অদলবদল করার ফলে SAD বৃদ্ধি পায়, তাহলে আউটপুটে সঠিক U এবং V প্লেন রয়েছে বলে ধরে নেওয়া হয়।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraDevice#createCaptureSession
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
পাস: U এবং V প্লেনগুলি অদলবদল করা হয় না।
test_reprocess_uv_swap.png
দৃশ্য2_খ
পরীক্ষার_সংখ্যা_মুখ
মুখের দৃশ্যে ত্বকের স্বর বৈচিত্র্যের সাথে মুখ সনাক্তকরণ পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
পাস: 3টি মুখ খুঁজে পায়।
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
1920x1440 রেজোলিউশনের বেশি না হওয়া বৃহত্তম JPEG ফর্ম্যাটের মতো একই আকৃতির অনুপাত সহ বৃহত্তম সাধারণ YUV এবং JPEG ফর্ম্যাটগুলি ব্যবহার করে দুটি চিত্র ক্যাপচার করে৷ jpeg.quality
100 এ সেট করে এবং দ্বৈত পৃষ্ঠের অনুরোধ ক্যাপচার করে। উভয় চিত্রকে RGB অ্যারেতে রূপান্তর করে এবং দুটি চিত্রের মধ্যে 3D রুট গড় বর্গক্ষেত্র (RMS) পার্থক্য গণনা করে।
উপরন্তু, এই পরীক্ষাটি যাচাই করে যে সমস্ত সমর্থিত স্ট্রীম ব্যবহারের ক্ষেত্রে YUV আউটপুটগুলি STILL_CAPTURE
ব্যবহারের ক্ষেত্রে YUV-এর সাথে যুক্তিসঙ্গতভাবে একই রকম।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
পাস: STILL_CAPTURE
ব্যবহারের ক্ষেত্রে YUV এবং JPEG চিত্রগুলির মধ্যে 3% এর কম RMS (একটি সংকেতের রুট-মিন-স্কয়ার মান) পার্থক্য রয়েছে; সমস্ত সমর্থিত ব্যবহারের ক্ষেত্রে YUV চিত্রগুলির STILL_CAPTURE
ব্যবহারের ক্ষেত্রে YUV চিত্রগুলির থেকে 10% এর কম RMS পার্থক্য রয়েছে৷
দৃশ্য2_c
পরীক্ষার_সংখ্যা_মুখ
মুখের দৃশ্যে ত্বকের স্বর বৈচিত্র্যের সাথে মুখ সনাক্তকরণ পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
পাস: 3টি মুখ খুঁজে পায়।
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
সিডিডি-তে বিভাগ 2.2.7.2 ক্যামেরাতে নির্দিষ্ট করা S পারফরম্যান্স ক্লাসের জন্য JPEG ক্যাপচার লেটেন্সি পরীক্ষা করে।
পাস: 1080p রেজোলিউশনের জন্য ক্যামেরা2 JPEG ক্যাপচার লেটেন্সি < 1000ms থাকতে হবে যা CTS ক্যামেরা পারফরম্যান্স টেস্ট দ্বারা ITS আলোক অবস্থার অধীনে (3000K) উভয় প্রাথমিক ক্যামেরার জন্য পরিমাপ করে।
পরীক্ষা_ক্যামেরা_লঞ্চ_পারফ_ক্লাস
CDD-এ নির্দিষ্ট বিভাগ 2.2.7.2 ক্যামেরা হিসাবে S পারফরম্যান্স ক্লাসের জন্য ক্যামেরা লঞ্চ লেটেন্সি পরীক্ষা করে।
পাস: ক্যামেরা2 স্টার্টআপ লেটেন্সি থাকতে হবে (প্রথম প্রিভিউ ফ্রেমে ক্যামেরা খুলুন) < 600ms যেমন CTS ক্যামেরা পারফরম্যান্স টেস্ট দ্বারা পরিমাপ করা হয়েছে ITS আলোর অবস্থার অধীনে (3000K) উভয় প্রাথমিক ক্যামেরার জন্য।
test_default_camera_hdr
পরীক্ষা করে যে ডিফল্ট ক্যামেরা ক্যাপচার হল পারফরম্যান্স ক্লাস 15-এর জন্য আল্ট্রা এইচডিআর যা CDD-এর বিভাগ 2.2.7.2 ক্যামেরায় উল্লেখ করা হয়েছে।
পাস: ডিফল্ট ক্যামেরা প্যাকেজ ক্যাপচার একটি পারফরম্যান্স ক্লাস 15 ডিভাইসের জন্য আল্ট্রা HDR হতে হবে।
দৃশ্য2_d
পরীক্ষার_সংখ্যা_মুখ
মুখের দৃশ্যে ত্বকের স্বর বৈচিত্র্যের সাথে মুখ সনাক্তকরণ পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
পাস: 3টি মুখ খুঁজে পায়।
দৃশ্য2_e
পরীক্ষা_নিরবচ্ছিন্ন_ছবি
50টি ভিজিএ রেজোলিউশন ফ্রেম ক্যাপচার অনুরোধের সাথে ক্যাপচার করা হয়েছে প্রথম সেটিং android.control.afMode = 4 (CONTINUOUS_PICTURE).
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
পাস: 3A সিস্টেম 50-ফ্রেম ক্যাপচারের শেষে স্থায়ী হয়।
পরীক্ষার_সংখ্যা_মুখ
মুখের দৃশ্যে ত্বকের স্বর বৈচিত্র্যের সাথে মুখ সনাক্তকরণ পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
পাস: 3টি মুখ খুঁজে পায়।
দৃশ্য2_f
scene2_f এর তিনটি মুখ রয়েছে যার একটি সাদা পটভূমি এবং সাদা পোশাক রয়েছে৷ মুখের ত্বকের টোন বিস্তৃত এবং ব্যাকগ্রাউন্ডের সাথে উচ্চ বৈসাদৃশ্য রয়েছে।
দৃশ্য2_f
পরীক্ষার_সংখ্যা_মুখ
মুখের দৃশ্যে ত্বকের স্বর বৈচিত্র্যের সাথে মুখ সনাক্তকরণ পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
পাস: 3টি মুখ খুঁজে পায়।
test_num_faces_fd_mode_1.jpg
দৃশ্য৩
Scene3 ISO12233 চার্ট ব্যবহার করে, এবং বেশিরভাগ পরীক্ষা দৃশ্যে চার্ট খুঁজে পেতে একটি চার্ট এক্সট্র্যাক্টর পদ্ধতি ব্যবহার করে। এই কারণে, বেশিরভাগ সংরক্ষিত চিত্রের 1, 2 বা 4 দৃশ্যের চিত্রগুলির মতো সীমানা নেই, তবে শুধুমাত্র চার্ট। চার্ট ফাইন্ডারকে সর্বোত্তমভাবে কাজ করার জন্য চার্টটি অবশ্যই সঠিক অভিযোজনে থাকতে হবে।
test_edge_enhancement
পরীক্ষা করে যে android.edge.mode
প্যারামিটার সঠিকভাবে প্রয়োগ করা হয়েছে। প্রতিটি প্রান্ত মোডের জন্য নন-রিপ্রসেস ইমেজ ক্যাপচার করে এবং আউটপুট ইমেজের তীক্ষ্ণতা এবং ক্যাপচার ফলাফল মেটাডেটা প্রদান করে। একটি প্রদত্ত প্রান্ত মোড, সংবেদনশীলতা, এক্সপোজার সময়, ফোকাস দূরত্ব, এবং আউটপুট পৃষ্ঠ প্যারামিটার সহ একটি ক্যাপচার অনুরোধ প্রক্রিয়া করে।
পাস: HQ
মোড (2) OFF
মোড (0) থেকে তীক্ষ্ণ। FAST
মোড (1) OFF
মোডের চেয়ে তীক্ষ্ণ। HQ
মোড তীক্ষ্ণ বা FAST
মোডের সমান।
APIs পরীক্ষিত:
প্রভাবিত ক্যামেরা পরামিতি:
-
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (দ্রুত মোড)
test_edge_enhancement_edge=2.jpg (উচ্চ মানের মোড)
পরীক্ষা_ফ্লিপ_মিরর
CDD বিভাগ 7.5.2 ফ্রন্ট-ফেসিং ক্যামেরা [C-1-5] অনুযায়ী ছবি সঠিকভাবে ভিত্তিক কিনা তা পরীক্ষা করে।
মিরর করা, ফ্লিপ করা বা ঘোরানো ছবিগুলি কেন্দ্রের কাছাকাছি হীরা বৈশিষ্ট্য দ্বারা চিহ্নিত করা যেতে পারে।
পাস: ছবি ফ্লিপ করা, মিরর করা বা ঘোরানো হয় না।
test_flip_mirror_scene_patch.jpg
test_imu_drift
ডিভাইসটি স্থির থাকা অবস্থায় এবং একটি হাই ডেফিনিশন প্রিভিউ ক্যাপচার করার সময় ইনর্শিয়াল মেজারমেন্ট ইউনিট (IMU) 30 সেকেন্ডের জন্য স্থিতিশীল আউটপুট আছে কিনা তা পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_GYROSCOPE
-
android.hardware.Sensor#TYPE_ROTATION_VECTOR
পাস:
- পরীক্ষার সময়ে গাইরোর ড্রিফট 0.01 rad এর কম।
- পরীক্ষার সময়ে গাইরো রিডিংয়ের পার্থক্য 1E-7 rad 2 /s 2 /Hz এর চেয়ে কম।
- পরীক্ষার সময়ে ঘূর্ণন ভেক্টরের ড্রিফট 0.01 rad এর কম।
- (এখনও বাধ্যতামূলক নয়) গাইরোর প্রবাহ প্রতি সেকেন্ডে 1 ডিগ্রির কম।
test_imu_drift_gyro_drift.png
test_imu_drift_rotation_vector_drift.png
টেস্ট_ল্যান্ডস্কেপ_থেকে_প্রতিকৃতি
ল্যান্ডস্কেপ-ভিত্তিক সেন্সরগুলির জন্য পোর্ট্রেট ওভাররাইড করার ল্যান্ডস্কেপ সঠিকভাবে কাজ করে কিনা তা পরীক্ষা করে।
APIs পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
পাস: পরীক্ষাটি প্রত্যাশিত ঘূর্ণন সহ একটি চার্ট সনাক্ত করতে সক্ষম (0 ডিগ্রী যখন পোর্ট্রেট ওভাররাইড করার জন্য ল্যান্ডস্কেপ অক্ষম করা হয়, 90 ডিগ্রী সক্ষম করা হয়)।
test_landscape_to_portrait.png
test_lens_movement_reporting
লেন্স আন্দোলনের পতাকা সঠিকভাবে রিপোর্ট করা হয়েছে কিনা তা পরীক্ষা করে। সর্বোত্তম ফোকাস দূরত্বে প্রথম 12টি ফ্রেমের সাথে 24টি চিত্রের একটি বিস্ফোরণ ক্যাপচার করে (যেমনটি 3A দ্বারা পাওয়া গেছে) এবং সর্বনিম্ন ফোকাস দূরত্বে শেষ 12টি ফ্রেম৷ ফ্রেম 12 এর চারপাশে, লেন্সটি চলে যায় যার ফলে তীক্ষ্ণতা কমে যায়। লেন্সগুলি চূড়ান্ত অবস্থানে চলে যাওয়ার সাথে সাথে তীক্ষ্ণতা অবশেষে স্থিতিশীল হয়। লেন্সের চলাচলের পতাকাটি সমস্ত ফ্রেমে জোর দেওয়া উচিত যেখানে প্রথম কয়েকটি ফ্রেমে তীক্ষ্ণতা মধ্যবর্তী হয় সর্বোত্তম ফোকাল দূরত্বে লেন্স স্টেশনারি সহ প্রথম কয়েকটি ফ্রেমে তীক্ষ্ণতা এবং চূড়ান্ত কয়েকটি ফ্রেম যেখানে লেন্স ন্যূনতম ফোকাল দূরত্বে স্থির থাকে। লেন্সের চালগুলি সঠিক ফ্রেমটি গুরুত্বপূর্ণ নয়: যা যাচাই করা হয় তা হ'ল লেন্সটি চলমান অবস্থায় আন্দোলনের পতাকাটি জোর দেওয়া হয়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
পাস: তীক্ষ্ণতা পরিবর্তনের সাথে ফ্রেমে লেন্সের আন্দোলনের পতাকাটি True
।
ব্যর্থ প্রক্রিয়া:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1)test_log.DEBUG
কেবলমাত্র ফ্রেমে জোর দেওয়া হয়েছে যেখানে তীক্ষ্ণতা পরিবর্তন হচ্ছে না। -
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0)test_log.DEBUG
সর্বোত্তম ফোকাল দূরত্বে প্রথম কয়েকটি ফ্রেমের তুলনায় বা ন্যূনতম ফোকাস দূরত্বে শেষ কয়েকটি ফ্রেমের তুলনায় একটি তীক্ষ্ণ পার্থক্য রয়েছে।
Test_reprocess_age_enhancement
পরীক্ষাগুলি যদি প্রান্ত বর্ধনের জন্য পুনরায় প্রসেস পদ্ধতিগুলি সমর্থন করে তবে সঠিকভাবে কাজ করে। প্রদত্ত পুনরায় প্রসেস এজ মোডের সাথে ক্যাপচার অনুরোধ প্রক্রিয়া করে এবং পুনরায় প্রসেস এজ মোডগুলি অক্ষম করে ক্যাপচারের জন্য বিভিন্ন মোডের তুলনা করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
পাস: বিভিন্ন প্রান্ত মোডের জন্য তীক্ষ্ণতা সঠিক। HQ
(মোড 2) OFF
চেয়ে তীক্ষ্ণ (মোড 0), এবং বিভিন্ন মোডের মধ্যে উন্নতি একই রকম।
test_reprocess_age_enhancement_plot.png
দৃশ্য 4
দৃশ্য 4 একটি বর্গক্ষেত্রের ভিতরে একটি সাদা পটভূমিতে একটি কালো বৃত্ত নিয়ে গঠিত। দৃশ্য 4 এর পরীক্ষাগুলি প্রান্তিককরণের জন্য সংবেদনশীল হতে পারে, সুতরাং 15 থেকে শুরু করে আপনি ডিইটি এবং চার্ট সারিবদ্ধকরণের একটি চেক সক্ষম করতে সরঞ্জাম ডিরেক্টরিতে check_alignment.py
ব্যবহার করতে পারেন।
দৃশ্য 4
Test_30_60fps_preview_fov_match
পরীক্ষা করে যে 30 এফপিএস এবং 60 এফপিএস পূর্বরূপ ভিডিওতে একই FOV রয়েছে। পরীক্ষাটি দুটি ভিডিও ক্যাপচার করে, একটি 30 এফপিএস সহ এবং অন্যটি 60 এফপিএস সহ। প্রতিটি ভিডিও থেকে একটি প্রতিনিধি ফ্রেম নির্বাচন করা হয় এবং দুটি ভিডিওতে এফওভি পরিবর্তনগুলি নির্দিষ্টকরণের মধ্যে রয়েছে তা নিশ্চিত করার জন্য বিশ্লেষণ করা হয়। পরীক্ষাগুলি যে বৃত্তের দিক অনুপাত স্থির থাকে, বৃত্তের কেন্দ্রটি স্থিতিশীল থাকে এবং বৃত্তের ব্যাসার্ধ স্থির থাকে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
পাস: চিত্রগুলি প্রসারিত করা হয় না, চিত্রগুলির কেন্দ্র 3%এর বেশি দ্বারা পৃথক হয় না এবং 30 এফপিএস এবং 60 এফপিএস ভিডিওর মধ্যে সর্বাধিক দিক অনুপাত পরিবর্তন 7.5%এর বেশি নয়
ব্যর্থ প্রক্রিয়া:
- 30 এফপিএস ভিডিওর বৃত্তটি 60 এফপিএস ভিডিও থেকে আকারে উল্লেখযোগ্যভাবে আলাদা।
- ক্যাপচার করা চিত্রের বৃত্তটি প্রসেসিং পাইপলাইন দ্বারা বিকৃত হয়।
- চিত্রের উচ্চতা বা প্রস্থকে হ্রাস করার জন্য চরম দিক অনুপাত ক্যাপচার অনুরোধের কারণে ক্যাপচার করা চিত্রের বৃত্তটি ক্রপ করা হয়।
- ক্যাপচার করা চিত্রের বৃত্তটির কেন্দ্রে একটি প্রতিচ্ছবি রয়েছে এবং এটি পুরোপুরি ভরাট প্রদর্শিত হয় না।
Test_aspect_ratio_and_crop
চিত্রগুলি যদি চিত্রগুলি বিকৃত বা চিত্রের পাইপলাইনে অপ্রত্যাশিতভাবে ক্রপ করা হয়। সমস্ত ফর্ম্যাটে একটি বৃত্তের ছবি তুলে। বৃত্তটি বিকৃত নয়, যাচাই করে, বৃত্তটি চিত্রের কেন্দ্র থেকে সরে যায় না এবং বৃত্তটি বিভিন্ন দিক অনুপাত বা রেজোলিউশনের সাথে আকারটি ভুলভাবে পরিবর্তন করে না।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
পাস: চিত্রগুলি প্রসারিত হয় না, চিত্রগুলির কেন্দ্র 3%এর বেশি দ্বারা পৃথক হয় না এবং সর্বাধিক সম্ভাব্য এফওভি (দেখার ক্ষেত্র) সংরক্ষণ করা হয়।
ব্যর্থ প্রক্রিয়া:
- ক্যাপচার দৃশ্যের কেন্দ্রে ট্যাবলেটে প্রদর্শিত বৃত্তের সাথে ক্যামেরাটি একত্রিত হয় না।
- ক্যাপচার করা চিত্রের বৃত্তটি প্রসেসিং পাইপলাইন দ্বারা বিকৃত হয়।
- নিম্ন রেজোলিউশন চিত্রটি চিত্র পাইপলাইনে ডাবল ক্রপ করা হয় উচ্চ এবং নিম্ন রেজোলিউশন চিত্রগুলির মধ্যে বিভিন্ন এফওভি তৈরি করে।
- চিত্রের উচ্চতা বা প্রস্থকে হ্রাস করার জন্য চরম দিক অনুপাত ক্যাপচার অনুরোধের কারণে ক্যাপচার করা চিত্রের বৃত্তটি ক্রপ করা হয়।
- ক্যাপচার করা চিত্রের বৃত্তটির কেন্দ্রে একটি প্রতিচ্ছবি রয়েছে এবং এটি পুরোপুরি ভরাট প্রদর্শিত হয় না।
টেস্ট_মুল্টি_কামেরা_লাইনমেন্ট
মাল্টি-ক্যামেরা সিস্টেমগুলির জন্য ক্যামেরা পজিশন সম্পর্কিত ক্যামেরা ক্রমাঙ্কন পরামিতিগুলি পরীক্ষা করে। মাল্টি-ক্যামেরা শারীরিক সাব-ক্যামেরাস ব্যবহার করে, শারীরিক ক্যামেরাগুলির মধ্যে একটি সহ একটি ছবি নেয়। বৃত্ত কেন্দ্রটি সন্ধান করে। প্রতিটি ক্যামেরার জন্য বিশ্ব সমন্বয় করে সার্কেল সেন্টার প্রজেক্ট করে। বিশ্ব স্থানাঙ্কগুলিতে ক্যামেরার বৃত্ত কেন্দ্রগুলির মধ্যে পার্থক্য তুলনা করে। প্রত্যাখ্যানগুলি বিশ্বকে পিক্সেল স্থানাঙ্কের সাথে আবার সমন্বয় করে এবং বৈধতা চেক হিসাবে মূলগুলির সাথে তুলনা করে। ক্যামেরার ফোকাল দৈর্ঘ্য আলাদা কিনা তা বৃত্তের আকারগুলি যাচাইয়ের তুলনা করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
পাস: ক্যামেরা ক্যালিব্রেশন ডেটা এবং ফোকাল দৈর্ঘ্য ব্যবহার করে ক্যাপচার করা চিত্রগুলির তুলনায় প্রত্যাশিত চিত্রগুলিতে চেনাশোনা কেন্দ্র এবং আকারগুলি প্রত্যাশিত হিসাবে।
ব্যর্থ প্রক্রিয়া:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
, বাLENS_POSE_ROTATION
হ'ল নকশার মান এবং প্রকৃত ক্রমাঙ্কন ডেটা নয়। - পরীক্ষা সেটআপের জন্য ক্যামেরা সিস্টেম উপযুক্ত নয়। উদাহরণস্বরূপ, আরএফওভি পরীক্ষার রিগের সাথে একটি প্রশস্ত এবং একটি অতি-প্রশস্ত ক্যামেরা সিস্টেম পরীক্ষা করা। আরও তথ্যের জন্য, ক্যামেরাটি এর-ইন-এ-বক্স FAQ1 দেখুন।
test_preview_aspect_ratio_and_crop
এখনও ক্যাপচারের জন্য টেস্ট_এএসপেক্ট_আরটিও_এন্ড_ক্রপ পরীক্ষার অনুরূপ, এই পরীক্ষাটি পূর্বরূপ ফ্রেমগুলি প্রসারিত বা অনুপযুক্তভাবে ক্রপ না করে তা নিশ্চিত করার জন্য সমর্থিত পূর্বরূপ ফর্ম্যাটগুলি পরীক্ষা করে। যাচাই করে যে বৃত্তের দিক অনুপাতটি পরিবর্তন হয় না, ক্রপযুক্ত চিত্রগুলি বৃত্তটিকে ফ্রেমের কেন্দ্রে রাখে এবং বৃত্তের আকারটি একটি ধ্রুবক বিন্যাসের জন্য বা বিভিন্ন রেজোলিউশন (ভিউ চেকের ক্ষেত্র) সহ পরিবর্তন হয় না।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
পাস: চিত্রগুলি প্রসারিত হয় না, চিত্রগুলির কেন্দ্র 3%এর বেশি দ্বারা পৃথক হয় না এবং সর্বাধিক সম্ভাব্য এফওভি (দেখার ক্ষেত্র) সংরক্ষণ করা হয়।
test_preview_stabilization_fov
এফওভি যথাযথভাবে ক্রপ করা হয়েছে তা নিশ্চিত করতে সমর্থিত পূর্বরূপ আকারগুলি পরীক্ষা করে। পরীক্ষাটি দুটি ভিডিও ক্যাপচার করে, একটি পূর্বরূপ স্থিতিশীলতার ON
এবং অন্যটি পূর্বরূপ স্থিতিশীলতার সাথে OFF
। প্রতিটি ভিডিও থেকে একটি প্রতিনিধি ফ্রেম নির্বাচন করা হয় এবং দুটি ভিডিওতে এফওভি পরিবর্তনগুলি নির্দিষ্টের মধ্যে রয়েছে তা নিশ্চিত করার জন্য বিশ্লেষণ করা হয়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
পাস: বৃত্তের দিক অনুপাতটি ধ্রুবক সম্পর্কে থেকে যায়, বৃত্তের কেন্দ্রের অবস্থান স্থিতিশীল থাকে এবং বৃত্তের আকারটি 20%এর বেশি পরিবর্তন করে না।
test_video_aspect_ratio_and_crop
সমস্ত ভিডিও ফর্ম্যাটের উপরে বর্গক্ষেত্রের ভিতরে একটি বৃত্তের ভিডিও নেয়। মূল ফ্রেমগুলি বের করে এবং বৃত্তের দিক অনুপাতটি যাচাই করে তা যাচাই করে, ক্রপযুক্ত চিত্রগুলি বৃত্তটিকে কেন্দ্রে রাখে এবং বৃত্তের আকারটি একটি ধ্রুবক বিন্যাসের জন্য বা বিভিন্ন রেজোলিউশন (ভিউ চেকের ক্ষেত্র) সহ পরিবর্তিত হয় না।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
পাস: ভিডিও ফ্রেমগুলি প্রসারিত হয় না, ফ্রেমের কেন্দ্রটি 3%এর বেশি দ্বারা পৃথক হয় না এবং সর্বাধিক সম্ভাব্য এফওভি (দেখার ক্ষেত্র) সংরক্ষণ করা হয়।
দৃশ্য 5
দৃশ্য 5 এর জন্য অভিন্ন আলোকিত ধূসর দৃশ্যের প্রয়োজন। এটি ক্যামেরা লেন্সের উপরে রাখা একটি ডিফিউজার দ্বারা সম্পন্ন হয়। আমরা নিম্নলিখিত ডিফিউজারটি সুপারিশ করি: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
।
দৃশ্যটি প্রস্তুত করতে, ক্যামেরার সামনে একটি ডিফিউজার সংযুক্ত করুন এবং ক্যামেরাটিকে প্রায় 2000 লাক্সের আলোক উত্সে নির্দেশ করুন। দৃশ্য 5 এর জন্য ক্যাপচার করা চিত্রগুলির জন্য কোনও বৈশিষ্ট্য স্পষ্ট না করে ডিফিউজ লাইটিং প্রয়োজন। নিম্নলিখিত একটি নমুনা চিত্র:
দৃশ্য 5 ক্যাপচার
Test_lens_shading_and_color_uniformity
লেন্স শেডিং সংশোধন যথাযথভাবে প্রয়োগ করা হয় এবং একরঙা ইউনিফর্ম দৃশ্যের রঙ সমানভাবে বিতরণ করা হয়। অটো 3 এ সহ একটি ইউভ ফ্রেমে এই পরীক্ষাটি সম্পাদন করে। লেন্স শেডিং ওয়াই চ্যানেলের উপর ভিত্তি করে মূল্যায়ন করা হয়। নির্দিষ্ট প্রতিটি নমুনা ব্লকের জন্য গড় y মান পরিমাপ করে এবং কেন্দ্রের y মানের সাথে তুলনা করে পাস বা ব্যর্থতা নির্ধারণ করে। রঙিন ইউনিফর্মিটি পরীক্ষা আর/জি এবং বি/জি স্পেসে মূল্যায়ন করা হয়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
পাস: চিত্রের নির্দিষ্ট ব্যাসার্ধে, পরীক্ষাটি পাস করতে আর/জি এবং বি/জি মানের বৈকল্পিকতা 20% এরও কম হতে হবে।
দৃশ্য 6
দৃশ্য 6 হ'ল ওরিয়েন্টেশন নির্দেশ করতে এক কোণে একটি স্কোয়ার সহ ছোট চেনাশোনাগুলির একটি গ্রিড। ছোট চেনাশোনাগুলি একটি বৃহত পরিসরে জুম ফাংশন পরীক্ষা করার জন্য প্রয়োজন। দৃশ্য 6 -এ পরীক্ষাগুলি প্রান্তিককরণের জন্য সংবেদনশীল হতে পারে, সুতরাং 15 থেকে শুরু করে আপনি ডিইটি এবং চার্ট সারিবদ্ধকরণের একটি চেক সক্ষম করতে সরঞ্জাম ডিরেক্টরিতে check_alignment.py
ব্যবহার করতে পারেন।
দৃশ্য 6
Test_in_sensor_zoom
সেন্সর জুম বৈশিষ্ট্যের ক্যামেরাটির আচরণ পরীক্ষা করে, যা ক্রপযুক্ত কাঁচা চিত্র তৈরি করে।
স্ট্রিম ব্যবহারের কেসটি CROPPED_RAW
সেট করার সাথে সাথে পরীক্ষাটি জুম রেঞ্জের উপরে দুটি ক্যাপচার নেয়, একটি পূর্ণ ক্ষেত্রের দৃশ্য (এফওভি) কাঁচা চিত্র এবং একটি ক্রপযুক্ত কাঁচা চিত্র। পরীক্ষাটি চিত্রগুলি আরজিবি অ্যারেগুলিতে রূপান্তর করে, পূর্ণ আকারের ক্রপযুক্ত কাঁচা চিত্রটিকে SCALER_RAW_CROP_REGION
দ্বারা রিপোর্ট করা আকারে ডাউনস্কেল করে এবং দুটি চিত্রের মধ্যে 3 ডি রুট গড় স্কোয়ার (আরএমএস) পার্থক্য গণনা করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
পাস: 3 ডি রুট মানে স্কোয়ার (আরএমএস) ডাউনস্কেলযুক্ত ক্রপযুক্ত কাঁচা চিত্র এবং সম্পূর্ণ এফওভি কাঁচা চিত্রের মধ্যে পার্থক্য 1%এরও কম।
টেস্ট_জুম
ক্যামেরা জুম আচরণ পরীক্ষা করে। জুম রেঞ্জের উপরে ক্যাপচারগুলি গ্রহণ করে এবং চেনাশোনাগুলি ক্যামেরা জুমের মতো আরও বড় হয়ে যায় কিনা তা পরীক্ষা করে। প্রতিটি ফর্ম্যাটের জন্য (ইউইউভি, জেপিইজি), একই ক্যামেরা ক্যাপচার সেশনটি 3 এ রূপান্তর করতে এবং ক্যাপচার নিতে ব্যবহৃত হয়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
পাস: ক্যাপচার করা বৃত্তের আপেক্ষিক আকারটি ক্যামেরাটি সঠিকভাবে জুম করছে তা নিশ্চিত করার জন্য অনুরোধ করা জুম অনুপাতের বিরুদ্ধে সঠিক।
কেন্দ্রের নিকটতম বৃত্তের কনট্যুরটি সন্ধান করতে টেস্ট_জুম।
Test_low_lateancy_zoom
ক্যামেরা কম বিলম্বিত জুম আচরণ পরীক্ষা করে। android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
দিয়ে জুম রেঞ্জের উপর ক্যাপচারগুলি গ্রহণ করে এবং আউটপুট চিত্রগুলির চেনাশোনাগুলি ক্যাপচার মেটাডেটাতে জুম অনুপাতের সাথে মেলে কিনা তা পরীক্ষা করে। একই ক্যামেরা ক্যাপচার সেশনটি 3 এ রূপান্তর করতে এবং ক্যাপচার নিতে ব্যবহৃত হয়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
পাস: জুম অনুপাতের ফলাফলের মেটাডেটার বিরুদ্ধে ক্যাপচার বৃত্তের আপেক্ষিক আকার সঠিক।
test_preview_video_zoom_match
রেকর্ডিং এবং জুম করার সময়, ভিডিও পূর্বরূপ এবং ভিডিও আউটপুট প্রদর্শন এবং একই আউটপুট রেকর্ড করার সময় পরীক্ষা করে। বিভিন্ন জুম অনুপাতের কেন্দ্রের নিকটতম বৃত্তের আকার গণনা করে এবং জুম অনুপাত বাড়ার সাথে সাথে বৃত্তের আকার বৃদ্ধি পায় কিনা তা পরীক্ষা করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
পাস: ক্যাপচার করা বৃত্তের আপেক্ষিক আকার ভিডিও এবং পূর্বরূপে অনুরোধ করা জুম অনুপাতের বিরুদ্ধে সঠিক।
Vga_640x480_key_frame.png (জুমের আগে)
পূর্বরূপ_640x480_key_frame.png (জুমের আগে)
Vga_640x480_key_frame.png (জুম পরে)
পূর্বরূপ_640x480_key_frame.png (জুমের পরে)
Test_preview_zoom
পরীক্ষাগুলি যে প্রতিটি পূর্বরূপ ফ্রেমের জুম অনুপাত সংশ্লিষ্ট ক্যাপচার মেটাডেটার সাথে মেলে। পরীক্ষাটি জুম রেঞ্জের উপরে পূর্বরূপ ফ্রেম নেয় এবং কেন্দ্রের নিকটতম বৃত্তের কনট্যুরটি খুঁজে পায়। পরীক্ষাটি তখন যাচাই করে যে নির্বাচিত বৃত্তটি আরও বড় হয়ে যায় এবং বৃত্তের কেন্দ্রটি ক্যামেরা জুম হওয়ার সাথে সাথে চিত্রের কেন্দ্র থেকে দূরে সরে যায়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
পাস: নির্বাচিত বৃত্তের আপেক্ষিক আকারটি সমস্ত প্রাকদর্শন ফ্রেমের জন্য সংশ্লিষ্ট ক্যাপচার ফলাফলের রিপোর্ট করা জুম অনুপাতের জন্য সঠিক। চিত্রের কেন্দ্র থেকে নির্বাচিত বৃত্তের আপেক্ষিক দূরত্বটি সমস্ত পূর্বরূপ ফ্রেমের সংশ্লিষ্ট ক্যাপচার ফলাফলের রিপোর্ট করা জুম অনুপাতের জন্য সঠিক।
Test_preview_zoom চিত্রগুলি কেন্দ্রের নিকটতম নির্বাচিত বৃত্তটি দেখায়
টেস্ট_সেশন_চার্যাক্টেরিস্টিকস_জুম
CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
তালিকাভুক্ত সমস্ত সমর্থিত সেশন কনফিগারেশনের জন্য জুম অনুপাতের পরিসীমা পরীক্ষা করে। এই কনফিগারেশনের প্রত্যেকটির জন্য, যদি CameraDeviceSetup#isSessionConfigurationSupported
রিটার্ন সত্য হয়, তবে পরীক্ষাটি যাচাই করে যে জুম অনুপাতের পরিসীমাটি CameraDeviceSetup#getSessionCharacteristics
ফিরে এসেছে
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
পাস: সর্বনিম্ন এবং সর্বাধিক জুম অনুপাত উভয়ই CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
তালিকাভুক্ত প্রতিটি সমর্থিত SessionConfiguration
জন্য পৌঁছানো যেতে পারে।
দৃশ্য 7
দৃশ্য 7 হ'ল একটি আয়তক্ষেত্রাকার ফ্রেম যা চারটি সমান কোয়াড্রেন্টে বিভক্ত, প্রতিটি আলাদা রঙে ভরা। আয়তক্ষেত্রের কেন্দ্রে তীক্ষ্ণতা চেকগুলির জন্য একটি স্লেন্টড এজ চার্ট রয়েছে। চারটি আরুকো চিহ্নিতকারী বিভিন্ন জুম অনুপাতের মূল আয়তক্ষেত্র ফ্রেমের সঠিক স্থানাঙ্ক অর্জনে সহায়তা করার জন্য আয়তক্ষেত্রের চারটি বাইরের কোণার সাথে একত্রিত হয়।
দৃশ্য 7
টেস্ট_মুল্টি_কামেরা_সুইচ
এই পরীক্ষাটি যাচাই করে যে বিভিন্ন জুম অনুপাতের পূর্বরূপ রেকর্ডিংয়ের সময়, আল্ট্রোডাইড (ইউডাব্লু) এবং ওয়াইড (ডাব্লু) লেন্সগুলির মধ্যে স্যুইচটি একই রকম আরজিবি মানগুলির ফলাফল করে।
পরীক্ষাটি গতিশীল পূর্বরূপ রেকর্ডিং সম্পাদন করতে এবং শারীরিক ক্যামেরাটি যে বিন্দুতে পরিবর্তিত হয় তা সনাক্ত করতে পূর্বনির্ধারিত পরিসরের মধ্যে বিভিন্ন জুম অনুপাত ব্যবহার করে। এই পয়েন্টটি ইউডাব্লু থেকে ডাব্লু লেন্স পর্যন্ত ক্রসওভার চিহ্নিত করে।
ক্রসওভার পয়েন্টে এবং তার আগে ক্যাপচার করা ফ্রেমগুলি অটো এক্সপোজার (এই), অটো হোয়াইট ব্যালেন্স (এডাব্লুবি) এবং অটোফোকাস (এএফ) এর জন্য বিশ্লেষণ করা হয়।
এই চেকটি নিশ্চিত করে যে লুমা পরিবর্তন ইউডাব্লু এবং ডাব্লু লেন্স উভয়ের চিত্রের জন্য প্রত্যাশিত সীমার মধ্যে রয়েছে। এডাব্লুবি চেকটি যাচাই করে যে আর/জি এবং বি/জি এর অনুপাতগুলি ইউডাব্লু এবং ডাব্লু লেন্স উভয়ের চিত্রের জন্য প্রান্তিক মানের মধ্যে রয়েছে। এএফ চেকটি ইউডাব্লু এবং ডাব্লু লেন্স চিত্রগুলির মধ্যে গড় গ্রেডিয়েন্ট প্রস্থের উপর ভিত্তি করে তীক্ষ্ণতা অনুমানের মানটি মূল্যায়ন করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
পাস: পরীক্ষাটি পাস করার জন্য, এই, এডাব্লুবি এবং এএফ চেকগুলি অবশ্যই সমস্ত পাস করতে হবে। নিম্নলিখিত প্রতিটি চেকের মানদণ্ড:
- এই চেক: ইউডাব্লু এবং ডাব্লু লেন্সের চিত্রগুলির মধ্যে লুমা পরিবর্তন অবশ্যই 0.5%এর চেয়ে কম হতে হবে।
- এডাব্লুবি চেক: ইউডাব্লু এবং ডাব্লু লেন্সের চিত্রগুলির জন্য আর/জি এবং বি/জি মানগুলির মধ্যে পার্থক্য অবশ্যই 0.5%এর চেয়ে কম হতে হবে।
- এএফ চেক: ইউডাব্লু এবং ডাব্লু লেন্সের চিত্রগুলির মধ্যে চিত্রের তীক্ষ্ণতা পরিবর্তন 2%এরও কম হতে হবে।
দৃশ্য 8
দৃশ্য 8 হ'ল একটি আয়তক্ষেত্রাকার ফ্রেম যা চারটি সমান অঞ্চলে বিভক্ত, প্রত্যেকটিতে আলাদা আলাদা এক্সপোজারযুক্ত প্রতিকৃতিযুক্ত বা আলাদা রঙের ছায়া (নীল ছায়া, বর্ধিত এক্সপোজার, এক্সপোজার হ্রাস, হলুদ ছায়া) দিয়ে আবৃত থাকে। চারটি আরুকো চিহ্নিতকারীকে মূল আয়তক্ষেত্র ফ্রেমের সঠিক স্থানাঙ্কগুলি পেতে আয়তক্ষেত্রের চারটি বাইরের কোণার সাথে একত্রিত হয়।
দৃশ্য 8
Test_ae_awb_regions
বিভিন্ন অটো এক্সপোজার (এই) এবং অটো হোয়াইট ব্যালেন্স (এডাব্লুবি) অঞ্চলে রেকর্ডিং করার সময় আরজিবি এবং লুমা মানগুলি পৃথক হয় এমন পরীক্ষাগুলি।
পরীক্ষায় একটি আট সেকেন্ড পূর্বরূপ রেকর্ডিং রেকর্ড করা হয়েছে, প্রতিটি চতুর্ভুজটিতে প্রতিটি চতুর্থাংশের জন্য এই এবং এডাব্লুবি মিটারিং সম্পাদন করে। পরীক্ষাটি তারপরে প্রতিটি অঞ্চলের পূর্বরূপ রেকর্ডিং থেকে একটি ফ্রেম বের করে এবং নিম্নলিখিত এই এবং এডাব্লুবি চেকগুলি সম্পাদন করতে নিষ্কাশিত ফ্রেমগুলি ব্যবহার করে:
- এই চেক: যাচাই করে যে হ্রাস এক্সপোজারের সাথে অঞ্চলটি মিটারিং ফ্রেমের বর্ধিত এক্সপোজারের সাথে অঞ্চলটি মিটারিং ফ্রেমের চেয়ে 1% এরও বেশি লুমা মান রয়েছে। এটি যাচাই করে যে কোনও অন্ধকার অঞ্চলকে মিটার করার সময় চিত্রগুলি আলোকিত করা হয়।
- এডাব্লুবি চেক: যাচাই করে যে নীল মিটারিং অঞ্চলের সাথে ফ্রেমে লাল থেকে নীল (চিত্রের গড় আরজিবি মানগুলির) অনুপাতটি হলুদ মিটারিং অঞ্চলের সাথে ফ্রেমের চেয়ে 2% এর বেশি। এটি যাচাই করে যে কোনও হলুদ (উষ্ণ) বা নীল (শীতল) অঞ্চলটি মিটার করার সময় চিত্রগুলির একটি সুষম আরজিবি মান রয়েছে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
-
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
পাস: এই এবং এডাব্লুবি উভয়ই পাস চেক করে।
দৃশ্য 9
দৃশ্য 9 জেপিগ সংক্ষেপণ অ্যালগরিদমগুলিকে চাপ দেওয়ার জন্য খুব কম পুনরাবৃত্তি সহ একটি দৃশ্য তৈরি করতে হাজার হাজার এলোমেলো আকারের এবং রঙিন চেনাশোনা নিয়ে গঠিত।
দৃশ্য 9
Test_jpeg_high_entropy
পরীক্ষা করে যে ক্যামেরা জেপিইজি সংক্ষেপণ দৃশ্য 9 এ উচ্চ এনট্রপি এবং জেপিজি কোয়ালিটি ফ্যাক্টরটি 100%এ সেট করে কাজ করে। ট্যাবলেটে প্রদর্শিত দৃশ্যটি ক্যামেরার ক্ষেত্রটি ভিউয়ের ক্ষেত্রটি পূরণ করে তা নিশ্চিত করার জন্য জুম ফ্যাক্টরটি বাড়ানো হয়েছে।
এপিআইএস পরীক্ষিত:
পাস: জেপিইজি ফাইলটি সঠিকভাবে সংকুচিত, লিখিত এবং ডিস্ক থেকে ফিরে পড়ুন।
পরীক্ষা_জেপিইজি_কুয়ালি
ক্যামেরা জেপিইজি সংক্ষেপণের গুণমান পরীক্ষা করে। android.jpeg.quality
এবং কোয়ান্টাইজেশন টেবিলগুলি সঠিকভাবে পরিবর্তন নিশ্চিত করে JPEG গুণাবলী পদক্ষেপ।
এপিআইএস পরীক্ষিত:
পাস: কোয়ান্টাইজেশন ম্যাট্রিক্স মান বৃদ্ধির সাথে হ্রাস পায়। (ম্যাট্রিক্স বিভাগ ফ্যাক্টরকে উপস্থাপন করে))
পিক্সেল 4 রিয়ার ক্যামেরা লুমা/ক্রোমা ডিকিউটি ম্যাট্রিক্স গড় বনাম জেপিইজি মানের
ব্যর্থ পরীক্ষার উদাহরণ
নোট করুন যে খুব নিম্নমানের চিত্রগুলির জন্য (jpeg.quality <50), কোয়ান্টাইজেশন ম্যাট্রিক্সে সংকোচনের কোনও বৃদ্ধি নেই।
দৃশ্য_ভিডিও
scene_video
দৃশ্যটি একটি ভিডিও দৃশ্য। এটি একটি সাদা পটভূমির বিপরীতে বিভিন্ন ফ্রেম হারে পিছনে পিছনে চলমান চারটি বিভিন্ন রঙিন চেনাশোনা নিয়ে গঠিত।
দৃশ্য_ভিডিও
test_preview_frame_drop
অনুরোধ করা পূর্বরূপ ফ্রেম রেট একটি গতিশীল দৃশ্যের সাথে বজায় রাখা হয় এমন পরীক্ষাগুলি। এই পরীক্ষাটি তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির সংস্পর্শে থাকা সমস্ত ক্যামেরায় চলে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
পাস: পূর্বরূপ ফ্রেমের হারটি অনুরোধ করা ফ্রেম রেট সীমার সর্বোচ্চে থাকে এবং টানা ফ্রেমের মধ্যে গড় প্রকরণ পরীক্ষায় আপেক্ষিক সহনশীলতার চেয়ে কম থাকে।
দৃশ্য_ এক্সটেনশনস
scene_extensions
পরীক্ষাগুলি ক্যামেরা এক্সটেনশনের জন্য এবং অবশ্যই ক্যামেরার ইন-এ-বক্স ব্যবহার করতে হবে, কারণ তাদের পরীক্ষার পরিবেশের সুনির্দিষ্ট নিয়ন্ত্রণ প্রয়োজন। অতিরিক্তভাবে, সমস্ত হালকা ফুটো অবশ্যই নিয়ন্ত্রণ করতে হবে। এর জন্য একটি ড্রপ কাপড়ের সাথে পরীক্ষার রগ, ডিইটি এবং ট্যাবলেটটি covering েকে রাখার পাশাপাশি ডিইটি -র সামনের পর্দা থেকে হালকা ফুটো দূর করার প্রয়োজন হতে পারে।
দৃশ্য_এইচডিআর
scene_hdr
দৃশ্যে বামদিকে একটি প্রতিকৃতি এবং ডানদিকে একটি কম-বিপরীতে কিউআর কোড রয়েছে।
দৃশ্য_এইচডিআর
পরীক্ষা_এইচডিআর_ এক্সটেনশন
এইচডিআর এক্সটেনশন পরীক্ষা করে। এক্সটেনশনের সাথে এবং ছাড়াই ক্যাপচারগুলি গ্রহণ করে এবং এক্সটেনশনটি কিউআর কোডটিকে আরও সনাক্তযোগ্য করে তোলে কিনা তা পরীক্ষা করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
পাস: এইচডিআর এক্সটেনশন কিউআর কোড সনাক্ত করতে প্রয়োজনীয় বিপরীতে পরিবর্তনের সংখ্যা হ্রাস করে বা কিউআর কোড জুড়ে গ্রেডিয়েন্ট হ্রাস করে।
দৃশ্য_ল্লো_লাইট
scene_low_light
দৃশ্যে একটি কালো পটভূমির বিপরীতে ধূসর রঙের বিভিন্ন শেডের স্কোয়ারগুলির একটি গ্রিড রয়েছে এবং স্কোয়ারগুলির গ্রিড একটি লাল রূপরেখার দ্বারা আবদ্ধ। স্কোয়ারগুলি হিলবার্ট কার্ভ ওরিয়েন্টেশনে সাজানো হয়।
দৃশ্য_ল্লো_লাইট
টেস্ট_নাইট_ এক্সটেনশন
রাতের এক্সটেনশন পরীক্ষা করে। এক্সটেনশন সক্ষম করে ক্যাপচার গ্রহণ করে এবং নিম্নলিখিতগুলি সম্পাদন করে:
- 20 স্কোয়ারের উপস্থিতি সনাক্ত করে
- প্রতিটি বর্গক্ষেত্র দ্বারা আবদ্ধ লুমাকে গণনা করে
- হিলবার্ট কার্ভ গ্রিড ওরিয়েন্টেশন অনুসারে প্রথম 6 স্কোয়ারের গড় লুমা মান গণনা করে
- ধারাবাহিক স্কোয়ারগুলির লুমা মানের পার্থক্য গণনা করে (উদাহরণস্বরূপ, স্কয়ার 2 - স্কয়ার 1) স্কোয়ার 5 এবং 6 পর্যন্ত (স্কয়ার 6 - স্কয়ার 5) পর্যন্ত এবং পাঁচটি গণিত পার্থক্যের গড় সন্ধান করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
পাস: প্রথম 6 স্কোয়ারের গড় লুমা মান কমপক্ষে 90 হতে হবে এবং 5 এবং 6 স্কোয়ার পর্যন্ত টানা স্কোয়ারের লুমা মানের গড় পার্থক্য কমপক্ষে 18 হতে হবে।
Test_low_light_boost_extention
লো লাইট বুস্ট এই মোড পরীক্ষা করে। যদি ক্যামেরা 2 কম হালকা বুস্ট এই মোড সমর্থন করে, তবে এই পরীক্ষাটি ক্যামেরা 2 এর জন্য সঞ্চালিত হয়। যদি নাইট মোড ক্যামেরা এক্সটেনশনটি সমর্থন করা হয় এবং এক্সটেনশনটি কম লাইট বুস্ট এই মোডকে সমর্থন করে, তবে এই পরীক্ষাটি নাইট মোড ক্যামেরা এক্সটেনশনের জন্যও সঞ্চালিত হয়। এই পরীক্ষাটি এই মোডটিকে কম হালকা বুস্টে সেট করে, পূর্বরূপ থেকে একটি ফ্রেম নেয় এবং নিম্নলিখিতগুলি সম্পাদন করে:
- 20 বাক্সের উপস্থিতি সনাক্ত করে
- প্রতিটি বাক্স দ্বারা আবদ্ধ লুমাকে গণনা করে
- হিলবার্ট কার্ভ গ্রিড ওরিয়েন্টেশন অনুসারে প্রথম 6 স্কোয়ারের গড় লুমা মান গণনা করে
- ধারাবাহিক স্কোয়ারগুলির লুমা মানের পার্থক্য গণনা করে (উদাহরণস্বরূপ, স্কয়ার 2 - স্কয়ার 1) স্কোয়ার 5 এবং 6 পর্যন্ত (স্কয়ার 6 - স্কয়ার 5) পর্যন্ত এবং পাঁচটি গণিত পার্থক্যের গড় সন্ধান করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
-
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
পাস: প্রথম 6 স্কোয়ারের গড় লুমা মান কমপক্ষে 90 হতে হবে এবং 5 এবং 6 স্কোয়ার পর্যন্ত টানা স্কোয়ারের লুমা মানের গড় পার্থক্য কমপক্ষে 18 হতে হবে।
দৃশ্য_ফ্ল্যাশ
scene_flash
পরীক্ষাগুলির জন্য সেন্সর ফিউশন বাক্সে একটি অন্ধকার দৃশ্যের প্রয়োজন।
পরীক্ষা_আউটো_ফ্ল্যাশ
পরীক্ষাগুলি যে অটো-ফ্ল্যাশগুলি রিয়ার-ফেসিং এবং ফ্রন্ট-ফেসিং ক্যামেরাগুলির জন্য একটি অন্ধকার দৃশ্যে ট্রিগার করা হয়। সামনের মুখোমুখি ক্যামেরাগুলির জন্য, অটো-ফ্ল্যাশ কোনও শারীরিক ফ্ল্যাশ ইউনিট নয়, দৃশ্যটি আলোকিত করতে স্ক্রিনটি ব্যবহার করে। পরীক্ষাটি যাচাই করে যে টাইল চিত্রের কেন্দ্রটি অটো-ফ্ল্যাশ সক্ষম করে আরও উজ্জ্বল কিনা তা পরীক্ষা করে অটো-ফ্ল্যাশকে বরখাস্ত করা হয়েছে। অটো-ফ্ল্যাশ ট্রিগার করতে, পরীক্ষার রগের আলোগুলি বন্ধ করতে হবে। লাইটগুলি আরডুইনো নিয়ামক দিয়ে স্বয়ংক্রিয়ভাবে বন্ধ করা যায়। পরীক্ষাটি সঠিকভাবে কাজ করার জন্য দৃশ্যটি অবশ্যই সম্পূর্ণ অন্ধকার হতে হবে। পরীক্ষার আগে জেটপ্যাক ক্যামেরা অ্যাপ ( জেসিএ ) ডিভাইসে অবশ্যই ইনস্টল করা উচিত। রিয়ার-ফেসিং ক্যামেরাগুলির জন্য অটো-ফ্ল্যাশ ট্রিগার হওয়ার জন্য এই রাজ্যের উপর নির্ভর করে, তবে সামনের মুখী ক্যামেরাগুলির জন্য অটো-ফ্ল্যাশ এইএর উপর নির্ভর করে না এবং সর্বদা ট্রিগার হয়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
পাস: অটো-ফ্ল্যাশ সক্ষম সহ টাইল চিত্রের কেন্দ্রটি সমস্ত ক্যামেরার জন্য মূল দৃশ্যের চিত্রের চেয়ে উজ্জ্বল।
টেস্ট_ফ্ল্যাশ_স্ট্রেন্থ
SINGLE
মোডে ফ্ল্যাশ শক্তি নিয়ন্ত্রণ যে পরীক্ষাগুলি সঠিকভাবে প্রয়োগ করা হয়।
যাচাই করে যে ডিভাইসটি যদি SINGLE
মোডে ক্যামেরা ব্যবহারের সময় ফ্ল্যাশ শক্তি নিয়ন্ত্রণকে সমর্থন করে তবে ফ্ল্যাশ শক্তি বিভিন্ন অনুরোধ করা শক্তি স্তরের সাথে পরিবর্তিত হয়। যাচাই করে যে ফ্ল্যাশ শক্তি নিয়ন্ত্রণ বিভিন্ন AE_MODES
সাথে কাজ করে। উদাহরণস্বরূপ, যদি অটো-এক্সপোজার মোডটি ON
বা OFF
থাকে তবে ফ্ল্যাশ শক্তি স্তরটি উজ্জ্বলতার উপর প্রভাব ফেলে এবং যদি মোডটি ON_AUTO_FLASH
হয় তবে ফ্ল্যাশ শক্তি স্তরটি উজ্জ্বলতার উপর কোনও প্রভাব ফেলবে না। পরীক্ষা পরিচালনা করতে, পরীক্ষার রগের আলোগুলি বন্ধ করতে হবে। লাইটগুলি আরডুইনো নিয়ামক দিয়ে স্বয়ংক্রিয়ভাবে বন্ধ করা যায়। পরীক্ষাটি সঠিকভাবে কাজ করার জন্য দৃশ্যটি অবশ্যই সম্পূর্ণ অন্ধকার হতে হবে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
পাস:
যখন অটো-এক্সপোজার মোডটি ON
বা OFF
থাকে, তখন ফ্ল্যাশ শক্তি স্তরটি FLASH_SINGLE_STRENGTH_MAX_LEVEL
থেকে কোনও ফ্ল্যাশ শক্তি স্তর বৃদ্ধি না হওয়ায় চিত্রের প্যাচগুলির উজ্জ্বলতা বৃদ্ধি পায়। যখন অটো-এক্সপোজার মোডটি ON_AUTO_FLASH
হয়, তখন চিত্রের প্যাচগুলির উজ্জ্বলতার পার্থক্য সহনশীলতার মধ্যে থাকে কারণ ফ্ল্যাশ শক্তি স্তরটি কোনও ফ্ল্যাশ থেকে FLASH_SINGLE_STRENGTH_MAX_LEVEL
পর্যন্ত বৃদ্ধি পায়।
Test_led_snapshot
পরীক্ষাগুলি যে এলইডি স্ন্যাপশটগুলি চিত্রটি পরিপূর্ণ বা রঙিন করে না।
এই পরীক্ষাটি লাইটগুলি নিয়ন্ত্রণ করতে সেন্সর ফিউশন বাক্সে একটি আলোক নিয়ন্ত্রক যুক্ত করে। লাইটগুলি OFF
হয়ে যাওয়ার সাথে সাথে পরীক্ষাটি AUTO_FLASH
মোডটি ON
করে একটি ক্যাপচার নেয়। এই ক্যাপচার চলাকালীন, পরীক্ষাটি START
জন্য aePrecapture
ট্রিগার সেট দিয়ে একটি প্রাক -সিকোয়েন্স চালায় এবং ফ্ল্যাশ সহ ক্যাপচারটি গ্রহণের Preview
ক্যাপচারের অভিপ্রায় সেট করে।
ফ্ল্যাশের কারণে ক্যাপচারের একটি স্বতন্ত্র হটস্পট রয়েছে বলে পরীক্ষাটি পুরো ক্যাপচারের ফ্ল্যাশ চিত্রের গড় গণনা করে এবং মানটি (68, 102) সীমার মধ্যে রয়েছে কিনা তা যাচাই করে। চিত্রটি যুক্তিসঙ্গতভাবে সাদা-ভারসাম্যযুক্ত কিনা তা পরীক্ষা করার জন্য, পরীক্ষাটি আর/জি এবং বি/জি অনুপাত গণনা করে এবং অনুপাতগুলি 0.95 এবং 1.05 এর মধ্যে রয়েছে কিনা তা যাচাই করে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
পাস: আর/জি এবং বি/জি অনুপাত 0.95 এবং 1.05 এর মধ্যে রয়েছে। ফ্ল্যাশ চিত্রের অর্থ (68, 102) সীমার মধ্যে রয়েছে।
test_preview_min_frame_rate
একটি অন্ধকার দৃশ্যে পূর্বরূপ ফ্রেমের হার সঠিকভাবে হ্রাস পায় তা পরীক্ষাগুলি। এই পরীক্ষাটি সঠিকভাবে কাজ করার জন্য, পরীক্ষার রগের আলোগুলি অবশ্যই নিয়ামক দ্বারা বা টেস্ট অপারেটর দ্বারা ম্যানুয়ালি বন্ধ করতে হবে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
পাস: প্রাকদর্শন ফ্রেমের হার অনুরোধ করা ফ্রেম রেট সীমার সর্বনিম্নে থাকে এবং ফ্রেমের মধ্যে প্রকরণটি পরীক্ষায় নিখুঁত সহনশীলতার চেয়ে কম।
Test_torch_strange
TORCH
মোডে ফ্ল্যাশ শক্তি নিয়ন্ত্রণ যে পরীক্ষাগুলি সঠিকভাবে প্রয়োগ করা হয়।
যাচাই করে যে ডিভাইসটি যদি TORCH
মোডে ক্যামেরা ব্যবহারের সময় ফ্ল্যাশ শক্তি নিয়ন্ত্রণকে সমর্থন করে তবে বিভিন্ন অনুরোধ করা শক্তি স্তরের সাথে মশাল শক্তি পরিবর্তন করে। যাচাই করে যে ফ্ল্যাশ শক্তি নিয়ন্ত্রণ বিভিন্ন AE_MODES
সাথে কাজ করে। উদাহরণস্বরূপ, যদি অটো-এক্সপোজার মোডটি ON
বা OFF
থাকে তবে ফ্ল্যাশ শক্তি স্তরটি উজ্জ্বলতার উপর প্রভাব ফেলে এবং যদি মোডটি ON_AUTO_FLASH
হয় তবে ফ্ল্যাশ শক্তি স্তরটি উজ্জ্বলতার উপর কোনও প্রভাব ফেলবে না। যাচাই করে যে মশাল শক্তি একটি ফেটে যাওয়ার সময়কালে একই থাকে, একটি ভিডিও ক্যাপচার সেশন অনুকরণ করে। পরীক্ষা পরিচালনা করতে, পরীক্ষার রগের আলোগুলি বন্ধ করতে হবে। লাইটগুলি আরডুইনো নিয়ামক দিয়ে স্বয়ংক্রিয়ভাবে বন্ধ করা যায়। পরীক্ষাটি সঠিকভাবে কাজ করার জন্য দৃশ্যটি অবশ্যই সম্পূর্ণ অন্ধকার হতে হবে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
পাস:
যখন অটো-এক্সপোজার মোড ON
বা OFF
থাকে, তখন ফ্ল্যাশ শক্তি স্তরটি কোনও ফ্ল্যাশ থেকে FLASH_TORCH_STRENGTH_MAX_LEVEL
পর্যন্ত বৃদ্ধি পাওয়ার সাথে সাথে চিত্রের উজ্জ্বলতা বৃদ্ধি পায়। যখন অটো-এক্সপোজার মোডটি ON_AUTO_FLASH
হয়, তখন চিত্রের ফেটে প্যাচগুলির উজ্জ্বলতার পার্থক্য সহনশীলতার মধ্যে থাকে কারণ ফ্ল্যাশ শক্তি স্তরটি কোনও ফ্ল্যাশ থেকে FLASH_TORCH_STRENGTH_MAX_LEVEL
পর্যন্ত বৃদ্ধি পায় না।
সেন্সর_ফিউশন
সেন্সর ফিউশন পরীক্ষাগুলির জন্য চেকবোর্ড প্যাটার্ন এবং আরুকো মার্কারগুলির সামনে নির্দিষ্ট ফোন চলাচল প্রয়োজন। সর্বোত্তম ফলাফলের জন্য, পরীক্ষার চার্টটি ফ্ল্যাট মাউন্ট করা হয়েছে তা নিশ্চিত করুন। চার্টগুলি যেগুলি সমতল নয় তা অনেকগুলি পরীক্ষার জন্য ঘূর্ণন গণনাগুলিকে প্রভাবিত করে। চার্টটি অবশ্যই 17 "x17" (43x43 সেমি) এ মুদ্রণ করে সেন্সর ফিউশন বাক্সের পিছনে পূরণ করতে হবে। sensor_fusion
পরীক্ষাগুলি সেন্সর ফিউশন বাক্সের সাথে স্বয়ংক্রিয় করা যেতে পারে।
সেন্সর ফিউশন চার্ট
সেন্সর ফিউশন চার্ট যা সেন্সর ফিউশন বাক্সের পিছনে পূরণ করে
Test_lens_intrinic_calibration
অপটিক্যাল চিত্র স্থিতিশীলকরণ (ওআইএস) এর কারণে লেন্সগুলি সরানো হলে লেন্সের অভ্যন্তরীণ পরিবর্তনগুলি পরিবর্তিত হয় এমন পরীক্ষা করে। যদি লেন্সের অভ্যন্তরীণ নমুনাগুলি সমর্থিত হয় তবে পরীক্ষা করে যে লেন্সের অভ্যন্তরীণ নমুনাগুলির অপটিকাল কেন্দ্রটি যখন অপটিক্যাল চিত্র স্থিতিশীলকরণ (ওআইএস) এর কারণে লেন্সগুলি সরে যায় তখন পরিবর্তিত হয়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
পাস: লেন্সের অপটিকাল কেন্দ্রটি এক পিক্সেল বা তারও বেশি দ্বারা অভ্যন্তরীণ পরিবর্তনগুলি। যদি লেন্সের অভ্যন্তরীণ নমুনাগুলি সমর্থিত হয় তবে লেন্সের অভ্যন্তরীণ নমুনাগুলির অপটিকাল কেন্দ্রগুলি একটি পিক্সেল বা তারও বেশি দ্বারা পরিবর্তিত হয়।
test_lens_intrinsic_calibration
প্লটটির উদাহরণ প্রতিটি ফ্রেমের জন্য পিক্সেলগুলিতে প্রধান পয়েন্টগুলির পরিবর্তনগুলি দেখায়
টেস্ট_মুল্টি_কামেরা_ফ্রেম_সাইঙ্ক
লজিকাল ক্যামেরা দ্বারা ক্যাপচার করা ফ্রেম টাইমস্ট্যাম্পগুলি পরীক্ষাগুলি টাইমস্ট্যাম্প নির্ধারণের জন্য চেকবোর্ডের মধ্যে স্কোয়ারগুলির কোণগুলি কম্পিউটারের মাধ্যমে 10 এমএসের মধ্যে রয়েছে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
পাস: প্রতিটি ক্যামেরা থেকে চিত্রগুলির মধ্যে কোণটি ফোনটি ঘোরানো হওয়ায় প্রশংসনীয়ভাবে পরিবর্তিত হয় না।
Test_preview_distortumation
বিভিন্ন জুম স্তরে নেওয়া প্রতিটি পূর্বরূপ ফ্রেম জুড়ে বিকৃতি সংশোধন করা হয় এমন পরীক্ষাগুলি। প্রতিটি পূর্বরূপ ফ্রেমের জন্য, পরীক্ষাটি ক্যামেরার অভ্যন্তরীণ এবং বহির্মুখীগুলির উপর ভিত্তি করে আদর্শ পয়েন্টগুলি গণনা করে। উদাহরণস্বরূপ চিত্রটিতে, আদর্শ পয়েন্টগুলি সবুজতে দেখানো হয়েছে; আসল পয়েন্টগুলি লাল দেখানো হয়। প্রকৃত পয়েন্ট এবং আদর্শ পয়েন্টগুলির মধ্যে মূল গড় স্কোয়ার (আরএমএস) পিক্সেল দূরত্বের ভিত্তিতে বিকৃতি ত্রুটি গণনা করা হয়। চিত্রের সবুজ এবং লাল হাইলাইটগুলি বিকৃতি ত্রুটির ক্ষেত্রটি দৃশ্যত সনাক্ত করতে ব্যবহৃত হয়।
সবুজ হিসাবে আদর্শ পয়েন্ট সহ চেকবোর্ডের চিত্র এবং লাল হিসাবে প্রকৃত পয়েন্ট
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
পাস: প্রতিটি পূর্বরূপ ফ্রেমের স্বাভাবিক বিকৃতি ত্রুটি 0.1 এর চেয়ে কম।
Test_preview_stabilization
স্ট্যাবিলাইজড পূর্বরূপ ভিডিও পরীক্ষাগুলি জাইরোস্কোপের চেয়ে কম ঘোরায়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
পাস: ফ্রেমের উপর সর্বাধিক কোণ ঘূর্ণন জাইরোস্কোপ ঘূর্ণনের 70% এরও কম।
নিম্নলিখিতগুলি স্থিতিশীলতার সাথে এবং ছাড়াই নমুনা ভিডিওগুলি রয়েছে।
স্থিতিশীলতার সাথে নমুনা ভিডিও
স্থিতিশীলতা ছাড়াই নমুনা ভিডিও
টেস্ট_সেন্সর_ফিউশন
এআর এবং ভিআর অ্যাপ্লিকেশনগুলির জন্য ক্যামেরা এবং জাইরোস্কোপের মধ্যে টাইমস্ট্যাম্পের পার্থক্য পরীক্ষা করে। চেকবোর্ড প্যাটার্নের সামনে ফোনটি 10 বার 90 ডিগ্রি ঘোরানো হয়। গতি প্রায় 2 এস রাউন্ড ট্রিপ। কোনও জাইরোস্কোপ অন্তর্ভুক্ত না থাকলে বা টাইমস্ট্যাম্প উত্স REALTIME
প্যারামিটার সক্ষম না করা থাকলে এই পরীক্ষাটি এড়িয়ে যায়।
test_sensor_fusion
পরীক্ষা বেশ কয়েকটি প্লট উত্পন্ন করে। ডিবাগিংয়ের জন্য দুটি গুরুত্বপূর্ণ প্লট হ'ল:
test_sensor_fusion_gyro_events
: পরীক্ষার সময় ফোনের জন্য জাইরোস্কোপ ইভেন্টগুলি দেখায়। এক্স এবং ওয়াই দিকের চলাচল বোঝায় যে ফোনটি মাউন্টিং প্লেটে সুরক্ষিতভাবে মাউন্ট করা হয়নি, পরীক্ষার উত্তীর্ণের সম্ভাবনা হ্রাস করে। প্লটে চক্রের সংখ্যা ফ্রেম সংরক্ষণের জন্য লেখার গতির উপর নির্ভর করে।টেস্ট_সেন্সর_ফিউশন_জিরো_ভেন্টস
test_sensor_fusion_plot_rotations
: জাইরোস্কোপ এবং ক্যামেরা ইভেন্টগুলির প্রান্তিককরণ দেখায়। এই প্লটটি অবশ্যই ক্যামেরা এবং জাইরোস্কোপের মধ্যে +/- 1 এমএসের মধ্যে ম্যাচিং আন্দোলন প্রদর্শন করতে হবে।টেস্ট_সেন্সর_ফিউশন_প্লট_রোটেশন
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
পাস: ক্যামেরা এবং জাইরোস্কোপ টাইমস্ট্যাম্পসের অফসেট সিডিডি বিভাগ .3.৩.৯ উচ্চ বিশ্বস্ততা সেন্সর [সি -২-১৪] অনুযায়ী 1 এমএসের চেয়ে কম।
ব্যর্থ প্রক্রিয়া:
- অফসেট ত্রুটি: ক্যামেরা-গ্যারোস্কোপ অফসেটটি সঠিকভাবে +/- 1 এমএসের মধ্যে ক্যালিব্রেটেড হয় না।
- ফ্রেম ড্রপস: পাইপলাইনটি ধারাবাহিকভাবে 200 ফ্রেম ক্যাপচার করতে যথেষ্ট দ্রুত নয়।
- সকেট ত্রুটি:
adb
পরীক্ষাটি কার্যকর করার জন্য নির্ভরযোগ্যভাবে ডিএটি -র সাথে দীর্ঘস্থায়ীভাবে সংযোগ করতে পারে না। - চার্টটি ফ্ল্যাট মাউন্ট করা হয়নি। প্লট
test_sensor_fusion_plot_rotations
ফ্রেম রয়েছে যেখানে জাইরোস্কোপ এবং ক্যামেরার ঘূর্ণনটি যথেষ্ট পরিমাণে পরিবর্তিত হয় কারণ ক্যামেরাটি চার্টের অংশগুলি সমতল নয় এমন অংশগুলির মধ্যে ঘোরে। - ক্যামেরাটি ফ্ল্যাট মাউন্ট করা হয়নি। প্লট
test_sensor_fusion_gyro_events
এক্স এবং ওয়াই প্লেনগুলিতে চলাচল দেখায়। এই ব্যর্থতা সামনের মুখোমুখি ক্যামেরাগুলিতে আরও সাধারণ কারণ রিয়ার ক্যামেরাটি প্রায়শই ফোনের বডিটির বাকী অংশে একটি উত্থিত ঝাঁকুনি থাকে, ফোনের পিছনটি মাউন্টিং প্লেটে মাউন্ট করার সময় একটি কাত হয়ে থাকে।
পরীক্ষা_ভিডিও_স্ট্যাবিলাইজেশন
স্থিতিশীল ভিডিও যে পরীক্ষাগুলি জাইরোস্কোপের চেয়ে কম ঘোরায়।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
পাস: ফ্রেমের উপর সর্বাধিক কোণ ঘূর্ণন জাইরোস্কোপ ঘূর্ণনের 60% এরও কম।
নিম্নলিখিতগুলি স্থিতিশীলতার সাথে এবং ছাড়াই নমুনা ভিডিওগুলি রয়েছে।
স্থিতিশীলতার সাথে নমুনা ভিডিও
স্থিতিশীলতা ছাড়াই নমুনা ভিডিও
বৈশিষ্ট্য_কোমিনেশন
feature_combination
পরীক্ষাগুলি যাচাই করে যে বৈশিষ্ট্যগুলি সঠিকভাবে কাজ করে যখন একাধিক ক্যামেরা বৈশিষ্ট্য একই সময়ে সক্ষম করা হয়। এই পরীক্ষাগুলি একই চেকবোর্ড চিত্রটি ব্যবহার করে যা সেন্সর ফিউশন দৃশ্যে ব্যবহৃত হয়।
টেস্ট_ফিয়াচার_কম্বিনেশন
বিভিন্ন স্ট্রিম সংমিশ্রণের সমস্ত সংমিশ্রণ, পূর্বরূপ স্থিতিশীলতা, টার্গেট এফপিএস রেঞ্জ, 10-বিট এইচডিআর ভিডিও এবং আল্ট্রা এইচডিআর যা ক্যামেরা ডিভাইস দ্বারা সমর্থিত। এই পরীক্ষাটি খুব স্মৃতি নিবিড়, তাই আমরা কমপক্ষে 128 গিগাবাইট র্যাম সহ একটি হোস্ট ব্যবহার করার পরামর্শ দিই।
অ্যান্ড্রয়েড 15 এবং উচ্চতর জন্য, কনফিগারেশন ফাইলটিতে একটি log_feature_combo_support
ক্ষেত্র অন্তর্ভুক্ত রয়েছে, যা False
হিসাবে ডিফল্ট হয়। যখন log_feature_combo_support
ক্ষেত্রটি True
সেট করা থাকে, তখন পরীক্ষাটি সমর্থিত বৈশিষ্ট্যগুলির সমস্ত সংমিশ্রণ চালায় এবং ফলাফলগুলি পরীক্ষায় ব্যর্থ না করে একটি প্রোটো ফাইলে লগ করে। সম্মতি পরীক্ষার জন্য, log_feature_combo_support
ক্ষেত্রটি অবশ্যই False
সেট করতে হবে।
এপিআইএস পরীক্ষিত:
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
পাস: প্রতিটি সমর্থিত বৈশিষ্ট্য সংমিশ্রণের জন্য:
- পূর্বরূপ স্থিতিশীলতা চালু থাকলে পূর্বরূপ প্রবাহটি স্থিতিশীল হয়।
- পূর্বরূপ ফ্রেমের হার কনফিগার করা
AE_TARGET_FPS_RANGE
এর মধ্যে পড়ে। - রেকর্ড করা পূর্বরূপ স্ট্রিমের রঙিন স্থানটি সেট করা মেলে।
- আল্ট্রা এইচডিআর ক্যাপচারের একটি বৈধ লাভ মানচিত্র রয়েছে।
এই পৃষ্ঠাটি ক্যামেরা ইমেজ টেস্ট স্যুট (আইটিএস) এর অধীনে পরীক্ষার একটি বিস্তৃত তালিকা সরবরাহ করে, যা অ্যান্ড্রয়েড সামঞ্জস্যতা পরীক্ষা স্যুট (সিটিএস) যাচাইয়ের অংশ। এর পরীক্ষাগুলি কার্যকরী পরীক্ষা, যার অর্থ তারা চিত্রের গুণমান পরিমাপ করে না, তবে বিজ্ঞাপনযুক্ত ক্যামেরা ফাংশনগুলির সমস্তগুলি প্রত্যাশা অনুযায়ী কাজ করছে। এই দস্তাবেজটি বিকাশকারী এবং পরীক্ষকদের পৃথক পরীক্ষাগুলি কী করে এবং কীভাবে পরীক্ষার ব্যর্থতাগুলি ডিবাগ করতে পারে তা বুঝতে দেয়।
ক্যামেরা প্রয়োজনীয় ক্যামেরা বৈশিষ্ট্য, এপিআই স্তর এবং মিডিয়া পারফরম্যান্স ক্লাস (এমপিসি) স্তর দ্বারা এর গেটগুলি পরীক্ষা করে। এপিআই স্তরের জন্য, এর ব্যবহারগুলি ro.product.first_api_level
থেকে গেট টেস্টগুলিতে একটি নির্দিষ্ট এপিআই স্তরে যুক্ত করা হয়েছে যা নিম্ন এপিআই স্তরে কার্যকারিতার জন্য নেতিবাচক ব্যবহারকারীর অভিজ্ঞতার জন্য পরীক্ষা করে। এটি নির্দিষ্ট এপিআই স্তরে যুক্ত বৈশিষ্ট্যগুলির জন্য গেট টেস্টগুলিতে ro.vendor.api_level
ব্যবহার করে যাতে নতুন হার্ডওয়্যার সক্ষমতা প্রয়োজন। যদি ro.odm.build.media_performance_class
একটি ডিভাইসের জন্য সংজ্ঞায়িত করা হয়, তবে এর এমপিসি স্তরের উপর নির্ভর করে নির্দিষ্ট পরীক্ষা চালানো প্রয়োজন।
পরীক্ষাগুলি নিম্নরূপে দৃশ্যের দ্বারা গোষ্ঠীভুক্ত করা হয়:
- দৃশ্য 0 : ক্যাপচার মেটাডেটা, জিটার, গাইরোস্কোপ, কম্পন
- দৃশ্য 1 : এক্সপোজার, সংবেদনশীলতা, ইভি ক্ষতিপূরণ, ইউভ বনাম জেপিইজি/কাঁচা
- দৃশ্য 2 : মুখ সনাক্তকরণ, রঙের দৃশ্যের প্রয়োজন পরীক্ষা
- দৃশ্য 3 : এজ বর্ধন, লেন্স আন্দোলন
- দৃশ্য 4 : দিক অনুপাত, ক্রপিং, ফিল্ড অফ ভিউ
- দৃশ্য 5 : লেন্স শেডিং
- দৃশ্য 6 : জুম
- scene7 : Multi camera switch
- scene8 : AE and AWB region metering
- scene9 : JPEG compression
- scene_extensions : Camera extensions
- scene_flash : Autoflash, min frame rate
- scene_video : Frame drops
- sensor_fusion : Camera/gyroscope timing offset
- feature_combination : Feature combinations
See individual sections for a description of each scene.
scene0
Scene0 tests require no specific scene information. However, the phone must be stationary for gyroscope and vibration testing.
test_jitter
Measures jitter in camera timestamps.
APIs tested:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Pass: There's at least a 30 ms delta between frames.
test_jitter_plot.png (Note the small y-axis range. Jitter is actually small in this plot.)
test_metadata
Tests the validity of metadata entries. Looks at capture results and at the camera characteristics objects. This test uses auto_capture_request
exposure and gain values because image content isn't important.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Hardware level, rollingShutterSkew
, frameDuration
tags, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV, hyperfocal distance are present and have valid values.
test_request_capture_match
Tests that the device writes the correct exposure and gain values by reading back the capture metadata.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Pass: Request and capture metadata values match across all shots.
test_sensor_events
Tests that device queries and prints out sensor events for devices that advertise sensor fusion support. The sensors expected are accelerometer, gyroscope, and magnetometer. This test only works if the screen is on, meaning the device isn't in standby mode.
APIs tested:
Pass: Events for each sensor are received.
test_solid_color_test_pattern
Tests that solid color test patterns are generated properly for camera muting. If camera muting is supported, solid color test patterns must be supported. If camera muting is not supported, solid color test patterns are only tested if the capability is advertised.
If RAW images are supported, color assignment is tested as well. The colors tested are black, white, red, blue, and green. For cameras that don't support RAW images, only black is tested.
APIs tested:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Pass: Solid test patterns supported are the correct color and there is low variance in the image.
test_test_pattern
Tests the android.sensor.testPatternMode
parameter to capture frames for each valid test pattern and checks that the frames are generated correctly for solid colors and color bars. This test includes the following steps:
- Captures images for all supported test patterns.
- Performs a simple correctness check for solid color test pattern and color bars.
APIs tested:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Pass: Supported test patterns are generated correctly.
test_test_patterns_2.jpg
test_tonemap_curve
Tests conversion of test pattern from RAW to YUV with linear tonemap. This test requires android.sensor.testPatternMode = 2
(COLOR_BARS) to generate a perfect image pattern for tonemap conversion. Ensures pipeline has proper color outputs with linear tonemap and ideal image input (relies on test_test_patterns
).
APIs tested:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: The YUV and the RAW look similar to each other.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Tests if image and motion sensor events are in the same time domain.
APIs tested:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Pass: Motion timestamps are between the two image timestamps.
test_vibration_restriction
Tests if the device's vibration is functioning as expected.
APIs tested:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Pass: The device doesn't vibrate when muted by the camera audio restriction API.
scene1
scene1 is a gray chart. The gray chart must cover the center 30% of the camera field of view. The gray chart is expected to challenge 3A (auto exposure, auto white balance, auto focus) moderately as the center region has no features. However, the capture request specifies the entire scene which includes sufficient features for 3A to converge.
RFoV cameras can be tested in the WFoV or the RFoV test rig. If a RFoV camera is tested in the WFoV test rig, the chart is scaled by ⅔ to ensure some boundaries for the gray chart in the FoV to help 3A converge. For more detailed descriptions of the camera test rigs, see Camera ITS-in-a-box .
scene1: Full size chart (left). ⅔ scaled chart (right).
test_ae_precapture_trigger
Tests the AE state machine when using the precapture trigger. Captures five manual requests with AE disabled. The last request has an AE precapture trigger, which should be ignored because AE is disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: AE converges.
test_auto_vs_manual
Tests that captured auto and manual shots look the same.
APIs tested:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Pass: Manual white balance gains and transform reported in each capture result match with the auto white balance estimate
from camera's 3A algorithm.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_black_white
Tests that the device produces full black and white images. Takes two captures, the first with extremely low gain and short exposure, which results in a black photo, and the second with extremely high gain and long exposure, which results in a white photo.
APIs tested:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Produces black and white images. Saturated channels of white images have RGB values of [255, 255, 255] with a margin of error of less than 1% difference.
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_capture
Verifies that the entire capture pipeline can keep up with the speed of fullsize capture and CPU time.
APIs tested:
Pass: Captures a burst of full size images, checks for frame drops and image brightness.
test_burst_sameness_manual
Takes 5 bursts of 50 images with manual capture setting and checks that they're all identical. This test can be used to identify if there are sporadic frames that are processed differently or have artifacts.
APIs tested:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Pass: Images are identical visually and in RGB values.
Fail: Shows a spike or drop of the RGB average chart at the beginning of each burst
- Tolerance is 3% for
first_API_level
< 30 - Tolerance is 2% for
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Tests that valid data comes back in CaptureResult
objects. Does an auto, manual, and auto capture.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: Metadata is valid for all captures and the manual settings don't leak into the second auto capture. Plots out the lens shading correction for the captures.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Tests that the RAW streams aren't croppable.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: YUV images get center-cropped but not RAW images.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Tests that crop regions work. Takes a full image and creates patches of 5 different regions (corners and center.) Takes images with crop set for the 5 regions. Compares the patch and the crop image values.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: Image of the cropped region matches the patch that corresponds to the crop image.
test_dng_noise_model
Verifies that the DNG raw model parameters are correct. The plot depicts the measured variance of a center patch of the grey card in raw shots captured over a range of sensitivities, and compares these values with the variance that is expected at each sensitivity by the DNG noise model in the camera HAL (based on the O,S parameters returned in the capture result objects). For a more details on the DNG noise model, download the following document on the DNG Noise Model .
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: DNG raw model parameters are correct. Expected RGB values match that of the actual RGB values measured.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Tests that the exposure value (EV) compensation is applied. The test increases exposure in eight steps, and checks measured brightness versus expected brightness. Expected values are calculated from image brightness of image with no EV compensation applied and the expected value will saturate if the calculated values exceed the actual image value range. Test fails if the expected values and measured values don't match or images overexpose within five steps.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Pass: Images show increasing exposure without overexposing within five steps.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Tests that the EV compensation is applied using a range created with CONTROL_AE_COMPENSATION_STEP
. Eight frames are captured at each compensation value.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: Captures increase in luma with increased EV compensation setting, and the eight frames captured for each EV compensation setting have stable luma values.
test_ev_compensation_basic.png
test_exposure_x_iso
Tests that a constant exposure is achieved as ISO and exposure time vary. Takes a series of shots that have ISO and exposure time chosen to balance each other. Results should have the same brightness, but over the sequence the image should get noisier. Verifies sample pixel mean values are close to each other. Ensures that the images aren't clamped to 0 or 1 (which would make them look like flat lines). The test can also be run with RAW images by setting the debug
flag in your configuration file.
APIs tested:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Images have the same brightness, but get noisier with higher ISO. RGB planes are flat when the value of ISO*exposure is constant over the tested gain space.
Fail mechanism:
- In
test_exposure_plot_means.png
, as the gain multiplier values (x-axis) increase, the normalized RGB plane average values (y-axis) start to deviate from the low gain multiplier values.
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Tests that converted YUV images and device JPEG images look the same. Test takes the center 10% of the image and calculates the RGB value, and verifies that they match.
APIs tested:
Pass: The average RGB difference between each image is less than 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Tests that settings (exposure and gain) latch on the right frame for FULL
and LEVEL_3
cameras. Takes a series of shots using back-to-back requests, varying the capture request parameters between shots. Checks that the images have the expected properties.
APIs tested:
Pass: Images [2, 3, 6, 8, 10, 12, 13] have increased ISO or exposure and show up with higher RGB means on test_latching_plot_means.png
.
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
Tests that device processing can be inverted to linear pixels. Captures a sequence of shots with the device pointed at a uniform target.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: R, G, B values must increase linearly with increased sensitivity.
test_linearity_plot_means.png
test_locked_burst
Tests 3A lock and YUV burst (using auto setting). This test is designed to pass even on limited devices that don't have MANUAL_SENSOR
or PER_FRAME_CONTROLS
. The test checks YUV image consistency while the frame rate check is in CTS.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Pass: Captures look consistent.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_param_color_correction
Tests that the android.colorCorrection.*
parameters are applied when set. Takes shots with different transform and gain values, and tests that they look correspondingly different. The transform and gains are chosen to make the output increasingly red or blue. Uses a linear tonemap. Tone mapping is a technique used in image processing to map one set of colors to another to approximate the appearance of high-dynamic-range images in a medium that has a more limited dynamic range.
APIs tested:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pass: R and B values boost according to transformation.
test_param_color_correction_plot_means.png
*The x-axis is the capture requests: 0 = unity, 1=red boost, 2= blue boost
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R boost)
test_param_color_correction_req=2.jpg (B boost)
test_param_flash_mode
Tests that the android.flash.mode
parameter is applied. Manually sets the exposure to be on the dark side, so that it is obvious whether the flash fired or not, and uses a linear tonemap. Checks the center with the tile image to see if there's a large gradient that's created to verify whether the flash fired.
APIs tested:
Pass: The center of the tile image has a large gradient meaning that the flash fired.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
Tests that the android.noiseReduction.mode
parameter is applied correctly when set. Captures images with the camera dimly lit. Uses a high analog gain to ensure the captured image is noisy. Captures three images, for NR off, "fast", and "high quality". Also captures an image with low gain and NR off, and uses the variance of this as the baseline. The higher the SNR (Signal to Noise Ratio), the better the image quality.
APIs tested:
Pass: SNR varies with different noise reduction modes and behaves similarly as the graph below.
test_param_noise_reduction_plot_SNRs.png
0: OFF, 1: FAST, 2: HQ, 3: MIN , 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_shading_mode
Tests that the android.shading.mode
parameter is applied.
APIs tested:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Pass: Shading modes are switched and the lens shading maps are modified as expected.
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
Tests that the android.tonemap.mode parameter is applied. Applies different tonemap curves to each R, G, B channel, and checks that the output images are modified as expected. This test consists of two tests, test1 and test2.
APIs tested:
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
পাস:
- test1: Both images have a linear tonemap, but n=1 has a steeper gradient. The G (green) channel is brighter for the n=1 image.
- test2: Same tonemap, but different length. ছবি একই.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Checks post RAW sensitivity boost. Captures a set of RAW and YUV images with different sensitivity, posts RAW sensitivity boost combination and checks if the output pixel mean matches request settings.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: RAW images get darker as boost increases while YUV images stay constant in brightness
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
Captures a set of raw images with increasing gains and measures the noise. Captures raw-only, in a burst.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: Each shot is noisier than the previous shot, as the gain is increasing.
Uses the variance of the center stats grid cell.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Captures a set of raw images with increasing exposure time and measures the pixel values.
APIs tested:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: Increasing the ISO (gain) makes the pixels more sensitive to light, so the plot moves towards the left.
test_raw_exposure_s=55.png
(10⁰ is 1 ms, 10¹ is 10 ms, 10⁻¹ is 0.1 ms)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensitivity
Captures a set of raw images with increasing sensitivities and measures the noise (variance) in the center 10% of image. Tests that each shot is noisier than the previous one.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: Variance increases with each shot.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Tests that android.noiseReduction.mode
is applied for reprocessing requests. Captures reprocessed images with the camera dimly lit. Uses a high analog gain to ensure the capture image is noisy. Captures three reprocessed images, for NR off, "fast", and "high quality". Captures a reprocessed image with low gain and NR off, and uses the variance of this as the baseline.
APIs tested:
Pass: FAST >= OFF, HQ >= FAST, HQ >> OFF
Typical SNR vs NR_MODE plot
test_tonemap_sequence
Tests a sequence of shots with different tonemap curves. Captures 3 manual shots with a linear tonemap. Captures 3 manual shots with default tonemap. Computes the delta between each consecutive frame pair.
APIs tested:
Pass: There are 3 identical frames followed by a different set of 3 identical frames.
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
Tests that all reported sizes and formats for image capture work. Uses a manual request with a linear tonemap so that the YUV and JPEG look the same when converted by the image_processing_utils
module. Images aren't saved by default, but can be saved by enabling debug_mode
.
APIs tested:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Pass: All image centers have a max RMS (root-mean-square value of a signal) difference in RGB converted images with 3% of highest resolution YUV image.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Tests that the reported sizes and formats for image capture work.
APIs tested:
Pass: Test completes and returns the images requested.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Tests capturing a single frame as both YUV and JPEG outputs. Uses a manual request with a linear tonemap so that the YUV and JPEG look the same when converted by the image_processing_utils
module.
APIs tested:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Pass: YUV and JPEG images are similar and have less than 1% RMS (root-mean-square value of a signal) difference.
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Tests capturing a single frame as both RAW/RAW10/RAW12 and YUV outputs if supported. Uses a manual request with linear tonemap so raw and YUV are expected to be the same. Compares RGB converted images' center 10% RGB values. Logs android.shading.mode
.
APIs tested:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
-
android.hardware.graphics.ImageFormat#RAW12
Pass: YUV and raw images are similar and have less than 3.5% RMS (root-mean-square value of a signal) difference.
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scene2_a
scene2_a has three faces with a gray background and neutral clothing. The faces are chosen to have a wide range of skin tones. The chart must have the correct orientation for face detection to work optimally.
scene2_a
test_autoframing
Tests the camera device's autoframing behavior. Performs a large zoom such that none of the faces in the scene are visible, enables the autoframing mode by setting AUTOFRAMING
in CaptureRequest
to True
, and verifies whether all the faces in the original scene can be detected when the state converges (that is, when AUTOFRAMING_STATE
in CaptureResult
is set to AUTOFRAMING_STATE_CONVERGED
).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Pass: All three faces are detected.
test_display_p3
Tests Display P3 capture in JPEG using the ColorSpaceProfiles
API. Tests that the captured JPEG has an appropriate ICC profile in its header, and that the image contains colors outside of the sRGB gamut.
APIs tested:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Pass: The JPEG contains a Display P3 ICC profile and colors outside the sRGB gamut.
test_effects
Captures frame for supported camera effects and checks if they are generated correctly. The test only checks effects OFF
and MONO
, but saves images for all supported effects.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: Captures the scene image with effects OFF
and a monochrome image with effects set to MONO
.
test_effects_MONO.jpg
test_format_combos
Tests different combinations of output formats.
APIs tested:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Pass: All the combinations are successfully captured.
test_num_faces
Tests face detection.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds three faces.
test_num_faces_fd_mode_1.jpg
test_reprocess_uv_swap
Tests that YUV reprocessing doesn't swap the U and V planes. This is detected by calculating the sum of absolute differences (SAD) between the reprocessed image and a non-reprocessed capture. If swapping the output U and V planes of the reprocessed capture results in an increased SAD, then the output is assumed to have the correct U and V planes.
APIs tested:
-
android.hardware.camera2.CameraDevice#createCaptureSession
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Pass: The U and V planes aren't swapped.
test_reprocess_uv_swap.png
scene2_b
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Captures two images using the largest common YUV and JPEG formats with the same aspect ratio as the largest JPEG format not exceeding a resolution of 1920x1440. Sets jpeg.quality
to 100 and captures a dual surface request. Converts both images to RGB arrays and calculates the 3D root mean square (RMS) difference between the two images.
In addition, this test verifies that the YUV outputs for all supported stream use cases are reasonably similar to the YUV with the STILL_CAPTURE
use case.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
Pass: YUV and JPEG images for the STILL_CAPTURE
use case have less than 3% RMS (root-mean-square value of a signal) difference; YUV images for all supported use cases have less than 10% RMS difference from YUV images with the STILL_CAPTURE
use case.
scene2_c
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Tests JPEG capture latency for the S performance class as specified in section 2.2.7.2 Camera in the CDD.
Pass: MUST have camera2 JPEG capture latency < 1000ms for 1080p resolution as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras.
test_camera_launch_perf_class
Tests camera launch latency for the S performance class as specified section 2.2.7.2 Camera in the CDD.
Pass: MUST have camera2 startup latency (open camera to first preview frame) < 600ms as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras.
test_default_camera_hdr
Tests that default camera capture is Ultra HDR for performance class 15 as specified in section 2.2.7.2 Camera of the CDD.
Pass: Default camera package capture MUST be Ultra HDR for a performance class 15 device.
scene2_d
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
scene2_e
test_continuous_picture
50 VGA resolution frames are captured with the capture request first setting android.control.afMode = 4 (CONTINUOUS_PICTURE).
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Pass: 3A system settles by the end of a 50-frame capture.
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
scene2_f
scene2_f has three faces with a white background and white clothing. The faces have a wide range of skin tones and high contrast with the background.
scene2_f
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
test_num_faces_fd_mode_1.jpg
scene3
Scene3 uses the ISO12233 chart, and most tests use a chart extractor method to find the chart in the scene. For this reason, most of the saved images don't have borders like the images for scenes 1, 2 or 4, but only the chart. The chart must be in the correct orientation for the chart finder to work optimally.
test_edge_enhancement
Tests that the android.edge.mode
parameter is applied correctly. Captures non-reprocess images for each edge mode and returns sharpness of the output image and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, and output surface parameter.
Pass: HQ
mode (2) sharper than OFF
mode (0). FAST
mode (1) sharper than OFF
mode. HQ
mode sharper or equal to FAST
mode.
APIs tested:
Impacted camera parameters:
-
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (fast mode)
test_edge_enhancement_edge=2.jpg (high quality mode)
test_flip_mirror
Tests if image is properly oriented as per CDD section 7.5.2 Front-Facing Camera [C-1-5] .
Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.
Pass: Image isn't flipped, mirrored or rotated.
test_flip_mirror_scene_patch.jpg
test_imu_drift
Tests if the inertial measurement unit (IMU) has stable output for 30 seconds while the device is stationary and capturing a high definition preview.
APIs tested:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_GYROSCOPE
-
android.hardware.Sensor#TYPE_ROTATION_VECTOR
পাস:
- The drift of the gyro is less than 0.01 rad over the test time.
- The variance of the gyro reading is less than 1E-7 rad 2 /s 2 /Hz over the test time.
- The drift of the rotation vector is less than 0.01 rad over the test time.
- (Not yet mandated) the drift of the gyro is less than 1 degree per second.
test_imu_drift_gyro_drift.png
test_imu_drift_rotation_vector_drift.png
test_landscape_to_portrait
Tests if the landscape to portrait override functions correctly for landscape-oriented sensors.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Pass: The test is able to locate a chart with the expected rotation (0 degrees when the landscape to portrait override is disabled, 90 degrees when enabled).
test_landscape_to_portrait.png
test_lens_movement_reporting
Tests if the lens movement flag is properly reported. Captures a burst of 24 images with the first 12 frames at the optimum focus distance (as found by 3A) and the last 12 frames at the minimum focus distance. Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilizes as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first few frames with the lens stationary at optimum focal distance, and the final few frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Lens movement flag is True
in the frame with sharpness change.
Fail mechanisms:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) intest_log.DEBUG
is asserted only in frames where sharpness isn't changing. - Frames with
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) intest_log.DEBUG
has a sharpness difference compared to the first few frames at optimum focal distance or the last few frames at minimum focus distance.
test_reprocess_edge_enhancement
Tests if supported reprocess methods for edge enhancement work properly. Processes a capture request with a given reprocess edge mode and compares different modes to capture with reprocess edge modes disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct. HQ
(mode 2) is sharper than OFF
(mode 0), and improvement between different modes is similar.
test_reprocess_edge_enhancement_plot.png
scene4
Scene4 consists of a black circle on a white background inside a square. Tests in scene4 can be sensitive to alignment, so starting in 15, you can use check_alignment.py
in the tools directory to enable a check of the DUT and chart alignment.
scene4
test_30_60fps_preview_fov_match
Tests that 30 FPS and 60 FPS preview videos have the same FoV. The test captures two videos, one with 30 FPS and another with 60 FPS. A representative frame is selected from each video and analyzed to ensure that the FoV changes in the two videos are within specifications. Tests that the circle's aspect ratio remains constant, the center of the circle remains stable, and the radius of the circle remains constant.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum aspect ratio change between 30 FPS and 60 FPS videos is no more than 7.5%
Fail mechanisms:
- The circle from the 30 FPS video is significantly different in size from the 60 FPS video.
- The circle in the captured image is distorted by the processing pipeline.
- The circle in the captured image is cropped due to an extreme aspect ratio capture request reducing the height or width of the image.
- The circle in the captured image has a reflection in the center and doesn't appear fully filled.
test_aspect_ratio_and_crop
Tests if images are distorted or cropped unexpectedly in the image pipeline. Takes pictures of a circle over all formats. Verifies the circle isn't distorted, the circle doesn't move from the center of image, and the circle doesn't change size incorrectly with different aspect ratios or resolutions.
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
Fail mechanisms:
- The camera isn't aligned with the circle displayed on the tablet in the center of the captured scene.
- The circle in the captured image is distorted by the processing pipeline.
- Lower resolution image is double cropped in the image pipeline creating different FoV between high and low resolution images.
- The circle in the captured image is cropped due to an extreme aspect ratio capture request reducing the height or width of the image.
- The circle in the captured image has a reflection in the center and doesn't appear fully filled.
test_multi_camera_alignment
Tests the camera calibration parameters related to camera positioning for multi-camera systems. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Pass: Circle centers and sizes are as expected in projected images compared to captured images using camera calibration data and focal lengths.
Fail mechanisms:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
, orLENS_POSE_ROTATION
are design values and not actual calibration data. - The camera system isn't appropriate for the test setup. For example, testing a wide and an ultra-wide camera system with the RFoV test rig. For more information, see Camera ITS-in-a-box FAQ1 .
test_preview_aspect_ratio_and_crop
Similar to the test_aspect_ratio_and_crop test for still captures, this test checks the supported preview formats to ensure the preview frames aren't stretched or cropped inappropriately. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center of the frame, and the circle size doesn't change for a constant format or with different resolutions (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
test_preview_stabilization_fov
Checks the supported preview sizes to ensure the FoV is cropped appropriately. The test captures two videos, one with preview stabilization ON
, and another with preview stabilization OFF
. A representative frame is selected from each video, and analyzed to ensure that the FoV changes in the two videos are within spec.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%.
test_video_aspect_ratio_and_crop
Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
scene5
Scene5 requires a uniformly lit gray scene. This is accomplished by a diffuser placed over the camera lens. We recommend the following diffuser: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
To prepare the scene, attach a diffuser in front of the camera and point the camera to a lighting source of around 2000 lux. Images captured for scene5 require diffuse lighting with no features evident. The following is a sample image:
scene5 capture
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range. Tests in scene6 can be sensitive to alignment, so starting in 15, you can use check_alignment.py
in the tools directory to enable a check of the DUT and chart alignment.
scene6
test_in_sensor_zoom
Tests the behavior of the camera in-sensor zoom feature, which produces cropped RAW images.
With the stream use case set to CROPPED_RAW
, the test takes two captures over the zoom range, a full field of view (FoV) RAW image and a cropped RAW image. The test converts the images to RGB arrays, downscales the full-sized cropped RAW image to the size reported by SCALER_RAW_CROP_REGION
, and calculates the 3D root mean square (RMS) difference between the two images.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Pass: The 3D root mean square (RMS) difference between the downscaled cropped RAW image and the full FoV RAW image is less than 1%.
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in. For each format (YUV, JPEG), the same camera capture session is used to converge 3A and take captures.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
test_low_latency_zoom
Tests the camera low latency zoom behavior. Takes captures over the zoom range with android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
, and checks if the circles in the output images match the zoom ratios in the capture metadata. The same camera capture session is used to converge 3A and take captures.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Pass: Relative size of captured circle is accurate against the zoom ratio result metadata.
test_preview_video_zoom_match
Tests that while recording and zooming, video preview and video output display and record the same output. Calculates the size of the circle closest to the center at different zoom ratios and checks whether the size of the circle increases as the zoom ratio increases.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio in video and preview.
VGA_640x480_key_frame.png (before zoom)
preview_640x480_key_frame.png (before zoom)
VGA_640x480_key_frame.png (after zoom)
preview_640x480_key_frame.png (after zoom)
test_preview_zoom
Tests that the zoom ratio of each preview frame matches the corresponding capture metadata. The test takes preview frames over the zoom range and finds the contour of the circle closest to the center. The test then checks that the selected circle gets bigger and that the center of the circle moves away from the center of the image as the camera zooms in.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: The relative size of the selected circle is accurate for the reported zoom ratio of the corresponding capture result for all of the preview frames. The relative distance of the selected circle from the center of the image is accurate for the reported zoom ratio of the corresponding capture result of all the preview frames.
test_preview_zoom images showing selected circle closest to the center
test_session_characteristics_zoom
Tests the zoom ratio range for all supported session configurations listed in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
. For each of those configurations, if CameraDeviceSetup#isSessionConfigurationSupported
returns true, the test verifies that the zoom ratio range returned in CameraDeviceSetup#getSessionCharacteristics
can be reached.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Pass: Both the minimum and maximum zoom ratios can be reached for each supported SessionConfiguration
listed in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
scene7
Scene7 is a rectangular frame divided into four equal quadrants, each filled with a different color. In the center of the rectangle is a slanted edge chart for sharpness checks. Four ArUco markers are aligned with the four outer corners of the rectangle to assist in obtaining accurate coordinates of the main rectangle frame at varying zoom ratios.
scene7
test_multi_camera_switch
This test verifies that during preview recording at varying zoom ratios, the switch between the ultrawide (UW) and wide (W) lenses results in similar RGB values.
The test uses different zoom ratios within the predefined range to perform a dynamic preview recording and identify the point at which the physical camera changes. This point marks the crossover from the UW to the W lens.
The frames captured at and before the crossover point are analyzed for auto exposure (AE), auto white balance (AWB), and autofocus (AF).
The AE check ensures that the luma change is within the expected range for both UW and W lens images. The AWB check verifies that the ratios of R/G and B/G are within threshold values for both UW and W lens images. The AF check evaluates the sharpness estimation value based on the average gradient magnitude between UW and W lens images.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: For the test to pass, the AE, AWB, and AF checks must all pass. The following are the criteria for each check:
- AE check: The luma change between the UW and W lens images must be less than 0.5%.
- AWB check: The difference between the R/G and B/G values for the UW and W lens images must be less than 0.5%.
- AF check: The image sharpness change between the UW and W lens images must be less than 2%.
scene8
Scene8 is a rectangular frame divided into four equal regions, each containing a portrait taken with a different exposure or overlaid with a different color shade (blue shade, increased exposure, decreased exposure, yellow shade). Four ArUco markers are aligned with the four outer corners of the rectangle to obtain accurate coordinates of the main rectangle frame.
scene8
test_ae_awb_regions
Tests that the RGB and luma values differ when preview recording at different auto exposure (AE) and auto white balance (AWB) regions.
The test records an eight second preview recording, performing AE and AWB metering on each quadrant for two seconds each. The test then extracts a frame from each region's preview recording, and uses the extracted frames to perform the following AE and AWB checks:
- AE check: Verifies that the frame metering the region with decreased exposure has an increased luma value of more than 1% than the frame metering the region with increased exposure. This verifies that images are brightened when metering a dark region.
- AWB check: Verifies that the ratio of red to blue (of the image's average RGB values) in the frame with the blue metering region is more than 2% higher than the frame with the yellow metering region. This verifies that images have a balanced RGB value when metering a yellow (warm) or blue (cool) region.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
-
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Pass: The AE and AWB checks both pass.
scene9
Scene9 consists of thousands of randomly sized and colored circles to create a scene with very low repeatability to stress JPEG compression algorithms.
scene9
test_jpeg_high_entropy
Tests that camera JPEG compression works on scene9 with high entropy and the JPEG quality factor set to 100%. The zoom factor is increased to ensure the scene displayed on the tablet fills the camera field of view.
APIs tested:
Pass: JPEG file is compressed properly, written, and read back from disk.
test_jpeg_quality
Tests the camera JPEG compression quality. Step JPEG qualities through android.jpeg.quality
and ensures Quantization Tables change correctly.
APIs tested:
Pass: Quantization matrix decreases with quality increase. (Matrix represents the division factor.)
Pixel 4 rear camera luma/chroma DQT matrix averages vs JPEG quality
Failed test example
Note that for very low quality images (jpeg.quality < 50), there is no increase in compression in the quantization matrix.
scene_video
The scene_video
scene is a video scene. It consists of four different colored circles moving back and forth at different frame rates against a white background.
scene_video
test_preview_frame_drop
Tests that the requested preview frame rate is maintained with a dynamic scene. This test runs on all cameras that are exposed to third party apps.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The preview frame rate is at the maximum of the requested frame rate range, and the average variation between consecutive frames is less than the relative tolerance set in the test.
scene_extensions
The scene_extensions
tests are for camera extensions and must use Camera ITS-in-a-Box , as they require precise control of the testing environment. Additionally, all light leakage must be controlled. This might require covering the test rig, DUT, and tablet with a drop cloth as well as eliminating light leakage from the front screen of the DUT.
scene_hdr
The scene_hdr
scene consists of a portrait on the left and a low-contrast QR code on the right.
scene_hdr
test_hdr_extension
Tests the HDR extension . Takes captures with and without the extension enabled, and checks if the extension makes the QR code more detectable.
APIs tested:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Pass: The HDR extension reduces the number of contrast changes needed to detect the QR code or reduces the gradient across the QR code.
scene_low_light
The scene_low_light
scene consists of a grid of squares of varying shades of gray against a black background and the grid of squares are bound by a red outline. The squares are arranged in a Hilbert curve orientation.
scene_low_light
test_night_extension
Tests the Night extension . Takes captures with the extension enabled, and performs the following:
- Detects the presence of 20 squares
- Computes the luma bounded by each square
- Computes the average luma value of the first 6 squares according to the Hilbert curve grid orientation
- Computes the difference in luma value of consecutive squares (for example, square2 - square1) up to squares 5 and 6 (square6 - square5), and finds the average of the five computed differences.
APIs tested:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Pass: The average luma value of the first 6 squares must be at least 90, and the average difference in luma value of consecutive squares up to squares 5 and 6 must be at least 18.
test_low_light_boost_extension
Tests the Low Light Boost AE mode . If Camera2 supports low light boost AE mode, then this test is performed for Camera2. If the night mode camera extension is supported and the extension supports low light boost AE mode, then this test is also performed for the night mode camera extension. This test sets the AE mode to low light boost, takes a frame from the preview, and performs the following:
- Detects the presence of 20 boxes
- Computes the luma bounded by each box
- Computes the average luma value of the first 6 squares according to the Hilbert curve grid orientation
- Computes the difference in luma value of consecutive squares (for example, square2 - square1) up to squares 5 and 6 (square6 - square5), and finds the average of the five computed differences.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
-
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Pass: The average luma value of the first 6 squares must be at least 90, and the average difference in luma value of consecutive squares up to squares 5 and 6 must be at least 18.
scene_flash
The scene_flash
tests require a dark scene in the sensor fusion box.
test_auto_flash
Tests that auto-flash is triggered in a dark scene for rear-facing and front-facing cameras. For front-facing cameras, auto-flash uses the screen to illuminate the scene, not a physical flash unit. The test verifies that auto-flash is fired by checking that the center of the tile image is brighter with auto-flash enabled. To trigger auto-flash, the lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly. The Jetpack Camera App ( JCA ) must be installed on the device before testing. Auto-flash for rear-facing cameras relies on the AE state to be triggered, but auto-flash for front-facing cameras doesn't rely on AE and is always triggered.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Pass: The center of the tile image with auto-flash enabled is brighter than the original scene image for all cameras.
test_flash_strength
Tests that flash strength control in SINGLE
mode is implemented correctly.
Verifies that if the device supports flash strength control during camera use in SINGLE
mode, the flash strength changes with different requested strength levels. Verifies that flash strength control works with different AE_MODES
. For example, if the auto-exposure mode is ON
or OFF
, the flash strength level has an effect on brightness, and if the mode is ON_AUTO_FLASH
, the flash strength level has no effect on brightness. To conduct the test, lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
পাস:
When the auto-exposure mode is ON
or OFF
, the brightness of the image patches increases as the flash strength level increases from no flash to FLASH_SINGLE_STRENGTH_MAX_LEVEL
. When the auto-exposure mode is ON_AUTO_FLASH
, the difference in brightness of the image patches is within tolerance as the flash strength level increases from no flash to FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Tests that the LED snapshots don't saturate or tint the image.
This test adds a lighting controller to the sensor fusion box to control the lights. With the lights set to OFF
, the test takes a capture with the AUTO_FLASH
mode set to ON
. During this capture, the test runs a precapture sequence with the aePrecapture
trigger set to START
, and sets the capture intent to Preview
to take the capture with flash.
Because the capture has a distinctive hotspot due to flash, the test computes the flash image mean of the entire capture and verifies whether the value is within the (68, 102) range. To check if the image is reasonably white-balanced, the test calculates the R/G and B/G ratios and verifies whether the ratios are within 0.95 and 1.05.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Pass: The R/G and B/G ratios are within 0.95 and 1.05. The flash image mean is within the (68, 102) range.
test_preview_min_frame_rate
Tests that the preview frame rate decreases correctly in a dark scene. For this test to work correctly, the lights in the test rig must be turned off by the controller or manually by the test operator.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The preview frame rate is at the minimum of the requested frame rate range, and the variation between frames is less than the absolute tolerance set in the test.
test_torch_strength
Tests that flash strength control in TORCH
mode is implemented correctly.
Verifies that if the device supports flash strength control during camera use in TORCH
mode, the torch strength changes with different requested strength levels. Verifies that flash strength control works with different AE_MODES
. For example, if the auto-exposure mode is ON
or OFF
, the flash strength level has an effect on brightness, and if the mode is ON_AUTO_FLASH
, the flash strength level has no effect on brightness. Verifies that the torch strength stays the same throughout the duration of a burst, simulating a video capture session. To conduct the test, lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
পাস:
When the auto-exposure mode is ON
or OFF
, the brightness of the image burst patches increases as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL
. When the auto-exposure mode is ON_AUTO_FLASH
, the difference in brightness of the image burst patches are within tolerance as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL
.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern and ArUco markers. For optimum results, ensure the test chart is mounted flat. Charts that aren't flat affect the rotation calculations for many of the tests. The chart must fill the back of the sensor fusion box by printing at 17"x17" (43x43 cm). The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Sensor fusion chart
Sensor fusion chart that fills the back of the sensor fusion box
test_lens_intrinsic_calibration
Tests that the optical center of the lens intrinsic changes when the lens moves due to optical image stabilization (OIS). If lens intrinsic samples are supported, tests that the optical center of the lens intrinsic samples changes when the lens moves due to optical image stabilization (OIS).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The optical center of the lens intrinsic changes by one pixel or more. If lens intrinsic samples are supported, the optical centers of the lens intrinsic samples change by one pixel or more.
Example of test_lens_intrinsic_calibration
plot showing changes of principal points in pixels for each frame
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_preview_distortion
Tests that distortion is corrected throughout each preview frame taken at various zoom levels. For each preview frame, the test calculates ideal points based on camera intrinsics and extrinsics. In the example image, ideal points are shown in green; actual points are shown in red. The distortion error is calculated based on the root mean square (RMS) pixel distance between the actual points and ideal points. The green and red highlights on the image are used to visually detect the area of distortion error.
Image of checkerboard with ideal points as green and actual points as red
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The normalized distortion error of each preview frame is less than 0.1.
test_preview_stabilization
Tests that stabilized preview video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .
Fail mechanisms:
- Offset error: The camera-gyroscope offset isn't correctly calibrated to within +/-1 ms.
- Frame drops: The pipeline isn't fast enough to capture 200 frames consecutively.
- Socket errors:
adb
can't reliably connect to the DUT long enough to execute the test. - The chart isn't mounted flat. The plot
test_sensor_fusion_plot_rotations
has frames where the gyroscope and camera rotation vary considerably as the camera rotates through the parts of the chart that aren't flat. - The camera isn't mounted flat. The plot
test_sensor_fusion_gyro_events
shows movement in the X and Y planes. This failure is more common in front-facing cameras as the rear camera often has a raised bump to the rest of the phone body, creating a tilt when mounting the rear of the phone to the mounting plate.
test_video_stabilization
Tests that stabilized video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
feature_combination
The feature_combination
tests verify that features work correctly when multiple camera features are enabled at the same time. These tests use the same checkerboard image that is used in the sensor fusion scene .
test_feature_combination
Tests all combinations of different stream combinations, preview stabilization, target FPS range, 10-bit HDR video, and Ultra HDR that are supported by the camera device. This test is very memory intensive, so we recommend using a host with at least 128 GB of RAM.
For Android 15 and higher, the configuration file includes a log_feature_combo_support
field, which defaults to False
. When the log_feature_combo_support
field is set to True
, the test runs all combinations of supported features, and logs the results into a proto file without failing the test. For compliance testing, the log_feature_combo_support
field must be set to False
.
APIs tested:
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Pass: For each supported feature combination:
- The preview stream is stabilized if preview stabilization is on.
- The preview frame rate falls within the configured
AE_TARGET_FPS_RANGE
. - The recorded preview stream's color space matches what's set.
- The Ultra HDR capture has a valid gain map.
This page provides a comprehensive list of the tests under the Camera Image Test Suite (ITS), which is part of the Android Compatibility Test Suite (CTS) Verifier. ITS tests are functional tests, meaning that they don't measure image quality, but that all of the advertised camera functions are working as expected. This document lets developers and testers understand what the individual tests do and how to debug test failures.
Camera ITS gates tests by required camera properties, API level, and media performance class (MPC) level. For API level, ITS uses ro.product.first_api_level
to gate tests added in a specific API level that test for negative user experiences for functionality in lower API levels. ITS uses ro.vendor.api_level
to gate tests for features added in a specific API level that require new hardware capability. If ro.odm.build.media_performance_class
is defined for a device, ITS requires specific tests to be run depending on the MPC level.
Tests are grouped by scene as follows:
- scene0 : Capture metadata, jitter, gyroscope, vibration
- scene1 : Exposure, sensitivity, EV compensation, YUV vs JPEG/RAW
- scene2 : Face detection, tests requiring color scenes
- scene3 : Edge enhancement, lens movement
- scene4 : Aspect ratio, cropping, field-of-view
- scene5 : Lens shading
- scene6 : Zoom
- scene7 : Multi camera switch
- scene8 : AE and AWB region metering
- scene9 : JPEG compression
- scene_extensions : Camera extensions
- scene_flash : Autoflash, min frame rate
- scene_video : Frame drops
- sensor_fusion : Camera/gyroscope timing offset
- feature_combination : Feature combinations
See individual sections for a description of each scene.
scene0
Scene0 tests require no specific scene information. However, the phone must be stationary for gyroscope and vibration testing.
test_jitter
Measures jitter in camera timestamps.
APIs tested:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Pass: There's at least a 30 ms delta between frames.
test_jitter_plot.png (Note the small y-axis range. Jitter is actually small in this plot.)
test_metadata
Tests the validity of metadata entries. Looks at capture results and at the camera characteristics objects. This test uses auto_capture_request
exposure and gain values because image content isn't important.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Hardware level, rollingShutterSkew
, frameDuration
tags, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV, hyperfocal distance are present and have valid values.
test_request_capture_match
Tests that the device writes the correct exposure and gain values by reading back the capture metadata.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Pass: Request and capture metadata values match across all shots.
test_sensor_events
Tests that device queries and prints out sensor events for devices that advertise sensor fusion support. The sensors expected are accelerometer, gyroscope, and magnetometer. This test only works if the screen is on, meaning the device isn't in standby mode.
APIs tested:
Pass: Events for each sensor are received.
test_solid_color_test_pattern
Tests that solid color test patterns are generated properly for camera muting. If camera muting is supported, solid color test patterns must be supported. If camera muting is not supported, solid color test patterns are only tested if the capability is advertised.
If RAW images are supported, color assignment is tested as well. The colors tested are black, white, red, blue, and green. For cameras that don't support RAW images, only black is tested.
APIs tested:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Pass: Solid test patterns supported are the correct color and there is low variance in the image.
test_test_pattern
Tests the android.sensor.testPatternMode
parameter to capture frames for each valid test pattern and checks that the frames are generated correctly for solid colors and color bars. This test includes the following steps:
- Captures images for all supported test patterns.
- Performs a simple correctness check for solid color test pattern and color bars.
APIs tested:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Pass: Supported test patterns are generated correctly.
test_test_patterns_2.jpg
test_tonemap_curve
Tests conversion of test pattern from RAW to YUV with linear tonemap. This test requires android.sensor.testPatternMode = 2
(COLOR_BARS) to generate a perfect image pattern for tonemap conversion. Ensures pipeline has proper color outputs with linear tonemap and ideal image input (relies on test_test_patterns
).
APIs tested:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: The YUV and the RAW look similar to each other.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Tests if image and motion sensor events are in the same time domain.
APIs tested:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Pass: Motion timestamps are between the two image timestamps.
test_vibration_restriction
Tests if the device's vibration is functioning as expected.
APIs tested:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Pass: The device doesn't vibrate when muted by the camera audio restriction API.
scene1
scene1 is a gray chart. The gray chart must cover the center 30% of the camera field of view. The gray chart is expected to challenge 3A (auto exposure, auto white balance, auto focus) moderately as the center region has no features. However, the capture request specifies the entire scene which includes sufficient features for 3A to converge.
RFoV cameras can be tested in the WFoV or the RFoV test rig. If a RFoV camera is tested in the WFoV test rig, the chart is scaled by ⅔ to ensure some boundaries for the gray chart in the FoV to help 3A converge. For more detailed descriptions of the camera test rigs, see Camera ITS-in-a-box .
scene1: Full size chart (left). ⅔ scaled chart (right).
test_ae_precapture_trigger
Tests the AE state machine when using the precapture trigger. Captures five manual requests with AE disabled. The last request has an AE precapture trigger, which should be ignored because AE is disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: AE converges.
test_auto_vs_manual
Tests that captured auto and manual shots look the same.
APIs tested:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Pass: Manual white balance gains and transform reported in each capture result match with the auto white balance estimate
from camera's 3A algorithm.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_black_white
Tests that the device produces full black and white images. Takes two captures, the first with extremely low gain and short exposure, which results in a black photo, and the second with extremely high gain and long exposure, which results in a white photo.
APIs tested:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Produces black and white images. Saturated channels of white images have RGB values of [255, 255, 255] with a margin of error of less than 1% difference.
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_capture
Verifies that the entire capture pipeline can keep up with the speed of fullsize capture and CPU time.
APIs tested:
Pass: Captures a burst of full size images, checks for frame drops and image brightness.
test_burst_sameness_manual
Takes 5 bursts of 50 images with manual capture setting and checks that they're all identical. This test can be used to identify if there are sporadic frames that are processed differently or have artifacts.
APIs tested:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Pass: Images are identical visually and in RGB values.
Fail: Shows a spike or drop of the RGB average chart at the beginning of each burst
- Tolerance is 3% for
first_API_level
< 30 - Tolerance is 2% for
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Tests that valid data comes back in CaptureResult
objects. Does an auto, manual, and auto capture.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: Metadata is valid for all captures and the manual settings don't leak into the second auto capture. Plots out the lens shading correction for the captures.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Tests that the RAW streams aren't croppable.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: YUV images get center-cropped but not RAW images.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Tests that crop regions work. Takes a full image and creates patches of 5 different regions (corners and center.) Takes images with crop set for the 5 regions. Compares the patch and the crop image values.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: Image of the cropped region matches the patch that corresponds to the crop image.
test_dng_noise_model
Verifies that the DNG raw model parameters are correct. The plot depicts the measured variance of a center patch of the grey card in raw shots captured over a range of sensitivities, and compares these values with the variance that is expected at each sensitivity by the DNG noise model in the camera HAL (based on the O,S parameters returned in the capture result objects). For a more details on the DNG noise model, download the following document on the DNG Noise Model .
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: DNG raw model parameters are correct. Expected RGB values match that of the actual RGB values measured.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Tests that the exposure value (EV) compensation is applied. The test increases exposure in eight steps, and checks measured brightness versus expected brightness. Expected values are calculated from image brightness of image with no EV compensation applied and the expected value will saturate if the calculated values exceed the actual image value range. Test fails if the expected values and measured values don't match or images overexpose within five steps.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Pass: Images show increasing exposure without overexposing within five steps.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Tests that the EV compensation is applied using a range created with CONTROL_AE_COMPENSATION_STEP
. Eight frames are captured at each compensation value.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: Captures increase in luma with increased EV compensation setting, and the eight frames captured for each EV compensation setting have stable luma values.
test_ev_compensation_basic.png
test_exposure_x_iso
Tests that a constant exposure is achieved as ISO and exposure time vary. Takes a series of shots that have ISO and exposure time chosen to balance each other. Results should have the same brightness, but over the sequence the image should get noisier. Verifies sample pixel mean values are close to each other. Ensures that the images aren't clamped to 0 or 1 (which would make them look like flat lines). The test can also be run with RAW images by setting the debug
flag in your configuration file.
APIs tested:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Images have the same brightness, but get noisier with higher ISO. RGB planes are flat when the value of ISO*exposure is constant over the tested gain space.
Fail mechanism:
- In
test_exposure_plot_means.png
, as the gain multiplier values (x-axis) increase, the normalized RGB plane average values (y-axis) start to deviate from the low gain multiplier values.
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Tests that converted YUV images and device JPEG images look the same. Test takes the center 10% of the image and calculates the RGB value, and verifies that they match.
APIs tested:
Pass: The average RGB difference between each image is less than 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Tests that settings (exposure and gain) latch on the right frame for FULL
and LEVEL_3
cameras. Takes a series of shots using back-to-back requests, varying the capture request parameters between shots. Checks that the images have the expected properties.
APIs tested:
Pass: Images [2, 3, 6, 8, 10, 12, 13] have increased ISO or exposure and show up with higher RGB means on test_latching_plot_means.png
.
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
Tests that device processing can be inverted to linear pixels. Captures a sequence of shots with the device pointed at a uniform target.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: R, G, B values must increase linearly with increased sensitivity.
test_linearity_plot_means.png
test_locked_burst
Tests 3A lock and YUV burst (using auto setting). This test is designed to pass even on limited devices that don't have MANUAL_SENSOR
or PER_FRAME_CONTROLS
. The test checks YUV image consistency while the frame rate check is in CTS.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Pass: Captures look consistent.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_param_color_correction
Tests that the android.colorCorrection.*
parameters are applied when set. Takes shots with different transform and gain values, and tests that they look correspondingly different. The transform and gains are chosen to make the output increasingly red or blue. Uses a linear tonemap. Tone mapping is a technique used in image processing to map one set of colors to another to approximate the appearance of high-dynamic-range images in a medium that has a more limited dynamic range.
APIs tested:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pass: R and B values boost according to transformation.
test_param_color_correction_plot_means.png
*The x-axis is the capture requests: 0 = unity, 1=red boost, 2= blue boost
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R boost)
test_param_color_correction_req=2.jpg (B boost)
test_param_flash_mode
Tests that the android.flash.mode
parameter is applied. Manually sets the exposure to be on the dark side, so that it is obvious whether the flash fired or not, and uses a linear tonemap. Checks the center with the tile image to see if there's a large gradient that's created to verify whether the flash fired.
APIs tested:
Pass: The center of the tile image has a large gradient meaning that the flash fired.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
Tests that the android.noiseReduction.mode
parameter is applied correctly when set. Captures images with the camera dimly lit. Uses a high analog gain to ensure the captured image is noisy. Captures three images, for NR off, "fast", and "high quality". Also captures an image with low gain and NR off, and uses the variance of this as the baseline. The higher the SNR (Signal to Noise Ratio), the better the image quality.
APIs tested:
Pass: SNR varies with different noise reduction modes and behaves similarly as the graph below.
test_param_noise_reduction_plot_SNRs.png
0: OFF, 1: FAST, 2: HQ, 3: MIN , 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_shading_mode
Tests that the android.shading.mode
parameter is applied.
APIs tested:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Pass: Shading modes are switched and the lens shading maps are modified as expected.
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
Tests that the android.tonemap.mode parameter is applied. Applies different tonemap curves to each R, G, B channel, and checks that the output images are modified as expected. This test consists of two tests, test1 and test2.
APIs tested:
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
পাস:
- test1: Both images have a linear tonemap, but n=1 has a steeper gradient. The G (green) channel is brighter for the n=1 image.
- test2: Same tonemap, but different length. ছবি একই.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Checks post RAW sensitivity boost. Captures a set of RAW and YUV images with different sensitivity, posts RAW sensitivity boost combination and checks if the output pixel mean matches request settings.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: RAW images get darker as boost increases while YUV images stay constant in brightness
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
Captures a set of raw images with increasing gains and measures the noise. Captures raw-only, in a burst.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: Each shot is noisier than the previous shot, as the gain is increasing.
Uses the variance of the center stats grid cell.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Captures a set of raw images with increasing exposure time and measures the pixel values.
APIs tested:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: Increasing the ISO (gain) makes the pixels more sensitive to light, so the plot moves towards the left.
test_raw_exposure_s=55.png
(10⁰ is 1 ms, 10¹ is 10 ms, 10⁻¹ is 0.1 ms)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensitivity
Captures a set of raw images with increasing sensitivities and measures the noise (variance) in the center 10% of image. Tests that each shot is noisier than the previous one.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: Variance increases with each shot.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Tests that android.noiseReduction.mode
is applied for reprocessing requests. Captures reprocessed images with the camera dimly lit. Uses a high analog gain to ensure the capture image is noisy. Captures three reprocessed images, for NR off, "fast", and "high quality". Captures a reprocessed image with low gain and NR off, and uses the variance of this as the baseline.
APIs tested:
Pass: FAST >= OFF, HQ >= FAST, HQ >> OFF
Typical SNR vs NR_MODE plot
test_tonemap_sequence
Tests a sequence of shots with different tonemap curves. Captures 3 manual shots with a linear tonemap. Captures 3 manual shots with default tonemap. Computes the delta between each consecutive frame pair.
APIs tested:
Pass: There are 3 identical frames followed by a different set of 3 identical frames.
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
Tests that all reported sizes and formats for image capture work. Uses a manual request with a linear tonemap so that the YUV and JPEG look the same when converted by the image_processing_utils
module. Images aren't saved by default, but can be saved by enabling debug_mode
.
APIs tested:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Pass: All image centers have a max RMS (root-mean-square value of a signal) difference in RGB converted images with 3% of highest resolution YUV image.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Tests that the reported sizes and formats for image capture work.
APIs tested:
Pass: Test completes and returns the images requested.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Tests capturing a single frame as both YUV and JPEG outputs. Uses a manual request with a linear tonemap so that the YUV and JPEG look the same when converted by the image_processing_utils
module.
APIs tested:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Pass: YUV and JPEG images are similar and have less than 1% RMS (root-mean-square value of a signal) difference.
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Tests capturing a single frame as both RAW/RAW10/RAW12 and YUV outputs if supported. Uses a manual request with linear tonemap so raw and YUV are expected to be the same. Compares RGB converted images' center 10% RGB values. Logs android.shading.mode
.
APIs tested:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
-
android.hardware.graphics.ImageFormat#RAW12
Pass: YUV and raw images are similar and have less than 3.5% RMS (root-mean-square value of a signal) difference.
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scene2_a
scene2_a has three faces with a gray background and neutral clothing. The faces are chosen to have a wide range of skin tones. The chart must have the correct orientation for face detection to work optimally.
scene2_a
test_autoframing
Tests the camera device's autoframing behavior. Performs a large zoom such that none of the faces in the scene are visible, enables the autoframing mode by setting AUTOFRAMING
in CaptureRequest
to True
, and verifies whether all the faces in the original scene can be detected when the state converges (that is, when AUTOFRAMING_STATE
in CaptureResult
is set to AUTOFRAMING_STATE_CONVERGED
).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Pass: All three faces are detected.
test_display_p3
Tests Display P3 capture in JPEG using the ColorSpaceProfiles
API. Tests that the captured JPEG has an appropriate ICC profile in its header, and that the image contains colors outside of the sRGB gamut.
APIs tested:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Pass: The JPEG contains a Display P3 ICC profile and colors outside the sRGB gamut.
test_effects
Captures frame for supported camera effects and checks if they are generated correctly. The test only checks effects OFF
and MONO
, but saves images for all supported effects.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: Captures the scene image with effects OFF
and a monochrome image with effects set to MONO
.
test_effects_MONO.jpg
test_format_combos
Tests different combinations of output formats.
APIs tested:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Pass: All the combinations are successfully captured.
test_num_faces
Tests face detection.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds three faces.
test_num_faces_fd_mode_1.jpg
test_reprocess_uv_swap
Tests that YUV reprocessing doesn't swap the U and V planes. This is detected by calculating the sum of absolute differences (SAD) between the reprocessed image and a non-reprocessed capture. If swapping the output U and V planes of the reprocessed capture results in an increased SAD, then the output is assumed to have the correct U and V planes.
APIs tested:
-
android.hardware.camera2.CameraDevice#createCaptureSession
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Pass: The U and V planes aren't swapped.
test_reprocess_uv_swap.png
scene2_b
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Captures two images using the largest common YUV and JPEG formats with the same aspect ratio as the largest JPEG format not exceeding a resolution of 1920x1440. Sets jpeg.quality
to 100 and captures a dual surface request. Converts both images to RGB arrays and calculates the 3D root mean square (RMS) difference between the two images.
In addition, this test verifies that the YUV outputs for all supported stream use cases are reasonably similar to the YUV with the STILL_CAPTURE
use case.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
Pass: YUV and JPEG images for the STILL_CAPTURE
use case have less than 3% RMS (root-mean-square value of a signal) difference; YUV images for all supported use cases have less than 10% RMS difference from YUV images with the STILL_CAPTURE
use case.
scene2_c
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Tests JPEG capture latency for the S performance class as specified in section 2.2.7.2 Camera in the CDD.
Pass: MUST have camera2 JPEG capture latency < 1000ms for 1080p resolution as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras.
test_camera_launch_perf_class
Tests camera launch latency for the S performance class as specified section 2.2.7.2 Camera in the CDD.
Pass: MUST have camera2 startup latency (open camera to first preview frame) < 600ms as measured by the CTS camera PerformanceTest under ITS lighting conditions (3000K) for both primary cameras.
test_default_camera_hdr
Tests that default camera capture is Ultra HDR for performance class 15 as specified in section 2.2.7.2 Camera of the CDD.
Pass: Default camera package capture MUST be Ultra HDR for a performance class 15 device.
scene2_d
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
scene2_e
test_continuous_picture
50 VGA resolution frames are captured with the capture request first setting android.control.afMode = 4 (CONTINUOUS_PICTURE).
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Pass: 3A system settles by the end of a 50-frame capture.
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
scene2_f
scene2_f has three faces with a white background and white clothing. The faces have a wide range of skin tones and high contrast with the background.
scene2_f
test_num_faces
Tests face detection with increased skin tone diversity in face scenes.
APIs tested:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Finds 3 faces.
test_num_faces_fd_mode_1.jpg
scene3
Scene3 uses the ISO12233 chart, and most tests use a chart extractor method to find the chart in the scene. For this reason, most of the saved images don't have borders like the images for scenes 1, 2 or 4, but only the chart. The chart must be in the correct orientation for the chart finder to work optimally.
test_edge_enhancement
Tests that the android.edge.mode
parameter is applied correctly. Captures non-reprocess images for each edge mode and returns sharpness of the output image and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, and output surface parameter.
Pass: HQ
mode (2) sharper than OFF
mode (0). FAST
mode (1) sharper than OFF
mode. HQ
mode sharper or equal to FAST
mode.
APIs tested:
Impacted camera parameters:
-
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (fast mode)
test_edge_enhancement_edge=2.jpg (high quality mode)
test_flip_mirror
Tests if image is properly oriented as per CDD section 7.5.2 Front-Facing Camera [C-1-5] .
Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.
Pass: Image isn't flipped, mirrored or rotated.
test_flip_mirror_scene_patch.jpg
test_imu_drift
Tests if the inertial measurement unit (IMU) has stable output for 30 seconds while the device is stationary and capturing a high definition preview.
APIs tested:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_GYROSCOPE
-
android.hardware.Sensor#TYPE_ROTATION_VECTOR
পাস:
- The drift of the gyro is less than 0.01 rad over the test time.
- The variance of the gyro reading is less than 1E-7 rad 2 /s 2 /Hz over the test time.
- The drift of the rotation vector is less than 0.01 rad over the test time.
- (Not yet mandated) the drift of the gyro is less than 1 degree per second.
test_imu_drift_gyro_drift.png
test_imu_drift_rotation_vector_drift.png
test_landscape_to_portrait
Tests if the landscape to portrait override functions correctly for landscape-oriented sensors.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Pass: The test is able to locate a chart with the expected rotation (0 degrees when the landscape to portrait override is disabled, 90 degrees when enabled).
test_landscape_to_portrait.png
test_lens_movement_reporting
Tests if the lens movement flag is properly reported. Captures a burst of 24 images with the first 12 frames at the optimum focus distance (as found by 3A) and the last 12 frames at the minimum focus distance. Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilizes as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first few frames with the lens stationary at optimum focal distance, and the final few frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Lens movement flag is True
in the frame with sharpness change.
Fail mechanisms:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) intest_log.DEBUG
is asserted only in frames where sharpness isn't changing. - Frames with
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) intest_log.DEBUG
has a sharpness difference compared to the first few frames at optimum focal distance or the last few frames at minimum focus distance.
test_reprocess_edge_enhancement
Tests if supported reprocess methods for edge enhancement work properly. Processes a capture request with a given reprocess edge mode and compares different modes to capture with reprocess edge modes disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct. HQ
(mode 2) is sharper than OFF
(mode 0), and improvement between different modes is similar.
test_reprocess_edge_enhancement_plot.png
scene4
Scene4 consists of a black circle on a white background inside a square. Tests in scene4 can be sensitive to alignment, so starting in 15, you can use check_alignment.py
in the tools directory to enable a check of the DUT and chart alignment.
scene4
test_30_60fps_preview_fov_match
Tests that 30 FPS and 60 FPS preview videos have the same FoV. The test captures two videos, one with 30 FPS and another with 60 FPS. A representative frame is selected from each video and analyzed to ensure that the FoV changes in the two videos are within specifications. Tests that the circle's aspect ratio remains constant, the center of the circle remains stable, and the radius of the circle remains constant.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum aspect ratio change between 30 FPS and 60 FPS videos is no more than 7.5%
Fail mechanisms:
- The circle from the 30 FPS video is significantly different in size from the 60 FPS video.
- The circle in the captured image is distorted by the processing pipeline.
- The circle in the captured image is cropped due to an extreme aspect ratio capture request reducing the height or width of the image.
- The circle in the captured image has a reflection in the center and doesn't appear fully filled.
test_aspect_ratio_and_crop
Tests if images are distorted or cropped unexpectedly in the image pipeline. Takes pictures of a circle over all formats. Verifies the circle isn't distorted, the circle doesn't move from the center of image, and the circle doesn't change size incorrectly with different aspect ratios or resolutions.
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
Fail mechanisms:
- The camera isn't aligned with the circle displayed on the tablet in the center of the captured scene.
- The circle in the captured image is distorted by the processing pipeline.
- Lower resolution image is double cropped in the image pipeline creating different FoV between high and low resolution images.
- The circle in the captured image is cropped due to an extreme aspect ratio capture request reducing the height or width of the image.
- The circle in the captured image has a reflection in the center and doesn't appear fully filled.
test_multi_camera_alignment
Tests the camera calibration parameters related to camera positioning for multi-camera systems. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Pass: Circle centers and sizes are as expected in projected images compared to captured images using camera calibration data and focal lengths.
Fail mechanisms:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
, orLENS_POSE_ROTATION
are design values and not actual calibration data. - The camera system isn't appropriate for the test setup. For example, testing a wide and an ultra-wide camera system with the RFoV test rig. For more information, see Camera ITS-in-a-box FAQ1 .
test_preview_aspect_ratio_and_crop
Similar to the test_aspect_ratio_and_crop test for still captures, this test checks the supported preview formats to ensure the preview frames aren't stretched or cropped inappropriately. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center of the frame, and the circle size doesn't change for a constant format or with different resolutions (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
test_preview_stabilization_fov
Checks the supported preview sizes to ensure the FoV is cropped appropriately. The test captures two videos, one with preview stabilization ON
, and another with preview stabilization OFF
. A representative frame is selected from each video, and analyzed to ensure that the FoV changes in the two videos are within spec.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%.
test_video_aspect_ratio_and_crop
Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
scene5
Scene5 requires a uniformly lit gray scene. This is accomplished by a diffuser placed over the camera lens. We recommend the following diffuser: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
To prepare the scene, attach a diffuser in front of the camera and point the camera to a lighting source of around 2000 lux. Images captured for scene5 require diffuse lighting with no features evident. The following is a sample image:
scene5 capture
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range. Tests in scene6 can be sensitive to alignment, so starting in 15, you can use check_alignment.py
in the tools directory to enable a check of the DUT and chart alignment.
scene6
test_in_sensor_zoom
Tests the behavior of the camera in-sensor zoom feature, which produces cropped RAW images.
With the stream use case set to CROPPED_RAW
, the test takes two captures over the zoom range, a full field of view (FoV) RAW image and a cropped RAW image. The test converts the images to RGB arrays, downscales the full-sized cropped RAW image to the size reported by SCALER_RAW_CROP_REGION
, and calculates the 3D root mean square (RMS) difference between the two images.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Pass: The 3D root mean square (RMS) difference between the downscaled cropped RAW image and the full FoV RAW image is less than 1%.
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in. For each format (YUV, JPEG), the same camera capture session is used to converge 3A and take captures.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
test_low_latency_zoom
Tests the camera low latency zoom behavior. Takes captures over the zoom range with android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
, and checks if the circles in the output images match the zoom ratios in the capture metadata. The same camera capture session is used to converge 3A and take captures.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Pass: Relative size of captured circle is accurate against the zoom ratio result metadata.
test_preview_video_zoom_match
Tests that while recording and zooming, video preview and video output display and record the same output. Calculates the size of the circle closest to the center at different zoom ratios and checks whether the size of the circle increases as the zoom ratio increases.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio in video and preview.
VGA_640x480_key_frame.png (before zoom)
preview_640x480_key_frame.png (before zoom)
VGA_640x480_key_frame.png (after zoom)
preview_640x480_key_frame.png (after zoom)
test_preview_zoom
Tests that the zoom ratio of each preview frame matches the corresponding capture metadata. The test takes preview frames over the zoom range and finds the contour of the circle closest to the center. The test then checks that the selected circle gets bigger and that the center of the circle moves away from the center of the image as the camera zooms in.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: The relative size of the selected circle is accurate for the reported zoom ratio of the corresponding capture result for all of the preview frames. The relative distance of the selected circle from the center of the image is accurate for the reported zoom ratio of the corresponding capture result of all the preview frames.
test_preview_zoom images showing selected circle closest to the center
test_session_characteristics_zoom
Tests the zoom ratio range for all supported session configurations listed in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
. For each of those configurations, if CameraDeviceSetup#isSessionConfigurationSupported
returns true, the test verifies that the zoom ratio range returned in CameraDeviceSetup#getSessionCharacteristics
can be reached.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Pass: Both the minimum and maximum zoom ratios can be reached for each supported SessionConfiguration
listed in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
scene7
Scene7 is a rectangular frame divided into four equal quadrants, each filled with a different color. In the center of the rectangle is a slanted edge chart for sharpness checks. Four ArUco markers are aligned with the four outer corners of the rectangle to assist in obtaining accurate coordinates of the main rectangle frame at varying zoom ratios.
scene7
test_multi_camera_switch
This test verifies that during preview recording at varying zoom ratios, the switch between the ultrawide (UW) and wide (W) lenses results in similar RGB values.
The test uses different zoom ratios within the predefined range to perform a dynamic preview recording and identify the point at which the physical camera changes. This point marks the crossover from the UW to the W lens.
The frames captured at and before the crossover point are analyzed for auto exposure (AE), auto white balance (AWB), and autofocus (AF).
The AE check ensures that the luma change is within the expected range for both UW and W lens images. The AWB check verifies that the ratios of R/G and B/G are within threshold values for both UW and W lens images. The AF check evaluates the sharpness estimation value based on the average gradient magnitude between UW and W lens images.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: For the test to pass, the AE, AWB, and AF checks must all pass. The following are the criteria for each check:
- AE check: The luma change between the UW and W lens images must be less than 0.5%.
- AWB check: The difference between the R/G and B/G values for the UW and W lens images must be less than 0.5%.
- AF check: The image sharpness change between the UW and W lens images must be less than 2%.
scene8
Scene8 is a rectangular frame divided into four equal regions, each containing a portrait taken with a different exposure or overlaid with a different color shade (blue shade, increased exposure, decreased exposure, yellow shade). Four ArUco markers are aligned with the four outer corners of the rectangle to obtain accurate coordinates of the main rectangle frame.
scene8
test_ae_awb_regions
Tests that the RGB and luma values differ when preview recording at different auto exposure (AE) and auto white balance (AWB) regions.
The test records an eight second preview recording, performing AE and AWB metering on each quadrant for two seconds each. The test then extracts a frame from each region's preview recording, and uses the extracted frames to perform the following AE and AWB checks:
- AE check: Verifies that the frame metering the region with decreased exposure has an increased luma value of more than 1% than the frame metering the region with increased exposure. This verifies that images are brightened when metering a dark region.
- AWB check: Verifies that the ratio of red to blue (of the image's average RGB values) in the frame with the blue metering region is more than 2% higher than the frame with the yellow metering region. This verifies that images have a balanced RGB value when metering a yellow (warm) or blue (cool) region.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
-
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Pass: The AE and AWB checks both pass.
scene9
Scene9 consists of thousands of randomly sized and colored circles to create a scene with very low repeatability to stress JPEG compression algorithms.
scene9
test_jpeg_high_entropy
Tests that camera JPEG compression works on scene9 with high entropy and the JPEG quality factor set to 100%. The zoom factor is increased to ensure the scene displayed on the tablet fills the camera field of view.
APIs tested:
Pass: JPEG file is compressed properly, written, and read back from disk.
test_jpeg_quality
Tests the camera JPEG compression quality. Step JPEG qualities through android.jpeg.quality
and ensures Quantization Tables change correctly.
APIs tested:
Pass: Quantization matrix decreases with quality increase. (Matrix represents the division factor.)
Pixel 4 rear camera luma/chroma DQT matrix averages vs JPEG quality
Failed test example
Note that for very low quality images (jpeg.quality < 50), there is no increase in compression in the quantization matrix.
scene_video
The scene_video
scene is a video scene. It consists of four different colored circles moving back and forth at different frame rates against a white background.
scene_video
test_preview_frame_drop
Tests that the requested preview frame rate is maintained with a dynamic scene. This test runs on all cameras that are exposed to third party apps.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The preview frame rate is at the maximum of the requested frame rate range, and the average variation between consecutive frames is less than the relative tolerance set in the test.
scene_extensions
The scene_extensions
tests are for camera extensions and must use Camera ITS-in-a-Box , as they require precise control of the testing environment. Additionally, all light leakage must be controlled. This might require covering the test rig, DUT, and tablet with a drop cloth as well as eliminating light leakage from the front screen of the DUT.
scene_hdr
The scene_hdr
scene consists of a portrait on the left and a low-contrast QR code on the right.
scene_hdr
test_hdr_extension
Tests the HDR extension . Takes captures with and without the extension enabled, and checks if the extension makes the QR code more detectable.
APIs tested:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Pass: The HDR extension reduces the number of contrast changes needed to detect the QR code or reduces the gradient across the QR code.
scene_low_light
The scene_low_light
scene consists of a grid of squares of varying shades of gray against a black background and the grid of squares are bound by a red outline. The squares are arranged in a Hilbert curve orientation.
scene_low_light
test_night_extension
Tests the Night extension . Takes captures with the extension enabled, and performs the following:
- Detects the presence of 20 squares
- Computes the luma bounded by each square
- Computes the average luma value of the first 6 squares according to the Hilbert curve grid orientation
- Computes the difference in luma value of consecutive squares (for example, square2 - square1) up to squares 5 and 6 (square6 - square5), and finds the average of the five computed differences.
APIs tested:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Pass: The average luma value of the first 6 squares must be at least 90, and the average difference in luma value of consecutive squares up to squares 5 and 6 must be at least 18.
test_low_light_boost_extension
Tests the Low Light Boost AE mode . If Camera2 supports low light boost AE mode, then this test is performed for Camera2. If the night mode camera extension is supported and the extension supports low light boost AE mode, then this test is also performed for the night mode camera extension. This test sets the AE mode to low light boost, takes a frame from the preview, and performs the following:
- Detects the presence of 20 boxes
- Computes the luma bounded by each box
- Computes the average luma value of the first 6 squares according to the Hilbert curve grid orientation
- Computes the difference in luma value of consecutive squares (for example, square2 - square1) up to squares 5 and 6 (square6 - square5), and finds the average of the five computed differences.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
-
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Pass: The average luma value of the first 6 squares must be at least 90, and the average difference in luma value of consecutive squares up to squares 5 and 6 must be at least 18.
scene_flash
The scene_flash
tests require a dark scene in the sensor fusion box.
test_auto_flash
Tests that auto-flash is triggered in a dark scene for rear-facing and front-facing cameras. For front-facing cameras, auto-flash uses the screen to illuminate the scene, not a physical flash unit. The test verifies that auto-flash is fired by checking that the center of the tile image is brighter with auto-flash enabled. To trigger auto-flash, the lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly. The Jetpack Camera App ( JCA ) must be installed on the device before testing. Auto-flash for rear-facing cameras relies on the AE state to be triggered, but auto-flash for front-facing cameras doesn't rely on AE and is always triggered.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Pass: The center of the tile image with auto-flash enabled is brighter than the original scene image for all cameras.
test_flash_strength
Tests that flash strength control in SINGLE
mode is implemented correctly.
Verifies that if the device supports flash strength control during camera use in SINGLE
mode, the flash strength changes with different requested strength levels. Verifies that flash strength control works with different AE_MODES
. For example, if the auto-exposure mode is ON
or OFF
, the flash strength level has an effect on brightness, and if the mode is ON_AUTO_FLASH
, the flash strength level has no effect on brightness. To conduct the test, lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
পাস:
When the auto-exposure mode is ON
or OFF
, the brightness of the image patches increases as the flash strength level increases from no flash to FLASH_SINGLE_STRENGTH_MAX_LEVEL
. When the auto-exposure mode is ON_AUTO_FLASH
, the difference in brightness of the image patches is within tolerance as the flash strength level increases from no flash to FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Tests that the LED snapshots don't saturate or tint the image.
This test adds a lighting controller to the sensor fusion box to control the lights. With the lights set to OFF
, the test takes a capture with the AUTO_FLASH
mode set to ON
. During this capture, the test runs a precapture sequence with the aePrecapture
trigger set to START
, and sets the capture intent to Preview
to take the capture with flash.
Because the capture has a distinctive hotspot due to flash, the test computes the flash image mean of the entire capture and verifies whether the value is within the (68, 102) range. To check if the image is reasonably white-balanced, the test calculates the R/G and B/G ratios and verifies whether the ratios are within 0.95 and 1.05.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Pass: The R/G and B/G ratios are within 0.95 and 1.05. The flash image mean is within the (68, 102) range.
test_preview_min_frame_rate
Tests that the preview frame rate decreases correctly in a dark scene. For this test to work correctly, the lights in the test rig must be turned off by the controller or manually by the test operator.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The preview frame rate is at the minimum of the requested frame rate range, and the variation between frames is less than the absolute tolerance set in the test.
test_torch_strength
Tests that flash strength control in TORCH
mode is implemented correctly.
Verifies that if the device supports flash strength control during camera use in TORCH
mode, the torch strength changes with different requested strength levels. Verifies that flash strength control works with different AE_MODES
. For example, if the auto-exposure mode is ON
or OFF
, the flash strength level has an effect on brightness, and if the mode is ON_AUTO_FLASH
, the flash strength level has no effect on brightness. Verifies that the torch strength stays the same throughout the duration of a burst, simulating a video capture session. To conduct the test, lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
পাস:
When the auto-exposure mode is ON
or OFF
, the brightness of the image burst patches increases as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL
. When the auto-exposure mode is ON_AUTO_FLASH
, the difference in brightness of the image burst patches are within tolerance as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL
.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern and ArUco markers. For optimum results, ensure the test chart is mounted flat. Charts that aren't flat affect the rotation calculations for many of the tests. The chart must fill the back of the sensor fusion box by printing at 17"x17" (43x43 cm). The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Sensor fusion chart
Sensor fusion chart that fills the back of the sensor fusion box
test_lens_intrinsic_calibration
Tests that the optical center of the lens intrinsic changes when the lens moves due to optical image stabilization (OIS). If lens intrinsic samples are supported, tests that the optical center of the lens intrinsic samples changes when the lens moves due to optical image stabilization (OIS).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The optical center of the lens intrinsic changes by one pixel or more. If lens intrinsic samples are supported, the optical centers of the lens intrinsic samples change by one pixel or more.
Example of test_lens_intrinsic_calibration
plot showing changes of principal points in pixels for each frame
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_preview_distortion
Tests that distortion is corrected throughout each preview frame taken at various zoom levels. For each preview frame, the test calculates ideal points based on camera intrinsics and extrinsics. In the example image, ideal points are shown in green; actual points are shown in red. The distortion error is calculated based on the root mean square (RMS) pixel distance between the actual points and ideal points. The green and red highlights on the image are used to visually detect the area of distortion error.
Image of checkerboard with ideal points as green and actual points as red
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The normalized distortion error of each preview frame is less than 0.1.
test_preview_stabilization
Tests that stabilized preview video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .
Fail mechanisms:
- Offset error: The camera-gyroscope offset isn't correctly calibrated to within +/-1 ms.
- Frame drops: The pipeline isn't fast enough to capture 200 frames consecutively.
- Socket errors:
adb
can't reliably connect to the DUT long enough to execute the test. - The chart isn't mounted flat. The plot
test_sensor_fusion_plot_rotations
has frames where the gyroscope and camera rotation vary considerably as the camera rotates through the parts of the chart that aren't flat. - The camera isn't mounted flat. The plot
test_sensor_fusion_gyro_events
shows movement in the X and Y planes. This failure is more common in front-facing cameras as the rear camera often has a raised bump to the rest of the phone body, creating a tilt when mounting the rear of the phone to the mounting plate.
test_video_stabilization
Tests that stabilized video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
feature_combination
The feature_combination
tests verify that features work correctly when multiple camera features are enabled at the same time. These tests use the same checkerboard image that is used in the sensor fusion scene .
test_feature_combination
Tests all combinations of different stream combinations, preview stabilization, target FPS range, 10-bit HDR video, and Ultra HDR that are supported by the camera device. This test is very memory intensive, so we recommend using a host with at least 128 GB of RAM.
For Android 15 and higher, the configuration file includes a log_feature_combo_support
field, which defaults to False
. When the log_feature_combo_support
field is set to True
, the test runs all combinations of supported features, and logs the results into a proto file without failing the test. For compliance testing, the log_feature_combo_support
field must be set to False
.
APIs tested:
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Pass: For each supported feature combination:
- The preview stream is stabilized if preview stabilization is on.
- The preview frame rate falls within the configured
AE_TARGET_FPS_RANGE
. - The recorded preview stream's color space matches what's set.
- The Ultra HDR capture has a valid gain map.