camera_module স্ট্রাকট রেফারেন্স

camera_module স্ট্রাকট রেফারেন্স

#include < camera_common.h >

ডেটা ক্ষেত্র

hw_module_t সাধারণ
int(* ক্যামেরার_সংখ্যা_ পেতে )(অকার্যকর)
int(* get_camera_info )(int camera_id, struct camera_info *তথ্য)
int(* সেট_কলব্যাক )(কনস্ট ক্যামেরা_মডিউল_কলব্যাকস_টি *কলব্যাক)
অকার্যকর(* get_vendor_tag_ops )(vendor_tag_ops_t *ops)
int(* open_legacy )(const struct hw_module_t *মডিউল, const char *id, uint32_t halVersion, struct hw_device_t **ডিভাইস)
int(* set_torch_mode )(const char *camera_id, bool সক্ষম)
int(* এটা )()
অকার্যকর * সংরক্ষিত [5]

বিস্তারিত বিবরণ

ফাইল camera_common.h এর 646 লাইনে সংজ্ঞা।

ফিল্ড ডকুমেন্টেশন

hw_module_t সাধারণ

ক্যামেরা মডিউলের সাধারণ পদ্ধতি। এটি অবশ্যই ক্যামেরা_মডিউলের প্রথম সদস্য হতে হবে কারণ এই কাঠামোর ব্যবহারকারীরা ক্যামেরা_মডিউল পয়েন্টারে একটি hw_module_t কাস্ট করবে যেখানে এটি hw_module_t একটি camera_module উল্লেখ করে।

Common.methods-> camera_module- এর জন্য খোলার রিটার্ন মান হল:

0: ক্যামেরা ডিভাইসের সফল ওপেন।

-ENODEV: একটি অভ্যন্তরীণ ত্রুটির কারণে ক্যামেরা ডিভাইস খোলা যাবে না।

-EINVAL: ইনপুট আর্গুমেন্টগুলি অবৈধ, যেমন আইডিটি অবৈধ, এবং/অথবা মডিউলটি অবৈধ৷

-EBUSY: এই ক্যামেরা আইডির জন্য ক্যামেরা ডিভাইসটি ইতিমধ্যেই খোলা হয়েছে (এই পদ্ধতি বা open_legacy ব্যবহার করে), ডিভাইসটি HAL সংস্করণ হিসাবে খোলা হয়েছে তা নির্বিশেষে।

-EUSERS: সর্বাধিক সংখ্যক ক্যামেরা ডিভাইস যা একসাথে খোলা যেতে পারে এই পদ্ধতি বা open_legacy পদ্ধতি দ্বারা ইতিমধ্যেই খোলা হয়েছে৷

common.methods->ওপেন থেকে অন্য সব রিটার্ন মান -ENODEV হিসাবে বিবেচিত হবে।

ফাইল camera_common.h এর 674 লাইনে সংজ্ঞা।

int(* get_camera_info)(int camera_id, struct camera_info *info)

get_camera_info:

একটি প্রদত্ত ক্যামেরা ডিভাইসের জন্য স্ট্যাটিক ক্যামেরা তথ্য ফেরত দিন। এই তথ্য একটি ক্যামেরা ডিভাইসের জন্য পরিবর্তন নাও হতে পারে.

রিটার্ন মান:

0: একটি সফল অপারেশনে

-ENODEV: একটি অভ্যন্তরীণ ত্রুটির কারণে তথ্য প্রদান করা যাবে না।

-EINVAL: ইনপুট আর্গুমেন্টগুলি অবৈধ, যেমন আইডিটি অবৈধ, এবং/অথবা মডিউলটি অবৈধ৷

সংস্করণ তথ্য (camera_module_t.common.module_api_version এর উপর ভিত্তি করে):

CAMERA_MODULE_API_VERSION_2_4 বা উচ্চতর:

যখন একটি ক্যামেরা সংযোগ বিচ্ছিন্ন হয়, তখন এর ক্যামেরা আইডি অবৈধ হয়ে যায়। এই অবৈধ ক্যামেরা আইডি দিয়ে এই পদ্ধতিতে কল করলে পাওয়া যাবে -EINVAL এবং NULL ক্যামেরা স্ট্যাটিক মেটাডেটা ( camera_info.static_camera_characteristics )।

ফাইল camera_common.h এর 727 লাইনে সংজ্ঞা।

int(* get_number_of_cameras)(অকার্যকর)

ক্যামেরার_সংখ্যা_পান:

