Index: services/media/framework/stream_type.h |
diff --git a/services/media/framework/stream_type.h b/services/media/framework/stream_type.h |
index 84d4456ca2fa60e0e1ab4330245f736b64f63b36..aaa313602e41db5f1afe49e006799f1cc7febccc 100644 |
--- a/services/media/framework/stream_type.h |
+++ b/services/media/framework/stream_type.h |
@@ -6,49 +6,29 @@ |
#define SERVICES_MEDIA_FRAMEWORK_STREAM_TYPE_H_ |
#include <cstring> |
+#include <memory> |
#include <string> |
#include <vector> |
#include "base/logging.h" |
-#include "services/media/framework/ptr.h" |
namespace mojo { |
namespace media { |
class StreamType; |
-class StreamTypes; |
class MultiplexedStreamType; |
class LpcmStreamType; |
class CompressedAudioStreamType; |
class VideoStreamType; |
-typedef UniquePtr<StreamType> StreamTypePtr; |
-typedef UniquePtr<StreamTypes> StreamTypesPtr; |
- |
-// TODO(dalesat): Get rid of this class. |
-class StreamTypes : public std::vector<StreamTypePtr> { |
- public: |
- static StreamTypesPtr Create(size_t size) { |
- return StreamTypesPtr(new StreamTypes(size)); |
- } |
- |
- explicit StreamTypes(size_t size) : std::vector<StreamTypePtr>(size) {} |
- |
- StreamTypesPtr Clone() const; |
-}; |
- |
-class Bytes; |
-typedef UniquePtr<Bytes> BytesPtr; |
- |
-// TODO(dalesat): Get rid of this class. |
-class Bytes : public std::vector<uint8_t> { |
+class Bytes { |
public: |
- static BytesPtr Create(size_t size) { |
- return BytesPtr(new Bytes(size)); |
+ static std::unique_ptr<Bytes> Create(size_t size) { |
+ return std::unique_ptr<Bytes>(new Bytes(size)); |
} |
- static BytesPtr Create(uint8_t* data, size_t size) { |
- BytesPtr result = Create(size); |
+ static std::unique_ptr<Bytes> Create(const uint8_t* data, size_t size) { |
+ std::unique_ptr<Bytes> result = Create(size); |
if (size != 0) { |
DCHECK(result->data()); |
DCHECK(data); |
@@ -57,11 +37,20 @@ class Bytes : public std::vector<uint8_t> { |
return result; |
} |
- explicit Bytes(size_t size) : std::vector<uint8_t>(size) {} |
+ ~Bytes(); |
+ |
+ std::unique_ptr<Bytes> Clone() const; |
+ |
+ uint8_t* data() { return storage_.data(); } |
- explicit Bytes(const Bytes& copy_from) : std::vector<uint8_t>(copy_from) {} |
+ const uint8_t* data() const { return storage_.data(); } |
- BytesPtr Clone() const; |
+ size_t size() const { return storage_.size(); } |
+ |
+ private: |
+ explicit Bytes(size_t size); |
+ |
+ std::vector<uint8_t> storage_; |
}; |
// Describes the type of a stream. |
@@ -84,8 +73,8 @@ class StreamType { |
kVideo |
}; |
- static StreamTypePtr Create(Scheme scheme) { |
- return StreamTypePtr(new StreamType(scheme)); |
+ static std::unique_ptr<StreamType> Create(Scheme scheme) { |
+ return std::unique_ptr<StreamType>(new StreamType(scheme)); |
} |
explicit StreamType(Scheme scheme); |
@@ -101,7 +90,7 @@ class StreamType { |
virtual const CompressedAudioStreamType* compressed_audio() const; |
virtual const VideoStreamType* video() const; |
- virtual StreamTypePtr Clone() const; |
+ virtual std::unique_ptr<StreamType> Clone() const; |
private: |
Scheme scheme_; |
@@ -122,32 +111,16 @@ struct Range { |
}; |
class StreamTypeSet; |
-class StreamTypeSets; |
class MultiplexedStreamTypeSet; |
class LpcmStreamTypeSet; |
class CompressedAudioStreamTypeSet; |
class VideoStreamTypeSet; |
-typedef UniquePtr<StreamTypeSet> StreamTypeSetPtr; |
-typedef UniquePtr<StreamTypeSets> StreamTypeSetsPtr; |
- |
-// TODO(dalesat): Get rid of this class. |
-class StreamTypeSets : public std::vector<StreamTypeSetPtr> { |
- public: |
- static StreamTypeSetsPtr Create(size_t size) { |
- return StreamTypeSetsPtr(new StreamTypeSets(size)); |
- } |
- |
- StreamTypeSets(size_t size) : std::vector<StreamTypeSetPtr>(size) {} |
- |
- StreamTypeSetsPtr Clone() const; |
-}; |
- |
// Describes a set of possible stream types. |
class StreamTypeSet { |
public: |
- static StreamTypeSetPtr Create(StreamType::Scheme scheme) { |
- return StreamTypeSetPtr(new StreamTypeSet(scheme)); |
+ static std::unique_ptr<StreamTypeSet> Create(StreamType::Scheme scheme) { |
+ return std::unique_ptr<StreamTypeSet>(new StreamTypeSet(scheme)); |
} |
StreamTypeSet(StreamType::Scheme scheme); |
@@ -163,7 +136,7 @@ class StreamTypeSet { |
virtual const CompressedAudioStreamTypeSet* compressed_audio() const; |
virtual const VideoStreamTypeSet* video() const; |
- virtual StreamTypeSetPtr Clone() const; |
+ virtual std::unique_ptr<StreamTypeSet> Clone() const; |
private: |
StreamType::Scheme scheme_; |
@@ -172,71 +145,78 @@ class StreamTypeSet { |
// Describes the type of a multiplexed stream. |
class MultiplexedStreamType : public StreamType { |
public: |
- static StreamTypePtr Create( |
- StreamTypePtr multiplex_type, |
- StreamTypesPtr substream_types) { |
- return StreamTypePtr( |
+ static std::unique_ptr<StreamType> Create( |
+ std::unique_ptr<StreamType> multiplex_type, |
+ std::unique_ptr<std::vector<std::unique_ptr<StreamType>>> |
+ substream_types) { |
+ return std::unique_ptr<StreamType>( |
new MultiplexedStreamType( |
std::move(multiplex_type), |
std::move(substream_types))); |
} |
MultiplexedStreamType( |
- StreamTypePtr multiplex_type, |
- StreamTypesPtr substream_types); |
+ std::unique_ptr<StreamType> multiplex_type, |
+ std::unique_ptr<std::vector<std::unique_ptr<StreamType>>> |
+ substream_types); |
~MultiplexedStreamType() override; |
const MultiplexedStreamType* multiplexed() const override; |
- const StreamTypePtr& multiplex_type() const { |
+ const std::unique_ptr<StreamType>& multiplex_type() const { |
return multiplex_type_; |
} |
- const StreamTypesPtr& substream_types() const { |
+ const std::unique_ptr<std::vector<std::unique_ptr<StreamType>>>& |
+ substream_types() const { |
return substream_types_; |
} |
- StreamTypePtr Clone() const override; |
+ std::unique_ptr<StreamType> Clone() const override; |
private: |
- StreamTypePtr multiplex_type_; |
- StreamTypesPtr substream_types_; |
+ std::unique_ptr<StreamType> multiplex_type_; |
+ std::unique_ptr<std::vector<std::unique_ptr<StreamType>>> substream_types_; |
}; |
// Describes the type of a multiplexed stream. |
class MultiplexedStreamTypeSet : public StreamTypeSet { |
public: |
- static StreamTypeSetPtr Create( |
- StreamTypeSetPtr multiplex_type_set, |
- StreamTypeSetsPtr substream_type_sets) { |
- return StreamTypeSetPtr( |
+ static std::unique_ptr<StreamTypeSet> Create( |
+ std::unique_ptr<StreamTypeSet> multiplex_type_set, |
+ std::unique_ptr<std::vector<std::unique_ptr<StreamTypeSet>>> |
+ substream_type_sets) { |
+ return std::unique_ptr<StreamTypeSet>( |
new MultiplexedStreamTypeSet( |
std::move(multiplex_type_set), |
std::move(substream_type_sets))); |
} |
MultiplexedStreamTypeSet( |
- StreamTypeSetPtr multiplex_type_set, |
- StreamTypeSetsPtr substream_type_sets); |
+ std::unique_ptr<StreamTypeSet> multiplex_type_set, |
+ std::unique_ptr<std::vector<std::unique_ptr<StreamTypeSet>>> |
+ substream_type_sets); |
~MultiplexedStreamTypeSet() override; |
const MultiplexedStreamTypeSet* multiplexed() const override; |
- const StreamTypeSetPtr& multiplex_type_set() const { |
+ const std::unique_ptr<StreamTypeSet>& multiplex_type_set() const { |
return multiplex_type_set_; |
} |
- const StreamTypeSetsPtr& substream_type_sets() const { |
+ const std::unique_ptr<std::vector<std::unique_ptr<StreamTypeSet>>>& |
+ substream_type_sets() const { |
return substream_type_sets_; |
} |
- StreamTypeSetPtr Clone() const override; |
+ std::unique_ptr<StreamTypeSet> Clone() const override; |
private: |
- StreamTypeSetPtr multiplex_type_set_; |
- StreamTypeSetsPtr substream_type_sets_; |
+ std::unique_ptr<StreamTypeSet> multiplex_type_set_; |
+ std::unique_ptr<std::vector<std::unique_ptr<StreamTypeSet>>> |
+ substream_type_sets_; |
}; |
// Describes the type of an LPCM stream. |
@@ -251,11 +231,11 @@ class LpcmStreamType : public StreamType { |
kFloat |
}; |
- static StreamTypePtr Create( |
+ static std::unique_ptr<StreamType> Create( |
SampleFormat sample_format, |
uint32_t channels, |
uint32_t frames_per_second) { |
- return StreamTypePtr(new LpcmStreamType( |
+ return std::unique_ptr<StreamType>(new LpcmStreamType( |
sample_format, |
channels, |
frames_per_second)); |
@@ -296,7 +276,7 @@ class LpcmStreamType : public StreamType { |
static uint32_t SampleSizeFromFormat(SampleFormat sample_format); |
- StreamTypePtr Clone() const override; |
+ std::unique_ptr<StreamType> Clone() const override; |
protected: |
LpcmStreamType( |
@@ -315,11 +295,11 @@ class LpcmStreamType : public StreamType { |
// Describes a set of LPCM stream types. |
class LpcmStreamTypeSet : public StreamTypeSet { |
public: |
- static StreamTypeSetPtr Create( |
+ static std::unique_ptr<StreamTypeSet> Create( |
LpcmStreamType::SampleFormat sample_format, |
Range<uint32_t> channels, |
Range<uint32_t> frames_per_second) { |
- return StreamTypeSetPtr(new LpcmStreamTypeSet( |
+ return std::unique_ptr<StreamTypeSet>(new LpcmStreamTypeSet( |
sample_format, |
channels, |
frames_per_second)); |
@@ -348,7 +328,7 @@ class LpcmStreamTypeSet : public StreamTypeSet { |
bool contains(const LpcmStreamType& type) const; |
- StreamTypeSetPtr Clone() const override; |
+ std::unique_ptr<StreamTypeSet> Clone() const override; |
protected: |
LpcmStreamTypeSet( |
@@ -372,13 +352,13 @@ class CompressedAudioStreamType : public LpcmStreamType { |
kVorbis |
}; |
- static StreamTypePtr Create( |
+ static std::unique_ptr<StreamType> Create( |
AudioEncoding encoding, |
SampleFormat sample_format, |
uint32_t channels, |
uint32_t frames_per_second, |
- BytesPtr encoding_details) { |
- return StreamTypePtr(new CompressedAudioStreamType( |
+ std::unique_ptr<Bytes> encoding_details) { |
+ return std::unique_ptr<StreamType>(new CompressedAudioStreamType( |
encoding, |
sample_format, |
channels, |
@@ -391,7 +371,7 @@ class CompressedAudioStreamType : public LpcmStreamType { |
SampleFormat sample_format, |
uint32_t channels, |
uint32_t frames_per_second, |
- BytesPtr encoding_details); |
+ std::unique_ptr<Bytes> encoding_details); |
~CompressedAudioStreamType() override; |
@@ -401,26 +381,26 @@ class CompressedAudioStreamType : public LpcmStreamType { |
return encoding_; |
} |
- const BytesPtr& encoding_details() const { |
+ const std::unique_ptr<Bytes>& encoding_details() const { |
return encoding_details_; |
} |
- StreamTypePtr Clone() const override; |
+ std::unique_ptr<StreamType> Clone() const override; |
private: |
AudioEncoding encoding_; |
- BytesPtr encoding_details_; |
+ std::unique_ptr<Bytes> encoding_details_; |
}; |
// Describes a set of compressed audio stream types. |
class CompressedAudioStreamTypeSet : public LpcmStreamTypeSet { |
public: |
- static StreamTypeSetPtr Create( |
+ static std::unique_ptr<StreamTypeSet> Create( |
CompressedAudioStreamType::AudioEncoding encoding, |
CompressedAudioStreamType::SampleFormat sample_format, |
Range<uint32_t> channels, |
Range<uint32_t> frames_per_second) { |
- return StreamTypeSetPtr(new CompressedAudioStreamTypeSet( |
+ return std::unique_ptr<StreamTypeSet>(new CompressedAudioStreamTypeSet( |
encoding, |
sample_format, |
channels, |
@@ -443,7 +423,7 @@ class CompressedAudioStreamTypeSet : public LpcmStreamTypeSet { |
bool contains(const CompressedAudioStreamType& type) const; |
- StreamTypeSetPtr Clone() const override; |
+ std::unique_ptr<StreamTypeSet> Clone() const override; |
private: |
CompressedAudioStreamType::AudioEncoding encoding_; |
@@ -502,7 +482,7 @@ class VideoStreamType : public StreamType { |
kSdRec601 |
}; |
- static StreamTypePtr Create( |
+ static std::unique_ptr<StreamType> Create( |
VideoEncoding encoding, |
VideoProfile profile, |
PixelFormat pixel_format, |
@@ -511,8 +491,8 @@ class VideoStreamType : public StreamType { |
uint32_t height, |
uint32_t coded_width, |
uint32_t coded_height, |
- BytesPtr encoding_details) { |
- return StreamTypePtr(new VideoStreamType( |
+ std::unique_ptr<Bytes> encoding_details) { |
+ return std::unique_ptr<StreamType>(new VideoStreamType( |
encoding, |
profile, |
pixel_format, |
@@ -533,7 +513,7 @@ class VideoStreamType : public StreamType { |
uint32_t height, |
uint32_t coded_width, |
uint32_t coded_height, |
- BytesPtr encoding_details); |
+ std::unique_ptr<Bytes> encoding_details); |
~VideoStreamType() override; |
@@ -571,11 +551,11 @@ class VideoStreamType : public StreamType { |
return coded_height_; |
} |
- const BytesPtr& encoding_details() const { |
+ const std::unique_ptr<Bytes>& encoding_details() const { |
return encoding_details_; |
} |
- StreamTypePtr Clone() const override; |
+ std::unique_ptr<StreamType> Clone() const override; |
private: |
VideoEncoding encoding_; |
@@ -586,17 +566,17 @@ class VideoStreamType : public StreamType { |
uint32_t height_; |
uint32_t coded_width_; |
uint32_t coded_height_; |
- BytesPtr encoding_details_; |
+ std::unique_ptr<Bytes> encoding_details_; |
}; |
// Describes a set of video stream types. |
class VideoStreamTypeSet : public StreamTypeSet { |
public: |
- static StreamTypeSetPtr Create( |
+ static std::unique_ptr<StreamTypeSet> Create( |
VideoStreamType::VideoEncoding encoding, |
Range<uint32_t> width, |
Range<uint32_t> height) { |
- return StreamTypeSetPtr(new VideoStreamTypeSet( |
+ return std::unique_ptr<StreamTypeSet>(new VideoStreamTypeSet( |
encoding, |
width, |
height)); |
@@ -623,7 +603,7 @@ class VideoStreamTypeSet : public StreamTypeSet { |
return height_; |
} |
- StreamTypeSetPtr Clone() const override; |
+ std::unique_ptr<StreamTypeSet> Clone() const override; |
private: |
VideoStreamType::VideoEncoding encoding_; |