ফ্রেম মেটাডেটা Android 11-এ BufferDesc ডেটা স্ট্রাকচারের সদস্য হিসাবে চালু করা হয়েছে। একটি গ্রাহক-সংজ্ঞায়িত ডেটা বিন্যাস মিটমাট করার জন্য এই নতুন ক্ষেত্রটিকে vec<uint8_t>
হিসাবে ঘোষণা করা হয়েছে এবং EVS পরিচালকের কাছে অস্বচ্ছ।
struct BufferDesc { /** * HIDL counterpart of AHardwareBuffer_Desc. Please see * hardware/interfaces/graphics/common/1.2/types.hal for more details. */ HardwareBuffer buffer; ... /** * Time that this buffer is being filled. */ int64_t timestamp; /** * Frame metadata field. This is opaque to EVS manager. */ vec<uint8_t> metadata; };
HIDL vec<T>
একটি পৃথক বাফারে সংরক্ষিত ডেটা সহ গতিশীল আকারের অ্যারে উপস্থাপন করে। এই ধরনের দৃষ্টান্তগুলিকে struct- এ vec<T>
-এর একটি উদাহরণ দিয়ে উপস্থাপন করা হয়, যার অর্থ EVS ক্যামেরা HAL ড্রাইভার বাস্তবায়ন এই মেটাডেটার মালিক এবং এটি সঠিকভাবে পরিষ্কার করা উচিত। মেটাডেটা পূরণ করার দুটি উপায় আছে:
- কন্টেইনারের আকার পরিবর্তন করুন এবং
operator[]
struct BufferDesc desc = {}; ... desc.metadata.resize(10); for (auto i = 0; i < 10; ++i) { desc.metadata[i] = frameInfo[i]; } ...
- আপনার কাস্টম ডেটা স্ট্রাকচারে
vec<T>
নির্দেশ করতেsetToExternal()
ব্যবহার করুন।struct BufferDesc desc = {}; struct FrameMetadata metadata = { ... }; // this is in vendor-defined format.
desc.metadata.setToExternal(&metadata, sizeof(metadata)); ...