Apache License, Version 2.0 ("লাইসেন্স")-এর অধীনে লাইসেন্স আছে; লাইসেন্স মেনে আপনাকে এই ফাইল ব্যবহার করতে হবে। আপনি লাইসেন্সের একটি কপি এখানে পেতে পারেন
http://www.apache.org/licenses/LICENSE-2.0
প্রযোজ্য আইন অনুযায়ী প্রয়োজন না হলে অথবা লিখিতভাবে সম্মত না হলে, লাইসেন্সের অধীনে বিতরণ করা সফ্টওয়্যার "যেমন আছে" সেই ভিত্তিতে বিতরণ করা হয়, কোনও ধরনের ওয়ারেন্টি বা শর্ত ছাড়াই, তা প্রত্যক্ষ বা পরোক্ষ যাই হোক না কেন। লাইসেন্সের অধীনে অনুমতি ও সীমাবদ্ধতা পরিচালনাকারী নির্দিষ্ট ভাষার জন্য লাইসেন্সটি দেখুন। -->
Android প্ল্যাটফর্ম স্ট্যান্ডার্ড Android Camera2 API এবং ক্যামেরা HAL ইন্টারফেস ব্যবহার করে প্লাগ-অ্যান্ড-প্লে USB ক্যামেরা (অর্থাৎ, ওয়েবক্যাম) ব্যবহার করার সুবিধা দেয়। ওয়েবক্যাম সাধারণত USB ভিডিও ক্লাস (UVC) ড্রাইভার সাপোর্ট করে এবং Linux-এ, স্ট্যান্ডার্ড Video4Linux (V4L) ড্রাইভার UVC ক্যামেরা কন্ট্রোল করতে ব্যবহার করা হয়।
ওয়েবক্যামের জন্য সহায়তা সহ, ডিভাইসগুলি ভিডিও চ্যাটিং এবং ফটো কিয়স্কের মতো হালকা ব্যবহারের ক্ষেত্রে ব্যবহার করা যেতে পারে। এই ফিচার Android ফোনে সাধারণ ইন্টার্নাল ক্যামেরা HAL-এর বিকল্প নয় এবং হাই-রেজোলিউশন ও হাই-স্পিড স্ট্রিমিং, AR এবং ম্যানুয়াল ISP/সেন্সর/লেন্স কন্ট্রোল সহ পারফর্ম্যান্স-ইনটেনসিভ, জটিল টাস্কের জন্য ডিজাইন করা হয়নি।
USB ক্যামেরা HAL প্রসেস হল এক্সটার্নাল ক্যামেরা প্রোভাইডারের অংশ যা USB ডিভাইসের উপলভ্যতা শোনে এবং সেই অনুযায়ী এক্সটার্নাল ক্যামেরা ডিভাইস তালিকাভুক্ত করে। প্রসেসটিতে বিল্ট-ইন ক্যামেরা HAL প্রসেসের মতো অনুমতি এবং একটি SE নীতি রয়েছে। USB ডিভাইসের সাথে সরাসরি যোগাযোগ করে এমন থার্ড-পার্টি ওয়েবক্যাম অ্যাপের ক্ষেত্রে, UVC ডিভাইস অ্যাক্সেস করার জন্য যেকোনও সাধারণ ক্যামেরা অ্যাপের মতোই ক্যামেরা অ্যাক্সেস করার অনুমতি প্রয়োজন হয়।
উদাহরণ ও সোর্স
USB ক্যামেরা কীভাবে প্রয়োগ করতে হয় সেই সম্পর্কে আরও তথ্যের জন্য,
ExternalCameraProvider-এ এক্সটার্নাল ক্যামেরা
প্রোভাইডার রেফারেন্স প্রয়োগ দেখুন।
এক্সটার্নাল ক্যামেরা ডিভাইস ও সেশন ইমপ্লিমেন্টেশন
ExternalCameraDevice
এবং
ExternalCameraDeviceSession-এ অন্তর্ভুক্ত করা হয়েছে।
API লেভেল ২৮ থেকে শুরু করে, Java ক্লায়েন্ট API-তে
EXTERNAL
হার্ডওয়্যার লেভেল অন্তর্ভুক্ত থাকে।
প্রয়োগ
ইমপ্লিমেন্টেশনে অবশ্যই
android.hardware.usb.host
সিস্টেম ফিচার কাজ করতে হবে।
UVC ডিভাইসের জন্য কার্নেল সাপোর্টও চালু থাকতে হবে। আপনি এটি চালু করতে পারেন
সংশ্লিষ্ট কার্নেল defconfig ফাইলে নিম্নলিখিতগুলি যোগ করে।
+CONFIG_USB_VIDEO_CLASS=y
+CONFIG_MEDIA_USB_SUPPORT=y
সংশ্লিষ্ট ডিভাইস বিল্ডে এক্সটার্নাল ক্যামেরা প্রোভাইডার চালু করতে, যা প্রয়োজনীয় SELinux অনুমতি, এক্সটার্নাল ক্যামেরা কনফিগারেশন এবং এক্সটার্নাল ক্যামেরা প্রোভাইডার ডিপেন্ডেন্সি যোগ করে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:
এক্সটার্নাল ক্যামেরা কনফিগারেশন ফাইল ও এক্সটার্নাল ক্যামেরা লাইব্রেরি
device.mk-এ যোগ করুন।+PRODUCT_PACKAGES += android.hardware.camera.provider-V1-external-service +PRODUCT_COPY_FILES += \ +device/manufacturerX/productY/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xmlডিভাইস Treble HAL ম্যানিফেস্টে এক্সটার্নাল ক্যামেরা পরিষেবা প্রদানকারীর নাম যোগ করুন।
<hal format="aidl"> <name>android.hardware.camera.provider</name> <version>1</version> <interface> <name>ICameraProvider</name> <instance>internal/0</instance> + <instance>external/0</instance> </interface> </hal>ডিভাইসের
sepolicy/service_contextsফাইলেexternal/0AIDL ক্যামেরা প্রোভাইডার ইনস্ট্যান্সকেhal_camera_service-এর সাথে বাইন্ড করুন। আরও তথ্যের জন্য, AIDL HAL-এর জন্য SEPolicy দেখুন।android.hardware.camera.provider.ICameraProvider/external/0 u:object_r:hal_camera_service:s0(ঐচ্ছিক) ডিভাইসটি Treble পাসথ্রু মোডে চললে,
sepolicyআপডেট করুন যাতেcameraserverUVC ক্যামেরা অ্যাক্সেস করতে পারে।+# for external camera +allow cameraserver device:dir r_dir_perms; +allow cameraserver video_device:dir r_dir_perms; +allow cameraserver video_device:chr_file rw_file_perms;
এখানে external_camera_config.xml-এর একটি উদাহরণ দেওয়া হল (কপিরাইট লাইন বাদ দেওয়া হয়েছে)।
<ExternalCamera> <Provider> <ignore> <!-- Internal video devices to be ignored by external camera HAL --> <id>0</id> <!-- No leading/trailing spaces --> <id>1</id> </ignore> </Provider> <!-- See ExternalCameraUtils.cpp for default values of Device configurations below --> <Device> <!-- Max JPEG buffer size in bytes--> <MaxJpegBufferSize bytes="3145728"/> <!-- 3MB (~= 1080p YUV420) --> <!-- Size of v4l2 buffer queue when streaming >= 30fps --> <!-- Larger value: more request can be cached pipeline (less janky) --> <!-- Smaller value: use less memory --> <NumVideoBuffers count="4"/> <!-- Size of v4l2 buffer queue when streaming < 30fps --> <NumStillBuffers count="2"/> <!-- List of maximum fps for various output sizes --> <!-- Any image size smaller than the size listed in Limit row will report fps (as minimum frame duration) up to the fpsBound value. --> <FpsList> <!-- width/height must be increasing, fpsBound must be decreasing--> <Limit width="640" height="480" fpsBound="30.0"/> <Limit width="1280" height="720" fpsBound="15.0"/> <Limit width="1920" height="1080" fpsBound="10.0"/> <!-- image size larger than the last entry will not be supported--> </FpsList> </Device> </ExternalCamera>
কাস্টমাইজেশন
আপনি সাধারণ কাস্টমাইজেশন বিকল্প অথবা ডিভাইস-নির্দিষ্ট অপ্টিমাইজেশনের মাধ্যমে Android ক্যামেরা উন্নত করতে পারেন।
সাধারণ কাস্টমাইজেশন
external_camera_config.xml ফাইলটি পরিবর্তন করে আপনি এক্সটার্নাল ক্যামেরা প্রদানকারীকে কাস্টমাইজ করতে পারেন। নির্দিষ্টভাবে, ক্লায়েন্ট নিম্নলিখিত প্যারামিটার
কাস্টমাইজ করতে পারবেন:
- ইন্টার্নাল ক্যামেরার ভিডিও নোড বাদ দিয়ে
- কাজ করে এমন ছবির সাইজ ও ফ্রেম রেটের ঊর্ধ্বসীমা
- ইনফ্লাইট বাফারের সংখ্যা (জ্যাঙ্ক বনাম মেমরি ট্রেডঅফ)
এইসব প্যারামিটার ছাড়াও, আপনি নিজের প্যারামিটার যোগ করতে বা নিজের কনফিগারেশন তৈরি করতে পারবেন।
ডিভাইস-নির্দিষ্ট অপ্টিমাইজেশন
এছাড়াও, ডিভাইস-নির্দিষ্ট অপ্টিমাইজেশন যোগ করে আপনি পারফর্ম্যান্স উন্নত করতে পারবেন।
বাফার কপি/স্কেলিং এবং JPEG ডিকোড/এনকোড
জেনেরিক ইমপ্লিমেন্টেশন CPU (libyuv/libjpeg) ব্যবহার করে, তবে আপনি এটি ডিভাইস-নির্দিষ্ট অপ্টিমাইজেশন দিয়ে পরিবর্তন করতে পারেন।
HAL আউটপুট ফর্ম্যাট
জেনেরিক ইমপ্লিমেন্টেশন নিম্নলিখিত আউটপুট ফর্ম্যাট ব্যবহার করে:
YUV_420_888-এর জন্য ভিডিওIMPLEMENTATION_DEFINEDবাফার করে- অন্য সব
IMPLEMENTATION_DEFINEDবাফারের জন্যYUV12
পারফর্ম্যান্স উন্নত করতে, আপনি আউটপুট ফর্ম্যাটকে ডিভাইস-নির্দিষ্ট দক্ষ ফর্ম্যাট দিয়ে পরিবর্তন করতে পারেন। এছাড়াও, আপনি কাস্টমাইজ করা প্রয়োগে অতিরিক্ত ফর্ম্যাট ব্যবহার করতে পারেন
যাচাইকরণ
এক্সটার্নাল ক্যামেরা সাপোর্ট করে এমন ডিভাইসকে অবশ্যই ক্যামেরা CTS পাস করতে হবে। পুরো টেস্ট রান চলাকালীন এক্সটার্নাল USB ওয়েবক্যাম নির্দিষ্ট ডিভাইসে প্লাগ-ইন করে রাখতে হবে, অন্যথায় কিছু টেস্ট কেস ব্যর্থ হবে।