(P)NaCl के बंद होने के बारे में सूचनाएं
अलग-अलग ब्राउज़र के लिए WebAssembly पर मिल रही मदद को ध्यान में रखते हुए, हमने
आने वाले समय में WebAssembly पर नेटिव कोड की कोशिश की जाएगी. साथ ही, हम आने वाले समय में
साल 2019 की चौथी तिमाही में PNaCl (Chrome ऐप्लिकेशन को छोड़कर). हमारा मानना है कि हमारे
WebAssembly का नेटवर्क
इसे नए और मौजूदा उच्च-प्रदर्शन के लिए बेहतर रूप से फ़िट कर देता है
और PNaCl का इस्तेमाल काफ़ी कम है. इसलिए, इनके इस्तेमाल को रोकने की ज़रूरत नहीं है.
Chrome 76 के बाद, ओपन वेब पर PNaCl
ऑरिजिन ट्रायल,
यह वेब डेवलपर के लिए, रजिस्टर करने और ऐसी सुविधा का ऐक्सेस पाने का एक तरीका है जो डिफ़ॉल्ट रूप से चालू नहीं होती.
आम तौर पर, यह एक नई सुविधा है, लेकिन इस मामले में इसे बंद कर दिया गया है.
डेवलपर, Origin Trial Console पर रजिस्टर करके एक टोकन पा सकता है. इस टोकन को पेज में जोड़ा जा सकता है. इससे, उपयोगकर्ता को फ़्लैग का इस्तेमाल किए बिना ही यह सुविधा चालू हो जाएगी.
(ज़्यादा जानकारी के लिए, लिंक की गई गाइड देखें). मुफ़्त में आज़माने की सुविधा को Chrome 78 तक के लिए शेड्यूल किया गया है. यह करीब-करीब दिसंबर 2019 तक चलेगा.
इस बदलाव का मकसद, Chrome के ऐप्लिकेशन या एक्सटेंशन में NaCl या PNaCl पर कोई असर नहीं डालना है. साथ ही, इसका मकसद “enable-nacl” में बदलाव करना नहीं है
जांच के लिए PNaCl को स्थानीय रूप से चालू करने के लिए chrome://flags में फ़्लैग का भी इस्तेमाल किया जा सकता है
(यह फ़्लैग किसी भी पेज पर, गैर-PNaCl "नेटिव" NaCl को चालू करने के अपने मौजूदा फ़ंक्शन को भी बनाए रखता है).
हमने हाल ही में, साल 2018 की पहली तिमाही में इसका समर्थन रोकने की घोषणा भी की थी
Chrome के ऐप्लिकेशन
से बाहर नहीं है.
(P)NaCl के ज़्यादातर इस्तेमाल के लिए हम ट्रांज़िशन की सलाह देते हैं
को NaCl SDK से Emscripten पर ले जाने में मदद करता है.
माइग्रेट करने की प्रक्रिया काफ़ी आसान है
अगर आपका ऐप्लिकेशन Linux पर पोर्टेबल है, तो
SDL या POSIX API.
NaCl / Pepper API के लिए सीधे तौर पर सहायता उपलब्ध नहीं है. हालांकि, हमने वेब एपीआई के बराबर के एपीआई की सूची बनाने की कोशिश की है.
पोर्ट करने के ज़्यादा चुनौती वाले मामलों के लिए, कृपया यहां संपर्क करें
native-client-discuss@googlegroups.com
एपीआई माइग्रेशन
हमने यहां (P)NaCl के साथ काम करने वाले हर एपीआई के लिए, वेब प्लैटफ़ॉर्म के विकल्पों की स्थिति के बारे में बताया है.
इसके अलावा, टेबल में लाइब्रेरी या विकल्प को Emscripten पर दिखाया जाता है
जो मिलते-जुलते विकल्प उपलब्ध कराता हो.
हमें उम्मीद है कि साल 2017 में, WebAssembly में शेयर किए गए मेमोरी थ्रेड की सुविधा मिलेगी.
क्योंकि (P)NaCl के सबसे दिलचस्प इस्तेमाल से मेल खाने के लिए थ्रेड बहुत ज़रूरी होते हैं
मामले. माइग्रेशन के ऐसे आइटम जिन्हें लगता है कि आने वाले समय में थ्रेड की सुविधा काम करेगी, उन्हें यहां मार्क किया गया है. अगर आपके ऐप्लिकेशन का फ़्लो कंट्रोल, ब्लॉकिंग एपीआई पर काफ़ी निर्भर करता है, तो हो सकता है कि आसानी से पोर्ट करने के लिए, थ्रेड की सुविधा की ज़रूरत पड़े.
हमने इस टेबल में सही जानकारी देने की कोशिश की है, लेकिन
इसमें कोई शक नहीं है.
अगर आपको कोई समस्या आती है, तो कृपया हमसे इस पर संपर्क करें:
native-client-discuss@googlegroups.com
PPAPI
PPB_Audio
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं | x | एसडीएल (आंशिक) | GAP (आंशिक) - AudioWorkletNode ROUGHLY के बराबर | AudioWorkletSpec तैयार है, लेकिन हो सकता है कि इस एपीआई के लिए AudioDeviceClient बेहतर हो. AudioDeviceClient को अब भी कम्यूनिटी तय कर रही है. यह ज़रूरी नहीं है कि वर्कलेट इस एपीआई के लिए करीब से मिलता-जुलता हो. | 
  
    | GetCurrentConfig |  | SDL | ऑडियो कॉन्टेक्स्ट.* (पास की गई सेटिंग वापस पाता है) |  | 
  
    | StartPlayback |  | SDL | AudioBufferSourceNode.start |  | 
  
    | StopPlayback |  | SDL | AudioBufferSourceNode.stop |  | 
PPB_AudioBuffer
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetTimestamp |  | SDL | AudioBufferSourceNode.start (पैरामीटर) | बफ़र से जुड़ने के बजाय, हर बार पास किया जाता है. | 
  
    | SetTimestamp |  | SDL | AudioBufferSourceNode.start (पैरामीटर) |  | 
  
    | GetSampleRate |  | SDL | AudioBuffer.sampleRate |  | 
  
    | GetSampleSize |  | GAP | GAP - WebAudio केवल 32-बिट फ़्लोट का उपयोग करता है, PPAPI 16-बिट इंटेंट करता है. | PPAPI सैद्धांतिक तौर पर, सैंपलिंग के कई साइज़ के साथ काम करता है. असल में, यह सिर्फ़ 16-बिट सैंपल के साथ काम करता है. माफ़ करें, डेवलपर ने मेमोरी के इस्तेमाल में बचत करने के लिए, 16-बिट सैंपल साइज़ का अनुरोध किया है. वेब ऑडियो की खास बातों का अगला वर्शन, 16-बिट सैंपल के साथ काम करेगा. Firefox की तरह ही, AudioBuffer को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, decodeAudioData से मिलने वाले ऑडियो के लिए 16-बिट बफ़र का इस्तेमाल करें | 
  
    | GetNumberOfChannels |  | SDL | AudioBuffer.numberOfChannels |  | 
  
    | GetDataBuffer |  | SDL | AudioBuffer.getChannelData |  | 
  
    | GetBufferSize |  | SDL | AudioBuffer.length |  | 
PPB_AudioConfig
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | CreateStereo16बिट |  | GAP | GAP - केवल 32-बिट फ़्लोट नमूने समर्थित हैं | वेब ऑडियो स्पेसिफ़िकेशन के अगले वर्शन में, 16-बिट सैंपल के लिए सहायता लागू की जाएगी. | 
  
    | GetSampleRate |  | SDL | AudioContext.sampleRate |  | 
  
    | GetSampleFrameCount |  | SDL | AudioBuffer.length |  | 
  
    | RecommendSampleRate |  | SDL | AudioContext.sampleRate (डिफ़ॉल्ट कंस्ट्रक्शन से) | AudioContext में, डिफ़ॉल्ट रूप से हार्डवेयर ऑडियो डिवाइस के असल सैंपल रेट से मेल खाने वाला सैंपल रेट सेट होगा. | 
  
    | RecommendSampleFrameCount |  | GAP | GAP - को पहले से तय AudioDeviceClient के साथ हैंडल किया जाएगा | उपयोगकर्ता के तय किए गए साइज़ की अनुमति देने से जुड़ी समस्या अब भी हल नहीं हुई है. हालांकि, इस पर काम जारी है. शायद यह AudioDeviceClient के साथ सबसे अच्छी तरह से मैनेज किया जाता है, जिससे आपको यह पता चल सकता है कि दिए गए हार्डवेयर के लिए सही साइज़ क्या होगा. | 
PPB_Console
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | लॉग |  | utime | console.log/warn/error/... |  | 
  
    | LogWithSource |  | GAP | GAP | Console API को LogWithSource की जगह पूरी तरह से इस्तेमाल किया जा सकता है. हालांकि, अगर डेवलपर ने LogWithSource की सुविधा के लिए इस्तेमाल के खास उदाहरण दिए हैं, तो Console API का इस्तेमाल नहीं किया जा सकता. DevTools के सोर्स मैप का इस्तेमाल, ट्रांसपाइल किए गए JavaScript को उसकी मूल सोर्स भाषा में डीबग करने के लिए किया जा सकता है. | 
PPB_Core
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | getTime |  | utime | नई तारीख().getTime() |  | 
  
    | getTimeTicks |  | यूटाइम | new Date().getTime() |  | 
  
    | IsMainThread |  | GAP | window.document !== undefined |  | 
  
    | CallOnMainThread |  | GAP | Worker.postMessage + Atomics.wait | मिलते-जुलते सिंक बनाए जा सकते हैं. | 
PPB_FileIO
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | एफ़एस (कुछ हिस्से के लिए) | window.chooseFileSystemEntries() | बनाएं और खोलें का इस्तेमाल अलग-अलग तरीके से किया जाता है, लेकिन दोनों ही टाइल की ताकत एक जैसी होती है. | 
  
    | खोलें |  | एफ़एस (कुछ हिस्से के लिए) | window.chooseFileSystemEntries() |  | 
  
    | क्वेरी |  | एफ़एस (कुछ हिस्से के लिए) | Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.last फ़ायदेमंद | GAP (आंशिक) - Blob.type का इस्तेमाल एमआईएमई टाइप की जांच करने के लिए भी किया जा सकता है. नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल सिस्टम का टाइप, बनाने का समय, और पिछली बार ऐक्सेस करने का समय पता नहीं लगाया जा सकता. | 
  
    | छूकर |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemDirectoryHandle.getFile("name", {create: true}) |  | 
  
    | पढ़ें |  | FS (आंशिक) | Blob.slice().arrayBuffer() |  | 
  
    | लिखें |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemWriter.write() |  | 
  
    | SetLength |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemWriter.truncate() |  | 
  
    | फ़्लश |  | GAP (आंशिक) | GAP (कुछ हद तक) - FileSystemWrite.close() को कॉल करने पर, फ़ाइलें फ़्लश हो जाती हैं | इसे डिज़ाइन करने के मकसद से बनाया गया है, क्योंकि Native File System API फ़ाइलें, ओएस के संपर्क में आती हैं. इसलिए, ओएस में डेटा दिखाए जाने से पहले, सुरक्षित ब्राउज़िंग की जांच करनी होगी. | 
  
    | बंद करें |  | FS (आंशिक) | FileSystemWriter.close() | लंबित ऑपरेशन रद्द नहीं करता, लेकिन डिस्क पर अब तक लिखा गया कोई भी डेटा फ़्लश करता है. | 
  
    | ReadToArray |  | GAP | Blob.slice().arrayBuffer() या Blob.arrayBuffer() | साथ-साथ एक से ज़्यादा सबरेंज को पढ़ने की अनुमति देता है. | 
