Load CMA backend from shared library
* CMA backend interfaces moved into chromecast/public/media
* CMA backend implementation loaded from libcast_media through
CastMediaShlib
* Backend API changes to remove dependency on Chromium types:
* DecryptContext replaced with CastKeySystem
* scoped_refptr replaced with raw pointers
* In particular, DecoderBufferBase replaced in the backend API
with non-refcounted DecoderBuffer. In order to allow us to keep
using refcounting and in particular use DecoderBufferBase in the
rest of our pipeline, it gets wrapped in a DecoderBufferImpl
(implementation of DecoderBuffer) for passing to the backend. So
backends must delete the buffer pointer they're given but this is
actually just decrementing the refcount on the underlying buffer.
* base::Callback replaced with abstract interfaces
* base::TimeDelta replaced with chromecast::TimeDelta in backend
interface, essentially a stripped-down copy
* NonThreadSafe removed (implementations can use ThreadChecker)
* TaskRunner interface provides PostTask/PostDelayedTask service to
backend implementations
* Backend ownership / factory model changed. Now, backend
implementations return a MediaPipelineBackend which manages ownership
and hookup of all the components. It returns access to them as raw
pointers. The pipeline manages the lifetime of the MediaPipelineBackend
instance.
* GetIsCodecSupportedOnChromecast refactored to remove calls back into
cast_shell from backends (implementation can just return 'default' to
indicate default logic should apply, including HDMI capabilities.
BUG=508534
Review URL: https://codereview.chromium.org/1257013003
Cr-Commit-Position: refs/heads/master@{#342370}
104 files changed