ক্যামেরা মডিউলের মাধ্যমে অ্যাক্সেসযোগ্য ক্যামেরা ডিভাইসের সংখ্যা প্রদান করে। ক্যামেরা ডিভাইসগুলিকে N-1 থেকে 0 নম্বর দেওয়া হয়েছে, যেখানে N হল এই কলের মাধ্যমে ফেরত দেওয়া মান৷ open() এর জন্য ক্যামেরা ডিভাইসের নাম হল একটি স্ট্রিং-এ রূপান্তরিত সংখ্যা। অর্থাৎ ক্যামেরা আইডি 0 এর জন্য "0", ক্যামেরা আইডি 1 এর জন্য "1"।

সংস্করণ তথ্য (camera_module_t.common.module_api_version এর উপর ভিত্তি করে):

CAMERA_MODULE_API_VERSION_2_3 বা কম:

এখানে মানটি অবশ্যই স্থির হতে হবে এবং এই পদ্ধতিতে প্রথম কলের পরে পরিবর্তন করা যাবে না।

CAMERA_MODULE_API_VERSION_2_4 বা উচ্চতর:

এখানে মানটি অবশ্যই স্থির হতে হবে এবং শুধুমাত্র অন্তর্নির্মিত ক্যামেরাগুলিকে গণনা করতে হবে, যার CAMERA_FACING_BACK বা CAMERA_FACING_FRONT ক্যামেরার মুখোমুখি মান রয়েছে ( camera_info.facing )৷ এই কলের রিটার্ন ভ্যালুতে HAL অবশ্যই বাহ্যিক ক্যামেরা ( camera_info.facing == CAMERA_FACING_EXTERNAL) অন্তর্ভুক্ত করবে না। ফ্রেমওয়ার্ক বাহ্যিক ক্যামেরার সংখ্যা পরিচালনা করতে camera_device_status_change কলব্যাক ব্যবহার করবে।

ফাইল camera_common.h এর 701 লাইনে সংজ্ঞা।

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

বিক্রেতা এক্সটেনশন মেটাডেটা ট্যাগ তথ্যের জন্য অনুসন্ধানের পদ্ধতিগুলি পান৷ HAL-এর উচিত সমস্ত ভেন্ডর ট্যাগ অপারেশন পদ্ধতি পূরণ করা, অথবা কোনো ভেন্ডর ট্যাগ সংজ্ঞায়িত না থাকলে অপারেশনগুলি অপরিবর্তিত রাখা উচিত।

এখানে ব্যবহৃত vendor_tag_ops কাঠামো এখানে সংজ্ঞায়িত করা হয়েছে: system/media/camera/include/system/vendor_tags.h

সংস্করণ তথ্য (camera_module_t.common.module_api_version এর উপর ভিত্তি করে):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: HAL মডিউল দ্বারা সরবরাহ করা হয়নি। ফ্রেমওয়ার্ক এই ফাংশন কল নাও হতে পারে.

CAMERA_MODULE_API_VERSION_2_2: ফ্রেমওয়ার্ক দ্বারা কল করার জন্য বৈধ।

ফাইল camera_common.h এর 778 লাইনে সংজ্ঞা।

int(* init)()

এটা:

ক্যামেরা HAL লাইব্রেরি সফলভাবে লোড হওয়ার ঠিক পরে, অন্য কোনও পদ্ধতি চালু করার আগে এই পদ্ধতিটিকে ক্যামেরা পরিষেবা দ্বারা ডাকা হয়। এটিকে HAL মডিউল দ্বারা NULL হিসাবে ছেড়ে দেওয়া যেতে পারে, যদি কোনও প্রাথমিককরণের প্রয়োজন না হয়।

এটি এইচএএল বাস্তবায়ন দ্বারা প্রারম্ভিকতা এবং অন্যান্য এককালীন ক্রিয়াকলাপ সম্পাদন করতে ব্যবহার করা যেতে পারে।

সংস্করণ তথ্য (camera_module_t.common.module_api_version এর উপর ভিত্তি করে):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: HAL মডিউল দ্বারা সরবরাহ করা হয়নি। ফ্রেমওয়ার্ক এই ফাংশন কল করবে না.

CAMERA_MODULE_API_VERSION_2_4: NULL না হলে, HAL মডিউল লোড হওয়ার পরে, অন্য কোনও HAL মডিউল পদ্ধতি কল করার আগে সর্বদা ফ্রেমওয়ার্ক দ্বারা কল করা হবে।

রিটার্ন মান:

0: একটি সফল অপারেশনে।