PPB_FileRef
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemDirectoryHandle.getFile("name", {create: true}) |  | 
  
    | GetFileSystemType |  | FS (आंशिक) | FileSystem.type |  | 
  
    | GetName |  | एफ़एस (कुछ हिस्से के लिए) | File.name |  | 
  
    | GetPath |  | FS (आंशिक) | GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, किसी फ़ाइल के रिलेटिव पाथ का पता लगाया जा सकता है. इसके लिए, FileSystemHandle.resolve(FileSystemHandle) का इस्तेमाल करके, उस डायरेक्ट्री के रेफ़रंस का इस्तेमाल किया जाता है जिसमें फ़ाइल मौजूद होती है | किसी फ़ाइल का ऐब्सलूट पाथ तय नहीं किया जा सकता. साथ ही, उपयोगकर्ता को उस डायरेक्ट्री को ऐक्सेस करने की अनुमति देनी होगी जिसमें फ़ाइल मौजूद है. | 
  
    | GetParent |  | एफ़एस (कुछ हिस्से के लिए) | GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, किसी फ़ाइल के रिलेटिव पाथ का पता लगाया जा सकता है. इसके लिए, FileSystemHandle.resolve(FileSystemHandle) का इस्तेमाल करके, उस डायरेक्ट्री के रेफ़रंस का इस्तेमाल किया जाता है जिसमें फ़ाइल मौजूद होती है | उपयोगकर्ता को उस डायरेक्ट्री को ऐक्सेस करने की अनुमति देनी होगी जिसमें फ़ाइल है. | 
  
    | MakeDirectory |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemHandle.getDirectory(..., {createIfNotExists: true}) |  | 
  
    | छूकर |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemDirectoryHandle.getFile("name", {create: true}) | बदलाव करने के लिए, लिखकर भी समय तय किया जा सकता है. | 
  
    | मिटाएं |  | FS (आंशिक) | FileSystemDirectoryHandle.removeEntry() | PPAPI के उलट, डायरेक्ट्री का खाली होना ज़रूरी नहीं है. | 
  
    | नाम बदलें |  | FS (आंशिक) | GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल को नए नाम से लिखा जा सकता है. इसके लिए, नए नाम के लिए FileSystemFileHandle.getFile() और पुरानी फ़ाइल के कॉन्टेंट के लिए FileSystemFileHandle.createWriter().write() का इस्तेमाल करें. इसके बाद, पुरानी फ़ाइल मिटाने के लिए FileSystemDirectoryHandle.removeEntry() का इस्तेमाल करें. | ऐसा कोई डायरेक्ट एपीआई नहीं है जो Native File System API में एक ही चरण में यह काम करेगा. | 
  
    | क्वेरी |  | GAP (आंशिक) | Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified | GAP (आंशिक) - Blob.type का इस्तेमाल एमआईएमई टाइप की जांच करने के लिए भी किया जा सकता है. नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल सिस्टम का टाइप, बनाने का समय, और पिछली बार ऐक्सेस करने का समय पता नहीं लगाया जा सकता. | 
  
    | ReadDirectoryEntries |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemDirectoryHandle.getEntries() |  | 
PPB_FileSystem
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | FS (आंशिक) | window.requestFileSystem | JS API, दोनों काम एक ही चरण में करता है | 
  
    | खोलें |  | GAP | window.requestFileSystem | JS API एक चरण में दोनों काम करता है | 
  
    | GetType |  | GAP | FileSystem.type |  | 
PPB_Fullscreen
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | IsFullScreen |  | html5.h | Document.fullscreenEnabled |  | 
  
    | SetFullscreen |  | html5.h | Document.requestFullscreen |  | 
  
    | GetScreenSize |  | html5.h | Document.exitFullscreen |  | 
PPB_Gamepad
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | नमूना |  | SDL | गेमपैड.* | Gamepad ऑब्जेक्ट, navigationStart के हिसाब से टाइमस्टैंप दिखाता है. हार्डवेयर से डेटा मिलने के बाद, इसे अपडेट कर दिया जाता है https://www.w3.org/TR/gamepad/#gamepad-interface | 
PPB_Graphics2D
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | Canvas.getContext('2d') |  | 
  
    | बताएं |  | SDL | Canvas.clientwidth + Canvas.clientHight |  | 
  
    | PaintImageData |  | SDL | CanvasRenderingContext2D.putImageData |  | 
  
    | स्क्रोल करें |  | GAP | CanvasrenderContext2D.scrollIntoView, CanvasrenderContext2D.drawImage | GAP (कुछ हद तक) - इसे लागू करने के लिए, drawImage का इस्तेमाल करके कैनवस को खुद पर ऑफ़सेट के साथ ड्रॉ करें. इसके बाद, बाकी हिस्से को भरें. | 
  
    | ReplaceContents |  | SDL | CanvasRenderingContext2D.drawImage |  | 
  
    | फ़्लश |  | GAP | इससे मिलता-जुलता कोई सीधा नहीं | GAP (आंशिक) -
    ड्रॉ कोड के आखिर में हमेशा इंप्लिसिट फ़्लश होता है; इसकी संभावना नहीं है
    को बदलने के लिए. हालांकि,
    
      OffscreenCanvas
     और
    
      ImageBitmapRenderingContext
    इससे मिलती-जुलती सुविधाएं मिलती हैं. | 
  
    | SetScale |  | SDL | CanvasRenderingContext2D.scale |  | 
  
    | GetScale |  | SDL | CanvasRenderingContext2D.currentTransform |  | 
  
    | SetLayerTransform |  | SDL | CanvasRenderingContext2D.setTransform
CanvasRenderingContext2D.scale
CanvasRenderingContext2D.translate |  | 
PPB_Graphics3D
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetAttribMaxValue |  | OpenGL ES 3.0 | WebGL 2.0 | GAP (आंशिक) - WebGL 2.0 और OpenGL ES 3.0 के Emscripten के एक्सपोज़र, उपयोगकर्ता-तय किए गए मल्टीसैंपल किए गए फ़्रेमबफ़र के साथ काम करते हैं. इनमें PPAPI के ज़रिए कॉन्फ़िगर किए जा सकने वाले सभी पैरामीटर सेट किए जा सकते हैं. | 
  
    | बनाएं |  | SDL | Canvas.getContext |  | 
  
    | GetAttribs |  | SDL | WebGLRenderingContext.getContextAttributes |  | 
  
    | SetAttribs |  | SDL | Canvas.getContext(.., OPTIONS) |  | 
  
    | GetError |  | SDL | WebGLRenderingContext.getError |  | 
  
    | ResizeBuffers |  | SDL | Canvas.width = w; Canvas.height = h; |  | 
  
    | SwapBuffers |  | GAP | इससे मिलता-जुलता कोई सीधा नहीं | GAP (कुछ हद तक) -
    ड्रॉ कोड के आखिर में हमेशा एक फ़्लश होता है. ऐसा होने की संभावना कम है कि यह बदले. हालांकि, 
      OffscreenCanvas
     और
    
      ImageBitmapRenderingContext
     का कॉम्बिनेशन, मिलती-जुलती सुविधाएं देता है. | 
PPB_ImageData
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetNativeImageDataFormat |  | SDL | ImageData के लिए RGBA क्रम ज़रूरी है |  | 
  
    | IsImageDataFormatSupported |  | SDL | ImageData के लिए RGBA क्रम ज़रूरी है |  | 
  
    | बनाएं |  | SDL | CanvasRenderingContext2d.createImageData |  | 
  
    | जानकारी |  | SDL | ImageData में कभी भी पैरों के बीच की दूरी नहीं होती |  | 
  
    | मैप |  | SDL | ImageData.data |  | 
  
    | अनमैप करना |  | SDL | ImageData.data |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | RequestInputEvents |  | SDL | इससे मिलता-जुलता कोई सीधा नहीं | इस सुविधा के न होने से शायद कोई फ़र्क़ न पड़े, क्योंकि JS / Wasm मुख्य थ्रेड पर चलता है और क्रॉस प्रोसेस राउंड-ट्रिप के बिना इवेंट को आसानी से फ़िल्टर किया जा सकता है. | 
  
    | RequestFilteringInputEvents |  | SDL | माउस* की* व्हील* टच* कंपोज़िशन* इवेंट |  | 
  
    |  |  | SDL | Element.addEventListener |  | 
  
    | ClearInputEventRequest |  | SDL | Element.removeEventListener |  | 
  
    | GetType |  | SDL | इवेंट क्लास डिसेंडेंट |  | 
  
    | GetTimeStamp |  | SDL | Event.timeStamp |  | 
  
    | GetModifiers |  | SDL | *Event.altKey/shiftKey/metaKey/ctrlKey |  | 
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | MouseEvent |  | 
  
    | GetButton |  | SDL | MouseEvent.button |  | 
  
    | GetPosition |  | SDL | MouseEvent.client*/page*/offset* |  | 
  
    | GetClickCount |  | SDL | 'dblclick' बनाम 'mousedown' इवेंट |  | 
  
    | GetMovement |  | SDL | MouseEvent.movement* |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | WheelEvent |  | 
  
    | GetDelta |  | SDL | WheelEvent.delta* |  | 
  
    | GetTicks |  | GAP | GAP - deltaMode में यह जानकारी होती है, लेकिन पूरी नहीं होती. | व्हीलEvent.deltaMode एपीआई को लागू करने के बारे में यहां चर्चा की गई है: https://github.com/w3c/uievents/issues/181#issuecomment-537811017 | 
  
    | GetScrollByPage |  | GAP | GAP - deltaMode में यह जानकारी होती है, लेकिन पूरी नहीं होती. | व्हीलEvent.deltaMode एपीआई को लागू करने के बारे में यहां चर्चा की गई है: https://github.com/w3c/uievents/issues/181#issuecomment-537811017 | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | KeyboardEvent |  | 
  
    | GetKeyCode |  | SDL | KeyboardEvent.keyCode |  | 
  
    | GetCharacterText |  | SDL | KeyboardEvent.key |  | 
  
    | GetCode |  | SDL | KeyboardEvent.code |  | 
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | TouchEvent |  | 
  
    | AddTouchPoint |  | SDL | TouchEvent.touches.push |  | 
  
    | GetTouchCount |  | SDL | TouchEvent.touches.length |  | 
  
    | GetTouchByIndex |  | SDL | TouchEvent.touches[i] |  | 
  
    | GetTouchById |  | SDL | Touch.indentifer (इस बारे में खुद पता लगाने के लिए) |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | CompositionEvent |  | 
  
    | GetText |  | GAP | CompositionEvent.data |  | 
  
    | GetSegmentNumber |  | GAP | GAP - कोई प्रत्यक्ष समतुल्य नहीं | इस डेटा को CompositionEvent.data से वापस पाया जा सकता है. | 
  
    | GetSegmentOffset |  | GAP | GAP - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | GetTargetSegment |  | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
  
    | GetSelection |  | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
