Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1150)

Unified Diff: media/filters/ffmpeg_demuxer.cc

Issue 119203003: Drop DecryptConfig::data_offset_. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/filters/ffmpeg_demuxer.cc
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 5ab7c21f0dbdd2fe1a638e7b6948249367d989d9..98268b8c6d0051e14e81a7b68bf98b49ad074734 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -116,6 +116,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
// keep this generic so that other side_data types in the future can be
// handled the same way as well.
av_packet_split_side_data(packet.get());
+
scoped_refptr<DecoderBuffer> buffer;
if (type() == DemuxerStream::TEXT) {
@@ -145,14 +146,30 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
&side_data_size);
+ scoped_ptr<DecryptConfig> decrypt_config;
+ int data_offset = 0;
+ if ((type() == DemuxerStream::AUDIO && audio_config_.is_encrypted()) ||
+ (type() == DemuxerStream::VIDEO && video_config_.is_encrypted())) {
+ if (!WebMCreateDecryptConfig(
+ packet->data, packet->size,
+ reinterpret_cast<const uint8*>(encryption_key_id_.data()),
+ encryption_key_id_.size(),
+ &decrypt_config,
+ &data_offset)) {
+ LOG(ERROR) << "Creation of DecryptConfig failed.";
+ }
+ }
+
// If a packet is returned by FFmpeg's av_parser_parse2() the packet will
// reference inner memory of FFmpeg. As such we should transfer the packet
// into memory we control.
if (side_data_size > 0) {
- buffer = DecoderBuffer::CopyFrom(packet.get()->data, packet.get()->size,
+ buffer = DecoderBuffer::CopyFrom(packet.get()->data + data_offset,
+ packet.get()->size - data_offset,
side_data, side_data_size);
} else {
- buffer = DecoderBuffer::CopyFrom(packet.get()->data, packet.get()->size);
+ buffer = DecoderBuffer::CopyFrom(packet.get()->data + data_offset,
+ packet.get()->size - data_offset);
}
int skip_samples_size = 0;
@@ -171,17 +188,9 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
discard_padding_samples * 1000000.0 /
audio_decoder_config().samples_per_second()));
}
- }
- if ((type() == DemuxerStream::AUDIO && audio_config_.is_encrypted()) ||
- (type() == DemuxerStream::VIDEO && video_config_.is_encrypted())) {
- scoped_ptr<DecryptConfig> config(WebMCreateDecryptConfig(
- packet->data, packet->size,
- reinterpret_cast<const uint8*>(encryption_key_id_.data()),
- encryption_key_id_.size()));
- if (!config)
- LOG(ERROR) << "Creation of DecryptConfig failed.";
- buffer->set_decrypt_config(config.Pass());
+ if (decrypt_config)
+ buffer->set_decrypt_config(decrypt_config.Pass());
}
buffer->set_timestamp(ConvertStreamTimestamp(

Powered by Google App Engine
This is Rietveld 408576698