-ENODEV: একটি অভ্যন্তরীণ ত্রুটির কারণে সূচনা সম্পন্ন করা যাবে না। HAL একটি অকার্যকর অবস্থায় আছে বলে ধরে নিতে হবে।

ফাইল camera_common.h এর 909 লাইনে সংজ্ঞা।

int(* open_legacy)(const struct hw_module_t *মডিউল, const char *id, uint32_t halVersion, struct hw_device_t **ডিভাইস)

open_legacy:

একটি নির্দিষ্ট লিগ্যাসি ক্যামেরা HAL ডিভাইস খুলুন যদি একাধিক ডিভাইস HAL API সংস্করণ এই ক্যামেরা HAL মডিউল দ্বারা সমর্থিত হয়। উদাহরণস্বরূপ, যদি ক্যামেরা মডিউল একই ক্যামেরা আইডির জন্য CAMERA_DEVICE_API_VERSION_1_0 এবং CAMERA_DEVICE_API_VERSION_3_2 ডিভাইস API উভয়কেই সমর্থন করে, ফ্রেমওয়ার্ক ক্যামেরা ডিভাইসটিকে CAMERA_DEVICE_API_VERSION_1_0 ডিভাইস হিসাবে খুলতে এই ফাংশনটিকে কল করতে পারে৷

এটি একটি ঐচ্ছিক পদ্ধতি। একটি ক্যামেরা HAL মডিউল প্রতি ডিভাইসে একাধিক ডিভাইস HAL সংস্করণ সমর্থন করার প্রয়োজন নেই, এবং এই ধরনের মডিউলগুলি এই পদ্ধতিতে সমস্ত কলের জন্য -ENOSYS ফিরে আসতে পারে। সমস্ত পুরানো HAL ডিভাইস API সংস্করণগুলির জন্য যা সমর্থিত নয়, এটি ফিরে আসতে পারে -EOPNOTSUPP। উপরের ঘটনাগুলি ঘটলে, ফ্রেমওয়ার্কের পরিবর্তে সাধারণ open() পদ্ধতি (common.methods->open) ব্যবহার করা হবে।

সংস্করণ তথ্য (camera_module_t.common.module_api_version এর উপর ভিত্তি করে):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: HAL মডিউল দ্বারা সরবরাহ করা হয়নি। ফ্রেমওয়ার্ক এই ফাংশন কল করবে না.

CAMERA_MODULE_API_VERSION_2_3: ফ্রেমওয়ার্ক দ্বারা কল করার জন্য বৈধ৷

রিটার্ন মান:

0: ক্যামেরা ডিভাইসের সফল ওপেন।

-ENOSYS এই পদ্ধতিটি সমর্থিত নয়।

-EOPNOTSUPP: অনুরোধ করা HAL সংস্করণটি এই পদ্ধতি দ্বারা সমর্থিত নয়৷

-EINVAL: ইনপুট আর্গুমেন্টগুলি অবৈধ, যেমন আইডিটি অবৈধ, এবং/অথবা মডিউলটি অবৈধ৷

-EBUSY: এই ক্যামেরা আইডির জন্য ক্যামেরা ডিভাইসটি ইতিমধ্যেই খোলা হয়েছে (এই পদ্ধতি বা common.methods->খোলা পদ্ধতি ব্যবহার করে), ডিভাইসটি HAL সংস্করণ হিসাবে খোলা হয়েছে তা নির্বিশেষে।

-EUSERS: সর্বাধিক সংখ্যক ক্যামেরা ডিভাইস যা একসাথে খোলা যেতে পারে এই পদ্ধতি বা common.methods->খোলা পদ্ধতি দ্বারা ইতিমধ্যেই খোলা হয়েছে।

ফাইল camera_common.h এর 824 লাইনে সংজ্ঞা।

অকার্যকর* সংরক্ষিত[5]

ফাইল camera_common.h এর 912 লাইনে সংজ্ঞা।

int(* set_callbacks)(const camera_module_callbacks_t *কলব্যাক)

সেট_কলব্যাক:

অ্যাসিঙ্ক্রোনাস ক্যামেরা মডিউল ইভেন্টের ফ্রেমওয়ার্ক জানাতে HAL মডিউলে কলব্যাক ফাংশন পয়েন্টার প্রদান করুন। প্রাথমিক ক্যামেরা HAL মডিউল লোড হওয়ার পরে, get_number_of_cameras() পদ্ধতিটি প্রথমবার কল করার পরে এবং মডিউলে অন্য কোনও কল করার আগে ফ্রেমওয়ার্ক এই ফাংশনটিকে একবার কল করবে।