PPB_Instance
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | BindGraphics |  | SDL | Canvas.getContext (बांडिंग अपने-आप होने की वजह से, यह ज़रूरी नहीं है). |  | 
  
    | IsFullFrame |  | GAP | GAP - MIME टाइप हैंडलर के बराबर कोई नहीं. | NaCl ऐप्लिकेशन, किसी खास MIME टाइप को मैनेज करने और पूरे दस्तावेज़ का मालिकाना हक रखने के लिए रजिस्टर किए जा सकते हैं. | 
  
    | DidCreate |  | 'लागू नहीं' के तौर पर जवाब देना | <Element>[key] | सामान्य डीओएम ऐक्सेस की मदद से, टैग एट्रिब्यूट को पकड़ा जा सकता है | 
  
    | DidDestroy |  | 'लागू नहीं' के तौर पर जवाब देना | 'लागू नहीं' के तौर पर जवाब देना | NaCl के लिए ट्रिगर नहीं किया गया | 
  
    | DidChangeView |  | 'लागू नहीं' के तौर पर जवाब देना | एलिमेंट 'resize' इवेंट |  | 
  
    | DidChangeFocus |  | 'लागू नहीं' के तौर पर जवाब देना | एलिमेंट 'फ़ोकस', 'फ़ोकसिंग', 'फ़ोकसआउट' इवेंट |  | 
  
    | HandleDocumentLoad |  | 'लागू नहीं' के तौर पर जवाब देना | GAP - mime टाइप हैंडलर के तौर पर रजिस्टर करने का कोई तरीका नहीं है | कुछ खास तरह के MIME टाइप को मैनेज करने के लिए, ऐप्लिकेशन के ज़रिए NaCl मॉड्यूल + मेनिफ़ेस्ट एंट्री सेट अप की जा सकती है. | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | कॉन्फ़िगर करें |  | GAP | getUserMedia() | getUserMedia() की पाबंदियों से, MediaStreamTrack में इस्तेमाल करने के लिए कॉन्फ़िगरेशन वैल्यू मिल सकती हैं. | 
  
    | GetAttrib |  | GAP | MediaStreamTrack.getSettings() |  | 
  
    | GetId |  | GAP | MediaStreamTrack.id |  | 
  
    | HasEnded |  | GAP | MediaStreamTrack.readyState |  | 
  
    | GetBuffer |  | GAP | GAP - कोई मिलता-जुलता नहीं |  | 
  
    | RecycleBuffer |  | GAP | GAP - कोई मिलता-जुलता नहीं |  | 
  
    | बंद करें |  | GAP | MediaStreamTrack.stop() |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | कैनवस कैप्चर | कैनवस कैप्चर की मदद से, प्रोग्राम के हिसाब से वीडियो फ़्रेम जोड़े जा सकते हैं. | 
  
    | कॉन्फ़िगर करें |  | GAP | applyConstraints(), getUserMedia() | GAP (आंशिक) - वेब API में उपलब्ध कॉन्फ़िगरेशन की सीमा PPAPI से अलग हो सकती है. | 
  
    | GetAttrib |  | GAP | MediaStreamSettings.width |  | 
  
    |  |  | GAP | MediaStreamSettings.height |  | 
  
    |  |  | GAP | GAP - PP_MEDIASTREAMVIDEOSTREAM_ATTRIB_BUFFERED_FRAMES के बराबर नहीं | MediaStream को पहले से लोड नहीं किया जा सकता. इसलिए, यह कभी भी बफ़र नहीं होगा: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements | 
  
    |  |  | GAP | GAP - PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT के बराबर कोई एट्रिब्यूट नहीं है |  | 
  
    | GetId |  | GAP | MediaStreamTrack.id |  | 
  
    | HasEnded |  | GAP | MediaStreamTrack.readyState |  | 
  
    | GetFrame |  | GAP | GAP - कोई समतुल्य नहीं |  | 
  
    | RecycleFrame |  | GAP | GAP - कोई मिलता-जुलता नहीं |  | 
  
    | बंद करें |  | GAP | MediaStreamTrack.stop() |  | 
  
    | GetEmptyFrame |  | GAP | GAP - कोई समतुल्य नहीं |  | 
  
    | PutFrame |  | GAP | GAP - कोई समतुल्य नहीं |  | 
PPB_MessageLoop
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर काम करने पर, कर्मचारियों को इंप्लिसिट इवेंट लूप मिलता है. |  | 
  
    | GetForMainThread |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
  
    | GetCurrent |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
  
    | AttachToCurrentThread |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
  
    | चलाएं |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर काम करने पर, कर्मचारियों को इंप्लिसिट इवेंट लूप मिलता है. |  | 
  
    | PostWork |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
  
    | PostQuit |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
PPB_Messaging
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | PostMessage |  | 'लागू नहीं' के तौर पर जवाब देना | Window.postMessage |  | 
  
    | RegisterMessageHandler |  | 'लागू नहीं' के तौर पर जवाब देना | Window.addEventListener |  | 
  
    | UnregisterMessageHandler |  | 'लागू नहीं' के तौर पर जवाब देना | Window.removeEventListener |  | 
PPB_MouseCursor
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | SetCursor |  | SDL | Element.style.cursor | स्टॉक कर्सर का एक ही सेट इस्तेमाल किया जा सकता है.
कस्टम कर्सर, url(..) का इस्तेमाल करके बनाए जा सकते हैं.
डाइनैमिक कस्टम कर्सर, डेटा यूआरआई का इस्तेमाल करके बनाए जा सकते हैं.
CSS3, हॉटस्पॉट तय करने की सुविधा देता है. | 
PPB_MouseLock
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | LockMouse |  | SDL | Element.requestPointerLock |  | 
  
    | UnlockMouse |  | SDL | Element.exitPointerLock |  | 
PPB_OpenGLES2
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | कई तरीके |  | OpenGLES | काम करने के लिए, WebGL 1.0 के करीब हो. |  | 
  
    |  | x |  | OffscreenCanvas |  | 
PPB_TextInputController
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | SetTextInputType |  | GAP | GAP - इनपुट के तरीके का संपादक एपीआई से भरा जा सकता है | कुछ डेवलपर या तो इस तरीके से संकेत देना चाहते हैं या किसी कैनवस के अंदर इनलाइन इवेंट / आउटपुट इनलाइन को रोकने और दिखाने की सुविधा को प्राथमिकता देते हैं. | 
  
    | UpdateCaretPosition |  | GAP | GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया | https://www.w3.org/TR/ime-api/ | 
  
    | CancelCompositionText |  | GAP | GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया | https://www.w3.org/TR/ime-api/ | 
  
    | UpdateSurroundingText |  | GAP | GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया | https://www.w3.org/TR/ime-api/ | 
PPB_URLLoader
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | embind | new XMLHttpRequest(); |  | 
  
    | खोलें |  | embind | XMLHttpRequest.open |  | 
  
    | FollowRedirect |  | embind | Request.redirect |  | 
  
    |  |  | GAP | GAP - कोई XMLHTTPRequest समान नहीं |  | 
  
    | GetUploadProgress |  | embind | XMLHttpRequest 'प्रोग्रेस' इवेंट |  | 
  
    |  |  | GAP | FetchObserver | अभी तक इसके लिए कोई खास जानकारी नहीं दी गई है या इसे लागू नहीं किया गया है; https://github.com/whatwg/fetch/issues/607 | 
  
    | GetDownloadProgress |  | embind | XMLHttpRequest 'प्रोग्रेस' इवेंट |  | 
  
    |  |  | GAP | FetchObserver | अभी तक तय या लागू नहीं किया गया है; https://github.com/whatwg/fetch/issues/607 | 
  
    | GetResponseInfo |  | embind | XMLHttpRequest.getAllResponseHeaders |  | 
  
    |  |  | embind | जवाब फ़ेच करें.* |  | 
  
    | ReadResponseBody |  | embind | XMLHttpRequest.response |  | 
  
    |  |  | embind | मुख्य हिस्सा.* (रिस्पॉन्स एक मुख्य हिस्सा होता है) |  | 
  
    | FinishStreamingToFile |  | embind | GAP - कोई प्रत्यक्ष समतुल्य नहीं | XMLHttpRequest और 'फ़ेच करें', दोनों ही सीधे तौर पर स्टोरेज में स्ट्रीम करने के बजाय, मेमोरी में स्ट्रीम करना मानते हैं. | 
  
    | बंद करें |  | embind | XMLHttpRequest.abort |  | 
  
    |  |  | GAP | फे़च एपीआई: HowToSignal और locateController |  | 
PPB_URLRequestInfo
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | embind | XMLHttpRequest |  | 
  
    |  |  | embind | डेटा फ़ेच करने का अनुरोध |  | 
  
    | SetProperty |  | GAP | GAP - XMLHttpRequest के लिए कोई सीधा मिलता-जुलता विकल्प नहीं है | XMLHttpRequest, रीडायरेक्ट, किसी फ़ाइल पर स्ट्रीम करने, रेफ़रल देने वाले या क्रेडेंशियल की नीति सेट करने के बाद हर अनुरोध की सीमा तय करने के सीधे तरीके नहीं देता. | 
  
    |  |  | embind | अनुरोध करें.* |  | 
  
    | AppendDataToBody |  | embind | XMLHttpRequest.send | GAP - दोनों इमेज में पूरा बॉडी होना चाहिए, न कि सिर्फ़ एक हिस्सा. | 
  
    |  |  | embind | fetch(.., options:body) |  | 
  
    | AppendFileToBody |  | GAP | Bring() अपलोड स्ट्रीमिंग | https://www.chromestatus.com/features/5274139738767360 | 
  
    |  |  | 'लागू नहीं' के तौर पर जवाब देना | <form> | इसे FileReader की मदद से भी पढ़ा जा सकता है और अपलोड किया जा सकता है. हालांकि, यह PendingDataToBody की तरह ही है | 
PPB_URLResponseInfo
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetProperty |  | embind | XMLHttpRequest.getAllResponseHeaders + अन्य |  | 
  
    |  |  | embind | जवाब फ़ेच करें.* |  | 
  
    | GetBodyAsFileRef |  | embind | फ़ेच रिस्पॉन्स (बॉडी) .blob() | मान लेता है कि स्टोरेज लेयर, ट्रांसफ़र को ऑप्टिमाइज़ करती है. | 
PPB_Var
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | VarFromUtf8 |  | embind | TextDecoder.decode |  | 
  
    | VarToUtf8 |  | embind | TextEncoder.encode |  | 
  
    | VarFromResource |  | 'लागू नहीं' के तौर पर जवाब देना | 'लागू नहीं' के तौर पर जवाब देना |  | 
  
    | VarToResource |  | 'लागू नहीं' के तौर पर जवाब देना | 'लागू नहीं' के तौर पर जवाब देना |  | 
