camera3_stream স্ট্রাকট রেফারেন্স
#include < camera3.h >
ডেটা ক্ষেত্র | |
int | স্ট্রিম_টাইপ |
uint32_t | প্রস্থ |
uint32_t | উচ্চতা |
int | বিন্যাস |
uint32_t | ব্যবহার |
uint32_t | সর্বোচ্চ_বাফার |
অকার্যকর * | priv |
android_dataspace_t | ডেটা_স্পেস |
int | ঘূর্ণন |
অকার্যকর * | সংরক্ষিত [7] |
বিস্তারিত বিবরণ
camera3_stream_t:
একটি একক ক্যামেরা ইনপুট বা আউটপুট স্ট্রীমের একটি হ্যান্ডেল৷ একটি স্ট্রীম ফ্রেমওয়ার্ক দ্বারা তার বাফার রেজোলিউশন এবং বিন্যাস দ্বারা সংজ্ঞায়িত করা হয়, এবং অতিরিক্তভাবে HAL দ্বারা গ্র্যালোক ব্যবহার ফ্ল্যাগ এবং সর্বোচ্চ ইন-ফ্লাইট বাফার গণনা।
স্ট্রীম স্ট্রাকচারগুলি ফ্রেমওয়ার্কের মালিকানাধীন, তবে configure_streams() দ্বারা HAL-এ পাস করা ক্যামেরা3_স্ট্রিমের পয়েন্টারগুলি প্রথম পরবর্তী configure_streams() কলের শেষ না হওয়া পর্যন্ত বৈধ থাকে যা একটি যুক্তি হিসাবে camera3_stream অন্তর্ভুক্ত করে না , বা শেষ না হওয়া পর্যন্ত ক্লোজ() কল।
camera3_stream configure_streams() এ পাস হয়ে গেলে সমস্ত camera3_stream ফ্রেমওয়ার্ক-নিয়ন্ত্রিত সদস্য অপরিবর্তনীয়। HAL শুধুমাত্র ব্যক্তিগত পয়েন্টারের বিষয়বস্তু ব্যতীত configure_streams() কলের সময় HAL-নিয়ন্ত্রিত প্যারামিটার পরিবর্তন করতে পারে।
যদি একটি configure_streams() কল একটি অ-মারাত্মক ত্রুটি প্রদান করে, তাহলে সমস্ত সক্রিয় স্ট্রীম বৈধ থাকবে যেন configure_streams() কল করা হয়নি।
স্ট্রিমের শেষ বিন্দু ক্যামেরা HAL ডিভাইসে দৃশ্যমান নয়। DEVICE_API_VERSION_3_1-এ, স্ট্রীমগুলিতে ভোক্তা ব্যবহারের ফ্ল্যাগগুলি ভাগ করার জন্য এটি পরিবর্তন করা হয়েছে যেখানে ক্যামেরা একটি প্রযোজক (আউটপুট এবং বিডিরেকশনাল স্ট্রিম প্রকার) নীচের ব্যবহার ক্ষেত্রটি দেখুন৷
ফিল্ড ডকুমেন্টেশন
android_dataspace_t data_space |
একটি ক্ষেত্র যা বাফারের বিষয়বস্তু বর্ণনা করে। বিন্যাস এবং বাফার মাত্রাগুলি স্ট্রিম বাফারগুলির মেমরি লেআউট এবং কাঠামোকে সংজ্ঞায়িত করে, যখন ডেটাস্পেস বাফারের মধ্যে থাকা ডেটার অর্থ সংজ্ঞায়িত করে।
বেশিরভাগ ফরম্যাটের জন্য, ডেটাস্পেস চিত্র ডেটার রঙের স্থান নির্ধারণ করে। উপরন্তু, কিছু বিন্যাসের জন্য, ডেটাস্পেস নির্দেশ করে যে চিত্র- বা গভীরতা-ভিত্তিক ডেটা অনুরোধ করা হয়েছে কিনা। প্রতিটি ফরম্যাটের জন্য বিন্যাস এবং বৈধ ডেটাস্পেস মানগুলির বিশদ বিবরণের জন্য system/core/include/system/graphics.h দেখুন।
সংস্করণ সংক্রান্ত তথ্য:
< CAMERA_DEVICE_API_VERSION_3_3:
সংজ্ঞায়িত নয় এবং অ্যাক্সেস করা উচিত নয়। ডেটাস্পেসকে HAL_DATASPACE_UNKNOWN বলে ধরে নেওয়া উচিত এবং উপযুক্ত রঙের স্থান, ইত্যাদি ব্যবহার ফ্ল্যাগ এবং বিন্যাস থেকে নির্ধারণ করা উচিত।
= CAMERA_DEVICE_API_VERSION_3_3:
সর্বদা ক্যামেরা পরিষেবা দ্বারা সেট করা. স্ট্রীমটিকে সঠিক কালারস্পেসে কনফিগার করতে বা সমর্থিত হলে রঙ এবং গভীরতার আউটপুটগুলির মধ্যে নির্বাচন করতে HAL-কে অবশ্যই এই ডেটাস্পেস ব্যবহার করতে হবে। ডেটাস্পেস মান হল graphics.h-এর উত্তরাধিকার সংজ্ঞা
>= CAMERA_DEVICE_API_VERSION_3_4:
সর্বদা ক্যামেরা পরিষেবা দ্বারা সেট করা. স্ট্রীমটিকে সঠিক কালারস্পেসে কনফিগার করতে বা সমর্থিত হলে রঙ এবং গভীরতার আউটপুটগুলির মধ্যে নির্বাচন করতে HAL-কে অবশ্যই এই ডেটাস্পেস ব্যবহার করতে হবে। ডেটাস্পেস মানগুলি graphics.h-এ V0 ডেটাস্পেস সংজ্ঞা ব্যবহার করে সেট করা হয়েছে
int বিন্যাস |
এই প্রবাহে বাফারগুলির জন্য পিক্সেল বিন্যাস। বিন্যাস হল system/core/include/system/graphics.h-এ HAL_PIXEL_FORMAT_* তালিকা থেকে বা ডিভাইস-নির্দিষ্ট হেডার থেকে একটি মান।
যদি HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED ব্যবহার করা হয়, তাহলে প্ল্যাটফর্ম গ্র্যালক মডিউল ক্যামেরা ডিভাইস এবং স্ট্রীমের অন্য প্রান্তের দ্বারা প্রদত্ত ব্যবহারের পতাকাগুলির উপর ভিত্তি করে একটি বিন্যাস নির্বাচন করবে।
<= CAMERA_DEVICE_API_VERSION_3_1:
ক্যামেরা HAL ডিভাইসটিকে অবশ্যই পরবর্তী register_stream_buffers() কলে দেওয়া বাফারগুলি পরিদর্শন করতে হবে যাতে প্রয়োজনে বাস্তবায়ন-নির্দিষ্ট বিন্যাসের বিবরণ পেতে হয়।
>= CAMERA_DEVICE_API_VERSION_3_2:
register_stream_buffers() ফ্রেমওয়ার্ক দ্বারা কল করা হবে না, তাই HAL-এর উচিত ISP এবং সেন্সর পাইপলাইন কনফিগার করা উচিত কনফিগার করা স্ট্রীমের আকার, ব্যবহার পতাকা এবং বিন্যাসের উপর ভিত্তি করে।
uint32_t সর্বোচ্চ_বাফার |
void* priv |
int ঘূর্ণন |
স্ট্রীমের প্রয়োজনীয় আউটপুট ঘূর্ণন, camera3_stream_rotation_t মানগুলির মধ্যে একটি৷ এটি অবশ্যই HAL দ্বারা প্রবাহের প্রস্থ এবং উচ্চতা সহ পরিদর্শন করা উচিত। উদাহরণস্বরূপ, যদি ঘূর্ণন 90 ডিগ্রী হয় এবং স্ট্রীম প্রস্থ এবং উচ্চতা যথাক্রমে 720 এবং 1280 হয়, ক্যামেরা পরিষেবা 720x1280 আকারের বাফার সরবরাহ করবে এবং HAL একটি 1280x720 চিত্র ক্যাপচার করবে এবং চিত্রটিকে ঘড়ির কাঁটার বিপরীত দিকে 90 ডিগ্রি ঘোরাতে হবে। স্ট্রীম টাইপ ইনপুট হলে ঘূর্ণন ক্ষেত্রটি নো-অপ হয়। একটি ইনপুট স্ট্রীমের জন্য ক্যামেরা HAL অবশ্যই ঘূর্ণন ক্ষেত্র উপেক্ষা করবে৷
<= CAMERA_DEVICE_API_VERSION_3_2:
সংজ্ঞায়িত নয় এবং অ্যাক্সেস করা উচিত নয়। HAL অবশ্যই আউটপুট চিত্রগুলিতে কোনও ঘূর্ণন প্রয়োগ করবে না।
>= CAMERA_DEVICE_API_VERSION_3_3:
সর্বদা ক্যামেরা পরিষেবা দ্বারা সেট. স্ট্রিম কনফিগারেশনের সময় HAL-কে অবশ্যই এই ক্ষেত্রটি পরিদর্শন করতে হবে এবং রিটার্ন-EINVAL যদি HAL এই ধরনের ঘূর্ণন সম্পাদন করতে না পারে। HAL-কে অবশ্যই সবসময় CAMERA3_STREAM_ROTATION_0 সমর্থন করতে হবে, তাই সমস্ত স্ট্রীমের ঘূর্ণন ক্ষেত্র CAMERA3_STREAM_ROTATION_0 হলে একটি configure_streams() কল অসমর্থিত ঘূর্ণনের জন্য ব্যর্থ হবে না।
int stream_type |
uint32_t ব্যবহার |
এইচএএল-এর প্রয়োজন অনুসারে এই স্ট্রিমের জন্য গ্র্যালোক ব্যবহার পতাকা। ব্যবহারের পতাকাগুলি gralloc.h (GRALLOC_USAGE_*), বা ডিভাইস-নির্দিষ্ট শিরোনামে সংজ্ঞায়িত করা হয়েছে।
আউটপুট স্ট্রীমগুলির জন্য, এগুলি হল HAL-এর প্রযোজক ব্যবহারের পতাকা৷ ইনপুট স্ট্রিমগুলির জন্য, এগুলি হল HAL-এর ভোক্তা ব্যবহারের পতাকা৷ প্রযোজক এবং ভোক্তার কাছ থেকে ব্যবহারের পতাকাগুলি একসাথে মিলিত হবে এবং তারপর প্রতিটি স্ট্রিমের জন্য গ্র্যালক বাফারগুলি বরাদ্দ করার জন্য প্ল্যাটফর্ম গ্র্যালক HAL মডিউলে প্রেরণ করা হবে।
সংস্করণ সংক্রান্ত তথ্য:
== CAMERA_DEVICE_API_VERSION_3_0:
configure_streams() এর মাধ্যমে পাস করার সময় কোনো প্রাথমিক মান নিশ্চিত করা হয় না। HAL এই ক্ষেত্রটি ইনপুট হিসাবে ব্যবহার নাও করতে পারে, এবং অবশ্যই এই ক্ষেত্রের উপর তার ব্যবহারের পতাকা সহ লিখতে হবে।
>= CAMERA_DEVICE_API_VERSION_3_1:
stream_type OUTPUT এবং BIDIRECTIONAL-এর জন্য, যখন configure_streams() এর মাধ্যমে পাস করা হয়, এর প্রাথমিক মান হল ভোক্তার ব্যবহারের পতাকা। স্ট্রিম কনফিগারেশনের সিদ্ধান্ত নিতে HAL এই ভোক্তা পতাকা ব্যবহার করতে পারে। stream_type INPUT-এর জন্য, যখন configure_streams() এর মাধ্যমে পাস করা হয়, এর প্রাথমিক মান হল 0। configure_streams() এর মাধ্যমে পাস করা সমস্ত স্ট্রিমের জন্য HAL-কে অবশ্যই এই ফিল্ডের উপর তার ব্যবহার পতাকা সহ লিখতে হবে।
এই কাঠামোর জন্য ডকুমেন্টেশন নিম্নলিখিত ফাইল থেকে তৈরি করা হয়েছিল:
- hardware/libhardware/include/hardware/ camera3.h