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

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

#include < camera_common.h >

ডেটা ক্ষেত্র

int সম্মুখ
int অভিযোজন
uint32_t device_version
const camera_metadata_t * স্ট্যাটিক_ক্যামেরা_বৈশিষ্ট্য
int সম্পদ_খরচ
চর ** বিরোধপূর্ণ_ডিভাইস
size_t বিরোধপূর্ণ_ডিভাইসের_দৈর্ঘ্য

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

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

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

char** বিরোধপূর্ণ_ডিভাইস

ক্যামেরা ডিভাইস আইডিগুলির একটি অ্যারে শূন্য-সমাপ্ত স্ট্রিং হিসাবে উপস্থাপিত হয় যা অন্যান্য ডিভাইসগুলিকে নির্দেশ করে যা এই ক্যামেরা ডিভাইসটি ব্যবহার করার সময় একই সাথে খোলা যাবে না।

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

এই ক্যামেরা ডিভাইস খোলা থাকা অবস্থায় ক্যামেরা পরিষেবা কখনই এই তালিকার কোনও ডিভাইস একসাথে খুলবে না।

এই ক্ষেত্রটিতে নির্দেশিত স্ট্রিংগুলি ক্যামেরা পরিষেবা দ্বারা পরিষ্কার করা হবে না এবং এই ডিভাইসটি প্লাগ ইন থাকা অবস্থায় থাকতে হবে৷

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

CAMERA_MODULE_API_VERSION_2_3 বা কম:

বৈধ না. NULL বলে ধরে নেওয়া যায়। এই ক্ষেত্রটি পড়বেন না।

CAMERA_MODULE_API_VERSION_2_4 বা উচ্চতর:

সর্বদা বৈধ।

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

আকার_টি বিরোধপূর্ণ_ডিভাইস_দৈর্ঘ্য

দ্বন্দ্বমূলক_ডিভাইস ক্ষেত্রে দেওয়া অ্যারের দৈর্ঘ্য।

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

CAMERA_MODULE_API_VERSION_2_3 বা কম:

বৈধ না. ধরে নেওয়া যেতে পারে 0। এই ক্ষেত্রটি পড়বেন না।

CAMERA_MODULE_API_VERSION_2_4 বা উচ্চতর:

সর্বদা বৈধ।

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

uint32_t device_version

camera_device_t.common.version এর মান।

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

CAMERA_MODULE_API_VERSION_1_0:

বৈধ না. CAMERA_DEVICE_API_VERSION_1_0 বলে ধরে নেওয়া যেতে পারে৷ এই ক্ষেত্রটি পড়বেন না।

CAMERA_MODULE_API_VERSION_2_0 বা উচ্চতর:

সর্বদা বৈধ

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

int সম্মুখীন

ক্যামেরা যে দিকে মুখ করে। ক্যামেরার মুখোমুখি সংজ্ঞার জন্য system/core/include/system/camera.h দেখুন।

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

CAMERA_MODULE_API_VERSION_2_3 বা কম:

এটি CAMERA_FACING_BACK বা CAMERA_FACING_FRONT হওয়া উচিত৷

CAMERA_MODULE_API_VERSION_2_4 বা উচ্চতর:

এটি CAMERA_FACING_BACK, CAMERA_FACING_FRONT বা CAMERA_FACING_EXTERNAL হওয়া উচিত৷

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

int ওরিয়েন্টেশন

ক্যামেরা ছবির ওরিয়েন্টেশন। মান হল সেই কোণ যা ক্যামেরার ছবিকে ঘড়ির কাঁটার দিকে ঘোরাতে হবে যাতে এটি ডিসপ্লেতে তার স্বাভাবিক স্থিতিতে সঠিকভাবে দেখায়। এটি 0, 90, 180, বা 270 হওয়া উচিত।

উদাহরণস্বরূপ, ধরুন একটি ডিভাইসের স্বাভাবিকভাবে লম্বা পর্দা রয়েছে। পিছনের দিকের ক্যামেরা সেন্সরটি ল্যান্ডস্কেপে মাউন্ট করা হয়েছে। আপনি পর্দার দিকে তাকিয়ে আছেন। যদি ক্যামেরা সেন্সরের উপরের দিকটি প্রাকৃতিক অভিযোজনে স্ক্রিনের ডান প্রান্তের সাথে সারিবদ্ধ থাকে, তাহলে মানটি 90 হওয়া উচিত। যদি সামনের দিকের ক্যামেরা সেন্সরের উপরের দিকটি স্ক্রিনের ডানদিকে সারিবদ্ধ থাকে, তাহলে মানটি হওয়া উচিত 270 হবে।

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

