
{"id":9991,"date":"2022-06-21T09:10:37","date_gmt":"2022-06-21T09:10:37","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/documentation\/rdk_video_documentation\/components\/open-sourced_components\/wpe\/"},"modified":"2025-03-25T05:18:36","modified_gmt":"2025-03-25T05:18:36","slug":"wpe","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/","title":{"rendered":"WPE"},"content":{"rendered":"<p><!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\"><br \/>\n <html><body><\/p>\n<div class=\"toc-macro client-side-toc-macro  conf-macro output-block\" data-headerelements=\"H1,H2,H3,H4,H5,H6,H7\" data-hasbody=\"false\" data-macro-name=\"toc\"> <\/div>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Wayland &#8211; What and Why?<\/h2>\n\n\n<ul>\n<li>Primarily a protocol for compositionof different surfaces\/layers.<\/li>\n<li>compositor + display server + window manager.<\/li>\n<li>Uses EGLto avoid OS specific windowing functionality.<\/li>\n<li>Started as a replacement for the X Windowing System (X11).<\/li>\n<li>Unlike X has no rendering API.<\/li>\n<li>Its implementations are lightweightwith a small footprint<\/li>\n<li>Wayland is primarily focused on performance, code maintainability and security<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>Webkit<\/span><span> for Wayland<\/span><\/h2>\n\n\n<ul>\n<li><span>Wayland provides <\/span><span>simple, elegant, <\/span><span>graphics compositing <\/span><span>integration between <\/span><span>different layers <\/span><span>using EGL (interface between <\/span><span>Khronos<\/span><span> rendering <\/span><span>APIs<\/span><span>)<\/span><\/li>\n<li><span>Wayland started as <\/span><span>a replacement <\/span><span>for the X Windowing <\/span><span>System (<\/span><span>X11<\/span><span>).<\/span><\/li>\n<li><span>Wayland is not an implementation <\/span><span>but a <\/span><span>protocol specification between a <\/span><span>display server <\/span><span>and its <\/span><span>clients<\/span><\/li>\n<li><span>Its implementations <\/span><span>are lightweight <\/span><span>with a small <\/span><span>footprint<\/span><\/li>\n<li><span>Wayland is <\/span><span>primarily focused on performance, <\/span><span>code maintainability <\/span><span>and security<\/span><\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span><span>Advantage of WPE over&nbsp;<\/span><span>QtWebKit<\/span><\/span><\/h2>\n\n\n<\/p>\n<p><strong>Newer WebKit= newer features:<\/strong><\/p>\n<\/p>\n<ul>\n<li>Contributions in the &ldquo;upstream&rdquo; direction are also important to the growth of the RDK, to attract more development and grow the community.<\/li>\n<li>It&rsquo;s much faster then QT.<\/li>\n<li>For Gstreamer, we contributed a way to expose the video fragments, e.g. MPEG DASH smooth streaming, from the browser using Media Source Extensions (MSEs).<\/li>\n<\/ul>\n<p><strong>Faster:<\/strong><\/p>\n<\/p>\n<ul>\n<li>WebKit2 w\/ Threaded compositor vs. QT single thread WebKit1 architecture.\n<ul>\n<li>UI Process, Web Process, Network Process and Database Process<\/li>\n<\/ul>\n<\/li>\n<li>New JavaScript Core optimization feature: &ldquo;Faster Than Light&rdquo; JIT<\/li>\n<li>JSC inline with modern day HTML5 development (e.g. better JIT support for closures)<\/li>\n<\/ul>\n<p><strong>Smaller:<\/strong><\/p>\n<\/p>\n<ul>\n<li>Compared to QTWebkit, WPE is about 30% smaller &mdash; around 22 Megabytes,<\/li>\n<li>On average, compared to 32 Megabytes while packing 60% more features<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>A Traditional Approach for Rendering<\/span><\/h2>\n\n\n<p><span>In traditional approach, the central role of X-Server and the steps required to get contents on to the screen is presented in below diagram.<br \/><\/span><\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/A%20Traditional%20approach%20for%20rendering.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>Wayland Approach for Rendering<\/span><\/h2>\n\n\n<\/p>\n<p>Removed X-Server and the compositor is the display server. Lets the compositor send the input event directly to the client and lets the client sent the damage event directly to the compositor.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Wayland%20approach%20for%20rendering.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Wayland &#8211; What and Why?<\/h2>\n\n\n<p>&ldquo;Wayland is a protocol for a compositor to talk to its client as well as a C lib implementation of that protocol&rdquo;. Weston is the reference implementation for wayland. Westeros is a compositor, a replacement of Weston. This provides clear interface towards graphics and input.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/wayland.drawio.png\"><\/p>\n<p><strong>Wayland Process flow:<\/strong><\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/wayland%20process%20flow.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Why Westeros?<\/h2>\n\n\n<ul>\n<li>Westeros is smalland simple.<\/li>\n<li>Being small, easier to understand and maintain.<\/li>\n<li>Caters to needs of embedded systems over traditional desktop computing.<\/li>\n<li>Shared library that provides an APIfor creating and operating a compositor.<\/li>\n<li>Use the included sample compositor app OR implement a custom compositor.<\/li>\n<li>Allows an application to create a Wayland display within itself to create what we call an embedded compositor.<\/li>\n<li>Main UI can then control application windowandlifecycle.<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Westeros Use Case<\/h2>\n\n\n<p>Gives the hosting application (MSO Guide) control over the presentation and composition of 3rd party applications.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/westeros%20use%20case.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Why WPE<\/h2>\n\n\n<ul>\n<li>Newer WebKit= newer features<\/li>\n<li>WebKit2 w\/ Threaded compositor vs. QT single thread WebKit1 architecture.<\/li>\n<li>New JavaScript Core optimization feature: &ldquo;Faster Than Light&rdquo; JIT<\/li>\n<li>Compared to QTWebkit, WPE is about 30% smaller &mdash;around 22 Megabytes.<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">WPE Architecture<\/h2>\n\n\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/wayland2.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">WPE and Wayland Clients<\/h2>\n\n\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Webkit%20for%20Wayland%20architecture.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Code Restructure&nbsp;<\/h2>\n\n\n<ul>\n<li>Code move:<\/li>\n<li>Source \/ WPE &mdash;&gt; ThirdParty\/ WPE &amp; ThirdParty\/ WPE-platform<\/li>\n<li>Easier up-streaming<\/li>\n<li>Port acceptance<\/li>\n<li>Refactor WPE to C back-ends<\/li>\n<li>New IPC mechanism<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Code%20restructure.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Work Accomplished in RDK<\/h2>\n\n\n<ul>\n<li>Ported on RPI<\/li>\n<li>MIPS support for BCM targets<\/li>\n<li>Addition of Intel-CE and other BCM configurations<\/li>\n<li>MSE and EME implementation for YouTube leanback<\/li>\n<li>Parity or better than QtWebKit.<\/li>\n<li><span>Shadow Dom<\/span><\/li>\n<li><span>Wayland Support<\/span><\/li>\n<li><span>Fullscreen<\/span><span> API<\/span><\/li>\n<li><span>MIPS JIT Architecture Change<\/span><\/li>\n<li><span>Walyland<\/span><span> Reference Backend<\/span><\/li>\n<li>Speech APIs &amp; reference implementation<\/li>\n<li><span>Geolocation<\/span><\/li>\n<li><span>Notifications<\/span><\/li>\n<li><span>PlayReady DRM<\/span><\/li>\n<li><span>Automated test runner<\/span><\/li>\n<li><span>IndexdDB<\/span><span> Support<\/span><\/li>\n<li>Injected Bundles<\/li>\n<li>Full MSE Compliance<\/li>\n<li><span>WebCrypto<\/span><\/li>\n<li><span>View <\/span><span>Backends<\/span><span> for non-Wayland<\/span><\/li>\n<li><span>Gamepad Support<\/span><\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Functional Test (HTML5): QTWebkit Vs WPEWebKit<\/h2>\n\n\n<p><span>These tests are based on the site <\/span><span>&nbsp;<\/span><span><a href=\"https:\/\/html5test.com\/\" class=\"external-link\" rel=\"nofollow\">https:\/\/html5test.com\/<\/a><\/span><\/p>\n<p><span><span class=\"confluence-embedded-file-wrapper confluence-embedded-manual-size\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/image2017-10-31_12-3-52.png\"><\/span><br \/><\/span><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Functional Test(CSS3): QTWebkit Vs WPEWebKit<\/h2>\n\n\n<p><span>These tests are based on the site <\/span><span><a href=\"http:\/\/css3test.com\/\" class=\"external-link\" rel=\"nofollow\">http:\/\/css3test.com\/<\/a><\/span><\/p>\n<p><span><span class=\"confluence-embedded-file-wrapper confluence-embedded-manual-size\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/image2017-10-31_12-6-10.png\"><\/span><\/span><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>Repositories<\/span><\/h2>\n\n\n<\/p>\n<ul>\n<li>WPE: <a href=\"https:\/\/github.com\/Metrological\/WebKitForWayland\" class=\"external-link\" rel=\"nofollow\">https:\/\/github.com\/Metrological\/WebKitForWayland<\/a><\/li>\n<li>OE recipe: <a href=\"https:\/\/github.com\/Metrological\/meta-metrological\" class=\"external-link\" rel=\"nofollow\">https:\/\/github.com\/Metrological\/meta-metrological<\/a><\/li>\n<li>Buildroot: <a href=\"https:\/\/github.com\/Metrological\/buildroot-wpe\" class=\"external-link\" rel=\"nofollow\">https:\/\/<\/a><a href=\"https:\/\/github.com\/Metrological\/buildroot-wpe\" class=\"external-link\" rel=\"nofollow\">github.com\/Metrological\/buildroot-wpe<\/a><\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>WPE Support with RDK &#8211; Recipes<\/span><\/h2>\n\n\n<\/p>\n<p><strong>Weston:<\/strong><\/p>\n<ul>\n<li>meta-rdk-ext\/recipes-graphics\/wayland\/<\/li>\n<\/ul>\n<p>waylandwayland_1.6.0.bb wayland-native_1.6.0.bb westonweston_1.6.0.bb<\/p>\n<p><strong>Westeros:<\/strong><\/p>\n<ul>\n<li>meta-rdk-video\/recipes-graphics\/westeros<\/li>\n<\/ul>\n<p>westeros.bb westeros.inc westeros-simplebuffer.bb westeros-simpleshell.bb westeros-sink.bb<\/p>\n<p><strong>WPE Webkit:<\/strong><\/p>\n<ul>\n<li>meta-rdk-ext\/recipes-extended\/wpe-webkit\/<\/li>\n<\/ul>\n<p>wpe-webkit_0.1.bb wpe-webkit_0.2.bb wpe-webkit.inc<\/p>\n<\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>WPE Support with RDK &#8211; Build<\/span><\/h2>\n\n\n<\/p>\n<ul>\n<li>WPE Support is provided with specific image types<\/li>\n<li>Source meta-cmf\/setup-environment<\/li>\n<li>Select the required machine configuration<\/li>\n<li>Build the image with WPE package support. E.g.\n<ul>\n<li>bitbakerdk-generic-hybrid-wpe-image<\/li>\n<li>bitbakerdk-generic-mediaclient-wpe-image<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>How to work with WPE<\/span><\/h2>\n\n\n<\/p>\n<ul>\n<li>Step 1: Fork WPE on <a href=\"http:\/\/GitHub.com\" class=\"external-link\" rel=\"nofollow\">GitHub.com<\/a><\/li>\n<li>Step 2: Apply changes on your fork<\/li>\n<li>Step 3: Test your changes<\/li>\n<li>Step 4: Submit pull request to WPE master<\/li>\n<li>Step 5: Prepare for comments, rework if necessary<\/li>\n<li>Step 6: Wait for merge notification<span><br class=\"_mce_tagged_br\"><\/span><\/li>\n<\/ul>\n<p><\/body><\/html><\/p>","protected":false},"excerpt":{"rendered":"<p>Wayland &#8211; What and Why? Primarily a protocol for compositionof different surfaces\/layers. compositor + display [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":9844,"menu_order":30,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-9991","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WPE - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WPE - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Wayland &#8211; What and Why? Primarily a protocol for compositionof different surfaces\/layers. compositor + display [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-25T05:18:36+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/\",\"name\":\"WPE - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T09:10:37+00:00\",\"dateModified\":\"2025-03-25T05:18:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Video\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"WPE\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WPE - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/","og_locale":"en_US","og_type":"article","og_title":"WPE - RDK Documentation Portal | Documentation","og_description":"Wayland &#8211; What and Why? Primarily a protocol for compositionof different surfaces\/layers. compositor + display [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-03-25T05:18:36+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/","name":"WPE - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T09:10:37+00:00","dateModified":"2025-03-25T05:18:36+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/wpe\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Video","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"WPE"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9991","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=9991"}],"version-history":[{"count":4,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9991\/revisions"}],"predecessor-version":[{"id":11881,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9991\/revisions\/11881"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9844"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=9991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}