PPB_VarArray
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | पाएं |  | embind | Array[i] |  | 
  
    | सेट करें |  | embind | Array[i] = x |  | 
  
    | GetLength |  | embind | Array.length |  | 
  
    | SetLength |  | embind | अरे.length = n |  | 
PPB_VarArrayBuffer
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | embind | नया ArrayBuffer(n) |  | 
  
    | ByteLength |  | embind | ArrayBuffer.byteLength |  | 
  
    | मैप |  | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं | Asm.js / Wasm मॉड्यूल, सिंगल लीनियर मेमोरी हीप के अलावा, किसी ArrayBuffer के इलाकों को मैप नहीं कर सका.
आने वाले समय में कई यादें जुड़ने या मेमोरी मैपिंग से इसे बेहतर बनाया जा सकता है. | 
  
    | अनमैप करना |  | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
PPB_VarDictionary
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | embind | {} |  | 
  
    | पाएं |  | embind | <Object>[i] |  | 
  
    | सेट करें |  | embind | <Object>[i] = x |  | 
  
    | मिटाएं |  | embind | delete <Object>[i] |  | 
  
    | HasKey |  | embind | <Object> में x |  | 
  
    | GetKeys |  | embind | (<Object> में k) {} के लिए | ऐसी कोई मशीन नहीं है, लेकिन इसे बनाया जा सकता है. | 
PPB_VideoDecoder
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | GAP - इसे VideoDecoder() का इस्तेमाल करके, सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | शुरू करें |  | GAP | GAP - VideoDecoder() शुरू करने के पैरामीटर (VideoDecoderInitParameters) का इस्तेमाल करके, सुझाए गए WebCodecs API को हैंडल किया जाएगा | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | Decode |  | GAP | GAP - सुझाए गए WebCodecs API के साथ ReadableStream.इंटरनेट से कनेक्ट करना(VideoDecoder) का इस्तेमाल करना | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | GetPicture |  | GAP | GAP - सुझाए गए WebCodecs API की मदद से ReadableStream.इंटरनेट से कनेक्ट की जाती है(VideoDecoder).popTo(VideoTrackWriter().writable) | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | RecyclePicture |  | GAP | GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. मौजूदा डिज़ाइन अपने-आप तस्वीरों को रीसाइकल करेगा और डिकोड करने की प्रोसेस को जारी रखेगा. | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | फ़्लश |  | GAP | GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. इस एपीआई को Flush() कहा जाएगा. हालांकि, इस पर अब भी चर्चा चल रही है कि डिकोड करने वाले कॉल को क्रम में कैसे लगाया जाएगा. | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | रीसेट करें |  | GAP | GAP - सुझाए गए WebCodecs API की मदद से, VideoDecoder के इंस्टेंस को मिटाकर और नया इंस्टेंस बनाया जाएगा. यह रीसेट करने के खास तरीके के मुकाबले उतना असरदार नहीं होगा. हालांकि, Reset() API के लिए सेमेंटेक्स पर अब भी चर्चा की जा रही है. | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
PPB_VideoEncoder
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | GAP - को VideoEncoder() का इस्तेमाल करके, सुझाए गए WebCodecs API के साथ हैंडल किया जाएगा |  | 
  
    | GetSupportedProfiles |  | GAP | GAP (कुछ हद तक) - navigator.mediaCapabilities.encodingInfo() | काम करने वाली प्रोफ़ाइलों को एक-एक करके देखना होगा. | 
  
    | शुरू करें |  | GAP | GAP - इसे VideoEncoder() के शुरू करने के पैरामीटर का इस्तेमाल करके, प्रस्तावित WebCodecs API के साथ मैनेज किया जाएगा |  | 
  
    | GetFramesRequired |  | GAP | GAP - कोई मिलता-जुलता नहीं | इस बात की संभावना नहीं है कि Web Codecs API के ज़रिए अंदरूनी तौर पर इस्तेमाल किया गया फ़्रेम पूल दिखाया गया हो. | 
  
    | GetFrameCodedSize |  | GAP | GAP - कोई मिलता-जुलता नहीं | ऐसा हो सकता है कि Web Codecs API के अंदर इस्तेमाल किए गए फ़्रेम पूल को एक्सपोज़ न किया गया हो. | 
  
    | GetVideoFrame |  | GAP | GAP - सुझाए गए WebCodecs API की मदद से ReadableStream.इंटरनेट से कनेक्ट करने के टूल(VideoEncoder) को हैंडल करना होता है. यह डेटा को कोड में बदलने से पहले, डेटा भरने के लिए एक फ़्रेम लेने के बजाय, सीधे पढ़ने लायक स्ट्रीम में डेटा को कोड में बदल देगा. |  | 
  
    | एन्कोड |  | GAP | GAP - इसे ReadableStream.pipeThrough(VideoEncoder) का इस्तेमाल करके, प्रस्तावित WebCodecs API के साथ मैनेज किया जाएगा |  | 
  
    | GetBitstreamBuffer |  | GAP | GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. मौजूदा डिज़ाइन अपने-आप कोड में बदले गए बिटस्ट्रीम बफ़र से होकर गुज़र जाएगा, जिससे पाइपलाइनिंग होती है. | फ़िलहाल, WebCodecs API को लगता है कि बिटस्ट्रीम बफ़र को पूल करने के बजाय कॉपी किया जा सकता है. इसलिए, इसे रीसाइकल करने की ज़रूरत नहीं पड़ेगी. | 
  
    | RecycleBitstreamBuffer |  | GAP | GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. मौजूदा डिज़ाइन, एन्कोडिंग की प्रोसेस जारी रखने के लिए, बफ़र को अपने-आप रीसाइकल करेगा. | आने वाले समय में इस बदलाव की संभावना नहीं है, क्योंकि परफ़ॉर्मेंस पर असर कम होता है. | 
  
    | RequestEncodingParametersChange |  | GAP | GAP - इसे प्रस्तावित वेब कोडेक एपीआई से मैनेज किया जाएगा. कुछ पैरामीटर को फ़्लाई पर बदला जा सकता है, जबकि अन्य पैरामीटर के लिए एन्कोडर को बंद करना होगा. |  | 
  
    | बंद करें |  | GAP | GAP - को VideoEncoder.close() का इस्तेमाल करके प्रस्तावित WebCodecs API की मदद से हैंडल किया जाएगा |  | 
PPB_VideoFrame
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetTimestamp |  | GAP | GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. |  | 
  
    | SetTimestamp |  | GAP | GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा. |  | 
  
    | GetFormat |  | GAP | GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा. |  | 
  
    | GetSize |  | GAP | GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा. |  | 
  
    | GetDataBuffer |  | GAP | GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. |  | 
  
    | GetDataBufferSize |  | GAP | GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. |  | 
PPB_View
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetRect |  | embind | Element.getBoundingClientRect |  | 
  
    | IsFullscreen |  | embind | Document.fullScreenEnabled | सिर्फ़ एक एलिमेंट के बजाय, दस्तावेज़ के हिसाब से काम करता है. | 
  
    | IsVisible |  | embind | IntersectionObserver |  | 
  
    | IsPageVisible |  | embind | document.visibilityState |  | 
  
    | GetClipRect |  | embind | IntersectionObserver |  | 
  
    | GetDeviceScale |  | embind | window.devicePixelRatio |  | 
  
    | GetCSSScale |  | embind | <Element>.getBoundingClientRect().width / <Element>.offsetWidth |  | 
  
    | GetScrollOffset |  | embind | <Element>.scrollTop / <Element>.scrollLeft |  | 
PPB_WebSocket
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | WebSocket.WebSocket |  | 
  
    | कनेक्ट करें |  | GAP | WebSocket.WebSocket(url, ...)
WebSocket 'open' इवेंट |  | 
  
    | बंद करें |  | GAP | WebSocket.close |  | 
  
    | ReceiveMessage |  | GAP | WebSocket 'मैसेज' इवेंट
WebSocket 'गड़बड़ी' इवेंट
WebSocket 'बंद है' इवेंट |  | 
  
    | SendMessage |  | GAP | WebSocket.send |  | 
  
    | GetBufferedAmount |  | GAP | WebSocket.bufferedAmount |  | 
  
    | GetCloseCode |  | GAP | CloseEvent.code |  | 
  
    | GetCloseReason |  | GAP | CloseEvent.reason |  | 
  
    | GetCloseWasClean |  | GAP | CloseEvent.wasClean |  | 
  
    | GetExtensions |  | GAP | WebSocket.extensions |  | 
  
    | GetProtocol |  | GAP | WebSocket.protocol |  | 
  
    | GetReadyState |  | GAP | WebSocket.readyState |  | 
  
    | GetURL |  | GAP | WebSocket.url |  | 
PPP_Graphics3D
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | Graphics3DContextLost |  | SDL | कैनवस 'webglcontextlost' इवेंट |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | HandleInputEvent |  | SDL | Element.addEventListener |  | 
PPP_Instance
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | DidCreate |  | 'लागू नहीं' के तौर पर जवाब देना | <Element>[key] | सामान्य डीओएम ऐक्सेस की मदद से, टैग एट्रिब्यूट को पकड़ा जा सकता है | 
  
    | DidDestroy |  | 'लागू नहीं' के तौर पर जवाब देना | 'लागू नहीं' के तौर पर जवाब देना | NaCl के लिए ट्रिगर नहीं किया गया | 
  
    | DidChangeView |  | 'लागू नहीं' के तौर पर जवाब देना | एलिमेंट 'resize' इवेंट |  | 
  
    | DidChangeFocus |  | 'लागू नहीं' के तौर पर जवाब देना | एलिमेंट 'फ़ोकस', 'फ़ोकसिंग', 'फ़ोकसआउट' इवेंट |  | 
  
    | HandleDocumentLoad |  | 'लागू नहीं' के तौर पर जवाब देना | GAP - mime टाइप हैंडलर के तौर पर रजिस्टर करने का कोई तरीका नहीं है | ऐप्लिकेशन और मेनिफ़ेस्ट एंट्री की मदद से, NaCl मॉड्यूल को खास तरह के MIME टाइप को हैंडल करने के लिए सेट अप किया जा सकता है. | 
PPP_MessageHandler
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | HandleMessage |  | embind | MessagePort 'message' इवेंट
Window 'message' इवेंट |  | 
  
    | HandleBlockingMessage |  | 'लागू नहीं' के तौर पर जवाब देना | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं | ऐसा ही, Atomics.wait की मदद से मुख्य थ्रेड में किया जा सकता है. इसे सिंक्रोनस प्लगिन एपीआई के एम्युलेशन में मदद करने के लिए जोड़ा गया था. | 