CAMERA_MODULE_API_VERSION_2_3 বা কম:

সমস্ত camera_module সংস্করণে বৈধ।

CAMERA_MODULE_API_VERSION_2_4 বা উচ্চতর:

ক্যামেরা ফেসিং CAMERA_FACING_BACK বা CAMERA_FACING_FRONT হলে বৈধ, ক্যামেরা ফেসিং CAMERA_FACING_EXTERNAL হলে বৈধ নয়৷

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

int resource_cost

এই ক্যামেরা ব্যবহার করার মোট সম্পদ "খরচ", পরিসরে একটি পূর্ণসংখ্যা মান হিসাবে উপস্থাপিত হয় [0, 100] যেখানে 100 ভাগ করা সম্পদের মোট ব্যবহারকে প্রতিনিধিত্ব করে যা ক্যামেরা সাবসিস্টেমের সীমাবদ্ধ বাধা। এটি একটি খুব মোটামুটি অনুমান হতে পারে, এবং ক্যামেরা পরিষেবা দ্বারা বিজ্ঞাপিত বিভিন্ন ক্যামেরা একই সাথে খোলার থেকে একাধিক অ্যাপ্লিকেশনকে কখন অননুমোদিত করতে হবে তা নির্ধারণ করতে ক্যামেরা পরিষেবার একটি ইঙ্গিত হিসাবে ব্যবহৃত হয়৷

ক্যামেরা পরিষেবাটি অবশ্যই HAL দ্বারা উন্মুক্ত ক্যামেরা ডিভাইসগুলির যেকোন সংমিশ্রণটি একই সাথে খুলতে এবং ব্যবহার করতে সক্ষম হবে যেখানে এই ক্যামেরাগুলির সংস্থান ব্যয়ের যোগফল হল <= 100৷ খরচ নির্ধারণের জন্য, প্রতিটি ক্যামেরা ডিভাইসকে কনফিগার করা এবং অপারেটিং বলে ধরে নিতে হবে৷ ক্যামেরা মেটাডেটার মাধ্যমে সেই ডিভাইসের জন্য উন্মুক্ত কনফিগারেশন সেটিংসে উপলব্ধ সর্বাধিক সম্পদ-ব্যবহারকারী ফ্রেমরেট এবং স্ট্রিম আকারের সেটিংসে।

ক্যামেরা পরিষেবা এখনও একসাথে ক্যামেরা ডিভাইসগুলির সংমিশ্রণ খোলার চেষ্টা করতে পারে যার মোট সম্পদ খরচ > 100। এটি সফল বা ব্যর্থ হতে পারে। যদি এটি সফল হয়, কনফিগারেশনের সংমিশ্রণ যা একাধিক খোলা ডিভাইস থাকার কারণে সম্পদের সীমাবদ্ধতার কারণে সমর্থিত নয় কনফিগার কলের সময় ব্যর্থ হওয়া উচিত। যদি মোট রিসোর্স খরচ <= 100 হয়, তবে খোলা এবং কনফিগার করা কখনই কোনো স্ট্রিম কনফিগারেশন সেটিংস বা অন্য ডিভাইসের ক্ষমতার জন্য ব্যর্থ হওয়া উচিত নয় যা সাধারণত একটি ডিভাইসের জন্য সফল হবে যখন এটি একমাত্র খোলা ক্যামেরা ডিভাইস।

অন্যান্য অ্যাপ্লিকেশন অন্যান্য ক্যামেরা ডিভাইস ব্যবহার করার সময় পটভূমি অ্যাপ্লিকেশনগুলিকে এই ক্যামেরা ডিভাইসটি ব্যবহার করার অনুমতি দেওয়া হবে কিনা তা নির্ধারণ করতে এই ক্ষেত্রটি ব্যবহার করা হবে৷ দ্রষ্টব্য: একই ক্যামেরা ডিভাইস একসাথে খোলার জন্য ক্যামেরা পরিষেবা দ্বারা একাধিক অ্যাপ্লিকেশন কখনই অনুমোদিত হবে না।

উদাহরণ ব্যবহারের ক্ষেত্রে:

যেমন 1: ক্যামেরা ডিভাইস 0 = পিছনের ক্যামেরা ক্যামেরা ডিভাইস 1 = সামনের ক্যামেরা

  • উভয় ক্যামেরা ডিভাইস ব্যবহার করলে সীমিত ISP ব্যান্ডউইথের কারণে একটি বড় ফ্রেমরেট মন্থর হয়।

কনফিগারেশন:

