camera2_device_ops স্ট্রাকট রেফারেন্স
#include < camera2.h >
ডেটা ক্ষেত্র | |
int(* | set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* | notify_request_queue_not_empty )(const struct camera2_device *) |
int(* | set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* | get_in_progress_count )(const struct camera2_device *) |
int(* | flush_captures_in_progress )(const struct camera2_device *) |
int(* | construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **অনুরোধ) |
int(* | বরাদ্দ_স্ট্রিম )(const struct camera2_device *, uint32_t প্রস্থ, uint32_t উচ্চতা, int বিন্যাস, const camera2_stream_ops_t *stream_ops, uint32_t *স্ট্রিম_আইডি, uint32_t *ফরম্যাট_অ্যাকচুয়াল, uint32_t *ব্যবহার, uint32_t *ব্যবহার, uint32_t* |
int(* | register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *বাফার) |
int(* | release_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | allocate_reprocess_stream )(const struct camera2_device *, uint32_t প্রস্থ, uint32_t উচ্চতা, uint32_t বিন্যাস, const camera2_stream_in_ops_t *পুনঃপ্রক্রিয়া_স্ট্রিম_অপস, uint32_t *স্ট্রিম_আইডি, uint32_t *উপভোক্তা_32_t |
int(* | বরাদ্দ_রিপ্রসেস_স্ট্রিম_ফ্রম_স্ট্রিম )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) |
int(* | release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
int(* | set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* | ডাম্প )(const struct camera2_device *, int fd) |
int(* | get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata) |
বিস্তারিত বিবরণ
ফিল্ড ডকুমেন্টেশন
int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t প্রস্থ, uint32_t উচ্চতা, uint32_t বিন্যাস, const camera2_stream_in_ops_t *পুনঃপ্রসেস_স্ট্রিম_অপস, uint32_t *স্ট্রিম_আইডি, uint32_t *কনসুমার্স* |
বরাদ্দ_পুনঃপ্রক্রিয়া_প্রবাহ:
ব্যবহারের জন্য একটি নতুন ইনপুট স্ট্রীম বরাদ্দ করুন, আউটপুট বাফার প্রস্থ, উচ্চতা এবং পিক্সেল বিন্যাস দ্বারা সংজ্ঞায়িত। নতুন স্ট্রীমের আইডি, গ্র্যালোক ব্যবহার ফ্ল্যাগ এবং একই সাথে অর্জনযোগ্য বাফার গণনা সাফল্যের উপর ফেরত দেয়। ত্রুটি শর্ত:
- সেন্সরের স্ট্যাটিক বৈশিষ্ট্য দ্বারা সমর্থিত হিসাবে তালিকাভুক্ত নয় এমন একটি প্রস্থ/উচ্চতা/বিন্যাস সমন্বয়ের অনুরোধ করা
- একবারে কনফিগার করার জন্য অনেকগুলি রিপ্রসেসিং স্ট্রিমের জন্য জিজ্ঞাসা করা হচ্ছে৷
ইনপুট পরামিতি:
- প্রস্থ, উচ্চতা, বিন্যাস: এই প্রবাহের মাধ্যমে পাঠানো বাফারগুলির জন্য নির্দিষ্টকরণ। বিন্যাস অবশ্যই HAL_PIXEL_FORMAT_* তালিকা থেকে একটি মান হতে হবে৷
- reprocess_stream_ops: এই স্ট্রীমের জন্য বাফারগুলি অর্জন এবং প্রকাশ করার জন্য ফাংশন পয়েন্টারগুলির একটি কাঠামো। অন্তর্নিহিত স্ট্রীম ব্যবহার এবং max_buffers আউটপুট উপর ভিত্তি করে কনফিগার করা হবে.
আউটপুট পরামিতি:
- stream_id: একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা এই স্ট্রিমটিকে চিহ্নিত করে। এই মানটি স্ট্রীম শনাক্ত করার জন্য আগত অনুরোধে এবং স্ট্রীম প্রকাশের ক্ষেত্রে ব্যবহৃত হয়। এই আইডিগুলি ইনপুট স্ট্রীম আইডি থেকে আলাদাভাবে সংখ্যাযুক্ত।
- consumer_usage: অনুরোধ করা ধরনের ডেটা ব্যবহার করার জন্য HAL ডিভাইসের জন্য প্রয়োজনীয় gralloc ব্যবহার মাস্ক। এটি স্ট্রিম বাফার সারির জন্য নতুন gralloc বাফার বরাদ্দ করতে ব্যবহৃত হয়।
- max_buffers: HAL ডিভাইসের একই সময়ে সর্বাধিক যতগুলি বাফার অর্জন করতে হবে। ডিভাইসটিতে একই সময়ে এই মানের চেয়ে বেশি বাফার নাও থাকতে পারে।
int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
বরাদ্দ_পুনঃপ্রসেস_স্ট্রিম_থেকে_স্ট্রিম:
ব্যবহারের জন্য একটি নতুন ইনপুট স্ট্রীম বরাদ্দ করুন, যা একটি বিদ্যমান আউটপুট স্ট্রীমের জন্য বরাদ্দ করা বাফারগুলি ব্যবহার করবে৷ অর্থাৎ, HAL আউটপুট স্ট্রীমে একটি বাফার সারিবদ্ধ করার পরে, এটি এই ইনপুট রিপ্রসেসিং স্ট্রীম থেকে একই বাফারটি হস্তান্তর করতে পারে। HAL পুনরায় প্রসেসিং স্ট্রিমে বাফার রিলিজ করার পরে, এটি পুনঃব্যবহারের জন্য আউটপুট সারিতে ফিরিয়ে দেওয়া হবে।
ত্রুটি শর্ত:
- রিপ্রসেসিং স্ট্রীমের ভিত্তিতে অনুপযুক্ত আকার/ফর্ম্যাটের একটি আউটপুট স্ট্রিম ব্যবহার করা।
- একসাথে অনেকগুলি রিপ্রসেসিং স্ট্রীম বরাদ্দ করার চেষ্টা করা হচ্ছে৷
ইনপুট পরামিতি:
- output_stream_id: একটি বিদ্যমান আউটপুট স্ট্রীমের আইডি যার আকার এবং বিন্যাস পুনরায় প্রক্রিয়াকরণের জন্য উপযুক্ত।
- reprocess_stream_ops: এই স্ট্রীমের জন্য বাফারগুলি অর্জন এবং প্রকাশ করার জন্য ফাংশন পয়েন্টারগুলির একটি কাঠামো। আউটপুট স্ট্রীম ব্যবহার করে অন্তর্নিহিত স্ট্রীম একই গ্রাফিক্স বাফার হ্যান্ডেল ব্যবহার করবে।
আউটপুট পরামিতি:
- stream_id: একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা এই স্ট্রিমটিকে চিহ্নিত করে। এই মানটি স্ট্রীম শনাক্ত করার জন্য আগত অনুরোধে এবং স্ট্রীম প্রকাশের ক্ষেত্রে ব্যবহৃত হয়। এই আইডিগুলি ইনপুট স্ট্রীম আইডি থেকে আলাদাভাবে সংখ্যাযুক্ত।
HAL ক্লায়েন্টকে অবশ্যই সর্বদা রিপ্রসেসিং স্ট্রীম রিলিজ করতে হবে তার উপর ভিত্তি করে আউটপুট স্ট্রীম প্রকাশ করার আগে।
int(* allocate_stream)(const struct camera2_device *,uint32_t প্রস্থ, uint32_t উচ্চতা, int ফরম্যাট, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *ফরম্যাট_অ্যাকচুয়াল, uint32_t *উইন্ট32_t *উইন্ট 32_টি সর্বোচ্চ ব্যবহার), |
বরাদ্দ_প্রবাহ:
ব্যবহারের জন্য একটি নতুন আউটপুট স্ট্রীম বরাদ্দ করুন, আউটপুট বাফার প্রস্থ, উচ্চতা, লক্ষ্য এবং সম্ভবত পিক্সেল বিন্যাস দ্বারা সংজ্ঞায়িত। সাফল্যের উপর নতুন স্ট্রীমের আইডি, গ্র্যালক ব্যবহার ফ্ল্যাগ, ন্যূনতম সারি বাফার গণনা এবং সম্ভবত পিক্সেল ফর্ম্যাট ফেরত দেয়। ত্রুটি শর্ত:
- সেন্সরের স্ট্যাটিক বৈশিষ্ট্য দ্বারা সমর্থিত হিসাবে তালিকাভুক্ত নয় এমন একটি প্রস্থ/উচ্চতা/বিন্যাস সমন্বয়ের অনুরোধ করা
- একটি প্রদত্ত ফর্ম্যাট টাইপের অনেকগুলি স্ট্রিমের জন্য জিজ্ঞাসা করা হচ্ছে (উদাহরণস্বরূপ 2 বেয়ার কাঁচা স্ট্রীম)।
ইনপুট পরামিতি:
- প্রস্থ, উচ্চতা, বিন্যাস: এই প্রবাহের মাধ্যমে পাঠানো বাফারগুলির জন্য নির্দিষ্টকরণ। বিন্যাস হল HAL_PIXEL_FORMAT_* তালিকা থেকে একটি মান। যদি HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED ব্যবহার করা হয়, তাহলে প্ল্যাটফর্ম গ্র্যালক মডিউল ক্যামেরা HAL এবং স্ট্রিমের ভোক্তার দ্বারা প্রদত্ত ব্যবহারের পতাকাগুলির উপর ভিত্তি করে একটি বিন্যাস নির্বাচন করবে৷ প্রয়োজনে বাস্তবায়ন-নির্দিষ্ট বিন্যাস পেতে register_stream_buffers কলে ক্যামেরা HAL-এর হাতে দেওয়া বাফারগুলি পরিদর্শন করা উচিত।
- stream_ops: এই স্ট্রীমের জন্য বাফার প্রাপ্ত এবং সারিবদ্ধ করার জন্য ফাংশন পয়েন্টারগুলির একটি কাঠামো। অন্তর্নিহিত স্ট্রীম ব্যবহার এবং max_buffers আউটপুট উপর ভিত্তি করে কনফিগার করা হবে. বরাদ্দ_স্ট্রিম রিটার্ন না হওয়া পর্যন্ত এই কাঠামোর পদ্ধতিগুলি কল করা যাবে না।
আউটপুট পরামিতি:
- stream_id: একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা এই স্ট্রিমটিকে চিহ্নিত করে। এই মানটি স্ট্রীম শনাক্ত করার জন্য আগত অনুরোধে এবং স্ট্রীম প্রকাশের ক্ষেত্রে ব্যবহৃত হয়।
- ব্যবহার: অনুরোধ করা ধরনের ডেটা তৈরি করার জন্য HAL ডিভাইসের জন্য প্রয়োজনীয় গ্র্যালোক ব্যবহার মাস্ক। এটি স্ট্রিম বাফার সারির জন্য নতুন gralloc বাফার বরাদ্দ করতে ব্যবহৃত হয়।
- max_buffers: HAL ডিভাইসের সর্বোচ্চ সংখ্যক বাফার একই সময়ে সারিবদ্ধ করার প্রয়োজন হতে পারে। ডিভাইসটি একই সময়ে এই মানের চেয়ে বেশি বাফার ডিকিউ নাও করতে পারে।
int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **অনুরোধ) |
স্ট্যান্ডার্ড ক্যামেরা ব্যবহারের ক্ষেত্রে একটি ভরাট-ইন ডিফল্ট অনুরোধ তৈরি করুন।
ডিভাইসটিকে অবশ্যই একটি সম্পূর্ণ অনুরোধ ফেরত দিতে হবে যা অনুরোধকৃত ব্যবহারের ক্ষেত্রে পূরণ করার জন্য কনফিগার করা হয়েছে, যা অবশ্যই CAMERA2_TEMPLATE_* enums এর একটি হতে হবে। android.request.outputStreams ছাড়া সমস্ত অনুরোধ নিয়ন্ত্রণ ক্ষেত্র অবশ্যই অন্তর্ভুক্ত করতে হবে।
ফিরে আসা মেটাডেটা বাফার অবশ্যই allocate_camera_metadata দিয়ে বরাদ্দ করতে হবে। ফ্রেমওয়ার্ক বাফারের মালিকানা নেয়।
int(* ডাম্প)(const struct camera2_device *, int fd) |
int(* flush_captures_in_progress)(const struct camera2_device *) |
সমস্ত চলমান ক্যাপচার ফ্লাশ করুন। এর মধ্যে রয়েছে সমস্ত সারিবদ্ধ অনুরোধ (নিয়মিত বা পুনঃপ্রক্রিয়াকরণ) যেগুলি এখনও কোনও স্ট্রীম বা ফ্রেম সারিতে কোনও আউটপুট রাখে নি। আংশিকভাবে সম্পন্ন ক্যাপচার স্বাভাবিকভাবে সম্পন্ন করা আবশ্যক. ফ্লাশ সম্পূর্ণ না হওয়া পর্যন্ত অনুরোধের সারি থেকে কোনো নতুন অনুরোধ সারিবদ্ধ করা যাবে না।
int(* get_in_progress_count)(const struct camera2_device *) |
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
ডিভাইস-ইনস্ট্যান্স-নির্দিষ্ট মেটাডেটা পান। এই মেটাডেটা ক্যামেরা ডিভাইসের একটি একক দৃষ্টান্তের জন্য ধ্রুবক হতে হবে, কিন্তু open() কলের মধ্যে ভিন্ন হতে পারে। ফিরে আসা camera_metadata পয়েন্টারটি অবশ্যই বৈধ হতে হবে যতক্ষণ পর্যন্ত না ডিভাইস close() পদ্ধতিটি কল করা হয়।
সংস্করণ সংক্রান্ত তথ্য:
CAMERA_DEVICE_API_VERSION_2_0:
পাওয়া যায় না. ফ্রেমওয়ার্ক এই ফাংশন পয়েন্টার অ্যাক্সেস করতে পারে না।
CAMERA_DEVICE_API_VERSION_2_1:
বৈধ। ফ্রেমওয়ার্ক দ্বারা বলা যেতে পারে.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *বাফার) |
একটি প্রদত্ত স্ট্রিম জন্য বাফার নিবন্ধন. এটি একটি সফল বরাদ্দ_স্ট্রিম কলের পরে বলা হয় এবং স্ট্রীমটি উল্লেখ করার প্রথম অনুরোধ সারিবদ্ধ হওয়ার আগে। এই পদ্ধতিটি এইচএএল ডিভাইসকে ম্যাপ বা অন্যথায় পরবর্তী ব্যবহারের জন্য বাফার প্রস্তুত করার অনুমতি দেওয়ার উদ্দেশ্যে করা হয়েছে। num_buffers অন্তত max_buffers হওয়ার নিশ্চয়তা আছে (বরাদ্দ_স্ট্রিম থেকে), কিন্তু বড় হতে পারে। বাফারগুলি ইতিমধ্যে ব্যবহারের জন্য লক করা হবে। কলের শেষে, সমস্ত বাফারকে সারিতে ফিরে যাওয়ার জন্য প্রস্তুত থাকতে হবে। যদি স্ট্রিম ফর্ম্যাটটি HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED-এ সেট করা থাকে, তাহলে ক্যামেরা HAL-এর উচিত যে কোনো প্ল্যাটফর্ম-প্রাইভেট পিক্সেল ফর্ম্যাট তথ্য নির্ধারণ করতে এখানে পাস-ইন বাফারগুলি পরীক্ষা করা।
int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* release_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
এই কাঠামোর জন্য ডকুমেন্টেশন নিম্নলিখিত ফাইল থেকে তৈরি করা হয়েছিল:
- hardware/libhardware/include/hardware/ camera2.h