সেশন প্যারামিটার বৈশিষ্ট্য ক্যামেরা ক্লায়েন্টদের সক্রিয়ভাবে ব্যয়বহুল অনুরোধ পরামিতিগুলির উপসেট কনফিগার করতে সক্ষম করে বিলম্ব হ্রাস করে, অর্থাৎ, সেশন প্যারামিটার, ক্যাপচার সেশন প্রারম্ভিক পর্বের অংশ হিসাবে। এই বৈশিষ্ট্যটির সাহায্যে, আপনার HAL বাস্তবায়নগুলি প্রথম ক্যাপচার অনুরোধের পরিবর্তে স্ট্রিম কনফিগারেশন পর্বের সময় ক্লায়েন্ট প্যারামিটারগুলি গ্রহণ করে এবং তাদের মানগুলির উপর নির্ভর করে, অভ্যন্তরীণ পাইপলাইন আরও দক্ষতার সাথে প্রস্তুত এবং তৈরি করতে পারে।
অ্যান্ড্রয়েড 10-এ, আপনি অভ্যন্তরীণ সেশন প্যারামিটার পুনঃকনফিগারেশন লজিকের উপর আরও নিয়ন্ত্রণের জন্য ঐচ্ছিক সেশন পুনঃকনফিগারেশন ক্যোয়ারী বৈশিষ্ট্যটি ব্যবহার করে কর্মক্ষমতা উন্নত করতে পারেন। আরও তথ্যের জন্য, সেশন পুনর্বিন্যাস ক্যোয়ারী দেখুন।
উদাহরণ এবং উৎস
একটি রেফারেন্স সেশন প্যারামিটার বাস্তবায়ন ইতিমধ্যেই CameraHal এর অংশ। এই HAL লিগ্যাসি Hal API ব্যবহার করে। বাইন্ডারাইজড ক্যামেরাহ্যাল যা ক্যামেরা HIDL API প্রয়োগ করে স্ট্রীম কনফিগারেশনের সময় যেকোনো নতুন ইনকামিং সেশন প্যারামিটার অ্যাক্সেস করতে সংশ্লিষ্ট HIDL সেশনপ্যারাম এন্ট্রি ব্যবহার করতে হবে।
ক্যামেরা ক্লায়েন্টরা getAvailableSessionKeys()
কল করে সমস্ত সমর্থিত সেশন প্যারামিটারের কী জিজ্ঞাসা করতে পারে এবং অবশেষে setSessionParameters()
মাধ্যমে তাদের প্রাথমিক মান সেট করতে পারে।
বাস্তবায়ন
আপনার CameraHal বাস্তবায়নকে অবশ্যই সংশ্লিষ্ট স্ট্যাটিক ক্যামেরা মেটাডেটার মধ্যে ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
পূরণ করতে হবে এবং ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS
এর একটি উপসেট প্রদান করতে হবে, যাতে এমন কীগুলির একটি তালিকা রয়েছে যা প্রতি-ফ্রেমে প্রয়োগ করা কঠিন এবং সেশনের সময় ক্যাপচারের সময়সীমা শেষ হওয়ার সময় শেষ হতে পারে না।
সাধারণ উদাহরণগুলির মধ্যে পরামিতিগুলি অন্তর্ভুক্ত রয়েছে যেগুলির জন্য একটি সময়সাপেক্ষ হার্ডওয়্যার পুনর্বিন্যাস বা একটি অভ্যন্তরীণ ক্যামেরা পাইপলাইন পরিবর্তন প্রয়োজন। সেশন প্যারামিটারের উপর নিয়ন্ত্রণ এখনও ক্যাপচার অনুরোধে প্রয়োগ করা যেতে পারে তবে ক্লায়েন্টদের সচেতন হওয়া উচিত এবং তাদের অ্যাপে বিলম্ব আশা করা উচিত।
ফ্রেমওয়ার্ক সমস্ত আগত অনুরোধগুলি নিরীক্ষণ করে এবং যদি এটি একটি সেশন প্যারামিটারের মানের পরিবর্তন শনাক্ত করে তবে এটি অভ্যন্তরীণভাবে ক্যামেরাটিকে পুনরায় কনফিগার করে। CameraHal-এ পাস করা নতুন স্ট্রিম কনফিগারেশন তারপর আপডেট করা সেশন প্যারামিটার মানগুলিকে অন্তর্ভুক্ত করে, যা ক্যামেরা পাইপলাইনকে আরও দক্ষতার সাথে কনফিগার করতে ব্যবহৃত হয়।
কাস্টমাইজেশন
আপনি ক্যামেরাহ্যালের পাশে থাকা উপলব্ধ সেশন প্যারামিটার তালিকায় ট্যাগগুলি সংজ্ঞায়িত করতে পারেন। ক্যামেরাহ্যাল উপলব্ধ সেশন প্যারামিটার তালিকা খালি রাখলে এই বৈশিষ্ট্যটি সক্রিয় হয় না।
বৈধতা
CTS সেশন প্যারামিটার পরীক্ষার জন্য নিম্নলিখিত নতুন কেস অন্তর্ভুক্ত করে:
-
CameraDeviceTest#testSessionConfiguration
-
CameraDeviceTest#testCreateSessionWithParameters
-
CameraDeviceTest#testSessionParametersStateLeak
-
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
সাধারণভাবে, একটি নির্দিষ্ট প্যারামিটার সেশন কী তালিকার অংশ হওয়ার পরে, এর বর্তমান মান HAL স্তরে স্ট্রিম কনফিগারেশনের সময় পাস করা সেশন প্যারামিটারের অংশ হিসাবে অন্তর্ভুক্ত করা হয়।
সেশন প্যারামিটার সাবধানে নির্বাচন করা আবশ্যক. স্ট্রীম কনফিগারেশনের মধ্যে মানগুলি ঘন ঘন পরিবর্তন করা উচিত নয়। যে পরামিতিগুলি ঘন ঘন পরিবর্তিত হয়, যেমন ক্যাপচারের অভিপ্রায়, সেগুলি অনুপযুক্ত এবং সেশন প্যারামিটার তালিকায় সেগুলি যুক্ত করা অত্যধিক অভ্যন্তরীণ পুনরায় কনফিগারেশনের কারণে CTS ব্যর্থতার কারণ হতে পারে৷
সেশন পুনর্বিন্যাস ক্যোয়ারী
Android 10 পারফরম্যান্স উন্নত করার জন্য একটি ঐচ্ছিক সেশন পুনঃকনফিগারেশন ক্যোয়ারী বৈশিষ্ট্য প্রবর্তন করে কারণ সেশন প্যারামিটার মান পরিবর্তনের ফলে অভ্যন্তরীণ স্ট্রীম পুনরায় কনফিগারেশন কর্মক্ষমতা হ্রাস করতে পারে। এই উদ্বেগের সমাধানের জন্য, HIDL ICameraDeviceSession
সংস্করণ 3.5 এবং উচ্চতর isReconfigurationRequired
পদ্ধতি সমর্থন করে, যা অভ্যন্তরীণ সেশন প্যারামিটার পুনঃকনফিগারেশন লজিকের উপর সূক্ষ্ম নিয়ন্ত্রণ প্রদান করে। এই পদ্ধতি ব্যবহার করে, প্রয়োজনের সময় স্ট্রিম পুনর্বিন্যাস সঠিকভাবে ঘটতে পারে।
isReconfigurationRequired
এর আর্গুমেন্টগুলি প্রতিটি মুলতুবি থাকা সেশন প্যারামিটার পরিবর্তন সম্পর্কে প্রয়োজনীয় তথ্য প্রদান করে, বিভিন্ন ধরণের ডিভাইস-নির্দিষ্ট কাস্টমাইজেশনের জন্য অনুমতি দেয়।
এই বৈশিষ্ট্যটি শুধুমাত্র ক্যামেরা পরিষেবা এবং ক্যামেরা HAL-এ প্রয়োগ করা হয়। কোনো পাবলিক-ফেসিং API নেই। এই বৈশিষ্ট্যটি বাস্তবায়িত হলে, সেশন প্যারামিটারগুলির সাথে কাজ করার সময় ক্যামেরা ক্লায়েন্টদের কর্মক্ষমতা উন্নতি দেখতে হবে।
বাস্তবায়ন
সেশন পুনঃকনফিগারেশন ক্যোয়ারী সমর্থন করার জন্য, নতুন সেশন প্যারামিটার মানগুলির জন্য সম্পূর্ণ স্ট্রীম পুনরায় কনফিগারেশন প্রয়োজন কিনা তা পরীক্ষা করতে আপনাকে অবশ্যই isReconfigurationRequired
পদ্ধতিটি প্রয়োগ করতে হবে।
যদি ক্লায়েন্ট কোনো বিজ্ঞাপন দেওয়া সেশন প্যারামিটারের মান পরিবর্তন করে, ক্যামেরা ফ্রেমওয়ার্ক isReconfigurationRequired
পদ্ধতিকে কল করে। নির্দিষ্ট মানগুলির উপর নির্ভর করে, HAL সিদ্ধান্ত নেয় একটি সম্পূর্ণ স্ট্রিম পুনর্বিন্যাস প্রয়োজন কিনা। যদি HAL false
রিটার্ন করে, ক্যামেরা ফ্রেমওয়ার্ক অভ্যন্তরীণ পুনর্বিন্যাস এড়িয়ে যায়। যদি HAL true
রিটার্ন করে, ফ্রেমওয়ার্ক স্ট্রীমগুলিকে পুনরায় কনফিগার করে এবং সেই অনুযায়ী নতুন সেশন প্যারামিটার মান পাস করে।
এইচএএল-এ নতুন প্যারামিটার সহ একটি অনুরোধ জমা দেওয়ার কিছু সময় আগে ফ্রেমওয়ার্ক দ্বারা isReconfigurationRequired
পদ্ধতিটি কল করা যেতে পারে এবং এটি জমা দেওয়ার আগে অনুরোধটি বাতিল করা যেতে পারে। অতএব, HAL এই পদ্ধতি কল ব্যবহার করে কোনোভাবেই তার আচরণ পরিবর্তন করবে না।
HAL বাস্তবায়ন নিম্নলিখিত প্রয়োজনীয়তা পূরণ করতে হবে:
- ফ্রেমওয়ার্কটি সক্রিয় সেশন কনফিগারেশনের পরে যেকোনো সময়
isReconfigurationRequired
পদ্ধতিতে কল করতে সক্ষম হবে। - মুলতুবি থাকা ক্যামেরা অনুরোধের কার্যক্ষমতার উপর অবশ্যই কোন প্রভাব পড়বে না। বিশেষ করে, স্বাভাবিক ক্যামেরা স্ট্রিমিং-এর সময় কোনও ত্রুটি বা বিলম্ব হওয়া উচিত নয়।
ডিভাইস এবং HAL বাস্তবায়ন নিম্নলিখিত কর্মক্ষমতা প্রয়োজনীয়তা পূরণ করতে হবে:
- হার্ডওয়্যার এবং সফ্টওয়্যার ক্যামেরা সেটিংস পরিবর্তন করা উচিত নয়।
- ক্যামেরা পারফরম্যান্সের উপর ব্যবহারকারীর দৃশ্যমান প্রভাব থাকা উচিত নয়।
isReconfigurationRequired
পদ্ধতি নিম্নলিখিত আর্গুমেন্ট নেয়:
-
oldSessionParams
: আগের সেশন থেকে সেশন প্যারামিটার। সাধারণত বিদ্যমান সেশন প্যারামিটার। -
newSessionParams
: নতুন সেশন প্যারামিটার যা ক্লায়েন্ট দ্বারা সেট করা হয়।
প্রত্যাশিত রিটার্ন স্ট্যাটাস কোডগুলি হল:
-
OK
: সফল পুনর্বিন্যাস প্রয়োজনীয় ক্যোয়ারী। -
METHOD_NOT_SUPPORTED
: ক্যামেরা ডিভাইস পুনরায় কনফিগারেশন ক্যোয়ারী সমর্থন করে না। -
INTERNAL_ERROR
: একটি অভ্যন্তরীণ ত্রুটির কারণে পুনরায় কনফিগারেশন ক্যোয়ারী সম্পূর্ণ করা যাবে না।
রিটার্ন মান হল:
-
true
: স্ট্রিম পুনর্বিন্যাস প্রয়োজন। -
false
: স্ট্রীম পুনর্বিন্যাস প্রয়োজন নেই।
একটি সেশন পুনঃকনফিগারেশন ক্যোয়ারী উপেক্ষা করতে, HAL METHOD_NOT_SUPPORTED
বা false
প্রদান করে। এর ফলে ডিফল্ট ক্যামেরা পরিষেবার আচরণ দেখা যায় যেখানে প্রতিটি সেশনের প্যারামিটার পরিবর্তনের সময় স্ট্রিম পুনর্বিন্যাস ট্রিগার করা হয়।
বৈধতা
CameraHidlTest#configureStreamsWithSessionParameters
এ VTS টেস্ট কেস ব্যবহার করে সেশন পুনঃকনফিগারেশন ক্যোয়ারী বৈশিষ্ট্যটি যাচাই করা যেতে পারে।