H.264 स्ट्रीम के लिए अनुक्रम / चित्र पैरामीटर सेट के लिए संभावित स्थान


84

मैं एक एच .264 डिकोडर पर काम कर रहा हूं और सोच रहा हूं कि एसपीएस और पीपीएस कहां मिलेंगे। मेरा संदर्भ साहित्य मुझे बताता है कि वे H.264- स्ट्रीम में एनएएल इकाइयाँ हैं, लेकिन जब मैं IsoViewer के साथ एक उदाहरण-MP4- फ़ाइल देखता हूँ, तो यह कहता है कि SPS और PPS avcC बॉक्स में हैं।

यह वास्तव में कैसे काम करता है? यह .mkv फ़ाइलों या अन्य H.264 कंटेनरों की तलाश कैसे करता है?

अग्रिम में धन्यवाद!

जवाबों:


299

सबसे पहले, यह समझना महत्वपूर्ण है कि कोई एकल मानक H.264 प्राथमिक बिटस्ट्रीम प्रारूप नहीं है। विनिर्देश दस्तावेज़ में एक अनुलग्नक होता है, विशेष रूप से अनुलग्नक बी, जो एक संभावित प्रारूप का वर्णन करता है, लेकिन यह एक वास्तविक आवश्यकता नहीं है। मानक निर्दिष्ट करता है कि वीडियो को अलग-अलग पैकेट में कैसे एन्कोड किया गया है। इन पैकेटों को कैसे संग्रहीत किया जाता है और कैसे प्रेषित किया जाता है, इसे इंटीग्रेटर के पास खुला छोड़ दिया जाता है।


1. एनेक्स बी

नेटवर्क अमूर्त परत इकाइयों

पैकेट को नेटवर्क एब्स्ट्रेक्शन लेयर यूनिट कहा जाता है। अक्सर संक्षिप्त NALU (या कभी-कभी केवल NAL) प्रत्येक पैकेट को व्यक्तिगत रूप से पार्स और संसाधित किया जा सकता है। प्रत्येक NALU के पहले बाइट में NALU प्रकार होता है, विशेष रूप से 3 बिट्स के माध्यम से 7. (बिट 0 हमेशा बंद रहता है, और बिट्स 1-2 इंगित करता है कि क्या NALU किसी अन्य NALU द्वारा संदर्भित है)।

19 अलग-अलग NALU प्रकार दो श्रेणियों, VCL और गैर- VCL में अलग-अलग परिभाषित किए गए हैं:

  • VCL या वीडियो कोडिंग लेयर पैकेट में वास्तविक दृश्य जानकारी होती है।
  • गैर-वीसीएल में मेटाडेटा होता है जो वीडियो को डीकोड करने के लिए आवश्यक हो सकता है या नहीं।

एक एकल NALU, या यहां तक ​​कि एक VCL NALU एक फ्रेम के रूप में एक ही बात नहीं है। एक फ्रेम कई NALU में 'कटा हुआ' हो सकता है। जैसे आप पिज्जा को स्लाइस कर सकते हैं। एक या अधिक स्लाइस को वस्तुतः एक एक्सेस यूनिट (एयू) में वर्गीकृत किया जाता है जिसमें एक फ्रेम होता है। स्लाइसिंग थोड़ी गुणवत्ता वाली लागत पर आती है, इसलिए इसका उपयोग अक्सर नहीं किया जाता है।

नीचे सभी परिभाषित NALUs की एक तालिका है।

0      Unspecified                                                    non-VCL
1      Coded slice of a non-IDR picture                               VCL
2      Coded slice data partition A                                   VCL
3      Coded slice data partition B                                   VCL
4      Coded slice data partition C                                   VCL
5      Coded slice of an IDR picture                                  VCL
6      Supplemental enhancement information (SEI)                     non-VCL
7      Sequence parameter set                                         non-VCL
8      Picture parameter set                                          non-VCL
9      Access unit delimiter                                          non-VCL
10     End of sequence                                                non-VCL
11     End of stream                                                  non-VCL
12     Filler data                                                    non-VCL
13     Sequence parameter set extension                               non-VCL
14     Prefix NAL unit                                                non-VCL
15     Subset sequence parameter set                                  non-VCL
16     Depth parameter set                                            non-VCL
17..18 Reserved                                                       non-VCL
19     Coded slice of an auxiliary coded picture without partitioning non-VCL
20     Coded slice extension                                          non-VCL
21     Coded slice extension for depth view components                non-VCL
22..23 Reserved                                                       non-VCL
24..31 Unspecified                                                    non-VCL

