Index: chromecast/media/cma/base/decoder_buffer_adapter.cc |
diff --git a/chromecast/media/cma/base/decoder_buffer_adapter.cc b/chromecast/media/cma/base/decoder_buffer_adapter.cc |
index ed8a779b5c0eb5e0f331718ab772a91ee71c3599..78b206c067a3381ad26e317087b012da7041010d 100644 |
--- a/chromecast/media/cma/base/decoder_buffer_adapter.cc |
+++ b/chromecast/media/cma/base/decoder_buffer_adapter.cc |
@@ -4,6 +4,9 @@ |
#include "chromecast/media/cma/base/decoder_buffer_adapter.h" |
+#include "chromecast/base/time_conversions.h" |
+#include "chromecast/media/cma/base/decrypt_config_impl.h" |
+#include "chromecast/public/media/decrypt_config.h" |
#include "media/base/decoder_buffer.h" |
namespace chromecast { |
@@ -27,12 +30,12 @@ StreamId DecoderBufferAdapter::stream_id() const { |
return stream_id_; |
} |
-base::TimeDelta DecoderBufferAdapter::timestamp() const { |
- return buffer_->timestamp(); |
+TimeDelta DecoderBufferAdapter::timestamp() const { |
+ return FromBaseTimeDelta(buffer_->timestamp()); |
} |
-void DecoderBufferAdapter::set_timestamp(const base::TimeDelta& timestamp) { |
- buffer_->set_timestamp(timestamp); |
+void DecoderBufferAdapter::set_timestamp(TimeDelta timestamp) { |
+ buffer_->set_timestamp(ToBaseTimeDelta(timestamp)); |
} |
const uint8* DecoderBufferAdapter::data() const { |
@@ -47,8 +50,19 @@ size_t DecoderBufferAdapter::data_size() const { |
return buffer_->data_size(); |
} |
-const ::media::DecryptConfig* DecoderBufferAdapter::decrypt_config() const { |
- return buffer_->decrypt_config(); |
+const DecryptConfig* DecoderBufferAdapter::decrypt_config() const { |
+ if (buffer_->decrypt_config() && !decrypt_config_) { |
+ const ::media::DecryptConfig* config = buffer_->decrypt_config(); |
servolk
2015/07/27 21:25:47
Nit: this conversion code should probably be in De
halliwell
2015/07/28 02:19:35
Indeed. Originally I was trying to not have Decry
|
+ std::vector<SubsampleEntry> subsamples; |
+ for (const auto& sample : config->subsamples()) { |
+ subsamples.push_back( |
+ SubsampleEntry(sample.clear_bytes, sample.cypher_bytes)); |
+ } |
+ decrypt_config_.reset( |
+ new DecryptConfigImpl(config->key_id(), config->iv(), subsamples)); |
+ } |
+ |
+ return decrypt_config_.get(); |
} |
bool DecoderBufferAdapter::end_of_stream() const { |