| Index: media/mojo/services/mojo_renderer_impl.h
|
| diff --git a/media/mojo/services/mojo_renderer_impl.h b/media/mojo/services/mojo_renderer_impl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..37e7d76bf0dd543f51ed39120d527e69884f3023
|
| --- /dev/null
|
| +++ b/media/mojo/services/mojo_renderer_impl.h
|
| @@ -0,0 +1,87 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef MEDIA_MOJO_SERVICES_MOJO_RENDERER_IMPL_H_
|
| +#define MEDIA_MOJO_SERVICES_MOJO_RENDERER_IMPL_H_
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/weak_ptr.h"
|
| +#include "media/base/renderer.h"
|
| +#include "media/mojo/interfaces/media_renderer.mojom.h"
|
| +
|
| +namespace base {
|
| +class SingleThreadTaskRunner;
|
| +}
|
| +
|
| +namespace mojo {
|
| +class ServiceProvider;
|
| +}
|
| +
|
| +namespace media {
|
| +class Demuxer;
|
| +
|
| +// A media::Renderer that proxies to a mojo::MediaRenderer. That
|
| +// mojo::MediaRenderer proxies back to the MojoRendererImpl via the
|
| +// mojo::MediaRendererClient interface.
|
| +//
|
| +// MojoRendererImpl implements media::Renderer for use as either an audio
|
| +// or video renderer.
|
| +//
|
| +// TODO(tim): Only audio is currently supported. Bug 410451.
|
| +class MojoRendererImpl : public Renderer, public mojo::MediaRendererClient {
|
| + public:
|
| + // |task_runner| is the TaskRunner on which all methods are invoked.
|
| + // |demuxer| provides encoded streams for decoding and rendering.
|
| + // |audio_renderer_provider| is a ServiceProvider from a connected
|
| + // Application that is hosting a mojo::MediaRenderer.
|
| + MojoRendererImpl(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| + Demuxer* demuxer,
|
| + mojo::ServiceProvider* audio_renderer_provider);
|
| + virtual ~MojoRendererImpl();
|
| +
|
| + // Renderer implementation.
|
| + virtual void Initialize(const base::Closure& init_cb,
|
| + const StatisticsCB& statistics_cb,
|
| + const base::Closure& ended_cb,
|
| + const PipelineStatusCB& error_cb,
|
| + const BufferingStateCB& buffering_state_cb,
|
| + const TimeDeltaCB& get_duration_cb) OVERRIDE;
|
| + virtual void Flush(const base::Closure& flush_cb) OVERRIDE;
|
| + virtual void StartPlayingFrom(base::TimeDelta time) OVERRIDE;
|
| + virtual void SetPlaybackRate(float playback_rate) OVERRIDE;
|
| + virtual void SetVolume(float volume) OVERRIDE;
|
| + virtual base::TimeDelta GetMediaTime() OVERRIDE;
|
| + virtual bool HasAudio() OVERRIDE;
|
| + virtual bool HasVideo() OVERRIDE;
|
| + virtual void SetCdm(MediaKeys* cdm) OVERRIDE;
|
| +
|
| + // mojo::MediaRendererClient implementation.
|
| + virtual void OnTimeUpdate(int64_t time_usec,
|
| + int64_t max_time_usec) MOJO_OVERRIDE;
|
| + virtual void OnBufferingStateChange(
|
| + mojo::BufferingState state) MOJO_OVERRIDE;
|
| + virtual void OnEnded() MOJO_OVERRIDE;
|
| + virtual void OnError() MOJO_OVERRIDE;
|
| +
|
| + private:
|
| + // Task runner used to execute pipeline tasks.
|
| + scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
|
| +
|
| + Demuxer* demuxer_;
|
| + mojo::MediaRendererPtr remote_audio_renderer_;
|
| +
|
| + // Callbacks passed to Initialize that we forward messages from
|
| + // |remote_audio_renderer_| through.
|
| + base::Closure ended_cb_;
|
| + PipelineStatusCB error_cb_;
|
| + BufferingStateCB buffering_state_cb_;
|
| +
|
| + base::WeakPtrFactory<MojoRendererImpl> weak_factory_;
|
| + DISALLOW_COPY_AND_ASSIGN(MojoRendererImpl);
|
| +};
|
| +
|
| +} // namespace media
|
| +
|
| +#endif // MEDIA_MOJO_SERVICES_MOJO_RENDERER_IMPL_H_
|
|
|