PPP_Messaging
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | HandleMessage |  | embind | MessagePort 'message' इवेंट
Window 'message' इवेंट |  | 
PPP_MouseLock
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | MouseLockLost |  | SDL | एलिमेंट 'pointerlockchange', 'pointerlockerror' इवेंट |  | 
आईआरटी
PPB_Audio
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं | x | एसडीएल (आंशिक) | GAP (आंशिक) - AudioWorkletNode ROUGHLY के बराबर | AudioWorkletSpec तैयार है, लेकिन हो सकता है कि इस एपीआई के लिए AudioDeviceClient बेहतर हो. AudioDeviceClient को अब भी कम्यूनिटी तय कर रही है. यह ज़रूरी नहीं है कि वर्कलेट इस एपीआई के लिए करीब से मिलता-जुलता हो. | 
  
    | GetCurrentConfig |  | SDL | ऑडियो कॉन्टेक्स्ट.* (पास की गई सेटिंग वापस पाता है) |  | 
  
    | StartPlayback |  | SDL | AudioBufferSourceNode.start |  | 
  
    | StopPlayback |  | SDL | AudioBufferSourceNode.stop |  | 
PPB_AudioBuffer
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetTimestamp |  | SDL | AudioBufferSourceNode.start (पैरामीटर) | बफ़र से जुड़ने के बजाय, हर बार पास किया जाता है. | 
  
    | SetTimestamp |  | SDL | AudioBufferSourceNode.start (पैरामीटर) |  | 
  
    | GetSampleRate |  | SDL | AudioBuffer.sampleRate |  | 
  
    | GetSampleSize |  | GAP | GAP - WebAudio केवल 32-बिट फ़्लोट का उपयोग करता है, PPAPI 16-बिट इंटेंट करता है. | PPAPI सैद्धांतिक तौर पर, सैंपलिंग के कई साइज़ के साथ काम करता है. असल में, यह सिर्फ़ 16-बिट सैंपल के साथ काम करता है. माफ़ करें, डेवलपर ने मेमोरी के इस्तेमाल में बचत करने के लिए, 16-बिट सैंपल साइज़ का अनुरोध किया है. वेब ऑडियो की खास बातों का अगला वर्शन, 16-बिट सैंपल के साथ काम करेगा. Firefox की तरह ही, AudioBuffer को ऑप्टिमाइज़ किया जा सकता है. इसके लिए, decodeAudioData से मिलने वाले ऑडियो के लिए 16-बिट बफ़र का इस्तेमाल करें | 
  
    | GetNumberOfChannels |  | SDL | AudioBuffer.numberOfChannels |  | 
  
    | GetDataBuffer |  | SDL | AudioBuffer.getChannelData |  | 
  
    | GetBufferSize |  | SDL | AudioBuffer.length |  | 
PPB_AudioConfig
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | CreateStereo16बिट |  | GAP | GAP - केवल 32-बिट फ़्लोट नमूने समर्थित हैं | वेब ऑडियो स्पेसिफ़िकेशन के अगले वर्शन में, 16-बिट सैंपल के लिए सहायता लागू की जाएगी. | 
  
    | GetSampleRate |  | SDL | AudioContext.sampleRate |  | 
  
    | GetSampleFrameCount |  | SDL | AudioBuffer.length |  | 
  
    | RecommendSampleRate |  | SDL | AudioContext.sampleRate (डिफ़ॉल्ट कंस्ट्रक्शन से) | AudioContext में, डिफ़ॉल्ट रूप से हार्डवेयर ऑडियो डिवाइस के असल सैंपल रेट से मेल खाने वाला सैंपल रेट सेट होगा. | 
  
    | RecommendSampleFrameCount |  | GAP | GAP - को पहले से तय AudioDeviceClient के साथ हैंडल किया जाएगा | उपयोगकर्ता के तय किए गए साइज़ की अनुमति देने से जुड़ी समस्या अब भी हल नहीं हुई है. हालांकि, इस पर काम जारी है. शायद यह AudioDeviceClient के साथ सबसे अच्छी तरह से मैनेज किया जाता है, जिससे आपको यह पता चल सकता है कि दिए गए हार्डवेयर के लिए सही साइज़ क्या होगा. | 
PPB_Console
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | लॉग |  | utime | console.log/warn/error/... |  | 
  
    | LogWithSource |  | GAP | GAP | Console API को LogWithSource की जगह पूरी तरह से इस्तेमाल किया जा सकता है. हालांकि, अगर डेवलपर ने LogWithSource की सुविधा के लिए इस्तेमाल के खास उदाहरण दिए हैं, तो Console API का इस्तेमाल नहीं किया जा सकता. DevTools के सोर्स मैप का इस्तेमाल, ट्रांसपाइल किए गए JavaScript को उसकी मूल सोर्स भाषा में डीबग करने के लिए किया जा सकता है. | 
PPB_Core
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | getTime |  | utime | नई तारीख().getTime() |  | 
  
    | getTimeTicks |  | यूटाइम | new Date().getTime() |  | 
  
    | IsMainThread |  | GAP | window.document !== undefined |  | 
  
    | CallOnMainThread |  | GAP | Worker.postMessage + Atomics.wait | मिलते-जुलते सिंक बनाए जा सकते हैं. | 
PPB_FileIO
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | एफ़एस (कुछ हिस्से के लिए) | window.chooseFileSystemEntries() | बनाएं और खोलें का इस्तेमाल अलग-अलग तरीके से किया जाता है, लेकिन दोनों ही टाइल की ताकत एक जैसी होती है. | 
  
    | खोलें |  | एफ़एस (कुछ हिस्से के लिए) | window.chooseFileSystemEntries() |  | 
  
    | क्वेरी |  | एफ़एस (कुछ हिस्से के लिए) | Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.last फ़ायदेमंद | GAP (आंशिक) - Blob.type का इस्तेमाल एमआईएमई टाइप की जांच करने के लिए भी किया जा सकता है. नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल सिस्टम का टाइप, बनाने का समय, और पिछली बार ऐक्सेस करने का समय पता नहीं लगाया जा सकता. | 
  
    | छूकर |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemDirectoryHandle.getFile("name", {create: true}) |  | 
  
    | पढ़ें |  | FS (आंशिक) | Blob.slice().arrayBuffer() |  | 
  
    | लिखें |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemWriter.write() |  | 
  
    | SetLength |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemWriter.truncate() |  | 
  
    | फ़्लश |  | GAP (आंशिक) | GAP (कुछ हद तक) - FileSystemWrite.close() को कॉल करने पर, फ़ाइलें फ़्लश हो जाती हैं | इसे डिज़ाइन करने के मकसद से बनाया गया है, क्योंकि Native File System API फ़ाइलें, ओएस के संपर्क में आती हैं. इसलिए, ओएस में डेटा दिखाए जाने से पहले, सुरक्षित ब्राउज़िंग की जांच करनी होगी. | 
  
    | बंद करें |  | FS (आंशिक) | FileSystemWriter.close() | लंबित ऑपरेशन रद्द नहीं करता, लेकिन डिस्क पर अब तक लिखा गया कोई भी डेटा फ़्लश करता है. | 
  
    | ReadToArray |  | GAP | Blob.slice().arrayBuffer() या Blob.arrayBuffer() | साथ-साथ एक से ज़्यादा सबरेंज को पढ़ने की अनुमति देता है. | 
PPB_FileRef
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemDirectoryHandle.getFile("name", {create: true}) |  | 
  
    | GetFileSystemType |  | FS (आंशिक) | FileSystem.type |  | 
  
    | GetName |  | एफ़एस (कुछ हिस्से के लिए) | File.name |  | 
  
    | GetPath |  | FS (आंशिक) | GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, किसी फ़ाइल के रिलेटिव पाथ का पता लगाया जा सकता है. इसके लिए, FileSystemHandle.resolve(FileSystemHandle) का इस्तेमाल करके, उस डायरेक्ट्री के रेफ़रंस का इस्तेमाल किया जाता है जिसमें फ़ाइल मौजूद होती है | किसी फ़ाइल का ऐब्सलूट पाथ तय नहीं किया जा सकता. साथ ही, उपयोगकर्ता को उस डायरेक्ट्री को ऐक्सेस करने की अनुमति देनी होगी जिसमें फ़ाइल मौजूद है. | 
  
    | GetParent |  | एफ़एस (कुछ हिस्से के लिए) | GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, किसी फ़ाइल के रिलेटिव पाथ का पता लगाया जा सकता है. इसके लिए, FileSystemHandle.resolve(FileSystemHandle) का इस्तेमाल करके, उस डायरेक्ट्री के रेफ़रंस का इस्तेमाल किया जाता है जिसमें फ़ाइल मौजूद होती है | उपयोगकर्ता को उस डायरेक्ट्री को ऐक्सेस करने की अनुमति देनी होगी जिसमें फ़ाइल है. | 
  
    | MakeDirectory |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemHandle.getDirectory(..., {createIfNotExists: true}) |  | 
  
    | छूकर |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemDirectoryHandle.getFile("name", {create: true}) | बदलाव करने के लिए, लिखकर भी समय तय किया जा सकता है. | 
  
    | मिटाएं |  | FS (आंशिक) | FileSystemDirectoryHandle.removeEntry() | PPAPI के उलट, डायरेक्ट्री का खाली होना ज़रूरी नहीं है. | 
  
    | नाम बदलें |  | FS (आंशिक) | GAP (कुछ हद तक) - नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल को नए नाम से लिखा जा सकता है. इसके लिए, नए नाम के लिए FileSystemFileHandle.getFile() और पुरानी फ़ाइल के कॉन्टेंट के लिए FileSystemFileHandle.createWriter().write() का इस्तेमाल करें. इसके बाद, पुरानी फ़ाइल मिटाने के लिए FileSystemDirectoryHandle.removeEntry() का इस्तेमाल करें. | ऐसा कोई डायरेक्ट एपीआई नहीं है जो Native File System API में एक ही चरण में यह काम करेगा. | 
  
    | क्वेरी |  | GAP (आंशिक) | Blob.size, FileSystemHandle.getFile(), FileSystemHandle.getDirectory(), File.lastModified | GAP (आंशिक) - Blob.type का इस्तेमाल एमआईएमई टाइप की जांच करने के लिए भी किया जा सकता है. नेटिव फ़ाइल सिस्टम एपीआई की मदद से, फ़ाइल सिस्टम का टाइप, बनाने का समय, और पिछली बार ऐक्सेस करने का समय पता नहीं लगाया जा सकता. | 
  
    | ReadDirectoryEntries |  | एफ़एस (कुछ हिस्से के लिए) | FileSystemDirectoryHandle.getEntries() |  | 
PPB_FileSystem
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | FS (आंशिक) | window.requestFileSystem | JS API, दोनों काम एक ही चरण में करता है | 
  
    | खोलें |  | GAP | window.requestFileSystem | JS API एक चरण में दोनों काम करता है | 
  
    | GetType |  | GAP | FileSystem.type |  | 
PPB_Fullscreen
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | IsFullScreen |  | html5.h | Document.fullscreenEnabled |  | 
  
    | SetFullscreen |  | html5.h | Document.requestFullscreen |  | 
  
    | GetScreenSize |  | html5.h | Document.exitFullscreen |  | 
