tree: b7b9e0a8c1793cdb4ca40649b00ff01a79759aa0 [path history] [tgz]
  1. BUILD.gn
  2. chromium_starboard_conversions.cc
  3. chromium_starboard_conversions.h
  4. chromium_starboard_conversions_test.cc
  5. client_stats_tracker.cc
  6. client_stats_tracker.h
  7. client_stats_tracker_test.cc
  8. demuxer_stream_reader.cc
  9. demuxer_stream_reader.h
  10. demuxer_stream_reader_test.cc
  11. geometry_change_handler.cc
  12. geometry_change_handler.h
  13. geometry_change_handler_test.cc
  14. README.md
  15. starboard_buffering_tracker.cc
  16. starboard_buffering_tracker.h
  17. starboard_buffering_tracker_test.cc
  18. starboard_player_manager.cc
  19. starboard_player_manager.h
  20. starboard_player_manager_test.cc
  21. starboard_renderer.cc
  22. starboard_renderer.h
  23. starboard_renderer_test.cc
chromecast/starboard/media/renderer/README.md

This directory contains the StarboardRenderer class and other helper classes that implement various parts of the renderer's functionality.

This code is meant to replace CastRenderer and the CMA pipeline, specifically for use in linux cast builds. It offers several advantages over the CMA pipeline:

  • Fewer buffer copies. CMA passes buffers as raw ptrs; due to the lifetime model of buffers in Starboard, we needed to make a copy of each buffer to ensure that it was not deleted before Starboard was done using it. Chromium's APIs use scoped_refptrs, and we take advantage of that to control buffer lifetimes.
  • Fewer type conversions. CMA has its own copies of many media structs (e.g. ::chromecast::media::VideoConfig instead of ::media::VideoDecoderConfig). This code simply uses the chromium structs.
  • Less code (and hopefully simpler code). This code is designed specifically to make use of Starboard APIs for decrypting/decoding/rendering.

See https://github.com/youtube/cobalt/tree/main/starboard for details about Starboard APIs, and see here for the CMA code that can be replaced by this code.