NALU प्रकार के एक जोड़े हैं जहाँ ज्ञान हो सकता है बाद में मददगार हो सकता है।

  • अनुक्रम पैरामीटर सेट (एसपीएस)। इस गैर-वीसीएल एनएलयू में प्रोफ़ाइल, स्तर, रिज़ॉल्यूशन, फ्रेम दर जैसे डिकोडर को कॉन्फ़िगर करने के लिए आवश्यक जानकारी है।
  • पिक्चर पैरामीटर सेट (PPS)। एसपीएस की तरह, इस गैर-वीसीएल में एन्ट्रापी कोडिंग मोड, स्लाइस ग्रुप, मोशन प्रेडिक्शन और डेबलॉक फिल्टर की जानकारी है।
  • तात्कालिक विकोडक ताज़ा (IDR)। यह VCL NALU एक आत्म निहित छवि टुकड़ा है। यही है, एक आईडीआर को डीपीएस और पीपीएस बचाने के लिए किसी अन्य एनएलयू को संदर्भित किए बिना डिकोड किया जा सकता है और प्रदर्शित किया जा सकता है।
  • एक्सेस यूनिट डेलिमिटर (एयूडी)। एयूडी एक वैकल्पिक एनएलयू है जिसका उपयोग प्रारंभिक धारा में फ्रेम को परिसीमित करने के लिए किया जा सकता है। यह आवश्यक नहीं है (जब तक कि टीएस (कंटेनर की तरह प्रोटोकॉल द्वारा अन्यथा न कहा गया हो), और अंतरिक्ष को बचाने के लिए अक्सर शामिल नहीं किया जाता है, लेकिन यह पूरी तरह से प्रत्येक एनएलयू को पार्स किए बिना एक फ्रेम की शुरुआत का पता लगाने के लिए उपयोगी हो सकता है।

NALU प्रारंभ कोड

एक NALU सम्‍मिलित नहीं है इसका आकार है। इसलिए केवल NALUs बनाने के लिए एक धारा बनाने से काम नहीं चलेगा क्योंकि आप नहीं जान पाएंगे कि कोई कहां रुकता है और अगला शुरू होता है।

अनुलग्नक B विनिर्देशन प्रत्येक NALU से पहले 'स्टार्ट कोड' की आवश्यकता को हल करता है। एक बाइट के 0x00साथ एक स्टार्ट कोड 2 या 3 बाइट्स होता है 0x01। जैसे 0x000001या 0x00000001

धारावाहिक कनेक्शन पर प्रसारण के लिए 4 बाइट भिन्नता उपयोगी है क्योंकि यह एक के बाद 31 शून्य बिट्स की तलाश में धारा को बाइट करने के लिए तुच्छ है। यदि अगला बिट 0 है (क्योंकि प्रत्येक एनएलयू 0 बिट से शुरू होता है), यह एनएलयू की शुरुआत है। 4 बाइट भिन्नता का उपयोग आम तौर पर धारा में यादृच्छिक अभिगम बिंदुओं जैसे कि एसपीएस पीपीएस एयूडी और आईडीआर के लिए किया जाता है जहां 3 बाइट भिन्नता का उपयोग अंतरिक्ष को बचाने के लिए हर जगह किया जाता है।

अनुकरण रोकथाम बाइट्स

प्रारंभ कोड के काम करने की वजह से चार बाइट दृश्यों 0x000000, 0x000001, 0x000002और0x000003 एक गैर RBSP Nalu भीतर अवैध हैं। इसलिए NALU बनाते समय, इन मूल्यों से बचने के लिए ध्यान रखा जाता है जो अन्यथा एक प्रारंभ कोड के साथ भ्रमित हो सकते हैं। यह एक 'एमुनेशन प्रिवेंशन' बाइट डालकर पूरा किया जाता है 0x03, इसलिए यह 0x000001बन जाता है 0x00000301

जब डिकोडिंग करते हैं, तो इम्यूशन रोकथाम बाइट्स को देखना और अनदेखा करना महत्वपूर्ण है। क्योंकि एमुलेशन की रोकथाम बाइट्स एक एनएलयू के भीतर लगभग कहीं भी हो सकती हैं, यह अक्सर प्रलेखन में अधिक सुविधाजनक होता है मान लें कि उन्हें पहले ही हटा दिया गया है। एमुलेशन रोकथाम बाइट्स के बिना एक प्रतिनिधित्व को रॉ बाइट सीक्वेंस पेलोड (आरबीएसपी) कहा जाता है।

उदाहरण

आइए एक संपूर्ण उदाहरण देखें।

0x0000 | 00 00 00 01 67 64 00 0A AC 72 84 44 26 84 00 00
0x0010 | 03 00 04 00 00 03 00 CA 3C 48 96 11 80 00 00 00
0x0020 | 01 68 E8 43 8F 13 21 30 00 00 01 65 88 81 00 05
0x0030 | 4E 7F 87 DF 61 A5 8B 95 EE A4 E9 38 B7 6A 30 6A
0x0040 | 71 B9 55 60 0B 76 2E B5 0E E4 80 59 27 B8 67 A9
0x0050 | 63 37 5E 82 20 55 FB E4 6A E9 37 35 72 E2 22 91
0x0060 | 9E 4D FF 60 86 CE 7E 42 B7 95 CE 2A E1 26 BE 87
0x0070 | 73 84 26 BA 16 36 F4 E6 9F 17 DA D8 64 75 54 B1
0x0080 | F3 45 0C 0B 3C 74 B3 9D BC EB 53 73 87 C3 0E 62
0x0090 | 47 48 62 CA 59 EB 86 3F 3A FA 86 B5 BF A8 6D 06
0x00A0 | 16 50 82 C4 CE 62 9E 4E E6 4C C7 30 3E DE A1 0B
0x00B0 | D8 83 0B B6 B8 28 BC A9 EB 77 43 FC 7A 17 94 85
0x00C0 | 21 CA 37 6B 30 95 B5 46 77 30 60 B7 12 D6 8C C5
0x00D0 | 54 85 29 D8 69 A9 6F 12 4E 71 DF E3 E2 B1 6B 6B
0x00E0 | BF 9F FB 2E 57 30 A9 69 76 C4 46 A2 DF FA 91 D9
0x00F0 | 50 74 55 1D 49 04 5A 1C D6 86 68 7C B6 61 48 6C
0x0100 | 96 E6 12 4C 27 AD BA C7 51 99 8E D0 F0 ED 8E F6
0x0110 | 65 79 79 A6 12 A1 95 DB C8 AE E3 B6 35 E6 8D BC
0x0120 | 48 A3 7F AF 4A 28 8A 53 E2 7E 68 08 9F 67 77 98
0x0130 | 52 DB 50 84 D6 5E 25 E1 4A 99 58 34 C7 11 D6 43
0x0140 | FF C4 FD 9A 44 16 D1 B2 FB 02 DB A1 89 69 34 C2
0x0150 | 32 55 98 F9 9B B2 31 3F 49 59 0C 06 8C DB A5 B2
0x0160 | 9D 7E 12 2F D0 87 94 44 E4 0A 76 EF 99 2D 91 18
0x0170 | 39 50 3B 29 3B F5 2C 97 73 48 91 83 B0 A6 F3 4B
0x0180 | 70 2F 1C 8F 3B 78 23 C6 AA 86 46 43 1D D7 2A 23
0x0190 | 5E 2C D9 48 0A F5 F5 2C D1 FB 3F F0 4B 78 37 E9
0x01A0 | 45 DD 72 CF 80 35 C3 95 07 F3 D9 06 E5 4A 58 76
0x01B0 | 03 6C 81 20 62 45 65 44 73 BC FE C1 9F 31 E5 DB
0x01C0 | 89 5C 6B 79 D8 68 90 D7 26 A8 A1 88 86 81 DC 9A
0x01D0 | 4F 40 A5 23 C7 DE BE 6F 76 AB 79 16 51 21 67 83
0x01E0 | 2E F3 D6 27 1A 42 C2 94 D1 5D 6C DB 4A 7A E2 CB
0x01F0 | 0B B0 68 0B BE 19 59 00 50 FC C0 BD 9D F5 F5 F8
0x0200 | A8 17 19 D6 B3 E9 74 BA 50 E5 2C 45 7B F9 93 EA
0x0210 | 5A F9 A9 30 B1 6F 5B 36 24 1E 8D 55 57 F4 CC 67
0x0220 | B2 65 6A A9 36 26 D0 06 B8 E2 E3 73 8B D1 C0 1C
0x0230 | 52 15 CA B5 AC 60 3E 36 42 F1 2C BD 99 77 AB A8
0x0240 | A9 A4 8E 9C 8B 84 DE 73 F0 91 29 97 AE DB AF D6
0x0250 | F8 5E 9B 86 B3 B3 03 B3 AC 75 6F A6 11 69 2F 3D
0x0260 | 3A CE FA 53 86 60 95 6C BB C5 4E F3

यह एक पूर्ण एयू है जिसमें 3 एनएलयू हैं। जैसा कि आप देख सकते हैं, हम एक एसपीएस (एसपीएस 67 के साथ शुरू होता है) के बाद एक स्टार्ट कोड से शुरू करते हैं। एसपीएस के भीतर, आपको दो एमुलेशन प्रिवेंशन बाइट्स दिखाई देंगे। इन बाइट्स के बिना इन 0x000000पदों पर अवैध अनुक्रम होगा। इसके बाद आपको एक प्रारंभ कोड दिखाई देगा जिसके बाद एक PPS (PPS 68 से शुरू होता है) और एक अंतिम प्रारंभ कोड के बाद एक IDR स्लाइस होता है। यह एक पूर्ण H.264 धारा है। यदि आप इन मानों को एक हेक्स संपादक में टाइप करते हैं और फ़ाइल को .264एक्सटेंशन के साथ सहेजते हैं , तो आप इसे इस छवि में परिवर्तित कर पाएंगे:

लेना

एनेक्स बी का उपयोग आमतौर पर लाइव और स्ट्रीमिंग प्रारूपों जैसे ट्रांसपोर्ट स्ट्रीम, एयर ब्रॉडकास्ट और डीवीडी में किया जाता है। इन प्रारूपों में एसपीएस और पीपीएस को समय-समय पर दोहराना आम है, आमतौर पर हर आईडीआर से पहले इस प्रकार डिकोडर के लिए एक यादृच्छिक पहुंच बिंदु का निर्माण होता है। यह एक स्ट्रीम में पहले से ही शामिल होने की क्षमता को सक्षम बनाता है।


2. एवीसीसी

H.264 स्ट्रीम को संग्रहीत करने का अन्य सामान्य तरीका AVCC प्रारूप है। इस प्रारूप में, प्रत्येक NALU अपनी लंबाई (बड़े एंडियन प्रारूप में) से पहले है। यह विधि पार्स करना आसान है, लेकिन आप अनुलग्नक बी की बाइट संरेखण विशेषताओं को खो देते हैं। बस चीजों को जटिल करने के लिए, लंबाई को 1, 2 या 4 बाइट्स का उपयोग करके एन्कोड किया जा सकता है। यह मान किसी शीर्ष लेख ऑब्जेक्ट में संग्रहीत है। इस हेडर को अक्सर 'एक्स्ट्राडाटा' या 'सीक्वेंस हेडर' कहा जाता है। इसका मूल प्रारूप इस प्रकार है:

bits    
8   version ( always 0x01 )
8   avc profile ( sps[0][1] )
8   avc compatibility ( sps[0][2] )
8   avc level ( sps[0][3] )
6   reserved ( all bits on )
2   NALULengthSizeMinusOne
3   reserved ( all bits on )
5   number of SPS NALUs (usually 1)

repeated once per SPS:
  16         SPS size
  variable   SPS NALU data

8   number of PPS NALUs (usually 1)

repeated once per PPS:
  16       PPS size
  variable PPS NALU data

उपरोक्त समान उदाहरण का उपयोग करते हुए, AVCC एक्सट्रैडाटा इस तरह दिखेगा:

0x0000 | 01 64 00 0A FF E1 00 19 67 64 00 0A AC 72 84 44
0x0010 | 26 84 00 00 03 00 04 00 00 03 00 CA 3C 48 96 11
0x0020 | 80 01 00 07 68 E8 43 8F 13 21 30

आप देखेंगे कि SPS और PPS अब बैंड से बाहर संग्रहीत हैं। यही है, प्राथमिक स्ट्रीम डेटा से अलग। इस डेटा का संग्रहण और प्रसारण फ़ाइल कंटेनर का काम है, और इस दस्तावेज़ के दायरे से परे है। ध्यान दें कि भले ही हम स्टार्ट कोड का उपयोग नहीं कर रहे हैं, लेकिन इम्यूशन प्रिवेंशन बाइट्स अभी भी डाले गए हैं।

इसके अतिरिक्त, एक नया चर कहा जाता है NALULengthSizeMinusOne। यह भ्रमित नाम दिया चर हमें बताता है कि प्रत्येक NALU की लंबाई को संग्रहीत करने के लिए कितने बाइट्स का उपयोग करना है। इसलिए, यदि NALULengthSizeMinusOne0 पर सेट किया गया है, तो प्रत्येक NALU एक ही बाइट से पहले होता है जो इसकी लंबाई दर्शाता है। आकार को संग्रहीत करने के लिए एकल बाइट का उपयोग करके, NALU का अधिकतम आकार 255 बाइट्स है। यह स्पष्ट रूप से बहुत छोटा है। पूरे मुख्य फ्रेम के लिए रास्ता बहुत छोटा है। 2 बाइट्स का उपयोग करने से हमें 64k प्रति NALU मिलता है। यह हमारे उदाहरण में काम करेगा, लेकिन अभी भी बहुत कम सीमा है। 3 बाइट्स परिपूर्ण होंगे, लेकिन किसी कारण से सार्वभौमिक रूप से समर्थित नहीं है। इसलिए, 4 बाइट्स अब तक सबसे आम है, और यह वही है जो हमने यहां इस्तेमाल किया है:

0x0000 | 00 00 02 41 65 88 81 00 05 4E 7F 87 DF 61 A5 8B
0x0010 | 95 EE A4 E9 38 B7 6A 30 6A 71 B9 55 60 0B 76 2E
0x0020 | B5 0E E4 80 59 27 B8 67 A9 63 37 5E 82 20 55 FB
0x0030 | E4 6A E9 37 35 72 E2 22 91 9E 4D FF 60 86 CE 7E
0x0040 | 42 B7 95 CE 2A E1 26 BE 87 73 84 26 BA 16 36 F4
0x0050 | E6 9F 17 DA D8 64 75 54 B1 F3 45 0C 0B 3C 74 B3
0x0060 | 9D BC EB 53 73 87 C3 0E 62 47 48 62 CA 59 EB 86
0x0070 | 3F 3A FA 86 B5 BF A8 6D 06 16 50 82 C4 CE 62 9E
0x0080 | 4E E6 4C C7 30 3E DE A1 0B D8 83 0B B6 B8 28 BC
0x0090 | A9 EB 77 43 FC 7A 17 94 85 21 CA 37 6B 30 95 B5
0x00A0 | 46 77 30 60 B7 12 D6 8C C5 54 85 29 D8 69 A9 6F
0x00B0 | 12 4E 71 DF E3 E2 B1 6B 6B BF 9F FB 2E 57 30 A9
0x00C0 | 69 76 C4 46 A2 DF FA 91 D9 50 74 55 1D 49 04 5A
0x00D0 | 1C D6 86 68 7C B6 61 48 6C 96 E6 12 4C 27 AD BA
0x00E0 | C7 51 99 8E D0 F0 ED 8E F6 65 79 79 A6 12 A1 95
0x00F0 | DB C8 AE E3 B6 35 E6 8D BC 48 A3 7F AF 4A 28 8A
0x0100 | 53 E2 7E 68 08 9F 67 77 98 52 DB 50 84 D6 5E 25
0x0110 | E1 4A 99 58 34 C7 11 D6 43 FF C4 FD 9A 44 16 D1
0x0120 | B2 FB 02 DB A1 89 69 34 C2 32 55 98 F9 9B B2 31
0x0130 | 3F 49 59 0C 06 8C DB A5 B2 9D 7E 12 2F D0 87 94
0x0140 | 44 E4 0A 76 EF 99 2D 91 18 39 50 3B 29 3B F5 2C
0x0150 | 97 73 48 91 83 B0 A6 F3 4B 70 2F 1C 8F 3B 78 23
0x0160 | C6 AA 86 46 43 1D D7 2A 23 5E 2C D9 48 0A F5 F5
0x0170 | 2C D1 FB 3F F0 4B 78 37 E9 45 DD 72 CF 80 35 C3
0x0180 | 95 07 F3 D9 06 E5 4A 58 76 03 6C 81 20 62 45 65
0x0190 | 44 73 BC FE C1 9F 31 E5 DB 89 5C 6B 79 D8 68 90
0x01A0 | D7 26 A8 A1 88 86 81 DC 9A 4F 40 A5 23 C7 DE BE
0x01B0 | 6F 76 AB 79 16 51 21 67 83 2E F3 D6 27 1A 42 C2
0x01C0 | 94 D1 5D 6C DB 4A 7A E2 CB 0B B0 68 0B BE 19 59
0x01D0 | 00 50 FC C0 BD 9D F5 F5 F8 A8 17 19 D6 B3 E9 74
0x01E0 | BA 50 E5 2C 45 7B F9 93 EA 5A F9 A9 30 B1 6F 5B
0x01F0 | 36 24 1E 8D 55 57 F4 CC 67 B2 65 6A A9 36 26 D0
0x0200 | 06 B8 E2 E3 73 8B D1 C0 1C 52 15 CA B5 AC 60 3E
0x0210 | 36 42 F1 2C BD 99 77 AB A8 A9 A4 8E 9C 8B 84 DE
0x0220 | 73 F0 91 29 97 AE DB AF D6 F8 5E 9B 86 B3 B3 03
0x0230 | B3 AC 75 6F A6 11 69 2F 3D 3A CE FA 53 86 60 95
0x0240 | 6C BB C5 4E F3

इस प्रारूप का एक लाभ डिकोडर को शुरू में कॉन्फ़िगर करने और एक धारा के बीच में कूदने की क्षमता है। यह एक सामान्य उपयोग का मामला है जहां मीडिया एक हार्ड ड्राइव जैसे यादृच्छिक अभिगम माध्यम पर उपलब्ध है, और इसलिए इसका उपयोग MP4 और MKV जैसे सामान्य कंटेनर स्वरूपों में किया जाता है।


3
धन्यवाद आदमी, कि एक सच में मेरी मदद की! आपको अपने लेख में कुछ टाइपिंग त्रुटियां मिली हैं ... हालांकि मुझे लगता है;) कभी-कभी आप VCL को 'VLC' के रूप में संदर्भित करते हैं, जो काफी भ्रामक हो सकता है क्योंकि मैं VLC को 'वैरिएबल लेंथ कोडिंग' के रूप में जानता हूं। लेकिन फिर भी, आपके लेख ने मेरे लिए कुछ चीजों को मंजूरी दे दी, अच्छा काम! और ... क्षमा करें, मैं आपको आगे नहीं बढ़ा सकता, मैं यहां नया हूं और यहां कुछ प्रकार के
न्यूबाय