PPB_Gamepad
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | नमूना |  | SDL | गेमपैड.* | Gamepad ऑब्जेक्ट, navigationStart के हिसाब से टाइमस्टैंप दिखाता है. हार्डवेयर से डेटा मिलने के बाद, इसे अपडेट कर दिया जाता है https://www.w3.org/TR/gamepad/#gamepad-interface | 
PPB_Graphics2D
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | Canvas.getContext('2d') |  | 
  
    | बताएं |  | SDL | Canvas.clientwidth + Canvas.clientHight |  | 
  
    | PaintImageData |  | SDL | CanvasRenderingContext2D.putImageData |  | 
  
    | स्क्रोल करें |  | GAP | CanvasrenderContext2D.scrollIntoView, CanvasrenderContext2D.drawImage | GAP (कुछ हद तक) - इसे लागू करने के लिए, drawImage का इस्तेमाल करके कैनवस को खुद पर ऑफ़सेट के साथ ड्रॉ करें. इसके बाद, बाकी हिस्से को भरें. | 
  
    | ReplaceContents |  | SDL | CanvasRenderingContext2D.drawImage |  | 
  
    | फ़्लश |  | GAP | इससे मिलता-जुलता कोई सीधा नहीं | GAP (आंशिक) -
    ड्रॉ कोड के आखिर में हमेशा इंप्लिसिट फ़्लश होता है; इसकी संभावना नहीं है
    को बदलने के लिए. हालांकि, 
      OffscreenCanvas
     और
    
      ImageBitmapRenderingContext
     का कॉम्बिनेशन, मिलती-जुलती सुविधाएं देता है. | 
  
    | SetScale |  | SDL | CanvasRenderingContext2D.scale |  | 
  
    | GetScale |  | SDL | CanvasRenderingContext2D.currentTransform |  | 
  
    | SetLayerTransform |  | SDL | CanvasRenderingContext2D.setTransform
CanvasRenderingContext2D.scale
CanvasRenderingContext2D.translate |  | 
PPB_Graphics3D
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetAttribMaxValue |  | OpenGL ES 3.0 | WebGL 2.0 | GAP (आंशिक) - WebGL 2.0 और OpenGL ES 3.0 के Emscripten के एक्सपोज़र, उपयोगकर्ता-तय किए गए मल्टीसैंपल किए गए फ़्रेमबफ़र के साथ काम करते हैं. इनमें PPAPI के ज़रिए कॉन्फ़िगर किए जा सकने वाले सभी पैरामीटर सेट किए जा सकते हैं. | 
  
    | बनाएं |  | SDL | Canvas.getContext |  | 
  
    | GetAttribs |  | SDL | WebGLRenderingContext.getContextAttributes |  | 
  
    | SetAttribs |  | SDL | Canvas.getContext(.., OPTIONS) |  | 
  
    | GetError |  | SDL | WebGLRenderingContext.getError |  | 
  
    | ResizeBuffers |  | SDL | Canvas.width = w; Canvas.height = h; |  | 
  
    | SwapBuffers |  | GAP | इससे मिलता-जुलता कोई सीधा नहीं | GAP (कुछ हद तक) -
    ड्रॉ कोड के आखिर में हमेशा एक फ़्लश होता है. ऐसा होने की संभावना कम है कि यह बदले. हालांकि, 
      OffscreenCanvas
     और
    
      ImageBitmapRenderingContext
     का कॉम्बिनेशन, मिलती-जुलती सुविधाएं देता है. | 
PPB_ImageData
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetNativeImageDataFormat |  | SDL | ImageData के लिए RGBA क्रम ज़रूरी है |  | 
  
    | IsImageDataFormatSupported |  | SDL | ImageData के लिए RGBA क्रम ज़रूरी है |  | 
  
    | बनाएं |  | SDL | CanvasRenderingContext2d.createImageData |  | 
  
    | जानकारी |  | SDL | ImageData में कभी भी पैरों के बीच की दूरी नहीं होती |  | 
  
    | मैप |  | SDL | ImageData.data |  | 
  
    | अनमैप करना |  | SDL | ImageData.data |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | RequestInputEvents |  | SDL | इससे मिलता-जुलता कोई सीधा नहीं | इस सुविधा के न होने से शायद कोई फ़र्क़ न पड़े, क्योंकि JS / Wasm मुख्य थ्रेड पर चलता है और क्रॉस प्रोसेस राउंड-ट्रिप के बिना इवेंट को आसानी से फ़िल्टर किया जा सकता है. | 
  
    | RequestFilteringInputEvents |  | SDL | माउस* की* व्हील* टच* कंपोज़िशन* इवेंट |  | 
  
    |  |  | SDL | Element.addEventListener |  | 
  
    | ClearInputEventRequest |  | SDL | Element.removeEventListener |  | 
  
    | GetType |  | SDL | इवेंट क्लास डिसेंडेंट |  | 
  
    | GetTimeStamp |  | SDL | Event.timeStamp |  | 
  
    | GetModifiers |  | SDL | *Event.altKey/shiftKey/metaKey/ctrlKey |  | 
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | MouseEvent |  | 
  
    | GetButton |  | SDL | MouseEvent.button |  | 
  
    | GetPosition |  | SDL | MouseEvent.client*/page*/offset* |  | 
  
    | GetClickCount |  | SDL | 'dblclick' बनाम 'mousedown' इवेंट |  | 
  
    | GetMovement |  | SDL | MouseEvent.movement* |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | WheelEvent |  | 
  
    | GetDelta |  | SDL | WheelEvent.delta* |  | 
  
    | GetTicks |  | GAP | GAP - deltaMode में यह जानकारी होती है, लेकिन पूरी नहीं होती. | व्हीलEvent.deltaMode एपीआई को लागू करने के बारे में यहां चर्चा की गई है: https://github.com/w3c/uievents/issues/181#issuecomment-537811017 | 
  
    | GetScrollByPage |  | GAP | GAP - deltaMode में यह जानकारी होती है, लेकिन पूरी नहीं होती. | व्हीलEvent.deltaMode एपीआई को लागू करने के बारे में यहां चर्चा की गई है: https://github.com/w3c/uievents/issues/181#issuecomment-537811017 | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | KeyboardEvent |  | 
  
    | GetKeyCode |  | SDL | KeyboardEvent.keyCode |  | 
  
    | GetCharacterText |  | SDL | KeyboardEvent.key |  | 
  
    | GetCode |  | SDL | KeyboardEvent.code |  | 
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | SDL | TouchEvent |  | 
  
    | AddTouchPoint |  | SDL | TouchEvent.touches.push |  | 
  
    | GetTouchCount |  | SDL | TouchEvent.touches.length |  | 
  
    | GetTouchByIndex |  | SDL | TouchEvent.touches[i] |  | 
  
    | GetTouchById |  | SDL | Touch.indentifer (इस बारे में खुद पता लगाने के लिए) |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | CompositionEvent |  | 
  
    | GetText |  | GAP | CompositionEvent.data |  | 
  
    | GetSegmentNumber |  | GAP | GAP - कोई प्रत्यक्ष समतुल्य नहीं | इस डेटा को CompositionEvent.data से वापस पाया जा सकता है. | 
  
    | GetSegmentOffset |  | GAP | GAP - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | GetTargetSegment |  | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
  
    | GetSelection |  | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
PPB_Instance
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | BindGraphics |  | SDL | Canvas.getContext (बांडिंग अपने-आप होने की वजह से, यह ज़रूरी नहीं है). |  | 
  
    | IsFullFrame |  | GAP | GAP - MIME टाइप हैंडलर के बराबर कोई नहीं. | NaCl ऐप्लिकेशन, किसी खास MIME टाइप को मैनेज करने और पूरे दस्तावेज़ का मालिकाना हक रखने के लिए रजिस्टर किए जा सकते हैं. | 
  
    | DidCreate |  | 'लागू नहीं' के तौर पर जवाब देना | <Element>[key] | सामान्य डीओएम ऐक्सेस की मदद से, टैग एट्रिब्यूट को पकड़ा जा सकता है | 
  
    | DidDestroy |  | 'लागू नहीं' के तौर पर जवाब देना | 'लागू नहीं' के तौर पर जवाब देना | NaCl के लिए ट्रिगर नहीं किया गया | 
  
    | DidChangeView |  | 'लागू नहीं' के तौर पर जवाब देना | एलिमेंट 'resize' इवेंट |  | 
  
    | DidChangeFocus |  | 'लागू नहीं' के तौर पर जवाब देना | एलिमेंट 'फ़ोकस', 'फ़ोकसिंग', 'फ़ोकसआउट' इवेंट |  | 
  
    | HandleDocumentLoad |  | 'लागू नहीं' के तौर पर जवाब देना | GAP - mime टाइप हैंडलर के तौर पर रजिस्टर करने का कोई तरीका नहीं है | कुछ खास तरह के MIME टाइप को मैनेज करने के लिए, ऐप्लिकेशन के ज़रिए NaCl मॉड्यूल + मेनिफ़ेस्ट एंट्री सेट अप की जा सकती है. | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | कॉन्फ़िगर करें |  | GAP | getUserMedia() | getUserMedia() की पाबंदियों से, MediaStreamTrack में इस्तेमाल करने के लिए कॉन्फ़िगरेशन वैल्यू मिल सकती हैं. | 
  
    | GetAttrib |  | GAP | MediaStreamTrack.getSettings() |  | 
  
    | GetId |  | GAP | MediaStreamTrack.id |  | 
  
    | HasEnded |  | GAP | MediaStreamTrack.readyState |  | 
  
    | GetBuffer |  | GAP | GAP - कोई मिलता-जुलता नहीं |  | 
  
    | RecycleBuffer |  | GAP | GAP - कोई मिलता-जुलता नहीं |  | 
  
    | बंद करें |  | GAP | MediaStreamTrack.stop() |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | कैनवस कैप्चर | कैनवस कैप्चर की मदद से, प्रोग्राम के हिसाब से वीडियो फ़्रेम जोड़े जा सकते हैं. | 
  
    | कॉन्फ़िगर करें |  | GAP | applyConstraints(), getUserMedia() | GAP (आंशिक) - वेब API में उपलब्ध कॉन्फ़िगरेशन की सीमा PPAPI से अलग हो सकती है. | 
  
    | GetAttrib |  | GAP | MediaStreamSettings.width |  | 
  
    |  |  | GAP | MediaStreamSettings.height |  | 
  
    |  |  | GAP | GAP - PP_MEDIASTREAMVIDEOSTREAM_ATTRIB_BUFFERED_FRAMES के बराबर नहीं | MediaStream को पहले से लोड नहीं किया जा सकता. इसलिए, यह कभी भी बफ़र नहीं होगा: https://www.w3.org/TR/mediacapture-streams/#mediastreams-in-media-elements | 
  
    |  |  | GAP | GAP - PP_MEDIASTREAMVIDEOTRACK_ATTRIB_FORMAT के बराबर कोई एट्रिब्यूट नहीं है |  | 
  
    | GetId |  | GAP | MediaStreamTrack.id |  | 
  
    | HasEnded |  | GAP | MediaStreamTrack.readyState |  | 
  
    | GetFrame |  | GAP | GAP - कोई समतुल्य नहीं |  | 
  
    | RecycleFrame |  | GAP | GAP - कोई मिलता-जुलता नहीं |  | 
  
    | बंद करें |  | GAP | MediaStreamTrack.stop() |  | 
  
    | GetEmptyFrame |  | GAP | GAP - कोई समतुल्य नहीं |  | 
  
    | PutFrame |  | GAP | GAP - कोई समतुल्य नहीं |  | 