ক্যামেরা ডিভাইস 0 - রিসোর্স_কস্ট = 51 দ্বন্দ্বমূলক_ডিভাইস = শূন্য ক্যামেরা ডিভাইস 1 - রিসোর্স_কস্ট = 51 দ্বন্দ্বমূলক_ডিভাইস = শূন্য

ফলাফল:

যেহেতু রিসোর্স খরচের যোগফল হল > 100, যদি একটি উচ্চ-অগ্রাধিকারের অ্যাপ্লিকেশানের যেকোনো একটি ডিভাইস খোলা থাকে, তাহলে ক্যামেরা পরিষেবার দ্বারা কোনো নিম্ন-অগ্রাধিকার অ্যাপ্লিকেশনগুলিকে ডিভাইসটি খোলার অনুমতি দেওয়া হবে না। যদি একটি নিম্ন-অগ্রাধিকার অ্যাপ্লিকেশন এমন একটি ডিভাইস ব্যবহার করে যা একটি উচ্চ-অগ্রাধিকার পরবর্তীতে খোলার চেষ্টা করে, তাহলে নিম্ন-অগ্রাধিকার অ্যাপ্লিকেশনটি ডিভাইসটি সংযোগ বিচ্ছিন্ন করতে বাধ্য হবে৷

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

যেমন 2: ক্যামেরা ডিভাইস 0 = বাম পিছনের ক্যামেরা ক্যামেরা ডিভাইস 1 = ডান পিছনের ক্যামেরা ক্যামেরা ডিভাইস 2 = ডিভাইস 0 দ্বারা ব্যবহৃত ডান এবং বাম পিছনের উভয় ক্যামেরা সেন্সর ব্যবহার করে সম্মিলিত স্টেরিও ক্যামেরা, এবং 1 ক্যামেরা ডিভাইস 3 = সামনের ক্যামেরা

  • হার্ডওয়্যার সীমাবদ্ধতার কারণে, একবারে দুটি পর্যন্ত ক্যামেরা খোলা থাকতে পারে। সম্মিলিত স্টেরিও ক্যামেরা দুটি ব্যাক ক্যামেরা ডিভাইসের (ডিভাইস 0, 1) যে কোনো একটির মতো একই সময়ে ব্যবহার করা যাবে না এবং সাধারণত সামনের ক্যামেরা (ডিভাইস 3) এর মতো একই সময়ে ব্যবহার করার জন্য খুব বেশি ব্যান্ডউইথের প্রয়োজন হয়।

কনফিগারেশন:

ক্যামেরা ডিভাইস 0 - রিসোর্স_কস্ট = 50 দ্বন্দ্বমূলক_ডিভাইস = { 2 } ক্যামেরা ডিভাইস 1 - রিসোর্স_কস্ট = 50 দ্বন্দ্বমূলক_ডিভাইস = { 2 } ক্যামেরা ডিভাইস 2 - রিসোর্স_কস্ট = 100 দ্বন্দ্বমূলক_ডিভাইস = { 0, 1 } ক্যামেরা ডিভাইস 3 - রিসোর্স 3 - রিসোর্স দ্বন্দ = রিসোর্স 5

ফলাফল:

বিরোধপূর্ণ_ডিভাইস ক্ষেত্রগুলির উপর ভিত্তি করে, ক্যামেরা পরিষেবা গ্যারান্টি দেয় যে খোলা ডিভাইসগুলির নিম্নলিখিত সেটগুলিকে কখনই অনুমতি দেওয়া হবে না: { 1, 2 }, { 0, 2 }৷

resource_cost ক্ষেত্রগুলির উপর ভিত্তি করে, যদি একটি উচ্চ-অগ্রাধিকার ফোরগ্রাউন্ড অ্যাপ্লিকেশন ক্যামেরা ডিভাইস 0 ব্যবহার করে, একটি ব্যাকগ্রাউন্ড অ্যাপ্লিকেশনকে ক্যামেরা ডিভাইস 1 বা 3 খুলতে অনুমতি দেওয়া হবে (কিন্তু ফোরগ্রাউন্ড অ্যাপ্লিকেশনটি অন্য ডিভাইস খুললে এটি আবার সংযোগ বিচ্ছিন্ন করতে বাধ্য করা হবে)।

সর্বোচ্চ অগ্রাধিকারের অ্যাপ্লিকেশনটি এখনও একই সাথে 0, 2 এবং 3 ডিভাইসগুলি খোলার চেষ্টা করতে পারে, তবে HAL এই সংমিশ্রণের জন্য খোলা বা কনফিগার করতে ব্যর্থ হতে পারে।

