OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ | 5 #ifndef CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ |
6 #define CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ | 6 #define CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
11 #include "base/time/time.h" | 11 #include "base/time/time.h" |
12 #include "chromecast/public/media/stream_id.h" | 12 #include "chromecast/public/media/stream_id.h" |
13 | 13 |
14 namespace media { | |
15 class DecryptConfig; | |
16 } | |
17 | |
18 namespace chromecast { | 14 namespace chromecast { |
19 namespace media { | 15 namespace media { |
| 16 class CastDecryptConfig; |
20 | 17 |
21 // DecoderBufferBase exposes only the properties of an audio/video buffer. | 18 // DecoderBufferBase exposes only the properties of an audio/video buffer. |
22 // The way a DecoderBufferBase is created and organized in memory | 19 // The way a DecoderBufferBase is created and organized in memory |
23 // is left as a detail of the implementation of derived classes. | 20 // is left as a detail of the implementation of derived classes. |
24 class DecoderBufferBase | 21 class DecoderBufferBase |
25 : public base::RefCountedThreadSafe<DecoderBufferBase> { | 22 : public base::RefCountedThreadSafe<DecoderBufferBase> { |
26 public: | 23 public: |
27 DecoderBufferBase(); | 24 DecoderBufferBase() {} |
28 | 25 |
29 // Returns the stream id of this decoder buffer belonging to. it's optional | 26 // Returns the stream id of this decoder buffer belonging to. it's optional |
30 // and default value is kPrimary. | 27 // and default value is kPrimary. |
31 virtual StreamId stream_id() const = 0; | 28 virtual StreamId stream_id() const = 0; |
32 | 29 |
33 // Returns the PTS of the frame. | 30 // Returns the PTS of the frame. |
34 virtual base::TimeDelta timestamp() const = 0; | 31 virtual base::TimeDelta timestamp() const = 0; |
35 | 32 |
36 // Sets the PTS of the frame. | 33 // Sets the PTS of the frame. |
37 virtual void set_timestamp(const base::TimeDelta& timestamp) = 0; | 34 virtual void set_timestamp(base::TimeDelta timestamp) = 0; |
38 | 35 |
39 // Gets the frame data. | 36 // Gets the frame data. |
40 virtual const uint8* data() const = 0; | 37 virtual const uint8* data() const = 0; |
41 virtual uint8* writable_data() const = 0; | 38 virtual uint8* writable_data() const = 0; |
42 | 39 |
43 // Returns the size of the frame in bytes. | 40 // Returns the size of the frame in bytes. |
44 virtual size_t data_size() const = 0; | 41 virtual size_t data_size() const = 0; |
45 | 42 |
46 // Returns the decrypt configuration. | 43 // Returns the decrypt configuration. |
47 // Returns NULL if the buffer has no decrypt info. | 44 // Returns NULL if the buffer has no decrypt info. |
48 virtual const ::media::DecryptConfig* decrypt_config() const = 0; | 45 virtual const CastDecryptConfig* decrypt_config() const = 0; |
49 | 46 |
50 // Indicate if this is a special frame that indicates the end of the stream. | 47 // Indicate if this is a special frame that indicates the end of the stream. |
51 // If true, functions to access the frame content cannot be called. | 48 // If true, functions to access the frame content cannot be called. |
52 virtual bool end_of_stream() const = 0; | 49 virtual bool end_of_stream() const = 0; |
53 | 50 |
54 protected: | 51 protected: |
55 friend class base::RefCountedThreadSafe<DecoderBufferBase>; | 52 friend class base::RefCountedThreadSafe<DecoderBufferBase>; |
56 virtual ~DecoderBufferBase(); | 53 virtual ~DecoderBufferBase() {} |
57 | 54 |
58 private: | 55 private: |
59 DISALLOW_COPY_AND_ASSIGN(DecoderBufferBase); | 56 DISALLOW_COPY_AND_ASSIGN(DecoderBufferBase); |
60 }; | 57 }; |
61 | 58 |
62 } // namespace media | 59 } // namespace media |
63 } // namespace chromecast | 60 } // namespace chromecast |
64 | 61 |
65 #endif // CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ | 62 #endif // CHROMECAST_MEDIA_CMA_BASE_DECODER_BUFFER_BASE_H_ |
OLD | NEW |