PPB_MessageLoop
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर काम करने पर, कर्मचारियों को इंप्लिसिट इवेंट लूप मिलता है. |  | 
  
    | GetForMainThread |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
  
    | GetCurrent |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
  
    | AttachToCurrentThread |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
  
    | चलाएं |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर काम करने पर, कर्मचारियों को इंप्लिसिट इवेंट लूप मिलता है. |  | 
  
    | PostWork |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
  
    | PostQuit |  | 'लागू नहीं' के तौर पर जवाब देना | ज़्यादातर मामलों में, वर्कर्स को एक इवेंट लूप मिलता है. |  | 
PPB_Messaging
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | PostMessage |  | 'लागू नहीं' के तौर पर जवाब देना | Window.postMessage |  | 
  
    | RegisterMessageHandler |  | 'लागू नहीं' के तौर पर जवाब देना | Window.addEventListener |  | 
  
    | UnregisterMessageHandler |  | 'लागू नहीं' के तौर पर जवाब देना | Window.removeEventListener |  | 
PPB_MouseCursor
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | SetCursor |  | SDL | Element.style.cursor | स्टॉक कर्सर का एक ही सेट इस्तेमाल किया जा सकता है.
कस्टम कर्सर, url(..) का इस्तेमाल करके बनाए जा सकते हैं.
डाइनैमिक कस्टम कर्सर, डेटा यूआरआई का इस्तेमाल करके बनाए जा सकते हैं.
CSS3, हॉटस्पॉट तय करने की सुविधा देता है. | 
PPB_MouseLock
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | LockMouse |  | SDL | Element.requestPointerLock |  | 
  
    | UnlockMouse |  | SDL | Element.exitPointerLock |  | 
PPB_OpenGLES2
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | कई तरीके |  | OpenGLES | काम करने के लिए, WebGL 1.0 के करीब हो. |  | 
  
    |  | x |  | OffscreenCanvas |  | 
PPB_TextInputController
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | SetTextInputType |  | GAP | GAP - इनपुट के तरीके का संपादक एपीआई से भरा जा सकता है | कुछ डेवलपर या तो इस तरीके से संकेत देना चाहते हैं या किसी कैनवस के अंदर इनलाइन इवेंट / आउटपुट इनलाइन को रोकने और दिखाने की सुविधा को प्राथमिकता देते हैं. | 
  
    | UpdateCaretPosition |  | GAP | GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया | https://www.w3.org/TR/ime-api/ | 
  
    | CancelCompositionText |  | GAP | GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया | https://www.w3.org/TR/ime-api/ | 
  
    | UpdateSurroundingText |  | GAP | GAP - इनपुट के तरीके का संपादक API (एपीआई) संभावित रूप से भरा गया | https://www.w3.org/TR/ime-api/ | 
PPB_URLLoader
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | embind | new XMLHttpRequest(); |  | 
  
    | खोलें |  | embind | XMLHttpRequest.open |  | 
  
    | FollowRedirect |  | embind | Request.redirect |  | 
  
    |  |  | GAP | GAP - कोई XMLHTTPRequest समान नहीं |  | 
  
    | GetUploadProgress |  | embind | XMLHttpRequest 'प्रोग्रेस' इवेंट |  | 
  
    |  |  | GAP | FetchObserver | अभी तक इसके लिए कोई खास जानकारी नहीं दी गई है या इसे लागू नहीं किया गया है; https://github.com/whatwg/fetch/issues/607 | 
  
    | GetDownloadProgress |  | embind | XMLHttpRequest 'प्रोग्रेस' इवेंट |  | 
  
    |  |  | GAP | FetchObserver | अभी तक तय या लागू नहीं किया गया है; https://github.com/whatwg/fetch/issues/607 | 
  
    | GetResponseInfo |  | embind | XMLHttpRequest.getAllResponseHeaders |  | 
  
    |  |  | embind | जवाब फ़ेच करें.* |  | 
  
    | ReadResponseBody |  | embind | XMLHttpRequest.response |  | 
  
    |  |  | embind | मुख्य हिस्सा.* (रिस्पॉन्स एक मुख्य हिस्सा होता है) |  | 
  
    | FinishStreamingToFile |  | embind | GAP - कोई प्रत्यक्ष समतुल्य नहीं | XMLHttpRequest और 'फ़ेच करें', दोनों ही सीधे तौर पर स्टोरेज में स्ट्रीम करने के बजाय, मेमोरी में स्ट्रीम करना मानते हैं. | 
  
    | बंद करें |  | embind | XMLHttpRequest.abort |  | 
  
    |  |  | GAP | फे़च एपीआई: HowToSignal और locateController |  | 
PPB_URLRequestInfo
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | embind | XMLHttpRequest |  | 
  
    |  |  | embind | डेटा फ़ेच करने का अनुरोध |  | 
  
    | SetProperty |  | GAP | GAP - XMLHttpRequest के लिए कोई सीधा मिलता-जुलता विकल्प नहीं है | XMLHttpRequest, रीडायरेक्ट, किसी फ़ाइल पर स्ट्रीम करने, रेफ़रल देने वाले या क्रेडेंशियल की नीति सेट करने के बाद हर अनुरोध की सीमा तय करने के सीधे तरीके नहीं देता. | 
  
    |  |  | embind | अनुरोध करें.* |  | 
  
    | AppendDataToBody |  | embind | XMLHttpRequest.send | GAP - दोनों इमेज में पूरा बॉडी होना चाहिए, न कि सिर्फ़ एक हिस्सा. | 
  
    |  |  | embind | fetch(.., options:body) |  | 
  
    | AppendFileToBody |  | GAP | Bring() अपलोड स्ट्रीमिंग | https://www.chromestatus.com/features/5274139738767360 | 
  
    |  |  | 'लागू नहीं' के तौर पर जवाब देना | <form> | इसे FileReader की मदद से भी पढ़ा जा सकता है और अपलोड किया जा सकता है. हालांकि, यह PendingDataToBody की तरह ही है | 
PPB_URLResponseInfo
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetProperty |  | embind | XMLHttpRequest.getAllResponseHeaders + अन्य |  | 
  
    |  |  | embind | जवाब फ़ेच करें.* |  | 
  
    | GetBodyAsFileRef |  | embind | फ़ेच रिस्पॉन्स (बॉडी) .blob() | मान लेता है कि स्टोरेज लेयर, ट्रांसफ़र को ऑप्टिमाइज़ करती है. | 
PPB_Var
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | VarFromUtf8 |  | embind | TextDecoder.decode |  | 
  
    | VarToUtf8 |  | embind | TextEncoder.encode |  | 
  
    | VarFromResource |  | 'लागू नहीं' के तौर पर जवाब देना | 'लागू नहीं' के तौर पर जवाब देना |  | 
  
    | VarToResource |  | 'लागू नहीं' के तौर पर जवाब देना | 'लागू नहीं' के तौर पर जवाब देना |  | 
PPB_VarArray
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | पाएं |  | embind | Array[i] |  | 
  
    | सेट करें |  | embind | Array[i] = x |  | 
  
    | GetLength |  | embind | Array.length |  | 
  
    | SetLength |  | embind | अरे.length = n |  | 
PPB_VarArrayBuffer
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | embind | नया ArrayBuffer(n) |  | 
  
    | ByteLength |  | embind | ArrayBuffer.byteLength |  | 
  
    | मैप |  | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं | Asm.js / Wasm मॉड्यूल, सिंगल लीनियर मेमोरी हीप के अलावा, किसी ArrayBuffer के इलाकों को मैप नहीं कर सका.
आने वाले समय में कई यादें जुड़ने या मेमोरी मैपिंग से इसे बेहतर बनाया जा सकता है. | 
  
    | अनमैप करना |  | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
PPB_VarDictionary
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | embind | {} |  | 
  
    | पाएं |  | embind | <Object>[i] |  | 
  
    | सेट करें |  | embind | <Object>[i] = x |  | 
  
    | मिटाएं |  | embind | delete <Object>[i] |  | 
  
    | HasKey |  | embind | <Object> में x |  | 
  
    | GetKeys |  | embind | (<Object> में k) {} के लिए | ऐसी कोई मशीन नहीं है, लेकिन इसे बनाया जा सकता है. | 
PPB_VideoDecoder
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | GAP - इसे VideoDecoder() का इस्तेमाल करके, सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | शुरू करें |  | GAP | GAP - VideoDecoder() शुरू करने के पैरामीटर (VideoDecoderInitParameters) का इस्तेमाल करके, सुझाए गए WebCodecs API को हैंडल किया जाएगा | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | Decode |  | GAP | GAP - सुझाए गए WebCodecs API के साथ ReadableStream.इंटरनेट से कनेक्ट करना(VideoDecoder) का इस्तेमाल करना | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | GetPicture |  | GAP | GAP - सुझाए गए WebCodecs API की मदद से ReadableStream.इंटरनेट से कनेक्ट की जाती है(VideoDecoder).popTo(VideoTrackWriter().writable) | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | RecyclePicture |  | GAP | GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. मौजूदा डिज़ाइन अपने-आप तस्वीरों को रीसाइकल करेगा और डिकोड करने की प्रोसेस को जारी रखेगा. | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | फ़्लश |  | GAP | GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. इस एपीआई को Flush() कहा जाएगा. हालांकि, इस पर अब भी चर्चा चल रही है कि डिकोड करने वाले कॉल को क्रम में कैसे लगाया जाएगा. | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
  
    | रीसेट करें |  | GAP | GAP - सुझाए गए WebCodecs API की मदद से, VideoDecoder के इंस्टेंस को मिटाकर और नया इंस्टेंस बनाया जाएगा. यह रीसेट करने के खास तरीके के मुकाबले उतना असरदार नहीं होगा. हालांकि, Reset() API के लिए सेमेंटेक्स पर अब भी चर्चा की जा रही है. | https://github.com/WICG/web-codecs/blob/master/explainer.md#example-of-decode-for-low-latency-live-streaming-or-cloud-gaming | 
