XR_ANDROID_face_tracking_data_source
নাম স্ট্রিং
XR_ANDROID_face_tracking_data_source
এক্সটেনশন টাইপ
ইনস্ট্যান্স এক্সটেনশন
নিবন্ধিত এক্সটেনশন নম্বর
৭০৭
সংশোধন
১
অনুমোদনের অবস্থা
অনুমোদিত নয়
এক্সটেনশন এবং সংস্করণ নির্ভরতা
XR_ANDROID_face_tracking
সর্বশেষ সংশোধনের তারিখ
২০২৫-১২-১৬
আইপি স্ট্যাটাস
কোনো জ্ঞাত আইপি দাবি নেই।
অবদানকারীরা
কেনি ভার্সেমার, গুগল
ইংলেই ঝাং, গুগল
নিহাব জৈন, গুগল
স্পেন্সার কুইন, গুগল
সংক্ষিপ্ত বিবরণ
এই এক্সটেনশনটি অ্যাপ্লিকেশনগুলিকে একাধিক ডেটা উৎস থেকে ফেস ট্র্যাকিং ডেটা পেতে সক্ষম করে।
সমর্থিত ডেটা উৎসগুলিতে অনুসন্ধান করুন
সমর্থিত ফেস ট্র্যাকিং ডেটা সোর্সগুলির তালিকা পেতে অ্যাপ্লিকেশনগুলিকে xrEnumerateFaceTrackingDataSourcesANDROID কল করতে হবে ।
xrEnumerateFaceTrackingDataSourcesANDROID ফাংশনটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:
XrResult xrEnumerateFaceTrackingDataSourcesANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedDataSourcesInputCapacity,
uint32_t* supportedDataSourcesOutputCount,
XrFaceTrackingDataSourceANDROID* supportedDataSources);
প্যারামিটার বিবরণ
-
instanceহলো একটি XrInstance- এর হ্যান্ডেল। -
systemIdহলো সেইXrSystemId, যার জন্য ফেস ট্র্যাকিং ডেটা সোর্সগুলো গণনা করা হবে। -
supportedDataSourcesInputCapacityহলোsupportedDataSourcesঅ্যারের ধারণক্ষমতা, অথবা প্রয়োজনীয় ধারণক্ষমতা পুনরুদ্ধারের অনুরোধ বোঝাতে এর মান ০। -
supportedDataSourcesOutputCountহলো সমর্থিত ডেটা সোর্সের সংখ্যা, অথবাsupportedDataSourcesInputCapacityঅপর্যাপ্ত হলে প্রয়োজনীয় ধারণক্ষমতা। -
supportedDataSourcesহলো XrFaceTrackingDataSourceANDROID- এর একটি অ্যারে। যদিsupportedDataSourcesInputCapacity0 হয়, তবে এটিNULLহতে পারে । - প্রয়োজনীয়
supportedDataSourcesসাইজ নির্ধারণের বিস্তারিত বিবরণের জন্য Buffer Size Parameters সেকশনটি দেখুন।
অ্যাপ্লিকেশনটি xrEnumerateFaceTrackingDataSourcesANDROID ফাংশনটি কল করার মাধ্যমে সিস্টেম দ্বারা সমর্থিত ডেটা সোর্সগুলির তালিকা দেখতে পারে ।
যদি XrSystemFaceTrackingPropertiesANDROID :: supportsFaceTracking XR_TRUE হয়, তাহলে রানটাইমকে অবশ্যই xrEnumerateFaceTrackingDataSourcesANDROID থেকে XR_FACE_TRACKING_DATA_SOURCE_IMAGE_ANDROID রিটার্ন করতে হবে ।
যদি রানটাইম শূন্য ডেটা সোর্স ফেরত দেয়, তাহলে এটি কোনো ধরনের ফেস ট্র্যাকিং সমর্থন করে না।
রানটাইমকে অবশ্যই ডেটা সোর্সগুলো সর্বোচ্চ গুণমান থেকে সর্বনিম্ন গুণমানের ক্রমানুসারে ফেরত দিতে হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- xrEnumerateFaceTrackingDataSourcesANDROID কল করার আগে
XR_ANDROID_face_tracking_data_sourceএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
instanceঅবশ্যই একটি বৈধ XrInstance হ্যান্ডেল হতে হবে -
supportedDataSourcesOutputCountঅবশ্যই একটিuint32_tমানের পয়েন্টার হতে হবে। - যদি
supportedDataSourcesInputCapacity0না হয়, তাহলেsupportedDataSourcesঅবশ্যইsupportedDataSourcesInputCapacityXrFaceTrackingDataSourceANDROID মানগুলোর একটি অ্যারের পয়েন্টার হতে হবে।
রিটার্ন কোড
-
XR_SUCCESS
-
XR_ERROR_FEATURE_UNSUPPORTED -
XR_ERROR_FUNCTION_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_RUNTIME_FAILURE -
XR_ERROR_SYSTEM_INVALID -
XR_ERROR_VALIDATION_FAILURE
XrFaceTrackingDataSourceANDROID এনুমারেশনটি সেই বিভিন্ন ডেটা সোর্সগুলোকে শনাক্ত করে যা একটি রানটাইম সমর্থন করতে পারে ।
typedef enum XrFaceTrackingDataSourceANDROID {
XR_FACE_TRACKING_DATA_SOURCE_IMAGE_ANDROID = 1,
XR_FACE_TRACKING_DATA_SOURCE_AUDIO_ANDROID = 2,
XR_FACE_TRACKING_DATA_SOURCE_MULTIMODAL_ANDROID = 3,
XR_FACE_TRACKING_DATA_SOURCE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrFaceTrackingDataSourceANDROID;
গণনাকারীগুলোর নিম্নলিখিত অর্থ রয়েছে:
এনামের বিবরণ
XR_FACE_TRACKING_DATA_SOURCE_IMAGE_ANDROID
এটি নির্দেশ করে যে এই কনফিগারেশনটি ইমেজ ডেটা ব্যবহার করে।
XR_FACE_TRACKING_DATA_SOURCE_AUDIO_ANDROID
এটি নির্দেশ করে যে এই কনফিগারেশনটি অডিও ডেটা ব্যবহার করে।
XR_FACE_TRACKING_DATA_SOURCE_MULTIMODAL_ANDROID
এটি নির্দেশ করে যে এই কনফিগারেশনটি ছবি এবং অডিও ডেটা ব্যবহার করে।
ডেটা উৎস কনফিগার করা
XrFaceTrackingDataSourceInfoANDROID কাঠামোটি নিম্নরূপে বর্ণনা করা হয়েছে:
typedef struct XrFaceTrackingDataSourceInfoANDROID {
XrStructureType type;
const void* next;
uint32_t requestedDataSourceCount;
const XrFaceTrackingDataSourceANDROID* requestedDataSources;
} XrFaceTrackingDataSourceInfoANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
requestedDataSourceCountহলো অ্যাপ্লিকেশন কর্তৃক অনুরোধকৃত ডেটা সোর্সের সংখ্যা। -
requestedDataSourcesহলো XrFaceTrackingDataSourceANDROID ভ্যালুগুলোর একটি অ্যারে, যা অ্যাপ্লিকেশন দ্বারা অনুরোধ করা ডেটা সোর্সগুলো নির্দিষ্ট করে।
XrFaceTrackingDataSourceInfoANDROID কাঠামোটি একটি XrFaceTrackerANDROID হ্যান্ডেল তৈরি করার জন্য ডেটা উৎসগুলোর বর্ণনা দেয়।
xrCreateFaceTrackerANDROID কল করার সময় ফেস ট্র্যাকিংয়ের জন্য এক বা একাধিক ডেটা সোর্সের অনুরোধ করতে, কোনো অ্যাপ্লিকেশন XrFaceTrackerCreateInfoANDROID স্ট্রাকচারের পরবর্তী চেইনে একটি XrFaceTrackingDataSourceInfoANDROID স্ট্রাকচার পাস করতে পারে ।
যদি অ্যাপ্লিকেশনটি শূন্য ডেটা সোর্স পাস করে, অথবা xrEnumerateFaceTrackingDataSourcesANDROID দ্বারা কোনো ডেটা সোর্স গণনা করা না হয়ে থাকে, তাহলে রানটাইমকে অবশ্যই XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে।
যদি ব্যবহারকারী অনুরোধ করা সমস্ত ডেটা সোর্সের জন্য প্রয়োজনীয় সমস্ত অনুমতি প্রদান না করে থাকেন, তাহলে রানটাইমকে অবশ্যই XR_ERROR_PERMISSION_INSUFFICIENT রিটার্ন করতে হবে।
প্রতিটি ডেটা সোর্সের জন্য প্রয়োজনীয় অনুমতিগুলো নিম্নরূপভাবে সংজ্ঞায়িত করা হয়েছে:
-
XR_FACE_TRACKING_DATA_SOURCE_IMAGE_ANDROIDএর জন্য android.permission.FACE_TRACKING পারমিশনটি প্রয়োজন। -
XR_FACE_TRACKING_DATA_SOURCE_AUDIO_ANDROIDএর জন্য android.permission.RECORD_AUDIO পারমিশনটি প্রয়োজন। -
XR_FACE_TRACKING_DATA_SOURCE_MULTIMODAL_ANDROIDএর জন্য android.permission.FACE_TRACKING এবং android.permission.RECORD_AUDIO উভয় পারমিশন প্রয়োজন।
রানটাইমকে অবশ্যই XrFaceTrackingDataSourceInfoANDROID : requestedDataSources অ্যারেটিকে অ্যাপ্লিকেশনের সর্বোচ্চ অগ্রাধিকার থেকে সর্বনিম্ন অগ্রাধিকার অনুসারে ব্যাখ্যা করতে হবে। রানটাইমকে অবশ্যই প্রথম অনুরোধকৃত ডেটা সোর্স ব্যবহার করে ট্র্যাকিং ডেটা তৈরি করতে হবে, যেটি তখনও প্রয়োজনীয় অনুমতিগুলো মেনে চলে। যদি ট্র্যাকারের জীবনকালে কোনো অনুমতি প্রত্যাহার করা হয়, যার ফলে কোনো ডেটা সোর্স আর ব্যবহারযোগ্য না থাকে, তাহলে রানটাইমকে অবশ্যই পরবর্তী সর্বোচ্চ অগ্রাধিকারের ডেটা সোর্স ব্যবহার করার চেষ্টা চালিয়ে যেতে হবে। যদি অনুরোধকৃত কোনো ডেটা সোর্সই ব্যবহারযোগ্য না হয়, তাহলে রানটাইমকে অবশ্যই xrGetFaceStateANDROID- এর কলে XrFaceStateANDROID :: isValid কে XR_FALSE এ সেট করতে হবে এবং অন্যান্য ফিল্ডগুলোকে অনির্ধারিত বলে গণ্য করা হবে।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrFaceTrackingDataSourceInfoANDROID ব্যবহার করার আগে
XR_ANDROID_face_tracking_data_sourceএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_FACE_TRACKING_DATA_SOURCE_INFO_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
requestedDataSourcesঅবশ্যইrequestedDataSourceCountসংখ্যক বৈধ XrFaceTrackingDataSourceANDROID মানের একটি অ্যারের পয়েন্টার হতে হবে। -
requestedDataSourceCountপ্যারামিটারটি অবশ্যই0এর চেয়ে বড় হতে হবে।
অনুমতি
অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে যে অনুমতিগুলি অনুরোধ করার ইচ্ছা আছে, সেগুলি অবশ্যই তাদের ম্যানিফেস্টে তালিকাভুক্ত থাকতে হবে। android.permission.FACE_TRACKING অনুমতিটি একটি বিপজ্জনক অনুমতি হিসাবে বিবেচিত হয়। android.permission.RECORD_AUDIO অনুমতিটিও একটি বিপজ্জনক অনুমতি হিসাবে বিবেচিত হয়। এই ফাংশনগুলি ব্যবহার করার জন্য অ্যাপ্লিকেশনটিকে রানটাইমে অনুমতিগুলির জন্য অনুরোধ করতে হবে :
(সুরক্ষার স্তর: বিপজ্জনক)
XrFaceTrackingDataSourceStateANDROID কাঠামোটি নিম্নরূপভাবে বর্ণনা করা হয়েছে:
typedef struct XrFaceTrackingDataSourceStateANDROID {
XrStructureType type;
void* next;
XrFaceTrackingDataSourceANDROID dataSource;
} XrFaceTrackingDataSourceStateANDROID;
সদস্যদের বিবরণ
-
typeহলো এই স্ট্রাকচারটির XrStructureType । -
nextহলোNULLঅথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো স্ট্রাকচার সংজ্ঞায়িত করা নেই। -
dataSourceহলো XrFaceTrackingDataSourceANDROID , যা ফেস ট্র্যাকিং ডেটা তৈরি করতে ব্যবহৃত হয়।
কোনো অ্যাপ্লিকেশন, সেই কলের জন্য ফেস ট্র্যাকিং ডেটা তৈরি করতে ব্যবহৃত ডেটা সোর্স কোয়েরি করার উদ্দেশ্যে, xrGetFaceStateANDROID- এ পাস করা XrFaceStateANDROID স্ট্রাকচারের সাথে একটি XrFaceTrackingDataSourceStateANDROID স্ট্রাকচার চেইন করতে পারে ।
বৈধ ব্যবহার (অন্তর্নিহিত)
- XrFaceTrackingDataSourceStateANDROID ব্যবহার করার আগে
XR_ANDROID_face_tracking_data_sourceএক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে। -
typeঅবশ্যইXR_TYPE_FACE_TRACKING_DATA_SOURCE_STATE_ANDROIDহতে হবে -
nextঅবশ্যইNULLঅথবা স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের একটি বৈধ পয়েন্টার হতে হবে। -
dataSourceঅবশ্যই একটি বৈধ XrFaceTrackingDataSourceANDROID ভ্যালু হতে হবে।
ডেটা সোর্স সহ ফেস ট্র্যাকিংয়ের উদাহরণ কোড।
XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized
XrSession session; // previously initialized, e.g. created at app startup.
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateFaceTrackerANDROID xrCreateFaceTrackerANDROID; // previously initialized
PFN_xrDestroyFaceTrackerANDROID xrDestroyFaceTrackerANDROID; // previously initialized
PFN_xrGetFaceStateANDROID xrGetFaceStateANDROID; // previously initialized
PFN_xrEnumerateFaceTrackingDataSourcesANDROID xrEnumerateFaceTrackingDataSourcesANDROID; // previously initialized
bool (*requestPermission)(const char* permission);
// Inspect data sources supported by the system.
uint32_t dataSourcesCount = 0;
CHK_XR(xrEnumerateFaceTrackingDataSourcesANDROID(instance, systemId, dataSourcesCount,
&dataSourcesCount, nullptr));
std::vector<XrFaceTrackingDataSourceANDROID> dataSources(dataSourcesCount);
CHK_XR(xrEnumerateFaceTrackingDataSourcesANDROID(instance, systemId, dataSourcesCount,
&dataSourcesCount, dataSources.data()));
if (dataSources.size() == 0) {
// System does not support face tracking at all ...
return;
}
auto requestDataSourcePermissions = [requestPermission](XrFaceTrackingDataSourceANDROID dataSource) {
switch (dataSource) {
case XR_FACE_TRACKING_DATA_SOURCE_IMAGE_ANDROID:
return requestPermission("android.permission.FACE_TRACKING");
case XR_FACE_TRACKING_DATA_SOURCE_AUDIO_ANDROID:
return requestPermission("android.permission.RECORD_AUDIO");
case XR_FACE_TRACKING_DATA_SOURCE_MULTIMODAL_ANDROID:
return requestPermission("android.permission.FACE_TRACKING") &&
requestPermission("android.permission.RECORD_AUDIO");
default:
return false;
}
};
// Request permissions and remove data sources that are not granted.
for (uint32_t i = 0; i < dataSources.size();) {
if (requestDataSourcePermissions(dataSources[i])) {
++i;
continue;
}
dataSources.erase(dataSources.begin() + i);
}
if (dataSources.size() == 0) {
// User denied all permissions, cannot create face tracker.
return;
}
// Create face tracker with requested data sources.
XrFaceTrackerANDROID faceTracker;
XrFaceTrackingDataSourceInfoANDROID
faceTrackerModeInfo{.type = XR_TYPE_FACE_TRACKING_DATA_SOURCE_INFO_ANDROID,
.next = nullptr,
.requestedDataSourceCount = static_cast<uint32_t>(
dataSources.size()),
.requestedDataSources = dataSources.data()};
XrFaceTrackerCreateInfoANDROID
createInfo{.type = XR_TYPE_FACE_TRACKER_CREATE_INFO_ANDROID,
.next = &faceTrackerModeInfo};
CHK_XR(xrCreateFaceTrackerANDROID(session, &createInfo, &faceTracker));
XrFaceTrackingDataSourceStateANDROID dataSourceState{
.type = XR_TYPE_FACE_TRACKING_DATA_SOURCE_STATE_ANDROID,
.next = nullptr};
XrFaceStateANDROID faceState;
float faceExpressionParameters[XR_FACE_PARAMETER_COUNT_ANDROID];
faceState.type = XR_TYPE_FACE_STATE_ANDROID;
faceState.next = &dataSourceState;
faceState.parametersCapacityInput = XR_FACE_PARAMETER_COUNT_ANDROID;
faceState.parameters = faceExpressionParameters;
while (1) {
// ...
// For every frame in the frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
XrFaceStateGetInfoANDROID faceGetInfo{
.type = XR_TYPE_FACE_STATE_GET_INFO_ANDROID,
.next = nullptr,
.time = frameState.predictedDisplayTime,
};
CHK_XR(xrGetFaceStateANDROID(faceTracker, &faceGetInfo, &faceState));
if (faceState.isValid) {
for (uint32_t i = 0; i < XR_FACE_PARAMETER_COUNT_ANDROID; ++i) {
// parameters[i] contains a weight of specific blend shape
}
// If the system changes data source because of permission changes,
// handle the new data source ...
switch (dataSourceState.dataSource) {
default:
break;
}
}
}
// after usage
CHK_XR(xrDestroyFaceTrackerANDROID(faceTracker));
সমস্যা
সংস্করণ ইতিহাস
সংস্করণ ১, ২০২৪-১০-০৭ (কেনি ভার্কাইমার)
- প্রাথমিক এক্সটেনশনের বিবরণ