1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef CONTENT_RENDERER_MEDIA_WEBSOURCEBUFFER_IMPL_H_
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define CONTENT_RENDERER_MEDIA_WEBSOURCEBUFFER_IMPL_H_
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <string>
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/basictypes.h"
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/compiler_specific.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "third_party/WebKit/public/platform/WebSourceBuffer.h"
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace media {
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ChunkDemuxer;
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace content {
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class WebSourceBufferImpl : public blink::WebSourceBuffer {
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public:
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  WebSourceBufferImpl(const std::string& id, media::ChunkDemuxer* demuxer);
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual ~WebSourceBufferImpl();
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // blink::WebSourceBuffer implementation.
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebTimeRanges buffered() OVERRIDE;
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void append(const unsigned char* data, unsigned length) OVERRIDE;
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void abort() OVERRIDE;
29bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  // TODO(acolwell): Add OVERRIDE when Blink-side changes land.
30bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch  virtual void remove(double start, double end);
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool setTimestampOffset(double offset) OVERRIDE;
32558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  // TODO(acolwell): Add OVERRIDE when Blink-side changes land.
33558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  virtual void setAppendWindowStart(double start);
34558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  virtual void setAppendWindowEnd(double end);
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void removedFromMediaSource() OVERRIDE;
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private:
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  std::string id_;
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  media::ChunkDemuxer* demuxer_;  // Owned by WebMediaPlayerImpl.
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(WebSourceBufferImpl);
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}  // namespace content
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif  // CONTENT_RENDERER_MEDIA_WEBSOURCEBUFFER_IMPL_H_
47