camera2_request_queue_src_ops স্ট্রাকট রেফারেন্স
#include < camera2.h >
ডেটা ক্ষেত্র | |
int(* | request_count )(const struct camera2_request_queue_src_ops *q) |
int(* | dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **বাফার) |
int(* | free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
বিস্তারিত বিবরণ
ইনপুট সারি প্রোটোকল অনুরোধ করুন:
ফ্রেমওয়ার্ক সারি এবং এর বিষয়বস্তু ধারণ করে। শুরুতে, সারি খালি।
- যখন প্রথম মেটাডেটা বাফারটি সারিতে রাখা হয়, ফ্রেমওয়ার্কটি notify_request_queue_not_empty() কল করে ডিভাইসটিকে সংকেত দেয়।
- notify_request_queue_not_empty প্রাপ্তির পর, পরবর্তী বাফারটি পরিচালনা করার জন্য প্রস্তুত হলে ডিভাইসটিকে অবশ্যই dequeue() কল করতে হবে।
- একবার ডিভাইসটি একটি বাফার প্রক্রিয়াকরণ করে, এবং পরবর্তী বাফারের জন্য প্রস্তুত হলে, এটিকে অবশ্যই একটি বিজ্ঞপ্তির জন্য অপেক্ষা না করে আবার dequeue() কল করতে হবে। যদি আর কোন বাফার উপলব্ধ না থাকে, dequeue() NULL ফেরত দেবে। এই বিন্দুর পরে, যখন একটি বাফার উপলব্ধ হয়, ফ্রেমওয়ার্কটিকে আবার notify_request_queue_not_empty() কল করতে হবে। যদি ডিভাইসটি dequeue থেকে একটি NULL রিটার্ন পায়, তাহলে উৎস থেকে একটি notify_request_queue_not_empty() কল না আসা পর্যন্ত এটিকে আবার সারিতে জিজ্ঞাসা করার প্রয়োজন নেই।
- যদি ডিভাইসটি buffer_count() কল করে এবং 0 গ্রহণ করে, এর অর্থ এই নয় যে ফ্রেমওয়ার্ক একটি notify_request_queue_not_empty() কল প্রদান করবে। ডিভাইসটি dequeue থেকে একটি NULL পাওয়ার পরে বা প্রাথমিক স্টার্টআপে ফ্রেমওয়ার্ক শুধুমাত্র এই ধরনের একটি বিজ্ঞপ্তি প্রদান করবে।
- notify_request_queue_not_empty() এর প্রতিক্রিয়ায় dequeue() কলটি notify_request_queue_not_empty() কলের মতো একই থ্রেডে হতে পারে এবং বিজ্ঞপ্তি কলের মধ্যে থেকে সম্পাদিত হতে পারে।
- সমস্ত সারিবদ্ধ অনুরোধের বাফারগুলিকে ফ্রি_রিকোয়েস্ট কল করে ফ্রেমওয়ার্কে ফেরত দিতে হবে, যখন ত্রুটিগুলি ঘটে, একটি ডিভাইস ফ্লাশের অনুরোধ করা হয়, বা যখন ডিভাইসটি বন্ধ হয়ে যায়।
ফিল্ড ডকুমেন্টেশন
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **বাফার) |
ফ্রেমওয়ার্ক থেকে একটি মেটাডেটা বাফার পান। কোনো ত্রুটি না থাকলে ঠিক আছে ফেরত দেয়। সারি খালি থাকলে, বাফারে NULL প্রদান করে। সেক্ষেত্রে, ডিভাইসটিকে অবশ্যই একটি notify_request_queue_not_empty() মেসেজের জন্য অপেক্ষা করতে হবে। এইভাবে প্রাপ্ত বাফারগুলি অবশ্যই free_request() দিয়ে ফ্রেমওয়ার্কে ফেরত দিতে হবে।
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const struct camera2_request_queue_src_ops *q) |
সারিতে মুলতুবি থাকা অনুরোধ বাফারের গণনা পান। একটি পুনরাবৃত্তি অনুরোধ (স্ট্রিম অনুরোধ) বর্তমানে কনফিগার করা থাকলে CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS ফেরত দিতে পারে৷ এই পদ্ধতিতে কল করলে notify_request_queue_not_empty() পদ্ধতিটি ফ্রেমওয়ার্ক দ্বারা কল করা হবে কিনা তার উপর কোন প্রভাব নেই।
এই কাঠামোর জন্য ডকুমেন্টেশন নিম্নলিখিত ফাইল থেকে তৈরি করা হয়েছিল:
- hardware/libhardware/include/hardware/ camera2.h