summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chromecast/common/media/cma_param_traits.cc71
-rw-r--r--chromecast/common/media/cma_param_traits.h10
-rw-r--r--chromecast/common/media/cma_param_traits_macros.h2
-rw-r--r--chromecast/media/audio/cast_audio_output_stream.cc1
-rw-r--r--chromecast/media/audio/cast_audio_output_stream_unittest.cc2
-rw-r--r--chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc5
-rw-r--r--chromecast/media/cma/base/decoder_config_adapter.cc67
-rw-r--r--chromecast/media/cma/base/demuxer_stream_for_test.cc2
-rw-r--r--chromecast/media/cma/ipc_streamer/BUILD.gn2
-rw-r--r--chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc9
-rw-r--r--chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.cc54
-rw-r--r--chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h27
-rw-r--r--chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc9
-rw-r--r--chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc4
-rw-r--r--chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc4
-rw-r--r--chromecast/media/cma/test/mock_frame_provider.cc4
-rw-r--r--chromecast/media/media.gyp2
-rw-r--r--chromecast/public/media/decoder_config.h83
-rw-r--r--content/common/gpu/media/video_encode_accelerator_unittest.cc6
-rw-r--r--content/renderer/pepper/video_decoder_shim.cc2
-rw-r--r--media/base/BUILD.gn2
-rw-r--r--media/base/audio_decoder_config.cc25
-rw-r--r--media/base/audio_decoder_config.h14
-rw-r--r--media/base/encryption_scheme.cc37
-rw-r--r--media/base/encryption_scheme.h79
-rw-r--r--media/base/fake_demuxer_stream.cc10
-rw-r--r--media/base/media_util.cc9
-rw-r--r--media/base/media_util.h6
-rw-r--r--media/base/test_helpers.cc9
-rw-r--r--media/base/video_decoder_config.cc33
-rw-r--r--media/base/video_decoder_config.h14
-rw-r--r--media/base/video_decoder_config_unittest.cc14
-rw-r--r--media/ffmpeg/ffmpeg_common.cc47
-rw-r--r--media/ffmpeg/ffmpeg_common.h3
-rw-r--r--media/ffmpeg/ffmpeg_common_unittest.cc3
-rw-r--r--media/filters/audio_decoder_selector_unittest.cc4
-rw-r--r--media/filters/audio_decoder_unittest.cc22
-rw-r--r--media/filters/decrypting_audio_decoder_unittest.cc13
-rw-r--r--media/filters/decrypting_demuxer_stream.cc17
-rw-r--r--media/filters/decrypting_demuxer_stream_unittest.cc8
-rw-r--r--media/filters/ffmpeg_video_decoder_unittest.cc2
-rw-r--r--media/filters/frame_processor_unittest.cc2
-rw-r--r--media/filters/opus_audio_decoder.cc2
-rw-r--r--media/filters/source_buffer_stream.cc6
-rw-r--r--media/filters/source_buffer_stream_unittest.cc21
-rw-r--r--media/formats/mp2t/es_adapter_video_unittest.cc2
-rw-r--r--media/formats/mp2t/es_parser_adts.cc8
-rw-r--r--media/formats/mp2t/es_parser_h264.cc9
-rw-r--r--media/formats/mp2t/es_parser_h264.h5
-rw-r--r--media/formats/mp2t/es_parser_mpeg1audio.cc9
-rw-r--r--media/formats/mp4/mp4_stream_parser.cc11
-rw-r--r--media/formats/mpeg/mpeg_audio_stream_parser_base.cc12
-rw-r--r--media/formats/webm/webm_audio_client.cc17
-rw-r--r--media/formats/webm/webm_audio_client.h7
-rw-r--r--media/formats/webm/webm_tracks_parser.cc12
-rw-r--r--media/formats/webm/webm_video_client.cc4
-rw-r--r--media/formats/webm/webm_video_client.h7
-rw-r--r--media/media.gyp2
-rw-r--r--media/mojo/common/media_type_converters.cc92
-rw-r--r--media/mojo/common/media_type_converters.h14
-rw-r--r--media/mojo/common/media_type_converters_unittest.cc35
-rw-r--r--media/mojo/interfaces/media_types.mojom27
-rw-r--r--media/renderers/audio_renderer_impl_unittest.cc9
63 files changed, 260 insertions, 790 deletions
diff --git a/chromecast/common/media/cma_param_traits.cc b/chromecast/common/media/cma_param_traits.cc
index f0ddc49..f27043d 100644
--- a/chromecast/common/media/cma_param_traits.cc
+++ b/chromecast/common/media/cma_param_traits.cc
@@ -12,7 +12,6 @@
#include "content/public/common/common_param_traits.h"
#include "ipc/ipc_message_macros.h"
#include "media/base/audio_decoder_config.h"
-#include "media/base/encryption_scheme.h"
#include "media/base/video_decoder_config.h"
#include "ui/gfx/ipc/gfx_param_traits.h"
@@ -30,16 +29,6 @@ IPC_ENUM_TRAITS_MAX_VALUE(media::VideoPixelFormat, media::PIXEL_FORMAT_MAX)
namespace IPC {
-template <>
-struct ParamTraits<media::EncryptionScheme::Pattern> {
- typedef media::EncryptionScheme::Pattern param_type;
- static void Write(base::Pickle* m, const param_type& p);
- static bool Read(const base::Pickle* m, base::PickleIterator* iter,
- param_type* r);
- static void Log(const param_type& p, std::string* l);
-};
-
-
void ParamTraits<media::AudioDecoderConfig>::Write(
base::Pickle* m,
const media::AudioDecoderConfig& p) {
@@ -47,7 +36,7 @@ void ParamTraits<media::AudioDecoderConfig>::Write(
WriteParam(m, p.sample_format());
WriteParam(m, p.channel_layout());
WriteParam(m, p.samples_per_second());
- WriteParam(m, p.encryption_scheme());
+ WriteParam(m, p.is_encrypted());
WriteParam(m, p.extra_data());
}
@@ -59,17 +48,15 @@ bool ParamTraits<media::AudioDecoderConfig>::Read(
media::SampleFormat sample_format;
media::ChannelLayout channel_layout;
int samples_per_second;
- media::EncryptionScheme encryption_scheme;
+ bool is_encrypted;
std::vector<uint8_t> extra_data;
if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &sample_format) ||
!ReadParam(m, iter, &channel_layout) ||
!ReadParam(m, iter, &samples_per_second) ||
- !ReadParam(m, iter, &encryption_scheme) ||
- !ReadParam(m, iter, &extra_data))
+ !ReadParam(m, iter, &is_encrypted) || !ReadParam(m, iter, &extra_data))
return false;
*r = media::AudioDecoderConfig(codec, sample_format, channel_layout,
- samples_per_second, extra_data,
- encryption_scheme);
+ samples_per_second, extra_data, is_encrypted);
return true;
}
@@ -88,7 +75,7 @@ void ParamTraits<media::VideoDecoderConfig>::Write(
WriteParam(m, p.coded_size());
WriteParam(m, p.visible_rect());
WriteParam(m, p.natural_size());
- WriteParam(m, p.encryption_scheme());
+ WriteParam(m, p.is_encrypted());
WriteParam(m, p.extra_data());
}
@@ -103,18 +90,17 @@ bool ParamTraits<media::VideoDecoderConfig>::Read(
gfx::Size coded_size;
gfx::Rect visible_rect;
gfx::Size natural_size;
- media::EncryptionScheme encryption_scheme;
+ bool is_encrypted;
std::vector<uint8_t> extra_data;
if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &profile) ||
!ReadParam(m, iter, &format) || !ReadParam(m, iter, &color_space) ||
!ReadParam(m, iter, &coded_size) || !ReadParam(m, iter, &visible_rect) ||
!ReadParam(m, iter, &natural_size) ||
- !ReadParam(m, iter, &encryption_scheme) ||
- !ReadParam(m, iter, &extra_data))
+ !ReadParam(m, iter, &is_encrypted) || !ReadParam(m, iter, &extra_data))
return false;
*r = media::VideoDecoderConfig(codec, profile, format, color_space,
coded_size, visible_rect, natural_size,
- extra_data, encryption_scheme);
+ extra_data, is_encrypted);
return true;
}
@@ -123,45 +109,4 @@ void ParamTraits<media::VideoDecoderConfig>::Log(
l->append(base::StringPrintf("<VideoDecoderConfig>"));
}
-void ParamTraits<media::EncryptionScheme>::Write(
- base::Pickle* m, const param_type& p) {
- WriteParam(m, p.mode());
- WriteParam(m, p.pattern());
-}
-
-bool ParamTraits<media::EncryptionScheme>::Read(
- const base::Pickle* m, base::PickleIterator* iter, param_type* r) {
- media::EncryptionScheme::CipherMode mode;
- media::EncryptionScheme::Pattern pattern;
- if (!ReadParam(m, iter, &mode) || !ReadParam(m, iter, &pattern))
- return false;
- *r = media::EncryptionScheme(mode, pattern);
- return true;
-}
-
-void ParamTraits<media::EncryptionScheme>::Log(
- const param_type& p, std::string* l) {
- l->append(base::StringPrintf("<EncryptionScheme>"));
-}
-
-void ParamTraits<media::EncryptionScheme::Pattern>::Write(
- base::Pickle* m, const param_type& p) {
- WriteParam(m, p.encrypt_blocks());
- WriteParam(m, p.skip_blocks());
-}
-
-bool ParamTraits<media::EncryptionScheme::Pattern>::Read(
- const base::Pickle* m, base::PickleIterator* iter, param_type* r) {
- uint32_t encrypt_blocks, skip_blocks;
- if (!ReadParam(m, iter, &encrypt_blocks) || !ReadParam(m, iter, &skip_blocks))
- return false;
- *r = media::EncryptionScheme::Pattern(encrypt_blocks, skip_blocks);
- return true;
-}
-
-void ParamTraits<media::EncryptionScheme::Pattern>::Log(
- const param_type& p, std::string* l) {
- l->append(base::StringPrintf("<Pattern>"));
-}
-
} // namespace IPC
diff --git a/chromecast/common/media/cma_param_traits.h b/chromecast/common/media/cma_param_traits.h
index 879bbf1..c8609a5 100644
--- a/chromecast/common/media/cma_param_traits.h
+++ b/chromecast/common/media/cma_param_traits.h
@@ -10,7 +10,6 @@
namespace media {
class AudioDecoderConfig;
class VideoDecoderConfig;
-class EncryptionScheme;
}
namespace IPC {
@@ -35,15 +34,6 @@ struct ParamTraits<media::VideoDecoderConfig> {
static void Log(const param_type& p, std::string* l);
};
-template <>
-struct ParamTraits<media::EncryptionScheme> {
- typedef media::EncryptionScheme param_type;
- static void Write(base::Pickle* m, const param_type& p);
- static bool Read(const base::Pickle* m, base::PickleIterator* iter,
- param_type* r);
- static void Log(const param_type& p, std::string* l);
-};
-
} // namespace IPC
#endif // CHROMECAST_COMMON_MEDIA_CMA_PARAM_TRAITS_H_
diff --git a/chromecast/common/media/cma_param_traits_macros.h b/chromecast/common/media/cma_param_traits_macros.h
index 2aae996..a25e53f 100644
--- a/chromecast/common/media/cma_param_traits_macros.h
+++ b/chromecast/common/media/cma_param_traits_macros.h
@@ -44,8 +44,6 @@ IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::VideoCodec,
media::VideoCodec::kUnknownVideoCodec,
media::VideoCodec::kVideoCodecMax)
IPC_ENUM_TRAITS_MAX_VALUE(media::ColorSpace, media::COLOR_SPACE_MAX)
-IPC_ENUM_TRAITS_MAX_VALUE(media::EncryptionScheme::CipherMode,
- media::EncryptionScheme::CIPHER_MODE_MAX);
IPC_STRUCT_TRAITS_BEGIN(media::PipelineStatistics)
IPC_STRUCT_TRAITS_MEMBER(audio_bytes_decoded)
diff --git a/chromecast/media/audio/cast_audio_output_stream.cc b/chromecast/media/audio/cast_audio_output_stream.cc
index fc91d50..ec415d7 100644
--- a/chromecast/media/audio/cast_audio_output_stream.cc
+++ b/chromecast/media/audio/cast_audio_output_stream.cc
@@ -47,6 +47,7 @@ MediaPipelineBackend::AudioDecoder* InitializeBackend(
audio_config.bytes_per_channel = audio_params.bits_per_sample() / 8;
audio_config.channel_number = audio_params.channels();
audio_config.samples_per_second = audio_params.sample_rate();
+ audio_config.is_encrypted = false;
if (!decoder->SetConfig(audio_config))
return nullptr;
diff --git a/chromecast/media/audio/cast_audio_output_stream_unittest.cc b/chromecast/media/audio/cast_audio_output_stream_unittest.cc
index 8402a6a..a8ad0f0 100644
--- a/chromecast/media/audio/cast_audio_output_stream_unittest.cc
+++ b/chromecast/media/audio/cast_audio_output_stream_unittest.cc
@@ -385,7 +385,7 @@ TEST_F(CastAudioOutputStreamTest, Format) {
const AudioConfig& audio_config = audio_decoder->config();
EXPECT_EQ(kCodecPCM, audio_config.codec);
EXPECT_EQ(kSampleFormatS16, audio_config.sample_format);
- EXPECT_FALSE(audio_config.encryption_scheme.is_encrypted());
+ EXPECT_FALSE(audio_config.is_encrypted);
CloseStream(stream);
}
diff --git a/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc b/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc
index 18de287..7fd2d1d 100644
--- a/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc
+++ b/chromecast/media/cma/backend/audio_video_pipeline_device_unittest.cc
@@ -35,7 +35,6 @@
#include "media/base/audio_decoder_config.h"
#include "media/base/audio_timestamp_helper.h"
#include "media/base/decoder_buffer.h"
-#include "media/base/encryption_scheme.h"
#include "media/base/video_decoder_config.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -69,7 +68,7 @@ VideoConfig DefaultVideoConfig() {
default_config.codec = kCodecH264;
default_config.profile = kH264Main;
default_config.additional_config = nullptr;
- default_config.encryption_scheme = Unencrypted();
+ default_config.is_encrypted = false;
return default_config;
}
@@ -565,7 +564,7 @@ scoped_ptr<BufferFeeder> BufferFeeder::LoadVideo(MediaPipelineBackend* backend,
video_config.codec = kCodecH264;
video_config.profile = kH264Main;
video_config.additional_config = nullptr;
- video_config.encryption_scheme = Unencrypted();
+ video_config.is_encrypted = false;
} else {
base::FilePath file_path = GetTestDataFilePath(filename);
DemuxResult demux_result = FFmpegDemuxForTest(file_path, false /* audio */);
diff --git a/chromecast/media/cma/base/decoder_config_adapter.cc b/chromecast/media/cma/base/decoder_config_adapter.cc
index 24e8b41..3a8ab39 100644
--- a/chromecast/media/cma/base/decoder_config_adapter.cc
+++ b/chromecast/media/cma/base/decoder_config_adapter.cc
@@ -85,7 +85,7 @@ VideoCodec ToVideoCodec(const ::media::VideoCodec video_codec) {
// Converts ::media::VideoCodecProfile to chromecast::media::VideoProfile.
VideoProfile ToVideoProfile(const ::media::VideoCodecProfile codec_profile) {
- switch (codec_profile) {
+ switch(codec_profile) {
case ::media::H264PROFILE_BASELINE:
return kH264Baseline;
case ::media::H264PROFILE_MAIN:
@@ -183,62 +183,6 @@ VideoProfile ToVideoProfile(const ::media::VideoCodecProfile codec_profile) {
}
}
-::media::EncryptionScheme::CipherMode ToMediaCipherMode(
- EncryptionScheme::CipherMode mode) {
- switch (mode) {
- case EncryptionScheme::CIPHER_MODE_UNENCRYPTED:
- return ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED;
- case EncryptionScheme::CIPHER_MODE_AES_CTR:
- return ::media::EncryptionScheme::CIPHER_MODE_AES_CTR;
- case EncryptionScheme::CIPHER_MODE_AES_CBC:
- return ::media::EncryptionScheme::CIPHER_MODE_AES_CBC;
- default:
- NOTREACHED();
- return ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED;
- }
-}
-
-EncryptionScheme::CipherMode ToCipherMode(
- ::media::EncryptionScheme::CipherMode mode) {
- switch (mode) {
- case ::media::EncryptionScheme::CIPHER_MODE_UNENCRYPTED:
- return EncryptionScheme::CIPHER_MODE_UNENCRYPTED;
- case ::media::EncryptionScheme::CIPHER_MODE_AES_CTR:
- return EncryptionScheme::CIPHER_MODE_AES_CTR;
- case ::media::EncryptionScheme::CIPHER_MODE_AES_CBC:
- return EncryptionScheme::CIPHER_MODE_AES_CBC;
- default:
- NOTREACHED();
- return EncryptionScheme::CIPHER_MODE_UNENCRYPTED;
- }
-}
-
-EncryptionScheme::Pattern ToPatternSpec(
- const ::media::EncryptionScheme::Pattern& pattern) {
- return EncryptionScheme::Pattern(
- pattern.encrypt_blocks(), pattern.skip_blocks());
-}
-
-::media::EncryptionScheme::Pattern ToMediaPatternSpec(
- const EncryptionScheme::Pattern& pattern) {
- return ::media::EncryptionScheme::Pattern(
- pattern.encrypt_blocks, pattern.skip_blocks);
-}
-
-EncryptionScheme ToEncryptionScheme(
- const ::media::EncryptionScheme& scheme) {
- return EncryptionScheme(
- ToCipherMode(scheme.mode()),
- ToPatternSpec(scheme.pattern()));
-}
-
-::media::EncryptionScheme ToMediaEncryptionScheme(
- const EncryptionScheme& scheme) {
- return ::media::EncryptionScheme(
- ToMediaCipherMode(scheme.mode),
- ToMediaPatternSpec(scheme.pattern));
-}
-
} // namespace
// static
@@ -257,8 +201,7 @@ AudioConfig DecoderConfigAdapter::ToCastAudioConfig(
::media::ChannelLayoutToChannelCount(config.channel_layout()),
audio_config.samples_per_second = config.samples_per_second();
audio_config.extra_data = config.extra_data();
- audio_config.encryption_scheme = ToEncryptionScheme(
- config.encryption_scheme());
+ audio_config.is_encrypted = config.is_encrypted();
return audio_config;
}
@@ -269,8 +212,7 @@ AudioConfig DecoderConfigAdapter::ToCastAudioConfig(
ToMediaAudioCodec(config.codec),
ToMediaSampleFormat(config.sample_format),
ToMediaChannelLayout(config.channel_number), config.samples_per_second,
- config.extra_data,
- ToMediaEncryptionScheme(config.encryption_scheme));
+ config.extra_data, config.is_encrypted);
}
// static
@@ -286,8 +228,7 @@ VideoConfig DecoderConfigAdapter::ToCastVideoConfig(
video_config.codec = ToVideoCodec(config.codec());
video_config.profile = ToVideoProfile(config.profile());
video_config.extra_data = config.extra_data();
- video_config.encryption_scheme = ToEncryptionScheme(
- config.encryption_scheme());
+ video_config.is_encrypted = config.is_encrypted();
return video_config;
}
diff --git a/chromecast/media/cma/base/demuxer_stream_for_test.cc b/chromecast/media/cma/base/demuxer_stream_for_test.cc
index 32ee27b..9942545 100644
--- a/chromecast/media/cma/base/demuxer_stream_for_test.cc
+++ b/chromecast/media/cma/base/demuxer_stream_for_test.cc
@@ -63,7 +63,7 @@ void DemuxerStreamForTest::Read(const ReadCB& read_cb) {
visible_rect,
natural_size,
::media::EmptyExtraData(),
- ::media::Unencrypted());
+ false);
}
::media::DemuxerStream::Type DemuxerStreamForTest::type() const {
diff --git a/chromecast/media/cma/ipc_streamer/BUILD.gn b/chromecast/media/cma/ipc_streamer/BUILD.gn
index 7d25f45..a3429d6 100644
--- a/chromecast/media/cma/ipc_streamer/BUILD.gn
+++ b/chromecast/media/cma/ipc_streamer/BUILD.gn
@@ -14,8 +14,6 @@ source_set("ipc_streamer") {
"decoder_buffer_base_marshaller.h",
"decrypt_config_marshaller.cc",
"decrypt_config_marshaller.h",
- "encryption_scheme_marshaller.cc",
- "encryption_scheme_marshaller.h",
"video_decoder_config_marshaller.cc",
"video_decoder_config_marshaller.h",
]
diff --git a/chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc b/chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc
index 031571a..2798c6b 100644
--- a/chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc
+++ b/chromecast/media/cma/ipc_streamer/audio_decoder_config_marshaller.cc
@@ -11,7 +11,6 @@
#include "base/logging.h"
#include "chromecast/media/cma/ipc/media_message.h"
-#include "chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h"
#include "media/base/audio_decoder_config.h"
namespace chromecast {
@@ -28,7 +27,7 @@ void AudioDecoderConfigMarshaller::Write(
CHECK(msg->WritePod(config.channel_layout()));
CHECK(msg->WritePod(config.samples_per_second()));
CHECK(msg->WritePod(config.sample_format()));
- EncryptionSchemeMarshaller::Write(config.encryption_scheme(), msg);
+ CHECK(msg->WritePod(config.is_encrypted()));
CHECK(msg->WritePod(config.extra_data().size()));
if (!config.extra_data().empty())
CHECK(msg->WriteBuffer(&config.extra_data()[0],
@@ -42,15 +41,15 @@ void AudioDecoderConfigMarshaller::Write(
::media::SampleFormat sample_format;
::media::ChannelLayout channel_layout;
int samples_per_second;
+ bool is_encrypted;
size_t extra_data_size;
std::vector<uint8_t> extra_data;
- ::media::EncryptionScheme encryption_scheme;
CHECK(msg->ReadPod(&codec));
CHECK(msg->ReadPod(&channel_layout));
CHECK(msg->ReadPod(&samples_per_second));
CHECK(msg->ReadPod(&sample_format));
- encryption_scheme = EncryptionSchemeMarshaller::Read(msg);
+ CHECK(msg->ReadPod(&is_encrypted));
CHECK(msg->ReadPod(&extra_data_size));
CHECK_GE(codec, ::media::kUnknownAudioCodec);
@@ -68,7 +67,7 @@ void AudioDecoderConfigMarshaller::Write(
return ::media::AudioDecoderConfig(
codec, sample_format,
channel_layout, samples_per_second,
- extra_data, encryption_scheme);
+ extra_data, is_encrypted);
}
} // namespace media
diff --git a/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.cc b/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.cc
deleted file mode 100644
index a88cfc5..0000000
--- a/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2015 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.
-
-#include "chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h"
-
-#include <stdint.h>
-
-#include "base/logging.h"
-#include "chromecast/media/cma/ipc/media_message.h"
-
-namespace chromecast {
-namespace media {
-
-namespace {
-
-class PatternSpecMarshaller {
- public:
- static void Write(const ::media::EncryptionScheme::Pattern& pattern,
- MediaMessage* msg) {
- CHECK(msg->WritePod(pattern.encrypt_blocks()));
- CHECK(msg->WritePod(pattern.skip_blocks()));
- }
-
- static ::media::EncryptionScheme::Pattern Read(MediaMessage* msg) {
- uint32_t encrypt_blocks;
- uint32_t skip_blocks;
- CHECK(msg->ReadPod(&encrypt_blocks));
- CHECK(msg->ReadPod(&skip_blocks));
- return ::media::EncryptionScheme::Pattern(encrypt_blocks, skip_blocks);
- }
-};
-
-} // namespace
-
-// static
-void EncryptionSchemeMarshaller::Write(
- const ::media::EncryptionScheme& encryption_scheme,
- MediaMessage* msg) {
- CHECK(msg->WritePod(encryption_scheme.mode()));
- PatternSpecMarshaller::Write(encryption_scheme.pattern(), msg);
-}
-
-// static
-::media::EncryptionScheme EncryptionSchemeMarshaller::Read(MediaMessage* msg) {
- ::media::EncryptionScheme::CipherMode mode;
- ::media::EncryptionScheme::Pattern pattern;
- CHECK(msg->ReadPod(&mode));
- pattern = PatternSpecMarshaller::Read(msg);
- return ::media::EncryptionScheme(mode, pattern);
-}
-
-} // namespace media
-} // namespace chromecast
diff --git a/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h b/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h
deleted file mode 100644
index 0b3371b..0000000
--- a/chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2015 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 CHROMECAST_MEDIA_CMA_IPC_STREAMER_ENCRYPTION_SCHEME_MARSHALLER_H_
-#define CHROMECAST_MEDIA_CMA_IPC_STREAMER_ENCRYPTION_SCHEME_MARSHALLER_H_
-
-#include "media/base/encryption_scheme.h"
-
-namespace chromecast {
-namespace media {
-class MediaMessage;
-
-class EncryptionSchemeMarshaller {
- public:
- // Writes the serialized structure of |encryption_scheme| into |msg|.
- static void Write(
- const ::media::EncryptionScheme& encryption_scheme, MediaMessage* msg);
-
- // Returns an EncryptionScheme from its serialized structure.
- static ::media::EncryptionScheme Read(MediaMessage* msg);
-};
-
-} // namespace media
-} // namespace chromecast
-
-#endif // CHROMECAST_MEDIA_CMA_IPC_STREAMER_ENCRYPTION_SCHEME_MARSHALLER_H_
diff --git a/chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc b/chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc
index a471eb6..b2e9aaa 100644
--- a/chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc
+++ b/chromecast/media/cma/ipc_streamer/video_decoder_config_marshaller.cc
@@ -11,7 +11,6 @@
#include "base/logging.h"
#include "chromecast/media/cma/ipc/media_message.h"
-#include "chromecast/media/cma/ipc_streamer/encryption_scheme_marshaller.h"
#include "media/base/video_decoder_config.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
@@ -68,7 +67,7 @@ void VideoDecoderConfigMarshaller::Write(
SizeMarshaller::Write(config.coded_size(), msg);
RectMarshaller::Write(config.visible_rect(), msg);
SizeMarshaller::Write(config.natural_size(), msg);
- EncryptionSchemeMarshaller::Write(config.encryption_scheme(), msg);
+ CHECK(msg->WritePod(config.is_encrypted()));
CHECK(msg->WritePod(config.extra_data().size()));
if (!config.extra_data().empty())
CHECK(msg->WriteBuffer(&config.extra_data()[0],
@@ -85,8 +84,8 @@ void VideoDecoderConfigMarshaller::Write(
gfx::Size coded_size;
gfx::Rect visible_rect;
gfx::Size natural_size;
+ bool is_encrypted;
size_t extra_data_size;
- ::media::EncryptionScheme encryption_scheme;
std::vector<uint8_t> extra_data;
CHECK(msg->ReadPod(&codec));
@@ -96,7 +95,7 @@ void VideoDecoderConfigMarshaller::Write(
coded_size = SizeMarshaller::Read(msg);
visible_rect = RectMarshaller::Read(msg);
natural_size = SizeMarshaller::Read(msg);
- encryption_scheme = EncryptionSchemeMarshaller::Read(msg);
+ CHECK(msg->ReadPod(&is_encrypted));
CHECK(msg->ReadPod(&extra_data_size));
CHECK_GE(codec, ::media::kUnknownVideoCodec);
@@ -116,7 +115,7 @@ void VideoDecoderConfigMarshaller::Write(
return ::media::VideoDecoderConfig(
codec, profile, format, color_space,
coded_size, visible_rect, natural_size,
- extra_data, encryption_scheme);
+ extra_data, is_encrypted);
}
} // namespace media
diff --git a/chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc b/chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc
index a1cdf95..4b15bcc 100644
--- a/chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc
+++ b/chromecast/media/cma/pipeline/audio_decoder_software_wrapper.cc
@@ -59,7 +59,7 @@ bool AudioDecoderSoftwareWrapper::SetConfig(const AudioConfig& config) {
return true;
}
- if (config.is_encrypted() || !CreateSoftwareDecoder(config))
+ if (config.is_encrypted || !CreateSoftwareDecoder(config))
return false;
output_config_.codec = media::kCodecPCM;
@@ -67,7 +67,7 @@ bool AudioDecoderSoftwareWrapper::SetConfig(const AudioConfig& config) {
output_config_.channel_number = 2;
output_config_.bytes_per_channel = 2;
output_config_.samples_per_second = config.samples_per_second;
- output_config_.encryption_scheme = Unencrypted();
+ output_config_.is_encrypted = false;
return backend_decoder_->SetConfig(output_config_);
}
diff --git a/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc b/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
index eba1961..bd747dd 100644
--- a/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
+++ b/chromecast/media/cma/pipeline/audio_video_pipeline_impl_unittest.cc
@@ -66,7 +66,7 @@ class AudioVideoPipelineImplTest
::media::AudioDecoderConfig audio_config(
::media::kCodecMP3, ::media::kSampleFormatS16,
::media::CHANNEL_LAYOUT_STEREO, 44100, ::media::EmptyExtraData(),
- ::media::Unencrypted());
+ false);
AvPipelineClient client;
client.eos_cb = base::Bind(&AudioVideoPipelineImplTest::OnEos,
base::Unretained(this), STREAM_AUDIO);
@@ -80,7 +80,7 @@ class AudioVideoPipelineImplTest
::media::kCodecH264, ::media::H264PROFILE_MAIN,
::media::PIXEL_FORMAT_I420, ::media::COLOR_SPACE_UNSPECIFIED,
gfx::Size(640, 480), gfx::Rect(0, 0, 640, 480), gfx::Size(640, 480),
- ::media::EmptyExtraData(), ::media::Unencrypted()));
+ ::media::EmptyExtraData(), false));
VideoPipelineClient client;
client.av_pipeline_client.eos_cb =
base::Bind(&AudioVideoPipelineImplTest::OnEos, base::Unretained(this),
diff --git a/chromecast/media/cma/test/mock_frame_provider.cc b/chromecast/media/cma/test/mock_frame_provider.cc
index 16d6393..fdab889 100644
--- a/chromecast/media/cma/test/mock_frame_provider.cc
+++ b/chromecast/media/cma/test/mock_frame_provider.cc
@@ -82,7 +82,7 @@ void MockFrameProvider::DoRead(const ReadCB& read_cb) {
::media::kCodecH264, ::media::VIDEO_CODEC_PROFILE_UNKNOWN,
::media::PIXEL_FORMAT_YV12, ::media::COLOR_SPACE_UNSPECIFIED,
coded_size, visible_rect, natural_size, ::media::EmptyExtraData(),
- ::media::Unencrypted());
+ false);
audio_config = ::media::AudioDecoderConfig(
::media::kCodecAAC,
@@ -90,7 +90,7 @@ void MockFrameProvider::DoRead(const ReadCB& read_cb) {
::media::CHANNEL_LAYOUT_STEREO,
44100,
::media::EmptyExtraData(),
- ::media::Unencrypted());
+ false);
}
read_cb.Run(buffer, audio_config, video_config);
diff --git a/chromecast/media/media.gyp b/chromecast/media/media.gyp
index 077ea0c..6cabfc7 100644
--- a/chromecast/media/media.gyp
+++ b/chromecast/media/media.gyp
@@ -229,8 +229,6 @@
'cma/ipc_streamer/decoder_buffer_base_marshaller.h',
'cma/ipc_streamer/decrypt_config_marshaller.cc',
'cma/ipc_streamer/decrypt_config_marshaller.h',
- 'cma/ipc_streamer/encryption_scheme_marshaller.cc',
- 'cma/ipc_streamer/encryption_scheme_marshaller.h',
'cma/ipc_streamer/video_decoder_config_marshaller.cc',
'cma/ipc_streamer/video_decoder_config_marshaller.h',
],
diff --git a/chromecast/public/media/decoder_config.h b/chromecast/public/media/decoder_config.h
index b82c5c1..261b3f1 100644
--- a/chromecast/public/media/decoder_config.h
+++ b/chromecast/public/media/decoder_config.h
@@ -93,78 +93,13 @@ enum VideoProfile {
kVideoProfileMax = kDolbyVisionNonCompatible_BL_EL_MD,
};
-// Specification of whether and how the stream is encrypted (in whole or part).
-struct EncryptionScheme {
- // Algorithm and mode that was used to encrypt the stream.
- enum CipherMode {
- CIPHER_MODE_UNENCRYPTED,
- CIPHER_MODE_AES_CTR,
- CIPHER_MODE_AES_CBC
- };
-
- // CENC 3rd Edition adds pattern encryption, through two new protection
- // schemes: 'cens' (with AES-CTR) and 'cbcs' (with AES-CBC).
- // The pattern applies independently to each 'encrypted' part of the frame (as
- // defined by the relevant subsample entries), and reduces further the
- // actual encryption applied through a repeating pattern of (encrypt:skip)
- // 16 byte blocks. For example, in a (1:9) pattern, the first block is
- // encrypted, and the next nine are skipped. This pattern is applied
- // repeatedly until the end of the last 16-byte block in the subsample.
- // Any remaining bytes are left clear.
- // If either of encrypt_blocks or skip_blocks is 0, pattern encryption is
- // disabled.
- struct Pattern {
- Pattern() {}
- Pattern(uint32_t encrypt_blocks, uint32_t skip_blocks);
- ~Pattern() {}
- bool IsInEffect() const;
-
- uint32_t encrypt_blocks = 0;
- uint32_t skip_blocks = 0;
- };
-
- EncryptionScheme() {}
- EncryptionScheme(CipherMode mode, const Pattern& pattern);
- ~EncryptionScheme() {}
- bool is_encrypted() const { return mode != CIPHER_MODE_UNENCRYPTED; }
-
- CipherMode mode = CIPHER_MODE_UNENCRYPTED;
- Pattern pattern;
-};
-
-inline EncryptionScheme::Pattern::Pattern(uint32_t encrypt_blocks,
- uint32_t skip_blocks)
- : encrypt_blocks(encrypt_blocks), skip_blocks(skip_blocks) {
-}
-
-inline bool EncryptionScheme::Pattern::IsInEffect() const {
- return encrypt_blocks != 0 && skip_blocks != 0;
-}
-
-inline EncryptionScheme::EncryptionScheme(CipherMode mode,
- const Pattern& pattern)
- : mode(mode), pattern(pattern) {
-}
-
-inline EncryptionScheme Unencrypted() {
- return EncryptionScheme();
-}
-
-inline EncryptionScheme AesCtrEncryptionScheme() {
- return EncryptionScheme(EncryptionScheme::CIPHER_MODE_AES_CTR,
- EncryptionScheme::Pattern());
-}
-
-
-// TODO(erickung): Remove constructor once CMA backend implementation doesn't
+// TODO(erickung): Remove constructor once CMA backend implementation does't
// create a new object to reset the configuration and use IsValidConfig() to
// determine if the configuration is still valid or not.
struct AudioConfig {
AudioConfig();
~AudioConfig();
- bool is_encrypted() const { return encryption_scheme.is_encrypted(); }
-
// Stream id.
StreamId id;
// Audio codec.
@@ -179,8 +114,8 @@ struct AudioConfig {
int samples_per_second;
// Extra data buffer for certain codec initialization.
std::vector<uint8_t> extra_data;
- // Encryption scheme (if any) used for the content.
- EncryptionScheme encryption_scheme;
+ // content is encrypted or not.
+ bool is_encrypted;
};
inline AudioConfig::AudioConfig()
@@ -189,7 +124,8 @@ inline AudioConfig::AudioConfig()
sample_format(kUnknownSampleFormat),
bytes_per_channel(0),
channel_number(0),
- samples_per_second(0) {
+ samples_per_second(0),
+ is_encrypted(false) {
}
inline AudioConfig::~AudioConfig() {
@@ -202,8 +138,6 @@ struct VideoConfig {
VideoConfig();
~VideoConfig();
- bool is_encrypted() const { return encryption_scheme.is_encrypted(); }
-
// Stream Id.
StreamId id;
// Video codec.
@@ -216,15 +150,16 @@ struct VideoConfig {
VideoConfig* additional_config;
// Extra data buffer for certain codec initialization.
std::vector<uint8_t> extra_data;
- // Encryption scheme (if any) used for the content.
- EncryptionScheme encryption_scheme;
+ // content is encrypted or not.
+ bool is_encrypted;
};
inline VideoConfig::VideoConfig()
: id(kPrimary),
codec(kVideoCodecUnknown),
profile(kVideoProfileUnknown),
- additional_config(nullptr) {
+ additional_config(nullptr),
+ is_encrypted(false) {
}
inline VideoConfig::~VideoConfig() {
diff --git a/content/common/gpu/media/video_encode_accelerator_unittest.cc b/content/common/gpu/media/video_encode_accelerator_unittest.cc
index d0a4981..fc27cc1 100644
--- a/content/common/gpu/media/video_encode_accelerator_unittest.cc
+++ b/content/common/gpu/media/video_encode_accelerator_unittest.cc
@@ -670,13 +670,11 @@ void VideoFrameQualityValidator::Initialize(const gfx::Size& coded_size,
if (IsVP8(profile_))
config.Initialize(media::kCodecVP8, media::VP8PROFILE_ANY, kInputFormat,
media::COLOR_SPACE_UNSPECIFIED, coded_size, visible_size,
- natural_size, media::EmptyExtraData(),
- media::Unencrypted());
+ natural_size, media::EmptyExtraData(), false);
else if (IsH264(profile_))
config.Initialize(media::kCodecH264, media::H264PROFILE_MAIN, kInputFormat,
media::COLOR_SPACE_UNSPECIFIED, coded_size, visible_size,
- natural_size, media::EmptyExtraData(),
- media::Unencrypted());
+ natural_size, media::EmptyExtraData(), false);
else
LOG_ASSERT(0) << "Invalid profile " << profile_;
diff --git a/content/renderer/pepper/video_decoder_shim.cc b/content/renderer/pepper/video_decoder_shim.cc
index 92ffcdb..fbbca2e 100644
--- a/content/renderer/pepper/video_decoder_shim.cc
+++ b/content/renderer/pepper/video_decoder_shim.cc
@@ -899,7 +899,7 @@ bool VideoDecoderShim::Initialize(const Config& vda_config, Client* client) {
gfx::Size(32, 24), // Small sizes that won't fail.
gfx::Rect(32, 24), gfx::Size(32, 24),
// TODO(bbudge): Verify extra data isn't needed.
- media::EmptyExtraData(), media::Unencrypted());
+ media::EmptyExtraData(), false /* decryption */);
media_task_runner_->PostTask(
FROM_HERE,
diff --git a/media/base/BUILD.gn b/media/base/BUILD.gn
index 21f5449..ef69b2d 100644
--- a/media/base/BUILD.gn
+++ b/media/base/BUILD.gn
@@ -113,8 +113,6 @@ source_set("base") {
"djb2.cc",
"djb2.h",
"eme_constants.h",
- "encryption_scheme.cc",
- "encryption_scheme.h",
"key_system_info.cc",
"key_system_info.h",
"key_systems.cc",
diff --git a/media/base/audio_decoder_config.cc b/media/base/audio_decoder_config.cc
index 253c82b..3c1b94d 100644
--- a/media/base/audio_decoder_config.cc
+++ b/media/base/audio_decoder_config.cc
@@ -16,17 +16,18 @@ AudioDecoderConfig::AudioDecoderConfig()
channel_layout_(CHANNEL_LAYOUT_UNSUPPORTED),
samples_per_second_(0),
bytes_per_frame_(0),
- codec_delay_(0) {}
+ is_encrypted_(false),
+ codec_delay_(0) {
+}
-AudioDecoderConfig::AudioDecoderConfig(
- AudioCodec codec,
- SampleFormat sample_format,
- ChannelLayout channel_layout,
- int samples_per_second,
- const std::vector<uint8_t>& extra_data,
- const EncryptionScheme& encryption_scheme) {
+AudioDecoderConfig::AudioDecoderConfig(AudioCodec codec,
+ SampleFormat sample_format,
+ ChannelLayout channel_layout,
+ int samples_per_second,
+ const std::vector<uint8_t>& extra_data,
+ bool is_encrypted) {
Initialize(codec, sample_format, channel_layout, samples_per_second,
- extra_data, encryption_scheme, base::TimeDelta(), 0);
+ extra_data, is_encrypted, base::TimeDelta(), 0);
}
AudioDecoderConfig::AudioDecoderConfig(const AudioDecoderConfig& other) =
@@ -37,7 +38,7 @@ void AudioDecoderConfig::Initialize(AudioCodec codec,
ChannelLayout channel_layout,
int samples_per_second,
const std::vector<uint8_t>& extra_data,
- const EncryptionScheme& encryption_scheme,
+ bool is_encrypted,
base::TimeDelta seek_preroll,
int codec_delay) {
codec_ = codec;
@@ -46,7 +47,7 @@ void AudioDecoderConfig::Initialize(AudioCodec codec,
sample_format_ = sample_format;
bytes_per_channel_ = SampleFormatToBytesPerChannel(sample_format);
extra_data_ = extra_data;
- encryption_scheme_ = encryption_scheme;
+ is_encrypted_ = is_encrypted;
seek_preroll_ = seek_preroll;
codec_delay_ = codec_delay;
@@ -74,7 +75,7 @@ bool AudioDecoderConfig::Matches(const AudioDecoderConfig& config) const {
(channel_layout() == config.channel_layout()) &&
(samples_per_second() == config.samples_per_second()) &&
(extra_data() == config.extra_data()) &&
- (encryption_scheme().Matches(config.encryption_scheme())) &&
+ (is_encrypted() == config.is_encrypted()) &&
(sample_format() == config.sample_format()) &&
(seek_preroll() == config.seek_preroll()) &&
(codec_delay() == config.codec_delay()));
diff --git a/media/base/audio_decoder_config.h b/media/base/audio_decoder_config.h
index 266de82..71c8930 100644
--- a/media/base/audio_decoder_config.h
+++ b/media/base/audio_decoder_config.h
@@ -14,7 +14,6 @@
#include "base/time/time.h"
#include "media/base/audio_codecs.h"
#include "media/base/channel_layout.h"
-#include "media/base/encryption_scheme.h"
#include "media/base/media_export.h"
#include "media/base/sample_format.h"
@@ -35,7 +34,7 @@ class MEDIA_EXPORT AudioDecoderConfig {
ChannelLayout channel_layout,
int samples_per_second,
const std::vector<uint8_t>& extra_data,
- const EncryptionScheme& encryption_scheme);
+ bool is_encrypted);
AudioDecoderConfig(const AudioDecoderConfig& other);
@@ -47,7 +46,7 @@ class MEDIA_EXPORT AudioDecoderConfig {
ChannelLayout channel_layout,
int samples_per_second,
const std::vector<uint8_t>& extra_data,
- const EncryptionScheme& encryption_scheme,
+ bool is_encrypted,
base::TimeDelta seek_preroll,
int codec_delay);
@@ -80,12 +79,7 @@ class MEDIA_EXPORT AudioDecoderConfig {
// Whether the audio stream is potentially encrypted.
// Note that in a potentially encrypted audio stream, individual buffers
// can be encrypted or not encrypted.
- bool is_encrypted() const { return encryption_scheme_.is_encrypted(); }
-
- // Encryption scheme used for encrypted buffers.
- const EncryptionScheme& encryption_scheme() const {
- return encryption_scheme_;
- }
+ bool is_encrypted() const { return is_encrypted_; }
private:
AudioCodec codec_;
@@ -95,7 +89,7 @@ class MEDIA_EXPORT AudioDecoderConfig {
int samples_per_second_;
int bytes_per_frame_;
std::vector<uint8_t> extra_data_;
- EncryptionScheme encryption_scheme_;
+ bool is_encrypted_;
// |seek_preroll_| is the duration of the data that the decoder must decode
// before the decoded data is valid.
diff --git a/media/base/encryption_scheme.cc b/media/base/encryption_scheme.cc
deleted file mode 100644
index 70d133c..0000000
--- a/media/base/encryption_scheme.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2015 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.
-
-#include "media/base/encryption_scheme.h"
-
-namespace media {
-
-EncryptionScheme::Pattern::Pattern() {}
-
-EncryptionScheme::Pattern::Pattern(uint32_t encrypt_blocks,
- uint32_t skip_blocks)
- : encrypt_blocks_(encrypt_blocks), skip_blocks_(skip_blocks) {}
-
-EncryptionScheme::Pattern::~Pattern() {}
-
-bool EncryptionScheme::Pattern::Matches(const Pattern& other) const {
- return encrypt_blocks_ == other.encrypt_blocks() &&
- skip_blocks_ == other.skip_blocks();
-}
-
-bool EncryptionScheme::Pattern::IsInEffect() const {
- return encrypt_blocks_ != 0 && skip_blocks_ != 0;
-}
-
-EncryptionScheme::EncryptionScheme() {}
-
-EncryptionScheme::EncryptionScheme(CipherMode mode, const Pattern& pattern)
- : mode_(mode), pattern_(pattern) {}
-
-EncryptionScheme::~EncryptionScheme() {}
-
-bool EncryptionScheme::Matches(const EncryptionScheme& other) const {
- return mode_ == other.mode_ && pattern_.Matches(other.pattern_);
-}
-
-} // namespace media
diff --git a/media/base/encryption_scheme.h b/media/base/encryption_scheme.h
deleted file mode 100644
index 085599b..0000000
--- a/media/base/encryption_scheme.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2015 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_BASE_ENCRYPTION_SCHEME_H_
-#define MEDIA_BASE_ENCRYPTION_SCHEME_H_
-
-#include <stdint.h>
-
-#include "media/base/media_export.h"
-
-namespace media {
-
-// Specification of whether and how the stream is encrypted (in whole or part).
-class MEDIA_EXPORT EncryptionScheme {
- public:
- // Algorithm and mode used for encryption. CIPHER_MODE_UNENCRYPTED indicates
- // no encryption.
- enum CipherMode {
- CIPHER_MODE_UNENCRYPTED,
- CIPHER_MODE_AES_CTR,
- CIPHER_MODE_AES_CBC,
- CIPHER_MODE_MAX = CIPHER_MODE_AES_CBC
- };
-
- // CENC 3rd Edition adds pattern encryption, through two new protection
- // schemes: 'cens' (with AES-CTR) and 'cbcs' (with AES-CBC).
- // The pattern applies independently to each 'encrypted' part of the frame (as
- // defined by the relevant subsample entries), and reduces further the
- // actual encryption applied through a repeating pattern of (encrypt:skip)
- // 16 byte blocks. For example, in a (1:9) pattern, the first block is
- // encrypted, and the next nine are skipped. This pattern is applied
- // repeatedly until the end of the last 16-byte block in the subsample.
- // Any remaining bytes are left clear.
- // If either of encrypt_blocks or skip_blocks is 0, pattern encryption is
- // disabled.
- class Pattern {
- public:
- Pattern();
- Pattern(uint32_t encrypt_blocks, uint32_t skip_blocks);
- ~Pattern();
-
- bool Matches(const Pattern& other) const;
-
- uint32_t encrypt_blocks() const { return encrypt_blocks_; }
- uint32_t skip_blocks() const { return skip_blocks_; }
-
- bool IsInEffect() const;
-
- private:
- uint32_t encrypt_blocks_ = 0;
- uint32_t skip_blocks_ = 0;
-
- // Allow copy and assignment.
- };
-
- // The default constructor makes an instance that indicates no encryption.
- EncryptionScheme();
-
- // This constructor allows specification of the cipher mode and the pattern.
- EncryptionScheme(CipherMode mode, const Pattern& pattern);
- ~EncryptionScheme();
-
- bool Matches(const EncryptionScheme& other) const;
-
- bool is_encrypted() const { return mode_ != CIPHER_MODE_UNENCRYPTED; }
- CipherMode mode() const { return mode_; }
- const Pattern& pattern() const { return pattern_; }
-
- private:
- CipherMode mode_ = CIPHER_MODE_UNENCRYPTED;
- Pattern pattern_;
-
- // Allow copy and assignment.
-};
-
-} // namespace media
-
-#endif // MEDIA_BASE_ENCRYPTION_SCHEME_H_
diff --git a/media/base/fake_demuxer_stream.cc b/media/base/fake_demuxer_stream.cc
index 7ed5841..267b3e5 100644
--- a/media/base/fake_demuxer_stream.cc
+++ b/media/base/fake_demuxer_stream.cc
@@ -147,11 +147,11 @@ void FakeDemuxerStream::SeekToStart() {
void FakeDemuxerStream::UpdateVideoDecoderConfig() {
const gfx::Rect kVisibleRect(kStartWidth, kStartHeight);
- video_decoder_config_.Initialize(
- kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, PIXEL_FORMAT_YV12,
- COLOR_SPACE_UNSPECIFIED, next_coded_size_, kVisibleRect, next_coded_size_,
- EmptyExtraData(),
- is_encrypted_ ? AesCtrEncryptionScheme() : Unencrypted());
+ video_decoder_config_.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN,
+ PIXEL_FORMAT_YV12, COLOR_SPACE_UNSPECIFIED,
+ next_coded_size_, kVisibleRect,
+ next_coded_size_, EmptyExtraData(),
+ is_encrypted_);
next_coded_size_.Enlarge(kWidthDelta, kHeightDelta);
}
diff --git a/media/base/media_util.cc b/media/base/media_util.cc
index a6516cd2..bd7929f 100644
--- a/media/base/media_util.cc
+++ b/media/base/media_util.cc
@@ -10,13 +10,4 @@ std::vector<uint8_t> EmptyExtraData() {
return std::vector<uint8_t>();
}
-EncryptionScheme Unencrypted() {
- return EncryptionScheme();
-}
-
-EncryptionScheme AesCtrEncryptionScheme() {
- return EncryptionScheme(EncryptionScheme::CIPHER_MODE_AES_CTR,
- EncryptionScheme::Pattern());
-}
-
} // namespace media
diff --git a/media/base/media_util.h b/media/base/media_util.h
index c7ddc8b..4e53c9a 100644
--- a/media/base/media_util.h
+++ b/media/base/media_util.h
@@ -8,7 +8,6 @@
#include <stdint.h>
#include <vector>
-#include "media/base/encryption_scheme.h"
#include "media/base/media_export.h"
namespace media {
@@ -17,11 +16,6 @@ namespace media {
// constructed with empty extra data.
MEDIA_EXPORT std::vector<uint8_t> EmptyExtraData();
-// The following helper functions return new instances of EncryptionScheme that
-// indicate widely used settings.
-MEDIA_EXPORT EncryptionScheme Unencrypted();
-MEDIA_EXPORT EncryptionScheme AesCtrEncryptionScheme();
-
} // namespace media
#endif // MEDIA_BASE_UTIL_H_
diff --git a/media/base/test_helpers.cc b/media/base/test_helpers.cc
index 0ab1903..c38f629 100644
--- a/media/base/test_helpers.cc
+++ b/media/base/test_helpers.cc
@@ -129,11 +129,10 @@ static VideoDecoderConfig GetTestConfig(VideoCodec codec,
gfx::Rect visible_rect(coded_size.width(), coded_size.height());
gfx::Size natural_size = coded_size;
- return VideoDecoderConfig(
- codec, VIDEO_CODEC_PROFILE_UNKNOWN, PIXEL_FORMAT_YV12,
- COLOR_SPACE_UNSPECIFIED, coded_size, visible_rect, natural_size,
- EmptyExtraData(),
- is_encrypted ? AesCtrEncryptionScheme() : Unencrypted());
+ return VideoDecoderConfig(codec, VIDEO_CODEC_PROFILE_UNKNOWN,
+ PIXEL_FORMAT_YV12, COLOR_SPACE_UNSPECIFIED,
+ coded_size, visible_rect, natural_size,
+ EmptyExtraData(), is_encrypted);
}
static const gfx::Size kNormalSize(320, 240);
diff --git a/media/base/video_decoder_config.cc b/media/base/video_decoder_config.cc
index a0edb40..930ffd9 100644
--- a/media/base/video_decoder_config.cc
+++ b/media/base/video_decoder_config.cc
@@ -39,20 +39,20 @@ VideoCodec VideoCodecProfileToVideoCodec(VideoCodecProfile profile) {
VideoDecoderConfig::VideoDecoderConfig()
: codec_(kUnknownVideoCodec),
profile_(VIDEO_CODEC_PROFILE_UNKNOWN),
- format_(PIXEL_FORMAT_UNKNOWN) {}
+ format_(PIXEL_FORMAT_UNKNOWN),
+ is_encrypted_(false) {}
-VideoDecoderConfig::VideoDecoderConfig(
- VideoCodec codec,
- VideoCodecProfile profile,
- VideoPixelFormat format,
- ColorSpace color_space,
- const gfx::Size& coded_size,
- const gfx::Rect& visible_rect,
- const gfx::Size& natural_size,
- const std::vector<uint8_t>& extra_data,
- const EncryptionScheme& encryption_scheme) {
+VideoDecoderConfig::VideoDecoderConfig(VideoCodec codec,
+ VideoCodecProfile profile,
+ VideoPixelFormat format,
+ ColorSpace color_space,
+ const gfx::Size& coded_size,
+ const gfx::Rect& visible_rect,
+ const gfx::Size& natural_size,
+ const std::vector<uint8_t>& extra_data,
+ bool is_encrypted) {
Initialize(codec, profile, format, color_space, coded_size, visible_rect,
- natural_size, extra_data, encryption_scheme);
+ natural_size, extra_data, is_encrypted);
}
VideoDecoderConfig::VideoDecoderConfig(const VideoDecoderConfig& other) =
@@ -68,7 +68,7 @@ void VideoDecoderConfig::Initialize(VideoCodec codec,
const gfx::Rect& visible_rect,
const gfx::Size& natural_size,
const std::vector<uint8_t>& extra_data,
- const EncryptionScheme& encryption_scheme) {
+ bool is_encrypted) {
codec_ = codec;
profile_ = profile;
format_ = format;
@@ -77,7 +77,7 @@ void VideoDecoderConfig::Initialize(VideoCodec codec,
visible_rect_ = visible_rect;
natural_size_ = natural_size;
extra_data_ = extra_data;
- encryption_scheme_ = encryption_scheme;
+ is_encrypted_ = is_encrypted;
}
bool VideoDecoderConfig::IsValidConfig() const {
@@ -89,13 +89,14 @@ bool VideoDecoderConfig::IsValidConfig() const {
}
bool VideoDecoderConfig::Matches(const VideoDecoderConfig& config) const {
- return ((codec() == config.codec()) && (format() == config.format()) &&
+ return ((codec() == config.codec()) &&
+ (format() == config.format()) &&
(profile() == config.profile()) &&
(coded_size() == config.coded_size()) &&
(visible_rect() == config.visible_rect()) &&
(natural_size() == config.natural_size()) &&
(extra_data() == config.extra_data()) &&
- (encryption_scheme().Matches(config.encryption_scheme())));
+ (is_encrypted() == config.is_encrypted()));
}
std::string VideoDecoderConfig::AsHumanReadableString() const {
diff --git a/media/base/video_decoder_config.h b/media/base/video_decoder_config.h
index 50dee06..4a192d6 100644
--- a/media/base/video_decoder_config.h
+++ b/media/base/video_decoder_config.h
@@ -11,7 +11,6 @@
#include <vector>
#include "base/macros.h"
-#include "media/base/encryption_scheme.h"
#include "media/base/media_export.h"
#include "media/base/video_codecs.h"
#include "media/base/video_types.h"
@@ -39,7 +38,7 @@ class MEDIA_EXPORT VideoDecoderConfig {
const gfx::Rect& visible_rect,
const gfx::Size& natural_size,
const std::vector<uint8_t>& extra_data,
- const EncryptionScheme& encryption_scheme);
+ bool is_encrypted);
VideoDecoderConfig(const VideoDecoderConfig& other);
@@ -54,7 +53,7 @@ class MEDIA_EXPORT VideoDecoderConfig {
const gfx::Rect& visible_rect,
const gfx::Size& natural_size,
const std::vector<uint8_t>& extra_data,
- const EncryptionScheme& encryption_scheme);
+ bool is_encrypted);
// Returns true if this object has appropriate configuration values, false
// otherwise.
@@ -101,12 +100,7 @@ class MEDIA_EXPORT VideoDecoderConfig {
// Whether the video stream is potentially encrypted.
// Note that in a potentially encrypted video stream, individual buffers
// can be encrypted or not encrypted.
- bool is_encrypted() const { return encryption_scheme_.is_encrypted(); }
-
- // Encryption scheme used for encrypted buffers.
- const EncryptionScheme& encryption_scheme() const {
- return encryption_scheme_;
- }
+ bool is_encrypted() const { return is_encrypted_; }
private:
VideoCodec codec_;
@@ -121,7 +115,7 @@ class MEDIA_EXPORT VideoDecoderConfig {
std::vector<uint8_t> extra_data_;
- EncryptionScheme encryption_scheme_;
+ bool is_encrypted_;
// Not using DISALLOW_COPY_AND_ASSIGN here intentionally to allow the compiler
// generated copy constructor and assignment operator. Since the extra data is
diff --git a/media/base/video_decoder_config_unittest.cc b/media/base/video_decoder_config_unittest.cc
index 1852833..7885c8f 100644
--- a/media/base/video_decoder_config_unittest.cc
+++ b/media/base/video_decoder_config_unittest.cc
@@ -19,7 +19,7 @@ TEST(VideoDecoderConfigTest, Invalid_UnsupportedPixelFormat) {
VideoDecoderConfig config(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN,
PIXEL_FORMAT_UNKNOWN, COLOR_SPACE_UNSPECIFIED,
kCodedSize, kVisibleRect, kNaturalSize,
- EmptyExtraData(), Unencrypted());
+ EmptyExtraData(), false);
EXPECT_FALSE(config.IsValidConfig());
}
@@ -27,7 +27,7 @@ TEST(VideoDecoderConfigTest, Invalid_AspectRatioNumeratorZero) {
gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 0, 1);
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, kVideoFormat,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
- natural_size, EmptyExtraData(), Unencrypted());
+ natural_size, EmptyExtraData(), false);
EXPECT_FALSE(config.IsValidConfig());
}
@@ -35,7 +35,7 @@ TEST(VideoDecoderConfigTest, Invalid_AspectRatioDenominatorZero) {
gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, 0);
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, kVideoFormat,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
- natural_size, EmptyExtraData(), Unencrypted());
+ natural_size, EmptyExtraData(), false);
EXPECT_FALSE(config.IsValidConfig());
}
@@ -43,7 +43,7 @@ TEST(VideoDecoderConfigTest, Invalid_AspectRatioNumeratorNegative) {
gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), -1, 1);
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, kVideoFormat,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
- natural_size, EmptyExtraData(), Unencrypted());
+ natural_size, EmptyExtraData(), false);
EXPECT_FALSE(config.IsValidConfig());
}
@@ -51,7 +51,7 @@ TEST(VideoDecoderConfigTest, Invalid_AspectRatioDenominatorNegative) {
gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), 1, -1);
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, kVideoFormat,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
- natural_size, EmptyExtraData(), Unencrypted());
+ natural_size, EmptyExtraData(), false);
EXPECT_FALSE(config.IsValidConfig());
}
@@ -61,7 +61,7 @@ TEST(VideoDecoderConfigTest, Invalid_AspectRatioNumeratorTooLarge) {
gfx::Size natural_size = GetNaturalSize(kVisibleRect.size(), num, 1);
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, kVideoFormat,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
- natural_size, EmptyExtraData(), Unencrypted());
+ natural_size, EmptyExtraData(), false);
EXPECT_FALSE(config.IsValidConfig());
}
@@ -72,7 +72,7 @@ TEST(VideoDecoderConfigTest, Invalid_AspectRatioDenominatorTooLarge) {
EXPECT_EQ(0, natural_size.width());
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, kVideoFormat,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
- natural_size, EmptyExtraData(), Unencrypted());
+ natural_size, EmptyExtraData(), false);
EXPECT_FALSE(config.IsValidConfig());
}
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
index f081255..51e8884 100644
--- a/media/ffmpeg/ffmpeg_common.cc
+++ b/media/ffmpeg/ffmpeg_common.cc
@@ -13,24 +13,12 @@
#include "build/build_config.h"
#include "media/base/audio_decoder_config.h"
#include "media/base/decoder_buffer.h"
-#include "media/base/encryption_scheme.h"
-#include "media/base/media_util.h"
#include "media/base/video_decoder_config.h"
#include "media/base/video_util.h"
#include "media/media_features.h"
namespace media {
-namespace {
-
-EncryptionScheme GetEncryptionScheme(const AVStream* stream) {
- AVDictionaryEntry* key =
- av_dict_get(stream->metadata, "enc_key_id", nullptr, 0);
- return key ? AesCtrEncryptionScheme() : Unencrypted();
-}
-
-} // namespace
-
// Why FF_INPUT_BUFFER_PADDING_SIZE? FFmpeg assumes all input buffers are
// padded. Check here to ensure FFmpeg only receives data padded to its
// specifications.
@@ -315,10 +303,9 @@ static AVSampleFormat SampleFormatToAVSampleFormat(SampleFormat sample_format) {
return AV_SAMPLE_FMT_NONE;
}
-bool AVCodecContextToAudioDecoderConfig(
- const AVCodecContext* codec_context,
- const EncryptionScheme& encryption_scheme,
- AudioDecoderConfig* config) {
+bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
+ bool is_encrypted,
+ AudioDecoderConfig* config) {
DCHECK_EQ(codec_context->codec_type, AVMEDIA_TYPE_AUDIO);
AudioCodec codec = CodecIDToAudioCodec(codec_context->codec_id);
@@ -384,9 +371,13 @@ bool AVCodecContextToAudioDecoderConfig(
extra_data.assign(codec_context->extradata,
codec_context->extradata + codec_context->extradata_size);
}
-
- config->Initialize(codec, sample_format, channel_layout, sample_rate,
- extra_data, encryption_scheme, seek_preroll,
+ config->Initialize(codec,
+ sample_format,
+ channel_layout,
+ sample_rate,
+ extra_data,
+ is_encrypted,
+ seek_preroll,
codec_context->delay);
// Verify that AudioConfig.bits_per_channel was calculated correctly for
@@ -409,8 +400,13 @@ bool AVCodecContextToAudioDecoderConfig(
bool AVStreamToAudioDecoderConfig(const AVStream* stream,
AudioDecoderConfig* config) {
- return AVCodecContextToAudioDecoderConfig(
- stream->codec, GetEncryptionScheme(stream), config);
+ bool is_encrypted = false;
+ AVDictionaryEntry* key =
+ av_dict_get(stream->metadata, "enc_key_id", nullptr, 0);
+ if (key)
+ is_encrypted = true;
+ return AVCodecContextToAudioDecoderConfig(stream->codec, is_encrypted,
+ config);
}
void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
@@ -501,6 +497,12 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
coded_size.set_height((coded_size.height() + 1) / 2 * 2);
}
+ bool is_encrypted = false;
+ AVDictionaryEntry* key =
+ av_dict_get(stream->metadata, "enc_key_id", nullptr, 0);
+ if (key)
+ is_encrypted = true;
+
AVDictionaryEntry* webm_alpha =
av_dict_get(stream->metadata, "alpha_mode", nullptr, 0);
if (webm_alpha && !strcmp(webm_alpha->value, "1")) {
@@ -533,8 +535,7 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
stream->codec->extradata + stream->codec->extradata_size);
}
config->Initialize(codec, profile, format, color_space, coded_size,
- visible_rect, natural_size, extra_data,
- GetEncryptionScheme(stream));
+ visible_rect, natural_size, extra_data, is_encrypted);
return true;
}
diff --git a/media/ffmpeg/ffmpeg_common.h b/media/ffmpeg/ffmpeg_common.h
index d5ad132..b66de897 100644
--- a/media/ffmpeg/ffmpeg_common.h
+++ b/media/ffmpeg/ffmpeg_common.h
@@ -52,7 +52,6 @@ MSVC_POP_WARNING();
namespace media {
class AudioDecoderConfig;
-class EncryptionScheme;
class VideoDecoderConfig;
// The following implement the deleters declared in ffmpeg_deleters.h (which
@@ -114,7 +113,7 @@ void VideoDecoderConfigToAVCodecContext(
// is not modified.
MEDIA_EXPORT bool AVCodecContextToAudioDecoderConfig(
const AVCodecContext* codec_context,
- const EncryptionScheme& encryption_scheme,
+ bool is_encrypted,
AudioDecoderConfig* config);
// Converts FFmpeg's channel layout to chrome's ChannelLayout. |channels| can
diff --git a/media/ffmpeg/ffmpeg_common_unittest.cc b/media/ffmpeg/ffmpeg_common_unittest.cc
index 0650ee6..1d33405 100644
--- a/media/ffmpeg/ffmpeg_common_unittest.cc
+++ b/media/ffmpeg/ffmpeg_common_unittest.cc
@@ -14,7 +14,6 @@
#include "base/memory/scoped_ptr.h"
#include "media/base/audio_decoder_config.h"
#include "media/base/media.h"
-#include "media/base/media_util.h"
#include "media/base/test_data_util.h"
#include "media/base/video_decoder_config.h"
#include "media/ffmpeg/ffmpeg_common.h"
@@ -135,7 +134,7 @@ TEST_F(FFmpegCommonTest, OpusAudioDecoderConfig) {
context.sample_rate = 44100;
AudioDecoderConfig decoder_config;
- ASSERT_TRUE(AVCodecContextToAudioDecoderConfig(&context, Unencrypted(),
+ ASSERT_TRUE(AVCodecContextToAudioDecoderConfig(&context, false,
&decoder_config));
EXPECT_EQ(48000, decoder_config.samples_per_second());
}
diff --git a/media/filters/audio_decoder_selector_unittest.cc b/media/filters/audio_decoder_selector_unittest.cc
index 0d87edc..92c4a73 100644
--- a/media/filters/audio_decoder_selector_unittest.cc
+++ b/media/filters/audio_decoder_selector_unittest.cc
@@ -77,14 +77,14 @@ class AudioDecoderSelectorTest : public ::testing::Test {
void UseClearStream() {
AudioDecoderConfig clear_audio_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, 44100,
- EmptyExtraData(), Unencrypted());
+ EmptyExtraData(), false);
demuxer_stream_->set_audio_decoder_config(clear_audio_config);
}
void UseEncryptedStream() {
AudioDecoderConfig encrypted_audio_config(
kCodecVorbis, kSampleFormatPlanarF32, CHANNEL_LAYOUT_STEREO, 44100,
- EmptyExtraData(), AesCtrEncryptionScheme());
+ EmptyExtraData(), true);
demuxer_stream_->set_audio_decoder_config(encrypted_audio_config);
}
diff --git a/media/filters/audio_decoder_unittest.cc b/media/filters/audio_decoder_unittest.cc
index 72881b7..c4f727b 100644
--- a/media/filters/audio_decoder_unittest.cc
+++ b/media/filters/audio_decoder_unittest.cc
@@ -194,7 +194,7 @@ class AudioDecoderTest : public testing::TestWithParam<DecoderTestData> {
AudioDecoderConfig config;
ASSERT_TRUE(AVCodecContextToAudioDecoderConfig(
- reader_->codec_context_for_testing(), Unencrypted(), &config));
+ reader_->codec_context_for_testing(), false, &config));
EXPECT_EQ(GetParam().codec, config.codec());
EXPECT_EQ(GetParam().samples_per_second, config.samples_per_second());
@@ -433,9 +433,14 @@ TEST_P(OpusAudioDecoderBehavioralTest, InitializeWithNoCodecDelay) {
kOpusExtraData,
kOpusExtraData + arraysize(kOpusExtraData));
AudioDecoderConfig decoder_config;
- decoder_config.Initialize(kCodecOpus, kSampleFormatF32, CHANNEL_LAYOUT_STEREO,
- 48000, extra_data, Unencrypted(),
- base::TimeDelta::FromMilliseconds(80), 0);
+ decoder_config.Initialize(kCodecOpus,
+ kSampleFormatF32,
+ CHANNEL_LAYOUT_STEREO,
+ 48000,
+ extra_data,
+ false,
+ base::TimeDelta::FromMilliseconds(80),
+ 0);
InitializeDecoder(decoder_config);
}
@@ -446,8 +451,13 @@ TEST_P(OpusAudioDecoderBehavioralTest, InitializeWithBadCodecDelay) {
kOpusExtraData + arraysize(kOpusExtraData));
AudioDecoderConfig decoder_config;
decoder_config.Initialize(
- kCodecOpus, kSampleFormatF32, CHANNEL_LAYOUT_STEREO, 48000, extra_data,
- Unencrypted(), base::TimeDelta::FromMilliseconds(80),
+ kCodecOpus,
+ kSampleFormatF32,
+ CHANNEL_LAYOUT_STEREO,
+ 48000,
+ extra_data,
+ false,
+ base::TimeDelta::FromMilliseconds(80),
// Use a different codec delay than in the extradata.
100);
InitializeDecoderWithResult(decoder_config, true);
diff --git a/media/filters/decrypting_audio_decoder_unittest.cc b/media/filters/decrypting_audio_decoder_unittest.cc
index 6649b68..2a37b64 100644
--- a/media/filters/decrypting_audio_decoder_unittest.cc
+++ b/media/filters/decrypting_audio_decoder_unittest.cc
@@ -120,7 +120,7 @@ class DecryptingAudioDecoderTest : public testing::Test {
config_.Initialize(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, kSampleRate, EmptyExtraData(),
- AesCtrEncryptionScheme(), base::TimeDelta(), 0);
+ true, base::TimeDelta(), 0);
InitializeAndExpectResult(config_, true);
}
@@ -286,7 +286,7 @@ TEST_F(DecryptingAudioDecoderTest, Initialize_Normal) {
TEST_F(DecryptingAudioDecoderTest, Initialize_UnencryptedAudioConfig) {
AudioDecoderConfig config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, kSampleRate,
- EmptyExtraData(), Unencrypted());
+ EmptyExtraData(), false);
InitializeAndExpectResult(config, false);
}
@@ -294,8 +294,7 @@ TEST_F(DecryptingAudioDecoderTest, Initialize_UnencryptedAudioConfig) {
// Ensure decoder handles invalid audio configs without crashing.
TEST_F(DecryptingAudioDecoderTest, Initialize_InvalidAudioConfig) {
AudioDecoderConfig config(kUnknownAudioCodec, kUnknownSampleFormat,
- CHANNEL_LAYOUT_STEREO, 0, EmptyExtraData(),
- AesCtrEncryptionScheme());
+ CHANNEL_LAYOUT_STEREO, 0, EmptyExtraData(), true);
InitializeAndExpectResult(config, false);
}
@@ -308,7 +307,7 @@ TEST_F(DecryptingAudioDecoderTest, Initialize_UnsupportedAudioConfig) {
AudioDecoderConfig config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, kSampleRate,
- EmptyExtraData(), AesCtrEncryptionScheme());
+ EmptyExtraData(), true);
InitializeAndExpectResult(config, false);
}
@@ -316,7 +315,7 @@ TEST_F(DecryptingAudioDecoderTest, Initialize_CdmWithoutDecryptor) {
SetCdmType(CDM_WITHOUT_DECRYPTOR);
AudioDecoderConfig config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, kSampleRate,
- EmptyExtraData(), AesCtrEncryptionScheme());
+ EmptyExtraData(), true);
InitializeAndExpectResult(config, false);
}
@@ -385,7 +384,7 @@ TEST_F(DecryptingAudioDecoderTest, Reinitialize_ConfigChange) {
// channel layout and samples_per_second.
AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarS16,
CHANNEL_LAYOUT_5_1, 88200, EmptyExtraData(),
- AesCtrEncryptionScheme());
+ true);
EXPECT_NE(new_config.bits_per_channel(), config_.bits_per_channel());
EXPECT_NE(new_config.channel_layout(), config_.channel_layout());
EXPECT_NE(new_config.samples_per_second(), config_.samples_per_second());
diff --git a/media/filters/decrypting_demuxer_stream.cc b/media/filters/decrypting_demuxer_stream.cc
index a44a036..637de2a 100644
--- a/media/filters/decrypting_demuxer_stream.cc
+++ b/media/filters/decrypting_demuxer_stream.cc
@@ -12,7 +12,6 @@
#include "media/base/bind_to_current_loop.h"
#include "media/base/decoder_buffer.h"
#include "media/base/media_log.h"
-#include "media/base/media_util.h"
namespace media {
@@ -348,12 +347,14 @@ void DecryptingDemuxerStream::InitializeDecoderConfig() {
case AUDIO: {
AudioDecoderConfig input_audio_config =
demuxer_stream_->audio_decoder_config();
- audio_config_.Initialize(
- input_audio_config.codec(), input_audio_config.sample_format(),
- input_audio_config.channel_layout(),
- input_audio_config.samples_per_second(),
- input_audio_config.extra_data(), Unencrypted(),
- input_audio_config.seek_preroll(), input_audio_config.codec_delay());
+ audio_config_.Initialize(input_audio_config.codec(),
+ input_audio_config.sample_format(),
+ input_audio_config.channel_layout(),
+ input_audio_config.samples_per_second(),
+ input_audio_config.extra_data(),
+ false, // Output audio is not encrypted.
+ input_audio_config.seek_preroll(),
+ input_audio_config.codec_delay());
break;
}
@@ -365,7 +366,7 @@ void DecryptingDemuxerStream::InitializeDecoderConfig() {
input_video_config.format(), input_video_config.color_space(),
input_video_config.coded_size(), input_video_config.visible_rect(),
input_video_config.natural_size(), input_video_config.extra_data(),
- Unencrypted());
+ false); // Output video is not encrypted.
break;
}
diff --git a/media/filters/decrypting_demuxer_stream_unittest.cc b/media/filters/decrypting_demuxer_stream_unittest.cc
index f08733b..45cdfe1 100644
--- a/media/filters/decrypting_demuxer_stream_unittest.cc
+++ b/media/filters/decrypting_demuxer_stream_unittest.cc
@@ -131,7 +131,7 @@ class DecryptingDemuxerStreamTest : public testing::Test {
AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, 44100,
- EmptyExtraData(), AesCtrEncryptionScheme());
+ EmptyExtraData(), true);
InitializeAudioAndExpectStatus(input_config, PIPELINE_OK);
const AudioDecoderConfig& output_config =
@@ -305,7 +305,7 @@ TEST_F(DecryptingDemuxerStreamTest, Initialize_CdmWithoutDecryptor) {
SetCdmType(CDM_WITHOUT_DECRYPTOR);
AudioDecoderConfig input_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, 44100,
- EmptyExtraData(), AesCtrEncryptionScheme());
+ EmptyExtraData(), true);
InitializeAudioAndExpectStatus(input_config, DECODER_ERROR_NOT_SUPPORTED);
}
@@ -361,7 +361,7 @@ TEST_F(DecryptingDemuxerStreamTest, KeyAdded_DuringWaitingForKey) {
// Test the case where the a key is added when the decryptor is in
// kPendingDecrypt state.
-TEST_F(DecryptingDemuxerStreamTest, KeyAdded_DuringPendingDecrypt) {
+TEST_F(DecryptingDemuxerStreamTest, KeyAdded_DruingPendingDecrypt) {
Initialize();
EnterPendingDecryptState();
@@ -457,7 +457,7 @@ TEST_F(DecryptingDemuxerStreamTest, DemuxerRead_ConfigChanged) {
AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, 88200, EmptyExtraData(),
- AesCtrEncryptionScheme());
+ true);
input_audio_stream_->set_audio_decoder_config(new_config);
EXPECT_CALL(*input_audio_stream_, Read(_))
diff --git a/media/filters/ffmpeg_video_decoder_unittest.cc b/media/filters/ffmpeg_video_decoder_unittest.cc
index fa91d50..6eef19f 100644
--- a/media/filters/ffmpeg_video_decoder_unittest.cc
+++ b/media/filters/ffmpeg_video_decoder_unittest.cc
@@ -224,7 +224,7 @@ TEST_F(FFmpegVideoDecoderTest, Initialize_OpenDecoderFails) {
VideoDecoderConfig config(kCodecTheora, VIDEO_CODEC_PROFILE_UNKNOWN,
kVideoFormat, COLOR_SPACE_UNSPECIFIED, kCodedSize,
kVisibleRect, kNaturalSize, EmptyExtraData(),
- Unencrypted());
+ false);
InitializeWithConfigWithResult(config, false);
}
diff --git a/media/filters/frame_processor_unittest.cc b/media/filters/frame_processor_unittest.cc
index 3220ae6..289ca8e 100644
--- a/media/filters/frame_processor_unittest.cc
+++ b/media/filters/frame_processor_unittest.cc
@@ -294,7 +294,7 @@ class FrameProcessorTest : public testing::TestWithParam<bool> {
audio_.reset(new ChunkDemuxerStream(DemuxerStream::AUDIO, true));
AudioDecoderConfig decoder_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_STEREO, 1000,
- EmptyExtraData(), Unencrypted());
+ EmptyExtraData(), false);
frame_processor_->OnPossibleAudioConfigUpdate(decoder_config);
ASSERT_TRUE(audio_->UpdateAudioConfig(decoder_config, new MediaLog()));
break;
diff --git a/media/filters/opus_audio_decoder.cc b/media/filters/opus_audio_decoder.cc
index bec37f3..83dad21 100644
--- a/media/filters/opus_audio_decoder.cc
+++ b/media/filters/opus_audio_decoder.cc
@@ -269,7 +269,7 @@ bool OpusAudioDecoder::ConfigureDecoder() {
<< " vs " << opus_extra_data.skip_samples;
config_.Initialize(config_.codec(), config_.sample_format(),
config_.channel_layout(), config_.samples_per_second(),
- config_.extra_data(), config_.encryption_scheme(),
+ config_.extra_data(), config_.is_encrypted(),
config_.seek_preroll(), opus_extra_data.skip_samples);
}
diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc
index 05f2337..e03a8c3 100644
--- a/media/filters/source_buffer_stream.cc
+++ b/media/filters/source_buffer_stream.cc
@@ -1476,8 +1476,7 @@ bool SourceBufferStream::UpdateAudioConfig(const AudioDecoderConfig& config) {
return false;
}
- if (!audio_configs_[0].encryption_scheme().Matches(
- config.encryption_scheme())) {
+ if (audio_configs_[0].is_encrypted() != config.is_encrypted()) {
MEDIA_LOG(ERROR, media_log_) << "Audio encryption changes not allowed.";
return false;
}
@@ -1508,8 +1507,7 @@ bool SourceBufferStream::UpdateVideoConfig(const VideoDecoderConfig& config) {
return false;
}
- if (!video_configs_[0].encryption_scheme().Matches(
- config.encryption_scheme())) {
+ if (video_configs_[0].is_encrypted() != config.is_encrypted()) {
MEDIA_LOG(ERROR, media_log_) << "Video encryption changes not allowed.";
return false;
}
diff --git a/media/filters/source_buffer_stream_unittest.cc b/media/filters/source_buffer_stream_unittest.cc
index a9558a2..53e8066 100644
--- a/media/filters/source_buffer_stream_unittest.cc
+++ b/media/filters/source_buffer_stream_unittest.cc
@@ -95,9 +95,14 @@ class SourceBufferStreamTest : public testing::Test {
void SetAudioStream() {
video_config_ = TestVideoConfig::Invalid();
- audio_config_.Initialize(kCodecVorbis, kSampleFormatPlanarF32,
- CHANNEL_LAYOUT_STEREO, 1000, EmptyExtraData(),
- Unencrypted(), base::TimeDelta(), 0);
+ audio_config_.Initialize(kCodecVorbis,
+ kSampleFormatPlanarF32,
+ CHANNEL_LAYOUT_STEREO,
+ 1000,
+ EmptyExtraData(),
+ false,
+ base::TimeDelta(),
+ 0);
stream_.reset(new SourceBufferStream(audio_config_, media_log_, true));
// Equivalent to 2ms per frame.
@@ -3648,7 +3653,7 @@ TEST_F(SourceBufferStreamTest, SameTimestamp_Video_Overlap_3) {
// Test all the valid same timestamp cases for audio.
TEST_F(SourceBufferStreamTest, SameTimestamp_Audio) {
AudioDecoderConfig config(kCodecMP3, kSampleFormatF32, CHANNEL_LAYOUT_STEREO,
- 44100, EmptyExtraData(), Unencrypted());
+ 44100, EmptyExtraData(), false);
stream_.reset(new SourceBufferStream(config, media_log_, true));
Seek(0);
NewCodedFrameGroupAppend("0K 0K 30K 30 60 60");
@@ -3659,7 +3664,7 @@ TEST_F(SourceBufferStreamTest, SameTimestamp_Audio_SingleAppend_Warning) {
EXPECT_MEDIA_LOG(ContainsSameTimestampAt30MillisecondsLog());
AudioDecoderConfig config(kCodecMP3, kSampleFormatF32, CHANNEL_LAYOUT_STEREO,
- 44100, EmptyExtraData(), Unencrypted());
+ 44100, EmptyExtraData(), false);
stream_.reset(new SourceBufferStream(config, media_log_, true));
Seek(0);
@@ -4224,7 +4229,7 @@ TEST_F(SourceBufferStreamTest, Audio_SpliceFrame_ConfigChange) {
AudioDecoderConfig new_config(kCodecVorbis, kSampleFormatPlanarF32,
CHANNEL_LAYOUT_MONO, 1000, EmptyExtraData(),
- Unencrypted());
+ false);
ASSERT_NE(new_config.channel_layout(), audio_config_.channel_layout());
Seek(0);
@@ -4265,8 +4270,8 @@ TEST_F(SourceBufferStreamTest, Audio_SpliceFrame_NoMillisecondSplices) {
video_config_ = TestVideoConfig::Invalid();
audio_config_.Initialize(kCodecVorbis, kSampleFormatPlanarF32,
- CHANNEL_LAYOUT_STEREO, 4000, EmptyExtraData(),
- Unencrypted(), base::TimeDelta(), 0);
+ CHANNEL_LAYOUT_STEREO, 4000, EmptyExtraData(), false,
+ base::TimeDelta(), 0);
stream_.reset(new SourceBufferStream(audio_config_, media_log_, true));
// Equivalent to 0.5ms per frame.
SetStreamInfo(2000, 2000);
diff --git a/media/formats/mp2t/es_adapter_video_unittest.cc b/media/formats/mp2t/es_adapter_video_unittest.cc
index 5946d21..a6e1684 100644
--- a/media/formats/mp2t/es_adapter_video_unittest.cc
+++ b/media/formats/mp2t/es_adapter_video_unittest.cc
@@ -32,7 +32,7 @@ VideoDecoderConfig CreateFakeVideoConfig() {
gfx::Size natural_size(320, 240);
return VideoDecoderConfig(kCodecH264, H264PROFILE_MAIN, PIXEL_FORMAT_I420,
COLOR_SPACE_UNSPECIFIED, coded_size, visible_rect,
- natural_size, EmptyExtraData(), Unencrypted());
+ natural_size, EmptyExtraData(), false);
}
StreamParserBuffer::BufferQueue
diff --git a/media/formats/mp2t/es_parser_adts.cc b/media/formats/mp2t/es_parser_adts.cc
index b209d66..5a90973 100644
--- a/media/formats/mp2t/es_parser_adts.cc
+++ b/media/formats/mp2t/es_parser_adts.cc
@@ -13,7 +13,6 @@
#include "media/base/audio_timestamp_helper.h"
#include "media/base/bit_reader.h"
#include "media/base/channel_layout.h"
-#include "media/base/media_util.h"
#include "media/base/stream_parser_buffer.h"
#include "media/base/timestamp_constants.h"
#include "media/formats/common/offset_byte_queue.h"
@@ -228,9 +227,12 @@ bool EsParserAdts::UpdateAudioConfiguration(const uint8_t* adts_header) {
extra_data.push_back(static_cast<uint8_t>(extra_data_int & 0xff));
AudioDecoderConfig audio_decoder_config(
- kCodecAAC, kSampleFormatS16,
+ kCodecAAC,
+ kSampleFormatS16,
kADTSChannelLayoutTable[channel_configuration],
- extended_samples_per_second, extra_data, Unencrypted());
+ extended_samples_per_second,
+ extra_data,
+ false);
if (!audio_decoder_config.Matches(last_audio_decoder_config_)) {
DVLOG(1) << "Sampling frequency: " << samples_per_second;
diff --git a/media/formats/mp2t/es_parser_h264.cc b/media/formats/mp2t/es_parser_h264.cc
index 3b47fec..dc8315c 100644
--- a/media/formats/mp2t/es_parser_h264.cc
+++ b/media/formats/mp2t/es_parser_h264.cc
@@ -6,8 +6,6 @@
#include "base/logging.h"
#include "base/numerics/safe_conversions.h"
-#include "media/base/encryption_scheme.h"
-#include "media/base/media_util.h"
#include "media/base/stream_parser_buffer.h"
#include "media/base/timestamp_constants.h"
#include "media/base/video_frame.h"
@@ -264,7 +262,7 @@ bool EsParserH264::EmitFrame(int64_t access_unit_pos,
const H264SPS* sps = h264_parser_->GetSPS(pps->seq_parameter_set_id);
if (!sps)
return false;
- RCHECK(UpdateVideoDecoderConfig(sps, Unencrypted()));
+ RCHECK(UpdateVideoDecoderConfig(sps));
}
// Emit a frame.
@@ -289,8 +287,7 @@ bool EsParserH264::EmitFrame(int64_t access_unit_pos,
return es_adapter_.OnNewBuffer(stream_parser_buffer);
}
-bool EsParserH264::UpdateVideoDecoderConfig(const H264SPS* sps,
- const EncryptionScheme& scheme) {
+bool EsParserH264::UpdateVideoDecoderConfig(const H264SPS* sps) {
// Set the SAR to 1 when not specified in the H264 stream.
int sar_width = (sps->sar_width == 0) ? 1 : sps->sar_width;
int sar_height = (sps->sar_height == 0) ? 1 : sps->sar_height;
@@ -317,7 +314,7 @@ bool EsParserH264::UpdateVideoDecoderConfig(const H264SPS* sps,
VideoDecoderConfig video_decoder_config(
kCodecH264, ProfileIDCToVideoCodecProfile(sps->profile_idc),
PIXEL_FORMAT_YV12, COLOR_SPACE_HD_REC709, coded_size, visible_rect,
- natural_size, EmptyExtraData(), scheme);
+ natural_size, std::vector<uint8_t>(), false);
if (!video_decoder_config.Matches(last_video_decoder_config_)) {
DVLOG(1) << "Profile IDC: " << sps->profile_idc;
diff --git a/media/formats/mp2t/es_parser_h264.h b/media/formats/mp2t/es_parser_h264.h
index 184ac07..9ce8ea0 100644
--- a/media/formats/mp2t/es_parser_h264.h
+++ b/media/formats/mp2t/es_parser_h264.h
@@ -7,6 +7,7 @@
#include <stdint.h>
+#include <list>
#include <utility>
#include "base/callback.h"
@@ -20,7 +21,6 @@
#include "media/formats/mp2t/es_parser.h"
namespace media {
-class EncryptionScheme;
class H264Parser;
struct H264SPS;
class OffsetByteQueue;
@@ -70,8 +70,7 @@ class MEDIA_EXPORT EsParserH264 : public EsParser {
// Update the video decoder config based on an H264 SPS.
// Return true if successful.
- bool UpdateVideoDecoderConfig(const H264SPS* sps,
- const EncryptionScheme& scheme);
+ bool UpdateVideoDecoderConfig(const H264SPS* sps);
EsAdapterVideo es_adapter_;
diff --git a/media/formats/mp2t/es_parser_mpeg1audio.cc b/media/formats/mp2t/es_parser_mpeg1audio.cc
index 96ed8d6..5032887 100644
--- a/media/formats/mp2t/es_parser_mpeg1audio.cc
+++ b/media/formats/mp2t/es_parser_mpeg1audio.cc
@@ -12,7 +12,6 @@
#include "media/base/audio_timestamp_helper.h"
#include "media/base/bit_reader.h"
#include "media/base/channel_layout.h"
-#include "media/base/media_util.h"
#include "media/base/stream_parser_buffer.h"
#include "media/base/timestamp_constants.h"
#include "media/formats/common/offset_byte_queue.h"
@@ -171,8 +170,12 @@ bool EsParserMpeg1Audio::UpdateAudioConfiguration(
// TODO(damienv): Verify whether Android playback requires the extra data
// field for Mpeg1 audio. If yes, we should generate this field.
AudioDecoderConfig audio_decoder_config(
- kCodecMP3, kSampleFormatS16, header.channel_layout, header.sample_rate,
- EmptyExtraData(), Unencrypted());
+ kCodecMP3,
+ kSampleFormatS16,
+ header.channel_layout,
+ header.sample_rate,
+ std::vector<uint8_t>(),
+ false);
if (!audio_decoder_config.Matches(last_audio_decoder_config_)) {
DVLOG(1) << "Sampling frequency: " << header.sample_rate;
diff --git a/media/formats/mp4/mp4_stream_parser.cc b/media/formats/mp4/mp4_stream_parser.cc
index 4f72c5e..37b5396 100644
--- a/media/formats/mp4/mp4_stream_parser.cc
+++ b/media/formats/mp4/mp4_stream_parser.cc
@@ -16,7 +16,6 @@
#include "build/build_config.h"
#include "media/base/audio_decoder_config.h"
#include "media/base/media_tracks.h"
-#include "media/base/media_util.h"
#include "media/base/stream_parser_buffer.h"
#include "media/base/text_track_config.h"
#include "media/base/timestamp_constants.h"
@@ -305,10 +304,9 @@ bool MP4StreamParser::ParseMoov(BoxReader* reader) {
is_audio_track_encrypted_ = entry.sinf.info.track_encryption.is_encrypted;
DVLOG(1) << "is_audio_track_encrypted_: " << is_audio_track_encrypted_;
- audio_config.Initialize(
- codec, sample_format, channel_layout, sample_per_second, extra_data,
- is_audio_track_encrypted_ ? AesCtrEncryptionScheme() : Unencrypted(),
- base::TimeDelta(), 0);
+ audio_config.Initialize(codec, sample_format, channel_layout,
+ sample_per_second, extra_data,
+ is_audio_track_encrypted_, base::TimeDelta(), 0);
has_audio_ = true;
audio_track_id_ = track->header.track_id;
media_tracks->AddAudioTrack(
@@ -352,8 +350,7 @@ bool MP4StreamParser::ParseMoov(BoxReader* reader) {
COLOR_SPACE_HD_REC709, coded_size, visible_rect, natural_size,
// No decoder-specific buffer needed for AVC;
// SPS/PPS are embedded in the video stream
- EmptyExtraData(),
- is_video_track_encrypted_ ? AesCtrEncryptionScheme() : Unencrypted());
+ std::vector<uint8_t>(), is_video_track_encrypted_);
has_video_ = true;
video_track_id_ = track->header.track_id;
media_tracks->AddVideoTrack(
diff --git a/media/formats/mpeg/mpeg_audio_stream_parser_base.cc b/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
index 47dd2f6..2028495 100644
--- a/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
+++ b/media/formats/mpeg/mpeg_audio_stream_parser_base.cc
@@ -8,7 +8,6 @@
#include "base/callback_helpers.h"
#include "base/message_loop/message_loop.h"
#include "media/base/media_tracks.h"
-#include "media/base/media_util.h"
#include "media/base/stream_parser_buffer.h"
#include "media/base/text_track_config.h"
#include "media/base/timestamp_constants.h"
@@ -206,9 +205,14 @@ int MPEGAudioStreamParserBase::ParseFrame(const uint8_t* data,
}
if (!config_.IsValidConfig()) {
- config_.Initialize(audio_codec_, kSampleFormatF32, channel_layout,
- sample_rate, std::vector<uint8_t>(), Unencrypted(),
- base::TimeDelta(), codec_delay_);
+ config_.Initialize(audio_codec_,
+ kSampleFormatF32,
+ channel_layout,
+ sample_rate,
+ std::vector<uint8_t>(),
+ false,
+ base::TimeDelta(),
+ codec_delay_);
base::TimeDelta base_timestamp;
if (timestamp_helper_)
diff --git a/media/formats/webm/webm_audio_client.cc b/media/formats/webm/webm_audio_client.cc
index 173d81f..fb6a723a 100644
--- a/media/formats/webm/webm_audio_client.cc
+++ b/media/formats/webm/webm_audio_client.cc
@@ -29,7 +29,7 @@ bool WebMAudioClient::InitializeConfig(
const std::vector<uint8_t>& codec_private,
int64_t seek_preroll,
int64_t codec_delay,
- const EncryptionScheme& encryption_scheme,
+ bool is_encrypted,
AudioDecoderConfig* config) {
DCHECK(config);
SampleFormat sample_format = kSampleFormatPlanarF32;
@@ -78,11 +78,16 @@ bool WebMAudioClient::InitializeConfig(
base::Time::kNanosecondsPerSecond);
}
- config->Initialize(audio_codec, sample_format, channel_layout,
- samples_per_second, codec_private, encryption_scheme,
- base::TimeDelta::FromMicroseconds(
- (seek_preroll != -1 ? seek_preroll : 0) / 1000),
- codec_delay_in_frames);
+ config->Initialize(
+ audio_codec,
+ sample_format,
+ channel_layout,
+ samples_per_second,
+ codec_private,
+ is_encrypted,
+ base::TimeDelta::FromMicroseconds(
+ (seek_preroll != -1 ? seek_preroll : 0) / 1000),
+ codec_delay_in_frames);
return config->IsValidConfig();
}
diff --git a/media/formats/webm/webm_audio_client.h b/media/formats/webm/webm_audio_client.h
index 06d7e0c..fefa55f 100644
--- a/media/formats/webm/webm_audio_client.h
+++ b/media/formats/webm/webm_audio_client.h
@@ -16,7 +16,6 @@
namespace media {
class AudioDecoderConfig;
-class EncryptionScheme;
// Helper class used to parse an Audio element inside a TrackEntry element.
class WebMAudioClient : public WebMParserClient {
@@ -28,8 +27,8 @@ class WebMAudioClient : public WebMParserClient {
void Reset();
// Initialize |config| with the data in |codec_id|, |codec_private|,
- // |encryption_scheme| and the fields parsed from the last audio track element
- // this object was used to parse.
+ // |is_encrypted| and the fields parsed from the last audio track element this
+ // object was used to parse.
// Returns true if |config| was successfully initialized.
// Returns false if there was unexpected values in the provided parameters or
// audio track element fields.
@@ -37,7 +36,7 @@ class WebMAudioClient : public WebMParserClient {
const std::vector<uint8_t>& codec_private,
const int64_t seek_preroll,
const int64_t codec_delay,
- const EncryptionScheme& encryption_scheme,
+ bool is_encrypted,
AudioDecoderConfig* config);
private:
diff --git a/media/formats/webm/webm_tracks_parser.cc b/media/formats/webm/webm_tracks_parser.cc
index 112427f..5ffa0aa 100644
--- a/media/formats/webm/webm_tracks_parser.cc
+++ b/media/formats/webm/webm_tracks_parser.cc
@@ -7,7 +7,6 @@
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
-#include "media/base/media_util.h"
#include "media/base/timestamp_constants.h"
#include "media/formats/webm/webm_constants.h"
#include "media/formats/webm/webm_content_encodings.h"
@@ -194,9 +193,6 @@ bool WebMTracksParser::OnListEnd(int id) {
content_encodings()[0]->encryption_key_id();
}
- EncryptionScheme encryption_scheme =
- encryption_key_id.empty() ? Unencrypted() : AesCtrEncryptionScheme();
-
if (track_type_ == kWebMTrackTypeAudio) {
if (audio_track_num_ == -1) {
audio_track_num_ = track_num_;
@@ -212,7 +208,7 @@ bool WebMTracksParser::OnListEnd(int id) {
DCHECK(!audio_decoder_config_.IsValidConfig());
if (!audio_client_.InitializeConfig(
codec_id_, codec_private_, seek_preroll_, codec_delay_,
- encryption_scheme, &audio_decoder_config_)) {
+ !audio_encryption_key_id_.empty(), &audio_decoder_config_)) {
return false;
}
media_tracks_->AddAudioTrack(audio_decoder_config_,
@@ -235,9 +231,9 @@ bool WebMTracksParser::OnListEnd(int id) {
video_default_duration_ = default_duration_;
DCHECK(!video_decoder_config_.IsValidConfig());
- if (!video_client_.InitializeConfig(codec_id_, codec_private_,
- encryption_scheme,
- &video_decoder_config_)) {
+ if (!video_client_.InitializeConfig(
+ codec_id_, codec_private_, !video_encryption_key_id_.empty(),
+ &video_decoder_config_)) {
return false;
}
media_tracks_->AddVideoTrack(video_decoder_config_,
diff --git a/media/formats/webm/webm_video_client.cc b/media/formats/webm/webm_video_client.cc
index 9d0435f..6e57dfb 100644
--- a/media/formats/webm/webm_video_client.cc
+++ b/media/formats/webm/webm_video_client.cc
@@ -33,7 +33,7 @@ void WebMVideoClient::Reset() {
bool WebMVideoClient::InitializeConfig(
const std::string& codec_id,
const std::vector<uint8_t>& codec_private,
- const EncryptionScheme& encryption_scheme,
+ bool is_encrypted,
VideoDecoderConfig* config) {
DCHECK(config);
@@ -93,7 +93,7 @@ bool WebMVideoClient::InitializeConfig(
config->Initialize(video_codec, profile, format, COLOR_SPACE_HD_REC709,
coded_size, visible_rect, natural_size, codec_private,
- encryption_scheme);
+ is_encrypted);
return config->IsValidConfig();
}
diff --git a/media/formats/webm/webm_video_client.h b/media/formats/webm/webm_video_client.h
index d746df9..dfdc5f6 100644
--- a/media/formats/webm/webm_video_client.h
+++ b/media/formats/webm/webm_video_client.h
@@ -15,7 +15,6 @@
#include "media/formats/webm/webm_parser.h"
namespace media {
-class EncryptionScheme;
class VideoDecoderConfig;
// Helper class used to parse a Video element inside a TrackEntry element.
@@ -28,15 +27,15 @@ class WebMVideoClient : public WebMParserClient {
void Reset();
// Initialize |config| with the data in |codec_id|, |codec_private|,
- // |encryption_scheme| and the fields parsed from the last video track element
- // this object was used to parse.
+ // |is_encrypted| and the fields parsed from the last video track element this
+ // object was used to parse.
// Returns true if |config| was successfully initialized.
// Returns false if there was unexpected values in the provided parameters or
// video track element fields. The contents of |config| are undefined in this
// case and should not be relied upon.
bool InitializeConfig(const std::string& codec_id,
const std::vector<uint8_t>& codec_private,
- const EncryptionScheme& encryption_scheme,
+ bool is_encrypted,
VideoDecoderConfig* config);
private:
diff --git a/media/media.gyp b/media/media.gyp
index 0863c02..f254b8f 100644
--- a/media/media.gyp
+++ b/media/media.gyp
@@ -329,8 +329,6 @@
'base/djb2.cc',
'base/djb2.h',
'base/eme_constants.h',
- 'base/encryption_scheme.cc',
- 'base/encryption_scheme.h',
'base/key_system_info.cc',
'base/key_system_info.h',
'base/key_systems.cc',
diff --git a/media/mojo/common/media_type_converters.cc b/media/mojo/common/media_type_converters.cc
index 7725a2e..f1bf033 100644
--- a/media/mojo/common/media_type_converters.cc
+++ b/media/mojo/common/media_type_converters.cc
@@ -17,7 +17,6 @@
#include "media/base/decrypt_config.h"
#include "media/base/decryptor.h"
#include "media/base/demuxer_stream.h"
-#include "media/base/encryption_scheme.h"
#include "media/base/media_keys.h"
#include "media/base/video_decoder_config.h"
#include "media/base/video_frame.h"
@@ -222,20 +221,6 @@ ASSERT_ENUM_EQ(VideoCodecProfile, , , VP9PROFILE_ANY);
ASSERT_ENUM_EQ(VideoCodecProfile, , , VP9PROFILE_MAX);
ASSERT_ENUM_EQ(VideoCodecProfile, , , VIDEO_CODEC_PROFILE_MAX);
-// CipherMode
-ASSERT_ENUM_EQ_RAW(EncryptionScheme::CipherMode,
- EncryptionScheme::CipherMode::CIPHER_MODE_UNENCRYPTED,
- CipherMode::UNENCRYPTED);
-ASSERT_ENUM_EQ_RAW(EncryptionScheme::CipherMode,
- EncryptionScheme::CipherMode::CIPHER_MODE_AES_CTR,
- CipherMode::AES_CTR);
-ASSERT_ENUM_EQ_RAW(EncryptionScheme::CipherMode,
- EncryptionScheme::CipherMode::CIPHER_MODE_AES_CBC,
- CipherMode::AES_CBC);
-ASSERT_ENUM_EQ_RAW(EncryptionScheme::CipherMode,
- EncryptionScheme::CipherMode::CIPHER_MODE_MAX,
- CipherMode::MAX);
-
// Decryptor Status
ASSERT_ENUM_EQ_RAW(Decryptor::Status,
Decryptor::kSuccess,
@@ -310,59 +295,6 @@ ASSERT_CDM_MESSAGE_TYPE(LICENSE_REQUEST);
ASSERT_CDM_MESSAGE_TYPE(LICENSE_RENEWAL);
ASSERT_CDM_MESSAGE_TYPE(LICENSE_RELEASE);
-template <>
-struct TypeConverter<media::interfaces::PatternPtr,
- media::EncryptionScheme::Pattern> {
- static media::interfaces::PatternPtr Convert(
- const media::EncryptionScheme::Pattern& input);
-};
-template <>
-struct TypeConverter<media::EncryptionScheme::Pattern,
- media::interfaces::PatternPtr> {
- static media::EncryptionScheme::Pattern Convert(
- const media::interfaces::PatternPtr& input);
-};
-
-// static
-media::interfaces::PatternPtr
-TypeConverter<media::interfaces::PatternPtr, media::EncryptionScheme::Pattern>::
- Convert(const media::EncryptionScheme::Pattern& input) {
- media::interfaces::PatternPtr mojo_pattern(media::interfaces::Pattern::New());
- mojo_pattern->encrypt_blocks = input.encrypt_blocks();
- mojo_pattern->skip_blocks = input.skip_blocks();
- return mojo_pattern;
-}
-
-// static
-media::EncryptionScheme::Pattern
-TypeConverter<media::EncryptionScheme::Pattern, media::interfaces::PatternPtr>::
- Convert(const media::interfaces::PatternPtr& input) {
- return media::EncryptionScheme::Pattern(input->encrypt_blocks,
- input->skip_blocks);
-}
-
-// static
-media::interfaces::EncryptionSchemePtr TypeConverter<
- media::interfaces::EncryptionSchemePtr,
- media::EncryptionScheme>::Convert(const media::EncryptionScheme& input) {
- media::interfaces::EncryptionSchemePtr mojo_encryption_scheme(
- media::interfaces::EncryptionScheme::New());
- mojo_encryption_scheme->mode =
- static_cast<media::interfaces::CipherMode>(input.mode());
- mojo_encryption_scheme->pattern =
- media::interfaces::Pattern::From(input.pattern());
- return mojo_encryption_scheme;
-}
-
-// static
-media::EncryptionScheme
-TypeConverter<media::EncryptionScheme, media::interfaces::EncryptionSchemePtr>::
- Convert(const media::interfaces::EncryptionSchemePtr& input) {
- return media::EncryptionScheme(
- static_cast<media::EncryptionScheme::CipherMode>(input->mode),
- input->pattern.To<media::EncryptionScheme::Pattern>());
-}
-
// static
media::interfaces::SubsampleEntryPtr TypeConverter<
media::interfaces::SubsampleEntryPtr,
@@ -503,8 +435,7 @@ media::interfaces::AudioDecoderConfigPtr TypeConverter<
}
config->seek_preroll_usec = input.seek_preroll().InMicroseconds();
config->codec_delay = input.codec_delay();
- config->encryption_scheme =
- media::interfaces::EncryptionScheme::From(input.encryption_scheme());
+ config->is_encrypted = input.is_encrypted();
return config;
}
@@ -518,7 +449,7 @@ TypeConverter<media::AudioDecoderConfig,
static_cast<media::SampleFormat>(input->sample_format),
static_cast<media::ChannelLayout>(input->channel_layout),
input->samples_per_second, input->extra_data.storage(),
- input->encryption_scheme.To<media::EncryptionScheme>(),
+ input->is_encrypted,
base::TimeDelta::FromMicroseconds(input->seek_preroll_usec),
input->codec_delay);
return config;
@@ -543,8 +474,7 @@ media::interfaces::VideoDecoderConfigPtr TypeConverter<
if (!input.extra_data().empty()) {
config->extra_data = mojo::Array<uint8_t>::From(input.extra_data());
}
- config->encryption_scheme =
- media::interfaces::EncryptionScheme::From(input.encryption_scheme());
+ config->is_encrypted = input.is_encrypted();
return config;
}
@@ -554,14 +484,14 @@ TypeConverter<media::VideoDecoderConfig,
media::interfaces::VideoDecoderConfigPtr>::
Convert(const media::interfaces::VideoDecoderConfigPtr& input) {
media::VideoDecoderConfig config;
- config.Initialize(
- static_cast<media::VideoCodec>(input->codec),
- static_cast<media::VideoCodecProfile>(input->profile),
- static_cast<media::VideoPixelFormat>(input->format),
- static_cast<media::ColorSpace>(input->color_space),
- input->coded_size.To<gfx::Size>(), input->visible_rect.To<gfx::Rect>(),
- input->natural_size.To<gfx::Size>(), input->extra_data.storage(),
- input->encryption_scheme.To<media::EncryptionScheme>());
+ config.Initialize(static_cast<media::VideoCodec>(input->codec),
+ static_cast<media::VideoCodecProfile>(input->profile),
+ static_cast<media::VideoPixelFormat>(input->format),
+ static_cast<media::ColorSpace>(input->color_space),
+ input->coded_size.To<gfx::Size>(),
+ input->visible_rect.To<gfx::Rect>(),
+ input->natural_size.To<gfx::Size>(),
+ input->extra_data.storage(), input->is_encrypted);
return config;
}
diff --git a/media/mojo/common/media_type_converters.h b/media/mojo/common/media_type_converters.h
index 6b5664b..50cc30b 100644
--- a/media/mojo/common/media_type_converters.h
+++ b/media/mojo/common/media_type_converters.h
@@ -16,7 +16,6 @@ class AudioBuffer;
class AudioDecoderConfig;
class DecoderBuffer;
class DecryptConfig;
-class EncryptionScheme;
class VideoDecoderConfig;
class VideoFrame;
struct CdmConfig;
@@ -29,19 +28,6 @@ struct SubsampleEntry;
namespace mojo {
template <>
-struct TypeConverter<media::interfaces::EncryptionSchemePtr,
- media::EncryptionScheme> {
- static media::interfaces::EncryptionSchemePtr Convert(
- const media::EncryptionScheme& input);
-};
-template <>
-struct TypeConverter<media::EncryptionScheme,
- media::interfaces::EncryptionSchemePtr> {
- static media::EncryptionScheme Convert(
- const media::interfaces::EncryptionSchemePtr& input);
-};
-
-template <>
struct TypeConverter<media::interfaces::SubsampleEntryPtr,
media::SubsampleEntry> {
static media::interfaces::SubsampleEntryPtr Convert(
diff --git a/media/mojo/common/media_type_converters_unittest.cc b/media/mojo/common/media_type_converters_unittest.cc
index 5a2237f..9858cd0 100644
--- a/media/mojo/common/media_type_converters_unittest.cc
+++ b/media/mojo/common/media_type_converters_unittest.cc
@@ -13,7 +13,6 @@
#include "media/base/audio_decoder_config.h"
#include "media/base/cdm_config.h"
#include "media/base/decoder_buffer.h"
-#include "media/base/encryption_scheme.h"
#include "media/base/media_util.h"
#include "media/base/sample_format.h"
#include "media/base/test_helpers.h"
@@ -288,7 +287,7 @@ TEST(MediaTypeConvertersTest, ConvertAudioDecoderConfig_Normal) {
AudioDecoderConfig config;
config.Initialize(kCodecAAC, kSampleFormatU8, CHANNEL_LAYOUT_SURROUND, 48000,
- kExtraDataVector, Unencrypted(), base::TimeDelta(), 0);
+ kExtraDataVector, false, base::TimeDelta(), 0);
interfaces::AudioDecoderConfigPtr ptr(
interfaces::AudioDecoderConfig::From(config));
EXPECT_FALSE(ptr->extra_data.is_null());
@@ -299,7 +298,7 @@ TEST(MediaTypeConvertersTest, ConvertAudioDecoderConfig_Normal) {
TEST(MediaTypeConvertersTest, ConvertAudioDecoderConfig_EmptyExtraData) {
AudioDecoderConfig config;
config.Initialize(kCodecAAC, kSampleFormatU8, CHANNEL_LAYOUT_SURROUND, 48000,
- EmptyExtraData(), Unencrypted(), base::TimeDelta(), 0);
+ EmptyExtraData(), false, base::TimeDelta(), 0);
interfaces::AudioDecoderConfigPtr ptr(
interfaces::AudioDecoderConfig::From(config));
EXPECT_TRUE(ptr->extra_data.is_null());
@@ -310,11 +309,14 @@ TEST(MediaTypeConvertersTest, ConvertAudioDecoderConfig_EmptyExtraData) {
TEST(MediaTypeConvertersTest, ConvertAudioDecoderConfig_Encrypted) {
AudioDecoderConfig config;
config.Initialize(kCodecAAC, kSampleFormatU8, CHANNEL_LAYOUT_SURROUND, 48000,
- EmptyExtraData(), AesCtrEncryptionScheme(),
+ EmptyExtraData(),
+ true, // Is encrypted.
base::TimeDelta(), 0);
interfaces::AudioDecoderConfigPtr ptr(
interfaces::AudioDecoderConfig::From(config));
+ EXPECT_TRUE(ptr->is_encrypted);
AudioDecoderConfig result(ptr.To<AudioDecoderConfig>());
+ EXPECT_TRUE(result.is_encrypted());
EXPECT_TRUE(result.Matches(config));
}
@@ -325,7 +327,7 @@ TEST(MediaTypeConvertersTest, ConvertVideoDecoderConfig_Normal) {
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, PIXEL_FORMAT_YV12,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
- kNaturalSize, kExtraDataVector, Unencrypted());
+ kNaturalSize, kExtraDataVector, false);
interfaces::VideoDecoderConfigPtr ptr(
interfaces::VideoDecoderConfig::From(config));
EXPECT_FALSE(ptr->extra_data.is_null());
@@ -336,7 +338,7 @@ TEST(MediaTypeConvertersTest, ConvertVideoDecoderConfig_Normal) {
TEST(MediaTypeConvertersTest, ConvertVideoDecoderConfig_EmptyExtraData) {
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, PIXEL_FORMAT_YV12,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
- kNaturalSize, EmptyExtraData(), Unencrypted());
+ kNaturalSize, EmptyExtraData(), false);
interfaces::VideoDecoderConfigPtr ptr(
interfaces::VideoDecoderConfig::From(config));
EXPECT_TRUE(ptr->extra_data.is_null());
@@ -348,10 +350,12 @@ TEST(MediaTypeConvertersTest, ConvertVideoDecoderConfig_Encrypted) {
VideoDecoderConfig config(kCodecVP8, VP8PROFILE_ANY, PIXEL_FORMAT_YV12,
COLOR_SPACE_UNSPECIFIED, kCodedSize, kVisibleRect,
kNaturalSize, EmptyExtraData(),
- AesCtrEncryptionScheme());
+ true /* is_encrypted */);
interfaces::VideoDecoderConfigPtr ptr(
interfaces::VideoDecoderConfig::From(config));
+ EXPECT_TRUE(ptr->is_encrypted);
VideoDecoderConfig result(ptr.To<VideoDecoderConfig>());
+ EXPECT_TRUE(result.is_encrypted());
EXPECT_TRUE(result.Matches(config));
}
@@ -454,21 +458,4 @@ TEST(MediaTypeConvertersTest, ConvertVideoFrame_ColorFrame) {
CompareVideoFrames(frame, result);
}
-TEST(MediaTypeConvertersTest, ConvertEncryptionSchemeAesCbcWithPattern) {
- // Original.
- EncryptionScheme scheme(EncryptionScheme::CIPHER_MODE_AES_CBC,
- EncryptionScheme::Pattern(1, 9));
-
- // Convert to and back.
- interfaces::EncryptionSchemePtr ptr(
- interfaces::EncryptionScheme::From(scheme));
- EncryptionScheme result(ptr.To<EncryptionScheme>());
-
- EXPECT_TRUE(result.Matches(scheme));
-
- // Verify a couple of negative cases.
- EXPECT_FALSE(result.Matches(Unencrypted()));
- EXPECT_FALSE(result.Matches(AesCtrEncryptionScheme()));
-}
-
} // namespace media
diff --git a/media/mojo/interfaces/media_types.mojom b/media/mojo/interfaces/media_types.mojom
index 5f4d942..44e6cdf 100644
--- a/media/mojo/interfaces/media_types.mojom
+++ b/media/mojo/interfaces/media_types.mojom
@@ -168,29 +168,6 @@ enum VideoCodecProfile {
VIDEO_CODEC_PROFILE_MAX = VP9PROFILE_MAX,
};
-// See media/base/encryption_scheme.h.
-// Kept in sync with media::CipherMode via static_asserts.
-enum CipherMode {
- UNENCRYPTED = 0,
- AES_CTR,
- AES_CBC,
- MAX = AES_CBC
-};
-
-// This defines a mojo transport format for media::EncryptionScheme::Pattern
-// See media/base/encryption_scheme.h for description.
-struct Pattern {
- uint32 encrypt_blocks;
- uint32 skip_blocks;
-};
-
-// This defines a mojo transport format for media::EncryptionScheme.
-// See media/base/encryption_scheme.h for description.
-struct EncryptionScheme {
- CipherMode mode;
- Pattern pattern;
-};
-
// This defines a mojo transport format for media::AudioDecoderConfig.
// See media/base/audio_decoder_config.h for descriptions.
struct AudioDecoderConfig {
@@ -201,7 +178,7 @@ struct AudioDecoderConfig {
array<uint8>? extra_data;
int64 seek_preroll_usec;
int32 codec_delay;
- EncryptionScheme encryption_scheme;
+ bool is_encrypted;
};
// This defines a mojo transport format for media::VideoDecoderConfig.
@@ -215,7 +192,7 @@ struct VideoDecoderConfig {
mojo.Rect visible_rect;
mojo.Size natural_size;
array<uint8>? extra_data;
- EncryptionScheme encryption_scheme;
+ bool is_encrypted;
};
// This defines a mojo transport format for media::SubsampleEntry.
diff --git a/media/renderers/audio_renderer_impl_unittest.cc b/media/renderers/audio_renderer_impl_unittest.cc
index 0b6a3df..20c5fdb 100644
--- a/media/renderers/audio_renderer_impl_unittest.cc
+++ b/media/renderers/audio_renderer_impl_unittest.cc
@@ -73,9 +73,12 @@ class AudioRendererImplTest : public ::testing::Test {
demuxer_stream_(DemuxerStream::AUDIO),
decoder_(new MockAudioDecoder()),
ended_(false) {
- AudioDecoderConfig audio_config(kCodec, kSampleFormat, kChannelLayout,
- kInputSamplesPerSecond, EmptyExtraData(),
- Unencrypted());
+ AudioDecoderConfig audio_config(kCodec,
+ kSampleFormat,
+ kChannelLayout,
+ kInputSamplesPerSecond,
+ EmptyExtraData(),
+ false);
demuxer_stream_.set_audio_decoder_config(audio_config);
// Used to save callbacks and run them at a later time.