मोशन फ़ोटो ऐसी सिंगल फ़ाइलें होती हैं जिनमें एक फ़ोटोग्राफ़िक इमेज और शॉर्ट वीडियो, जिसमें ऑडियो रिकॉर्डिंग शामिल है. इस तरह के मीडिया से उपयोगकर्ता कैप्चर करने के लिए, वीडियो और साउंड के साथ-साथ हाई रिज़ॉल्यूशन वाली स्टिल इमेज देख सकते हैं भावना और माहौल, जहां तस्वीर ली गई थी.
डिपेंडेंसी
इस स्पेसिफ़िकेशन के मानक रेफ़रंस यहां दिए गए हैं:
- आरएफ़सी में ज़रूरत के लेवल बताने के लिए इस्तेमाल किए जाने वाले मुख्य शब्द
- T.81 (09/92) डिजिटल कंप्रेशन और लगातार टोन स्टिल की कोडिंग इमेज (JPEG)
- ISO/IEC 23008-12:2022 विषम वातावरण पार्ट 12: इमेज फ़ाइल फ़ॉर्मैट (HEIC)
- AV1 इमेज फ़ाइल फ़ॉर्मैट (AVIF) (AVIF)
- अल्ट्रा एचडीआर इमेज फ़ॉर्मैट v1.0 | Android डेवलपर (अल्ट्रा एचडीआर)
- ISO 16684-1:2011(E) XMP स्पेसिफ़िकेशन का पहला हिस्सा (एक्सएमपी)
- फ़ाइलों में Adobe XMP Specification पार्ट 3 स्टोरेज (एक्सएमपी)
- ISO/IEC 14496-10:2022 ऑडियो-विज़ुअल ऑब्जेक्ट की कोडिंग भाग 10: ऐडवांस्ड वीडियो कोडिंग (एवीसी)
- ISO/IEC 23008-2:2023 विषम वातावरण का दूसरा हिस्सा: बेहतर परफ़ॉर्मेंस वाला वीडियो कोडिंग (एचईवीसी)
- AV1 बिटस्ट्रीम और डिकोडिंग प्रोसेस स्पेसिफ़िकेशन (AV1)
- ISO/IEC 14496-1:2010 ऑडियो-विज़ुअल ऑब्जेक्ट की कोडिंग - सिस्टम
- ISO/IEC 14496-12:2015 ISO Box मीडिया फ़ाइल फ़ॉर्मैट (ISOBMFF)
- ISO/IEC 14496-14:2020 ऑडियो-विज़ुअल ऑब्जेक्ट की कोडिंग भाग 14: MP4 फ़ाइल फ़ॉर्मैट (MP4)
- Apple QuickTime फ़ाइल फ़ॉर्मैट (MOV)
परिचय
"ज़रूरी है", "नहीं करना चाहिए", "ज़रूरी", "होना चाहिए", "नहीं होना चाहिए", "सुझाया गया", "मई", और "ज़रूरी नहीं" आईईटीएफ़ स्टैंडर्ड के मुताबिक है RFC2119 में बताया गया है.
मोशन फ़ोटो फ़ॉर्मैट
मोशन फ़ोटो फ़ाइलों में एक प्राइमरी स्टिल इमेज फ़ाइल होती है, JPEG, HEIC या AVIF के साथ दूसरी वीडियो फ़ाइल इसमें जोड़ी गई. मुख्य इमेज में Camera XMP शामिल है स्टिल इमेज फ़ाइल और वीडियो फ़ाइल का कॉन्टेंट दिखाने के तरीके की जानकारी देने वाला मेटाडेटा, वीडियो फ़ाइल के कॉन्टेंट का पता लगाने के तरीके के बारे में बताने वाला कंटेनर XMP मेटाडेटा.
इमेज फ़ाइल में एक गेनमैप हो सकता है, जैसा कि अल्ट्रा एचडीआर JPEG में होता है.
फ़ाइल नाम का पैटर्न
लेखकों को ऐसे फ़ाइल नाम का इस्तेमाल करना चाहिए जो नीचे दिए गए रेगुलर एक्सप्रेशन से मेल खाता हो:
^([^\\s\\/\\\\][^\\/\\\\]*MP)\\.(JPG|jpg|JPEG|jpeg|HEIC|heic|AVIF|avif)
पाठक XMP मेटाडेटा, जोड़ी गई वीडियो फ़ाइल या वीडियो को अनदेखा कर सकते हैं पैटर्न नहीं फ़ॉलो नहीं किया जाता है, तो कॉन्टेंट.
मीडिया डेटा एन्कोडिंग
मुख्य इमेज में कंटेनर एलिमेंट XMP है बाद वाले मीडिया का क्रम और प्रॉपर्टी तय करने वाली मेटाडेटा डायरेक्ट्री फ़ाइल कंटेनर में मौजूद है. कंटेनर में मौजूद हर फ़ाइल का एक मीडिया होता है आइटम को डायरेक्ट्री में डालें. मीडिया आइटम, फ़ाइल में मौजूद जगह के बारे में बताता है कंटेनर और बनाई गई हर फ़ाइल की बुनियादी प्रॉपर्टी के बारे में भी बताएं.
XMP विशेषताएं
XMP मेटाडेटा के दो सेट का इस्तेमाल मोशन फ़ोटो फ़ॉर्मैट में. मेटाडेटा किसी भी क्रम में दिख सकता है.
कैमरे का मेटाडेटा
कैमरा मेटाडेटा इस बात की जानकारी को कोड में बदल देता है कि मुख्य इमेज कैसे दिखाई जाए और मोशन फ़ोटो के वीडियो वाले हिस्से.
- नेमस्पेस यूआरआई
http://ns.google.com/photos/1.0/camera/
- डिफ़ॉल्ट नेमस्पेस प्रीफ़िक्स
Camera
है
स्टिल इमेज फ़ाइल XMP मेटाडेटा में ये एट्रिब्यूट दिख सकते हैं:
नाम |
टाइप |
ब्यौरा |
|
ये प्रॉपर्टी, माइक्रोवीडियो V1 स्पेसिफ़िकेशन का हिस्सा थीं. इन्हें इस स्पेसिफ़िकेशन में मिटा दिया गया है. साथ ही, अगर ये मौजूद हों, तो इन्हें अनदेखा कर देना चाहिए. खास तौर पर, फ़ाइल में वीडियो का डेटा ढूंढने के लिए, |
|
|
|
0: यह बताता है कि फ़ाइल को मोशन फ़ोटो नहीं माना जाना चाहिए. 1: यह बताता है कि फ़ाइल को मोशन फ़ोटो माना जाना चाहिए. अन्य सभी वैल्यू के बारे में नहीं बताया जाता और उन्हें 0 के बराबर ही माना जाता है. अगर वैल्यू शून्य या नेगेटिव है, तो फ़ाइल हमेशा नॉन-मोशन फ़ोटो, भले ही फ़ाइल में वीडियो जोड़ा गया हो. क्योंकि XMP पर सबसे अच्छा व्यवहार करने वाले एडिटर काम करते हैं, इसलिए इमेज फ़ाइलें इस फ़ील्ड के लिए अब भी 1 का अवशिष्ट मान हो सकता है, भले ही वीडियो निकाल दिया गया है. इसलिए, यह फ़ील्ड तय नहीं है और लोग हमेशा इस बात की पुष्टि करनी चाहिए कि कोई वीडियो मौजूद है. |
|
|
यह मोशन फ़ोटो के फ़ाइल फ़ॉर्मैट का वर्शन दिखाता है. यह खास जानकारी, वर्शन "1" के बारे में बताती है. |
|
|
इमेज स्टिल इमेज से जुड़े वीडियो फ़्रेम के प्रज़ेंटेशन के टाइमस्टैंप (माइक्रोसेकंड में) को दिखाने वाली लंबी वैल्यू. इसकी वैल्यू -1 हो सकती है. इससे यह पता चलता है कि कोई वैल्यू सेट नहीं है या इसकी जानकारी नहीं दी गई है. |
प्रज़ेंटेशन का व्यवहार
अगर XMP पैकेट में Camera:MotionPhotoPresentationTimestampUs
मौजूद नहीं है,
पाठकों को टाइमस्टैंप से ठीक पहले वाले प्रज़ेंटेशन टाइमस्टैंप का इस्तेमाल करना चाहिए
वीडियो ट्रैक के बीच के करीब, यानी वीडियो ट्रैक की अवधि
2 से विभाजित किया गया है.
अगर XMP पैकेट में Camera:MotionPhotoPresentationTimestampUs
मौजूद है और
वीडियो में "application/motionphoto-image-meta"
मौजूद है, वही
मान, primaryImageFrameScoreDescr
presentationTimestampUs
में दिखना चाहिए
उस ट्रैक के फ़ील्ड में. अगर Camera:MotionPhotoPresentationTimestampUs
नहीं है
XMP पैकेट में मौजूद होता है और मेटाडेटा ट्रैक मौजूद होता है, फिर
मेटाडेटा ट्रैक -1 होना चाहिए.
कंटेनर एलिमेंट
कंटेनर एलिमेंट को मुख्य इमेज के XMP मेटाडेटा में एन्कोड किया जाता है और कंटेनर में मीडिया आइटम की डायरेक्ट्री के बारे में बताता है. मीडिया आइटम कंटेनर फ़ाइल में उसी क्रम में मौजूद होना चाहिए जिसमें मीडिया आइटम के एलिमेंट होनी चाहिए और उसे अच्छी तरह से पैक किया जाना चाहिए.
- नेमस्पेस यूआरआई
http://ns.google.com/photos/1.0/container/
- डिफ़ॉल्ट नेमस्पेस प्रीफ़िक्स
Container
है
डायरेक्ट्री में सिर्फ़ एक मुख्य इमेज आइटम हो सकता है और इसे पहला होना चाहिए आइटम को डायरेक्ट्री में डालें.
एलिमेंट का नाम |
टाइप |
ब्यौरा |
|
स्ट्रक्चर का ऑर्डर वाला कलेक्शन |
|
आइटम का एलिमेंट
मीडिया आइटम एलिमेंट बताते हैं कि ऐप्लिकेशन में हर आइटम का इस्तेमाल कैसे किया जाना चाहिए.
- नेमस्पेस यूआरआई
http://ns.google.com/photos/1.0/container/item/
- डिफ़ॉल्ट नेमस्पेस प्रीफ़िक्स
Item
है
पहला मीडिया आइटम, मुख्य इमेज होना चाहिए. इसमें Mime
होना चाहिए
एट्रिब्यूट, जिसमें आइटम MIME टाइप में दिए गए किसी इमेज MIME टाइप के बारे में बताया गया है
वैल्यू. प्राथमिक आइटम की लंबाई प्राथमिक आइटम को पार्स करके तय की जा सकती है
फ़ाइल कंटेनर की शुरुआत में, इसके एमआईएमई टाइप के हिसाब से इमेज अपलोड की जाती है.
पहले मीडिया आइटम में एक Padding
एट्रिब्यूट हो सकता है, जिसमें अतिरिक्त
कोड में बदली गई मुख्य इमेज के आखिर और इमेज के शुरुआती हिस्से के बीच की पैडिंग
अगला मीडिया आइटम. सिर्फ़ पहले मीडिया आइटम में Padding
एट्रिब्यूट हो सकता है.
हर मीडिया आइटम में Mime
एट्रिब्यूट होना चाहिए. दूसरे मीडिया आइटम में
लंबाई एट्रिब्यूट भी शामिल करें.
क्रम में चलने वाले मीडिया आइटम, फ़ाइल कंटेनर में संसाधन डेटा शेयर कर सकते हैं. कॉन्टेंट बनाने
पहला मीडिया आइटम, फ़ाइल कंटेनर में संसाधन की जगह तय करता है,
और बाद में शेयर किए गए मीडिया आइटम का Length
0 पर सेट होता है, अगर
संसाधन डेटा खुद एक कंटेनर होता है.
कंटेनर में मीडिया आइटम के संसाधनों की जगह, योग को जोड़कर तय की जाती है
पिछले सेकंडरी आइटम संसाधनों की Length
वैल्यू की लंबाई
प्राथमिक इमेज एन्कोडिंग और तय होने पर Padding
.
विशेषता का नाम |
टाइप |
ब्यौरा |
|
|
ज़रूरी है. कंटेनर में मीडिया आइटम के MIME टाइप को दिखाने वाली सामान्य स्ट्रिंग. |
|
|
ज़रूरी है. ऐप्लिकेशन के खास मतलब को बताने वाली सामान्य स्ट्रिंग, मीडिया आइटम. परिभाषा के लिए आइटम सिमैंटिक वैल्यू सेक्शन देखें. |
|
|
वीडियो कंटेनर के साथ-साथ सेकंडरी मीडिया आइटम के लिए ज़रूरी है. आइटम के बाइट में धनात्मक पूर्णांक की लंबाई. मीडिया आइटम अपने मूल रूप में होने चाहिए और उनमें कोई एन्कोडिंग लागू नहीं की जाती. लंबाई की वैल्यू, फ़ाइल में मौजूद बाइट की असल लंबाई होती है. दूसरे मीडिया आइटम की लंबाई 0 बताती है कि मीडिया आइटम का संसाधन पिछले मीडिया आइटम के साथ शेयर किया गया है. प्राथमिक मीडिया आइटम में लंबाई 0 होनी चाहिए. |
|
|
[JPEG के आधार पर मोशन फ़ोटो] मुख्य मीडिया आइटम के लिए ज़रूरी नहीं है. सामान्य स्ट्रिंग, जिसमें अतिरिक्त वैल्यू के बाइट में पॉज़िटिव पूर्णांक की लंबाई मौजूद होती है कोड में बदली गई मुख्य इमेज के आखिर और इमेज के शुरुआती हिस्से के बीच की पैडिंग अगला मीडिया आइटम. [HEIC/AVIF पर आधारित मोशन फ़ोटो] मुख्य मीडिया आइटम के लिए ज़रूरी है. इसका मान 8 के बराबर होना चाहिए, मोशन फ़ोटो के हेडर की लंबाई वीडियो डेटा ("mpvd") बॉक्स. |
आइटम:माइम टाइप की वैल्यू
Item:Mime
एट्रिब्यूट, हर मीडिया आइटम के MIME टाइप के बारे में बताता है.
वैल्यू |
ब्यौरा |
|
JPEG इमेज |
|
HEIC इमेज |
|
AVIF इमेज |
|
MP4 कंटेनर |
|
MOV कंटेनर |
आइटम:सेमैंटिक वैल्यू
Item:Semantic
एट्रिब्यूट, हर एक एट्रिब्यूट का मतलब ऐप्लिकेशन के हिसाब से बताता है
कंटेनर डायरेक्ट्री में मीडिया आइटम है.
|
ब्यौरा |
|
इससे पता चलता है कि मीडिया आइटम, कंटेनर में प्राइमरी डिसप्ले के लिए तैयार इमेज है. एक मोशन फ़ोटो में इस सिमैंटिक वाला सिर्फ़ एक आइटम होना चाहिए. |
|
इससे पता चलता है कि मीडिया आइटम, वीडियो कंटेनर है. एक मोशन फ़ोटो में इस सिमैंटिक वाला सिर्फ़ एक आइटम होना चाहिए. इस मीडिया आइटम की जगह, फ़ाइल के आखिर में होनी चाहिए. इस मीडिया आइटम की बाइट खत्म होने के बाद, कोई और बाइट नहीं रखा जा सकता. |
मुख्य अल्ट्रा एचडीआर इमेज के साथ मोशन फ़ोटो
इस स्पेसिफ़िकेशन में बताए गए आइटम सिमैंटिक वैल्यू के नियमों के मुताबिक
अल्ट्रा एचडीआर इमेज की खास बातें,
मुख्य अल्ट्रा एचडीआर इमेज वाली मोशन फ़ोटो में, ऐसा मीडिया आइटम भी होना चाहिए जिसमें
"GainMap"
का एक आइटम सिमैंटिक. साथ ही, मोशन फ़ोटो को कोड में बदलने वाले लेखकों को
वीडियो आइटम तत्व से पहले गेनमैप आइटम तत्व.
ISOBMFF-इमेज के हिसाब से खास व्यवहार
इनके साथ मोशन फ़ोटो ISOBMFF पर आधारित इमेज (उदाहरण के लिए, HEIC और AVIF इमेज) की संरचना ऐसी होनी चाहिए कि इमेज फ़ाइल का कुछ हिस्सा टॉप-लेवल "मोशन फ़ोटो वीडियो डेटा" के साथ खत्म हो जाता है बॉक्स, में परिभाषित सिंटैक्टिक डीटेल की भाषा के सिमेंटिक्स का इस्तेमाल करके बताया गया है ISO/IEC 14496-1:2010(E) क्लॉज़ 8:
// Box as defined in ISO/IEC 14496-12:2015: 4.2
aligned(8) class MotionPhotoVideoData extends Box('mpvd') {
bit(8) data[];
}
जहां "data" फ़ील्ड में सभी वीडियो बाइट शामिल होते हैं. "0" का विशेष मान मोशन फ़ोटो वीडियो डेटा बॉक्स के आकार के लिए अनुमति नहीं है. (यहां देखें ISO/IEC 14496-12:2015: 4.2: Box को बड़ा करता है.)
ISOBMFF इमेज के XMP को मुख्य मीडिया आइटम की पैडिंग (जगह) तय करनी चाहिए एट्रिब्यूट की वैल्यू, मोशन फ़ोटो वीडियो के साइज़ बाइट के बराबर है डेटा बॉक्स हेडर, जो आकार और नाम के हेडर होता है.
HEIC आधारित गति का नमूना देखने के लिए, इस बॉक्स संरचना को दिखाने वाली पहली इमेज देखें फ़ोटो:
पहला डायग्राम. इमेज में, एचईआईसी के नमूने के तौर पर टॉप-लेवल वाले बॉक्स का इलस्ट्रेशन एक HEIC मोशन फ़ोटो फ़ाइल चुननी होगी. ध्यान दें कि बॉक्स का क्रम आमतौर पर सिर्फ़ इलस्ट्रेशन (कृपया इसे बनाने के तरीके से जुड़े मानकों को देखें) HEIF या वीडियो फ़ाइलें); फिर भी, "mpvd" बॉक्स में सभी HEIC कोड शामिल होने चाहिए इमेज फ़ाइल के बॉक्स पर क्लिक करें.
वीडियो कंटेनर का कॉन्टेंट
प्राथमिक इमेज के साथ जोड़ी गई वीडियो कंटेनर फ़ाइल में कम से कम एक प्राइमरी वीडियो ट्रैक जोड़ना ज़रूरी है. यह ट्रैक ज़रूरी है और इसमें वीडियो एन्कोड किया गया है एवीसी में, HEVC या AV1. कॉन्टेंट बनाने मुख्य वीडियो फ़्रेम के रिज़ॉल्यूशन की जानकारी नहीं दी गई है. वीडियो कलर स्पेस, ट्रांसफ़र फ़ंक्शन और बिट की गहराई अलग-अलग हो सकती है. उदाहरण के लिए, एसडीआर वीडियो में 8-बिट बिट हो सकता है डेप्थ, BT.709 कलर स्पेस, जिसमें sRGB का ट्रांसफ़र फ़ंक्शन शामिल है. इसके अलावा, एचडीआर वीडियो इनमें 10-बिट की गहराई, BT.2100, और HLG या PQ ट्रांसफ़र हो सकता है साथ ही, एचडीआर मेटाडेटा और मेटाडेटा ट्रैक के साथ काम करता है.
वीडियो कंटेनर फ़ाइल में एक वैकल्पिक उच्च रिज़ॉल्यूशन द्वितीयक हो सकता है वीडियो ट्रैक बनाने में मदद मिलती है. पाठकों को इसकी सामग्री का इस्तेमाल JPEG या HEIC इमेज के लिए एन्कोड की गई मुख्य इमेज. इस ट्रैक में ये चीज़ें हो सकती हैं कम फ़्रेम रेट वाले वीडियो, जिन्हें AVC, HEVC या AV1 फ़ॉर्मैट में एन्कोड किया गया हो. दूसरा वीडियो फ़्रेम रिज़ॉल्यूशन तय नहीं है.
उम्मीद की जाती है कि द्वितीयक वीडियो ट्रैक के सभी फ़्रेम में प्राइमरी वीडियो ट्रैक में मिलते-जुलते फ़्रेम शामिल होने चाहिए. मिलते-जुलते प्रॉडक्ट की हर जोड़ी प्राइमरी और सेकंडरी वीडियो ट्रैक में फ़्रेम का प्रज़ेंटेशन एक जैसा होना चाहिए टाइमस्टैंप. अगर कोई द्वितीयक ट्रैक फ़्रेम है, जिसमें उनसे संबंधित प्राथमिक ट्रैक फ़्रेम नहीं है ट्रैक फ़्रेम, दर्शक किसी प्राइमरी ट्रैक फ़्रेम को प्रज़ेंटेशन के टाइमस्टैंप से मेल खाता हो दूसरा वीडियो ट्रैक.
वीडियो कंटेनर फ़ाइल में एक वैकल्पिक 16-बिट मोनो या स्टीरियो ऑडियो हो सकता है 44kHz, 48 kHz या AAC में एन्कोड किए गए 96 किलोहर्ट्ज़ पर ट्रैक करें. पाठकों को यह प्रज़ेंट करना चाहिए मुख्य वीडियो ट्रैक दिखाए जाने पर ऑडियो ट्रैक.
अगर दूसरा वीडियो ट्रैक मौजूद है, तो उसे हमेशा मुख्य वीडियो के बाद आना चाहिए वीडियो ट्रैक बनाने में मदद मिलती है. अन्य ट्रैक के क्रम में कोई और रुकावट नहीं है. कॉन्टेंट बनाने प्राथमिक वीडियो ट्रैक का ट्रैक इंडेक्स किसी भी द्वितीयक से कम होना चाहिए वीडियो ट्रैक बनाने में मदद मिलती है. इसका मतलब है कि अगर मुख्य वीडियो ट्रैक का ट्रैक नंबर 2 है, तो द्वितीयक वीडियो ट्रैक का ट्रैक नंबर 3 से ज़्यादा या उसके बराबर होना चाहिए.
मशीन इंटेलिजेंस स्कोरिंग के साथ वीडियो मेटाडेटा ट्रैक
लेखक वैकल्पिक रूप से एक वीडियो कंटेनर फ़ाइल में "meta" लिखें. मेटाडेटा ट्रैक में सिर्फ़ एक सैंपल होना चाहिए, जिसमें "सिंटैक्स" में दिए गए फ़ॉर्मैट में बाइट स्ट्रीम.
अगर मेटाडेटा ट्रैक मौजूद है, तो ट्रैक (यानी, "mdia.minf.stbl.stsd" पर मौजूद "stsd" बॉक्स "ट्रक" बॉक्स) में एक ऐसा ऐटम होना चाहिए जो टेक्स्ट मेटाडेटा का नमूना दिखाता हो एंट्री - (जैसे, "मेट" बॉक्स). "मेट" बॉक्स में MIME टाइप वाली स्ट्रिंग इसके बराबर होनी चाहिए से "application/motionphoto-image-meta" पर.
वाक्य-विन्यास
अगर इस मेटाडेटा ट्रैक को तय किया गया है, तो इसके कॉन्टेंट में एक बाइट स्ट्रीम होनी चाहिए
इस MotionPhotoMetadataDescriptor
स्पेसिफ़िकेशन के मुताबिक, जानकारी दी गई है
में वाक्यात्मक वर्णन भाषा के सिमेंटिक्स का उपयोग किया जा रहा है
ISO/IEC 14496-1:2010(E) क्लॉज़ 8.
// BaseDescriptor as defined in ISO/IEC 14496-1:2010(E): 7.2.2.2
abstract aligned(8) expandable((1<<28) - 1) class BaseDescriptor
: bit(8) tag=0 {
// Empty. To be filled by classes extending this class.
}
// Score data for a frame.
class MotionPhotoFrameScoreDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoFrameScoreDescrTag {
// The frame's score in the range [0, 1].
float(32) score;
// The frame's presentation timestamp in microseconds.
int(64) presentationTimestampUs;
}
// Score data for a track.
class MotionPhotoTrackScoreDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoTrackScoreDescrTag {
// The number of scored frames in the track.
unsigned int(32) numScoredFrames;
// The track's frames' score data. They must be in ascending order with
// respect to the presentation timestamp.
MotionPhotoFrameScoreDescriptor trackFrameScoreDescr[numScoredHighResFrames];
}
// Score data for a motion photo.
class MotionPhotoScoreDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoScoreDescrTag {
// Machine-intelligence model version used to calculate the scores. Writers
// using a scoring model should set this field to 1 or greater. Writers not
// using any scoring model should set this field to 0.
unsigned int(32) modelVersion;
// The primary image's frame score data.
MotionPhotoFrameScoreDescriptor primaryImageFrameScoreDescr;
// The high-resolution motion photo frames' score data.
MotionPhotoTrackScoreDescriptor highResTrackScoreDescr;
}
// Flag data for a track.
class MotionPhotoTrackFlagsDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoTrackFlagDescrTag {
// Set to true to indicate the video frames have been stabilized and don't
// require readers of the track to apply any further stabilization.
bit(1) isStabilized;
}
// Flags for a motion photo.
class MotionPhotoFlagsDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoFlagDescrTag {
// The low-resolution motion photo track's flag data.
MotionPhotoTrackFlagDescriptor lowResTrackFlagsDescr;
// The high-resolution motion photo track's flag data.
MotionPhotoTrackFlagDescriptor highResTrackFlagsDescr;
}
// Container for motion photo metadata, like stabilization indicators and
// quality scoring.
class MotionPhotoMetadataDescriptor extends BaseDescriptor
: bit(8) tag=MotionPhotoMetadataDescrTag {
// Scoring data for the still and high-res frames.
MotionPhotoScoreDescriptor motionPhotoScoreDescr;
// Flags for the low-res and high-res frames.
MotionPhotoFlagDescriptor motionPhotoFlagDescr;
}
// Class tags for MotionPhotoData using the "User Private" tag space 0xC0-0xFE
// for descriptors defined in ISO/IEC 14496-1:2010(E): 7.2.2.1, Table 1.
// 0xC0 MotionPhotoMetadataDescrTag
// 0xC1 MotionPhotoScoreDescrTag
// 0xC2 MotionPhotoTrackScoreDescrTag
// 0xC3 MotionPhotoFrameScoreDescrTag
// 0xC4 MotionPhotoFlagsDescrTag
// 0xC5 MotionPhotoTrackFlagDescrTag