PPB_VideoEncoder
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | GAP - को VideoEncoder() का इस्तेमाल करके, सुझाए गए WebCodecs API के साथ हैंडल किया जाएगा |  | 
  
    | GetSupportedProfiles |  | GAP | GAP (कुछ हद तक) - navigator.mediaCapabilities.encodingInfo() | काम करने वाली प्रोफ़ाइलों को एक-एक करके देखना होगा. | 
  
    | शुरू करें |  | GAP | GAP - इसे VideoEncoder() के शुरू करने के पैरामीटर का इस्तेमाल करके, प्रस्तावित WebCodecs API के साथ मैनेज किया जाएगा |  | 
  
    | GetFramesRequired |  | GAP | GAP - कोई मिलता-जुलता नहीं | इस बात की संभावना नहीं है कि Web Codecs API के ज़रिए अंदरूनी तौर पर इस्तेमाल किया गया फ़्रेम पूल दिखाया गया हो. | 
  
    | GetFrameCodedSize |  | GAP | GAP - कोई मिलता-जुलता नहीं | ऐसा हो सकता है कि Web Codecs API के अंदर इस्तेमाल किए गए फ़्रेम पूल को एक्सपोज़ न किया गया हो. | 
  
    | GetVideoFrame |  | GAP | GAP - सुझाए गए WebCodecs API की मदद से ReadableStream.इंटरनेट से कनेक्ट करने के टूल(VideoEncoder) को हैंडल करना होता है. यह डेटा को कोड में बदलने से पहले, डेटा भरने के लिए एक फ़्रेम लेने के बजाय, सीधे पढ़ने लायक स्ट्रीम में डेटा को कोड में बदल देगा. |  | 
  
    | एन्कोड |  | GAP | GAP - इसे ReadableStream.pipeThrough(VideoEncoder) का इस्तेमाल करके, प्रस्तावित WebCodecs API के साथ मैनेज किया जाएगा |  | 
  
    | GetBitstreamBuffer |  | GAP | GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. मौजूदा डिज़ाइन अपने-आप कोड में बदले गए बिटस्ट्रीम बफ़र से होकर गुज़र जाएगा, जिससे पाइपलाइनिंग होती है. | फ़िलहाल, WebCodecs API को लगता है कि बिटस्ट्रीम बफ़र को पूल करने के बजाय कॉपी किया जा सकता है. इसलिए, इसे रीसाइकल करने की ज़रूरत नहीं पड़ेगी. | 
  
    | RecycleBitstreamBuffer |  | GAP | GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. मौजूदा डिज़ाइन, एन्कोडिंग की प्रोसेस जारी रखने के लिए, बफ़र को अपने-आप रीसाइकल करेगा. | आने वाले समय में इस बदलाव की संभावना नहीं है, क्योंकि परफ़ॉर्मेंस पर असर कम होता है. | 
  
    | RequestEncodingParametersChange |  | GAP | GAP - इसे प्रस्तावित वेब कोडेक एपीआई से मैनेज किया जाएगा. कुछ पैरामीटर को फ़्लाई पर बदला जा सकता है, जबकि अन्य पैरामीटर के लिए एन्कोडर को बंद करना होगा. |  | 
  
    | बंद करें |  | GAP | GAP - को VideoEncoder.close() का इस्तेमाल करके प्रस्तावित WebCodecs API की मदद से हैंडल किया जाएगा |  | 
PPB_VideoFrame
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetTimestamp |  | GAP | GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. |  | 
  
    | SetTimestamp |  | GAP | GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा. |  | 
  
    | GetFormat |  | GAP | GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा. |  | 
  
    | GetSize |  | GAP | GAP - इसे प्रस्तावित WebCodecs API की मदद से मैनेज किया जाएगा. |  | 
  
    | GetDataBuffer |  | GAP | GAP - इसे सुझाए गए WebCodecs API के साथ मैनेज किया जाएगा. |  | 
  
    | GetDataBufferSize |  | GAP | GAP - को सुझाए गए WebCodecs API की मदद से हैंडल किया जाएगा. |  | 
PPB_View
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetRect |  | embind | Element.getBoundingClientRect |  | 
  
    | IsFullscreen |  | embind | Document.fullScreenEnabled | सिर्फ़ एक एलिमेंट के बजाय, दस्तावेज़ के हिसाब से काम करता है. | 
  
    | IsVisible |  | embind | IntersectionObserver |  | 
  
    | IsPageVisible |  | embind | document.visibilityState |  | 
  
    | GetClipRect |  | embind | IntersectionObserver |  | 
  
    | GetDeviceScale |  | embind | window.devicePixelRatio |  | 
  
    | GetCSSScale |  | embind | <Element>.getBoundingClientRect().width / <Element>.offsetWidth |  | 
  
    | GetScrollOffset |  | embind | <Element>.scrollTop / <Element>.scrollLeft |  | 
PPB_WebSocket
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं |  | GAP | WebSocket.WebSocket |  | 
  
    | कनेक्ट करें |  | GAP | WebSocket.WebSocket(url, ...)
WebSocket 'open' इवेंट |  | 
  
    | बंद करें |  | GAP | WebSocket.close |  | 
  
    | ReceiveMessage |  | GAP | WebSocket 'मैसेज' इवेंट
WebSocket 'गड़बड़ी' इवेंट
WebSocket 'बंद है' इवेंट |  | 
  
    | SendMessage |  | GAP | WebSocket.send |  | 
  
    | GetBufferedAmount |  | GAP | WebSocket.bufferedAmount |  | 
  
    | GetCloseCode |  | GAP | CloseEvent.code |  | 
  
    | GetCloseReason |  | GAP | CloseEvent.reason |  | 
  
    | GetCloseWasClean |  | GAP | CloseEvent.wasClean |  | 
  
    | GetExtensions |  | GAP | WebSocket.extensions |  | 
  
    | GetProtocol |  | GAP | WebSocket.protocol |  | 
  
    | GetReadyState |  | GAP | WebSocket.readyState |  | 
  
    | GetURL |  | GAP | WebSocket.url |  | 
PPP_Graphics3D
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | Graphics3DContextLost |  | SDL | कैनवस 'webglcontextlost' इवेंट |  | 
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | HandleInputEvent |  | SDL | Element.addEventListener |  | 
PPP_Instance
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | DidCreate |  | 'लागू नहीं' के तौर पर जवाब देना | <Element>[key] | सामान्य डीओएम ऐक्सेस की मदद से, टैग एट्रिब्यूट को पकड़ा जा सकता है | 
  
    | DidDestroy |  | 'लागू नहीं' के तौर पर जवाब देना | 'लागू नहीं' के तौर पर जवाब देना | NaCl के लिए ट्रिगर नहीं किया गया | 
  
    | DidChangeView |  | 'लागू नहीं' के तौर पर जवाब देना | एलिमेंट 'resize' इवेंट |  | 
  
    | DidChangeFocus |  | 'लागू नहीं' के तौर पर जवाब देना | एलिमेंट 'फ़ोकस', 'फ़ोकसिंग', 'फ़ोकसआउट' इवेंट |  | 
  
    | HandleDocumentLoad |  | 'लागू नहीं' के तौर पर जवाब देना | GAP - mime टाइप हैंडलर के तौर पर रजिस्टर करने का कोई तरीका नहीं है | ऐप्लिकेशन और मेनिफ़ेस्ट एंट्री की मदद से, NaCl मॉड्यूल को खास तरह के MIME टाइप को हैंडल करने के लिए सेट अप किया जा सकता है. | 
PPP_MessageHandler
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | HandleMessage |  | embind | MessagePort 'message' इवेंट
Window 'message' इवेंट |  | 
  
    | HandleBlockingMessage |  | 'लागू नहीं' के तौर पर जवाब देना | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं | ऐसा ही, Atomics.wait की मदद से मुख्य थ्रेड में किया जा सकता है. इसे सिंक्रोनस प्लगिन एपीआई के एम्युलेशन में मदद करने के लिए जोड़ा गया था. | 
PPP_Messaging
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | HandleMessage |  | embind | MessagePort 'message' इवेंट
Window 'message' इवेंट |  | 
PPP_MouseLock
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | MouseLockLost |  | SDL | एलिमेंट 'pointerlockchange', 'pointerlockerror' इवेंट |  | 
PPAPI (ऐप्लिकेशन)
PPB_HostResolver
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं | x | GAP | GAP (आंशिक) - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | समस्या हल करें | x | GAP | GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं |  | 
  
    | GetCanonicalName | x | GAP | GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं |  | 
  
    | GetNetAddressCount | x | GAP | GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं |  | 
  
    | GetNetAddress | x | GAP | GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं |  | 
PPB_NetAddress
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | CreateFromIPv4Address | x | GAP | GAP (आंशिक) - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | CreateFromIPv6Address | x | GAP | GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं |  | 
  
    | GetFamily | x | GAP | GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं |  | 
  
    | DescribeAsString | x | GAP | GAP (आंशिक) - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | DescribeAsIPv4Address | x | GAP | GAP (आंशिक) - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | DescribeAsIPv6Address | x | GAP | GAP (कुछ हद तक) - कोई डायरेक्ट मिलता-जुलता नहीं |  | 
PPB_NetworkList
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetCount | x | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
  
    | GetName | x | GAP | GAP - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | GetType | x | GAP | GAP - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | GetState | x | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
  
    | GetIpAddress | x | GAP | GAP - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | GetDisplayName | x | GAP | GAP - कोई प्रत्यक्ष समतुल्य नहीं |  | 
  
    | GetMTU | x | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
PPB_NetworkMonitor
  
    | PPAPI का तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | बनाएं | x | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
  
    | UpdateNetworkList | x | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
PPB_NetworkProxy
  
    | PPAPI तरीका | थ्रेड को मान लेता है | एमस्क्रिप्टन | Web API | सीमाएं | 
  
    | GetProxyForURL | x | GAP | GAP - कोई डायरेक्ट एग्ज़िम्पल नहीं |  | 
PPB_TCPSocket और PPB_UDPSocket
माइग्रेशन के लिए, सीधे तौर पर 1:1 मैपिंग नहीं की जा सकती. इसके बजाय, हमने पब्लिशर के लिए
उपयोगकर्ता की स्थिति की जानकारी और सुझाया गया माइग्रेशन पाथ क्या है.
  
    | इस्तेमाल का उदाहरण | सुझाव | 
    | स्क्रीन शेयर करना | getDisplayMedia और
      WebRTC (
      
        डेमो) | 
    | बैंडविड्थ के इस्तेमाल को कम करने के लिए,
    लोकल सर्वर से लोड करना | XHR, फ़ेच, स्ट्रीम, सर्विस वर्कर, कैश एपीआई | 
    | इससे लोड हो रहा है:
    वेब ऐप्लिकेशन का लोकल इंस्टेंस / वेब ऐप्लिकेशन के लोकल इंस्टेंस से कनेक्ट करना | WebRTC | 
    | चैट करें | WebSocket* | 
    | रीयलटाइम
    ऑडियो/वीडियो कम्यूनिकेशन | WebRTC | 
    | दूसरे लोगों के साथ मिलकर काम करने का ऐक्सेस | WebSocket* | 
    | रीयलटाइम
    मल्टीप्लेयर गेम | WebTransport**
      अगर P2P नहीं है, तो WebRTC (या
      RTCIceTransport के ऊपर WebTransport) | 
    | रीयलटाइम
    इंटरैक्टिव स्ट्रीमिंग | WebTransport** | 
    | लेगसी सर्वर से कम्यूनिकेट करना | प्रोटोकॉल कन्वर्ज़न करने के लिए प्रॉक्सी सर्वर या मिडलवेयर. इसके लिए फ़ीडबैक दें
      bit.ly/network-api-gaps | 
*: या आने वाले समय में WebTransport
**: इसकी उपलब्धता के बारे में जानने के लिए, chromestatus पर जाएं