6
हाँ, टाइपो के बारे में क्षमा करें। मैं थोड़ा डिस्लेक्सिक हूं, और एक गरीब टाइपिस्ट हूं। तुम सही हो। इस पाठ में VLC का कोई स्थान नहीं है।
szatmary

2
महान सारांश! इसने वास्तव में मेरी मदद की। भले ही यह स्पष्ट है कि यदि कोई बाइट्स के 2 वें (एवीसीसी) सेट पर बारीकी से देखता है, तो मुझे लगता है कि यह इंगित करने योग्य है कि एनएलयू डेटा से पहले 4 बाइट लंबाई मूल्य बिग-एंडियन प्रारूप में है। मुझे आईओएस पर डिकोड करने के लिए स्ट्रीम नहीं मिल सका जब तक मुझे एहसास नहीं हुआ कि लंबाई मूल्य को बाइट-स्वैप किया जाना था।
१६:०२

1
दोस्त बहुत - बहुत धन्यवाद! BTW, विंडोज मीडिया फाउंडेशन h264 डिकोडर केवल "अनुलग्नक बी" नमूने चाहता है। सौभाग्य से, एनेक्स बी और एवीसीसी के बीच उन्हें परिवर्तित करना काफी सरल है।
सूट्स

2
क्या AVCC एक्सट्रैडाटा उदाहरण के 0x0022 के ऑफसेट में एक शून्य शून्य बाइट है? प्रारूप विवरण कहता है कि PPS आकार के लिए 16-बिट फ़ील्ड है, इसलिए मुझे लगता है कि यह 0x00 0x07सिर्फ के बजाय होना चाहिए 0x07
रशिमोतो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.