যেমন 3: ক্যামেরা ডিভাইস 0 = পিছনের ক্যামেরা ক্যামেরা ডিভাইস 1 = ফ্রন্ট ক্যামেরা ক্যামেরা ডিভাইস 2 = কম-পাওয়ার ফ্রন্ট ক্যামেরা যেটি ডিভাইস 1 এর মতো একই সেন্সর ব্যবহার করে, কিন্তু শুধুমাত্র ইমেজ স্ট্রিম রেজোলিউশনকে প্রকাশ করে যা কম-পাওয়ার মোডে ব্যবহার করা যেতে পারে

  • শেয়ার্ড ফিজিক্যাল সেন্সরের কারণে একই সময়ে উভয় ফ্রন্ট ক্যামেরা (ডিভাইস 1, 2) ব্যবহার করা অসম্ভব। হার্ডওয়্যার সীমাবদ্ধতার কারণে কিছু স্ট্রিম কনফিগারেশনের জন্য পিছনে এবং "উচ্চ-শক্তি" ফ্রন্ট ক্যামেরা (ডিভাইস 1) ব্যবহার করা অসম্ভব হতে পারে, তবে "লো-পাওয়ার" ফ্রন্ট ক্যামেরা বিকল্পটি সর্বদা ব্যবহার করা যেতে পারে কারণ এটিতে বিশেষ ডেডিকেটেড হার্ডওয়্যার রয়েছে।

    কনফিগারেশন:

    ক্যামেরা ডিভাইস 0 - রিসোর্স_কস্ট = 100 দ্বন্দ্বমূলক_ডিভাইস = শূন্য ক্যামেরা ডিভাইস 1 - রিসোর্স_কস্ট = 100 দ্বন্দ্বমূলক_ডিভাইস = { 2 } ক্যামেরা ডিভাইস 2 - রিসোর্স_কস্ট = 0 দ্বন্দ্বমূলক_ডিভাইস = {1} ফলাফল:

    বিরোধপূর্ণ_ডিভাইস ক্ষেত্রগুলির উপর ভিত্তি করে, ক্যামেরা পরিষেবা গ্যারান্টি দেয় যে খোলা ডিভাইসগুলির নিম্নলিখিত সেটগুলি কখনই অনুমোদিত হবে না: { 1, 2 }৷

    resource_cost ক্ষেত্রের উপর ভিত্তি করে, শুধুমাত্র সর্বোচ্চ অগ্রাধিকারের অ্যাপ্লিকেশন একই সময়ে ডিভাইস 0 এবং 1 উভয়টি খোলার চেষ্টা করতে পারে। যদি একটি উচ্চ-অগ্রাধিকার অ্যাপ্লিকেশন ডিভাইস 1 বা 2 ব্যবহার না করে, তাহলে একটি নিম্ন-অগ্রাধিকারের ব্যাকগ্রাউন্ড অ্যাপ্লিকেশন ডিভাইস 2 খুলতে পারে (কিন্তু একটি উচ্চ-অগ্রাধিকার অ্যাপ্লিকেশন পরবর্তীতে ডিভাইস 1 বা 2 খুললে এটি সংযোগ বিচ্ছিন্ন করতে বাধ্য করা হবে)।

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

CAMERA_MODULE_API_VERSION_2_3 বা কম:

বৈধ না. 100 বলে ধরে নেওয়া যায়। এই ক্ষেত্রটি পড়বেন না।

CAMERA_MODULE_API_VERSION_2_4 বা উচ্চতর:

সর্বদা বৈধ।

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

const camera_metadata_t * static_camera_ characteristics

ক্যামেরার নির্দিষ্ট বৈশিষ্ট্য, যা system/media/camera/docs/docs.html-এ নির্দিষ্ট করা সমস্ত স্ট্যাটিক ক্যামেরা মেটাডেটা অন্তর্ভুক্ত করে। এটি একটি সাজানো মেটাডেটা বাফার হওয়া উচিত এবং কলার দ্বারা সংশোধন বা মুক্ত করা যাবে না। পয়েন্টারটি ক্যামেরা মডিউলের জীবনকালের জন্য বৈধ থাকা উচিত এবং get_camera_info() দ্বারা ফেরত দেওয়ার পরে এটির মানগুলি পরিবর্তিত হতে পারে না।

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

CAMERA_MODULE_API_VERSION_1_0:

বৈধ না. অতিরিক্ত বৈশিষ্ট্য উপলব্ধ নেই. এই ক্ষেত্রটি পড়বেন না।

CAMERA_MODULE_API_VERSION_2_0 বা উচ্চতর:

ডিভাইস_সংস্করণ >= CAMERA_DEVICE_API_VERSION_2_0 হলে বৈধ। অন্যথায় পড়বেন না।

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


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