সংস্করণ তথ্য (camera_module_t.common.module_api_version এর উপর ভিত্তি করে):

CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:

HAL মডিউল দ্বারা প্রদান করা হয় না. ফ্রেমওয়ার্ক এই ফাংশন কল নাও হতে পারে.

CAMERA_MODULE_API_VERSION_2_1:

ফ্রেমওয়ার্ক দ্বারা বলা বৈধ।

রিটার্ন মান:

0: একটি সফল অপারেশনে

-ENODEV: একটি অভ্যন্তরীণ ত্রুটির কারণে অপারেশন সম্পূর্ণ করা যাবে না।

-EINVAL: ইনপুট আর্গুমেন্টগুলি অবৈধ, অর্থাৎ কলব্যাকগুলি শূন্য৷

ফাইল camera_common.h এর 758 লাইনে সংজ্ঞা।

int(* set_torch_mode)(const char *camera_id, bool সক্ষম)

সেট_টর্চ_মোড:

প্রদত্ত ক্যামেরা আইডির সাথে যুক্ত ফ্ল্যাশ ইউনিটের টর্চ মোড চালু বা বন্ধ করুন। অপারেশন সফল হলে, HAL-কে অবশ্যই নতুন স্টেটের সাথে camera_module_callbacks.torch_mode_status_change() দিয়ে ফ্রেমওয়ার্ক টর্চ স্টেটকে অবহিত করতে হবে।

ক্যামেরা ডিভাইসের ফ্ল্যাশ ইউনিট অ্যাক্সেস করার জন্য একটি উচ্চ অগ্রাধিকার রয়েছে। যখন কোনও রিসোর্স দ্বন্দ্ব থাকে, যেমন open() একটি ক্যামেরা ডিভাইস খুলতে কল করা হয়, HAL মডিউলকে অবশ্যই camera_module_callbacks.torch_mode_status_change() এর মাধ্যমে ফ্রেমওয়ার্ককে অবহিত করতে হবে যে টর্চ মোডটি বন্ধ করা হয়েছে এবং টর্চ মোডের অবস্থা TORCH_MODE_STATUS_NOT_AVAILABLE হয়ে গেছে। টর্চ মোড চালু করার জন্য রিসোর্সগুলি আবার উপলব্ধ হলে, HAL মডিউলকে camera_module_callbacks.torch_mode_status_change() এর মাধ্যমে ফ্রেমওয়ার্ককে অবহিত করতে হবে যে সেট_torch_mode() কল করার জন্য টর্চ মোডের অবস্থা TORCH_MODE_STATUS_AVAILABLE_OFF হয়ে গেছে।

যখন ফ্রেমওয়ার্ক একটি ফ্ল্যাশ ইউনিটের টর্চ মোড চালু করতে set_torch_mode() কল করে, যদি HAL একই সাথে একাধিক টর্চ মোড চালু রাখতে না পারে, HAL-এর উচিত টর্চ মোডটি বন্ধ করা উচিত যা পূর্ববর্তী set_torch_mode() কল দ্বারা চালু করা হয়েছিল এবং ফ্রেমওয়ার্ককে অবহিত করা উচিত। যে ফ্ল্যাশ ইউনিটের টর্চ মোড অবস্থা TORCH_MODE_STATUS_AVAILABLE_OFF হয়ে গেছে।

সংস্করণ তথ্য (camera_module_t.common.module_api_version এর উপর ভিত্তি করে):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: HAL মডিউল দ্বারা সরবরাহ করা হয়নি। ফ্রেমওয়ার্ক এই ফাংশন কল করবে না.

CAMERA_MODULE_API_VERSION_2_4: ফ্রেমওয়ার্ক দ্বারা কল করার জন্য বৈধ৷

রিটার্ন মান:

0: একটি সফল অপারেশনে।

-ENOSYS: ক্যামেরা ডিভাইস এই অপারেশন সমর্থন করে না. যদি এবং শুধুমাত্র যদি android.flash.info.available মিথ্যা হয় তাহলে এটি ফেরত দেওয়া হয়।

-EBUSY: ক্যামেরা ডিভাইসটি ইতিমধ্যেই ব্যবহার করা হচ্ছে৷

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

-EINVAL: camera_id অবৈধ৷

ফাইল camera_common.h এর 878 লাইনে সংজ্ঞা।


এই কাঠামোর জন্য ডকুমেন্টেশন নিম্নলিখিত ফাইল থেকে তৈরি করা হয়েছিল: