Skip to content

Commit f5f2e56

Browse files
author
Thorsten Lannynd
committed
Chromium: add video streaming documentation
1 parent c77beeb commit f5f2e56

File tree

1 file changed

+162
-0
lines changed

1 file changed

+162
-0
lines changed

source/linux/Demo_User_Guides/Chromium_Browser.rst

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,3 +306,165 @@ use the mouse to click the "Run Benchmark" button.
306306
| |__PART_FAMILY_DEVICE_NAMES__| | 177.11 @ 1080p60 |
307307
+---------------------------------+-----------------------------------------------------------------------+
308308

309+
310+
Video Streaming
311+
---------------
312+
313+
.. ifconfig:: CONFIG_part_variant not in ('AM62X', 'AM62AX', 'J721E')
314+
315+
Streaming platforms and demuxed videos support hardware acceleration for video playback.
316+
This is achieved using the V4L2 stateful decoder API that interfaces with the :doc:`Wave5 <../Foundational_Components_Multimedia_wave5>` hardware decoder present on |__PART_FAMILY_DEVICE_NAMES__|.
317+
Hardware acceleration has been successfully verified with the `W3C WebCodecs VideoDecoder Interface <https://www.w3.org/TR/webcodecs/#videodecoder-interface>`_, which serves as the backend technology for streaming platforms such as YouTube and Vimeo.
318+
319+
Tested streaming sources include HTML5 video playback, YouTube, and Vimeo.
320+
321+
**HTML5 Video Playback**
322+
323+
An **HTML5 video** is a standard video element embedded directly into a webpage using the ``<video>`` tag.
324+
Unlike platforms such as YouTube or Vimeo, which run within complex web applications containing ads, thumbnails, and JavaScript-heavy interfaces, HTML5 video playback delivers the raw video stream directly to the browser's player.
325+
326+
.. ifconfig:: CONFIG_part_variant not in ('AM62X', 'AM62AX', 'J721E')
327+
328+
This makes it ideal for testing hardware decoding performance, as it avoids additional CPU load from webpage rendering and scripting.
329+
330+
.. code-block:: console
331+
332+
$ chromium http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4
333+
334+
**Vimeo Streaming**
335+
336+
Vimeo commonly uses the **H.264** codec for playback.
337+
338+
.. ifconfig:: CONFIG_part_variant not in ('AM62X', 'AM62AX', 'J721E')
339+
340+
Vimeo is supported by hardware acceleration through the V4L2 decoder.
341+
Unlike YouTube, Vimeo does not dynamically switch codecs based on system capability and generally delivers consistent H.264 streams across devices,
342+
making it more predictable for hardware decoding tests.
343+
344+
.. code-block:: console
345+
346+
$ chromium https://player.vimeo.com/video/640499893
347+
348+
**YouTube Streaming**
349+
350+
YouTube commonly uses **VP9** or **AV1** codecs for playback, which are **not hardware accelerated** on this platform.
351+
When these codecs are used, Chromium falls back to **software decoding**, resulting in high CPU usage, especially at higher resolutions.
352+
353+
.. ifconfig:: CONFIG_part_variant not in ('AM62X', 'AM62AX', 'J721E')
354+
355+
To enable hardware acceleration, **Chromium requires an extension** that forces YouTube to use the **H.264 codec**.
356+
Once this extension is installed, YouTube streams can be hardware decoded using the V4L2 decoder.
357+
358+
.. code-block:: console
359+
360+
$ chromium https://www.youtube.com/embed/R6MlUcmOul8
361+
362+
.. note::
363+
364+
- YouTube and Vimeo perform best when played in an **embedded player**, as loading the full webpage and thumbnails is CPU-intensive.
365+
- **Audio decoding** in Chromium is performed in **software**, as hardware acceleration for audio streams is not supported.
366+
- Tested resolutions are up to **1080p30**. Higher resolutions may work depending on the platform capabilities.
367+
- Hardware accelerated encoding for WebRTC is not currently supported.
368+
369+
.. ifconfig:: CONFIG_part_variant not in ('AM62X', 'AM62AX', 'J721E')
370+
371+
**Performance Results**
372+
373+
374+
.. ifconfig:: CONFIG_part_variant in ('AM62PX', 'J722S')
375+
376+
**Hardware Acceleration Performance**
377+
378+
+---------------------------------+----------------------+----------------------+----------------------+
379+
| **Platform** | **Website** | **CPU Utilisation** | **GPU Utilisation** |
380+
+---------------------------------+----------------------+----------------------+----------------------+
381+
| |__PART_FAMILY_DEVICE_NAMES__| | YouTube | 41.21% | 10% |
382+
+---------------------------------+----------------------+----------------------+----------------------+
383+
| |__PART_FAMILY_DEVICE_NAMES__| | Vimeo | 62.39% | 13% |
384+
+---------------------------------+----------------------+----------------------+----------------------+
385+
386+
387+
**Software Acceleration Performance**
388+
389+
+---------------------------------+----------------------+----------------------+----------------------+
390+
| **Platform** | **Website** | **CPU Utilisation** | **GPU Utilisation** |
391+
+---------------------------------+----------------------+----------------------+----------------------+
392+
| |__PART_FAMILY_DEVICE_NAMES__| | YouTube | 213.02% | 13% |
393+
+---------------------------------+----------------------+----------------------+----------------------+
394+
| |__PART_FAMILY_DEVICE_NAMES__| | Vimeo | 157.86% | 11% |
395+
+---------------------------------+----------------------+----------------------+----------------------+
396+
397+
.. ifconfig:: CONFIG_part_variant in ('AM68','J721S2')
398+
399+
**Hardware Acceleration Performance**
400+
401+
+---------------------------------+----------------------+----------------------+----------------------+
402+
| **Platform** | **Website** | **CPU Utilisation** | **GPU Utilisation** |
403+
+---------------------------------+----------------------+----------------------+----------------------+
404+
| |__PART_FAMILY_DEVICE_NAMES__| | YouTube | 48.30% | 6% |
405+
+---------------------------------+----------------------+----------------------+----------------------+
406+
| |__PART_FAMILY_DEVICE_NAMES__| | Vimeo | 60.12% | 7% |
407+
+---------------------------------+----------------------+----------------------+----------------------+
408+
409+
410+
**Software Acceleration Performance**
411+
412+
+---------------------------------+----------------------+----------------------+----------------------+
413+
| **Platform** | **Website** | **CPU Utilisation** | **GPU Utilisation** |
414+
+---------------------------------+----------------------+----------------------+----------------------+
415+
| |__PART_FAMILY_DEVICE_NAMES__| | YouTube | 98.24 % | 8% |
416+
+---------------------------------+----------------------+----------------------+----------------------+
417+
| |__PART_FAMILY_DEVICE_NAMES__| | Vimeo | 123.68% | 11% |
418+
+---------------------------------+----------------------+----------------------+----------------------+
419+
420+
.. ifconfig:: CONFIG_part_variant in ('J742S2')
421+
422+
**Hardware Acceleration Performance**
423+
424+
+---------------------------------+----------------------+----------------------+----------------------+
425+
| **Platform** | **Website** | **CPU Utilisation** | **GPU Utilisation** |
426+
+---------------------------------+----------------------+----------------------+----------------------+
427+
| |__PART_FAMILY_DEVICE_NAMES__| | YouTube | 26.88% | 6% |
428+
+---------------------------------+----------------------+----------------------+----------------------+
429+
| |__PART_FAMILY_DEVICE_NAMES__| | Vimeo | 38.19% | 7% |
430+
+---------------------------------+----------------------+----------------------+----------------------+
431+
432+
433+
**Software Acceleration Performance**
434+
435+
+---------------------------------+----------------------+----------------------+----------------------+
436+
| **Platform** | **Website** | **CPU Utilisation** | **GPU Utilisation** |
437+
+---------------------------------+----------------------+----------------------+----------------------+
438+
| |__PART_FAMILY_DEVICE_NAMES__| | YouTube | 107.87% | 9% |
439+
+---------------------------------+----------------------+----------------------+----------------------+
440+
| |__PART_FAMILY_DEVICE_NAMES__| | Vimeo | 106.30% | 12% |
441+
+---------------------------------+----------------------+----------------------+----------------------+
442+
443+
.. ifconfig:: CONFIG_part_variant in ('AM69','J784S4')
444+
445+
**Hardware Acceleration Performance**
446+
447+
+---------------------------------+----------------------+----------------------+----------------------+
448+
| **Platform** | **Website** | **CPU Utilisation** | **GPU Utilisation** |
449+
+---------------------------------+----------------------+----------------------+----------------------+
450+
| |__PART_FAMILY_DEVICE_NAMES__| | YouTube | 25.52% | 5% |
451+
+---------------------------------+----------------------+----------------------+----------------------+
452+
| |__PART_FAMILY_DEVICE_NAMES__| | Vimeo | 28.88% | 7% |
453+
+---------------------------------+----------------------+----------------------+----------------------+
454+
455+
456+
**Software Acceleration Performance**
457+
458+
+---------------------------------+----------------------+----------------------+----------------------+
459+
| **Platform** | **Website** | **CPU Utilisation** | **GPU Utilisation** |
460+
+---------------------------------+----------------------+----------------------+----------------------+
461+
| |__PART_FAMILY_DEVICE_NAMES__| | YouTube | 138.43% | 9% |
462+
+---------------------------------+----------------------+----------------------+----------------------+
463+
| |__PART_FAMILY_DEVICE_NAMES__| | Vimeo | 104.19% | 11% |
464+
+---------------------------------+----------------------+----------------------+----------------------+
465+
466+
.. ifconfig:: CONFIG_part_variant not in ('AM62X', 'AM62AX', 'J721E')
467+
468+
.. note::
469+
The tests were performed using the Big Buck Bunny video at 1080p24 for Vimeo and Tears of Steel at 1080p30 for YouTube at full screen.
470+

0 commit comments

Comments
 (0)