OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "webkit/media/crypto/ppapi/ffmpeg_cdm_audio_decoder.h" | 5 #include "webkit/media/crypto/ppapi/ffmpeg_cdm_audio_decoder.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "media/base/audio_bus.h" | 10 #include "media/base/audio_bus.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 memcpy(codec_context->extradata, config.extra_data, | 73 memcpy(codec_context->extradata, config.extra_data, |
74 config.extra_data_size); | 74 config.extra_data_size); |
75 memset(codec_context->extradata + config.extra_data_size, '\0', | 75 memset(codec_context->extradata + config.extra_data_size, '\0', |
76 FF_INPUT_BUFFER_PADDING_SIZE); | 76 FF_INPUT_BUFFER_PADDING_SIZE); |
77 } else { | 77 } else { |
78 codec_context->extradata = NULL; | 78 codec_context->extradata = NULL; |
79 codec_context->extradata_size = 0; | 79 codec_context->extradata_size = 0; |
80 } | 80 } |
81 } | 81 } |
82 | 82 |
83 FFmpegCdmAudioDecoder::FFmpegCdmAudioDecoder(cdm::Allocator* allocator) | 83 FFmpegCdmAudioDecoder::FFmpegCdmAudioDecoder(cdm::Host* host) |
84 : is_initialized_(false), | 84 : is_initialized_(false), |
85 allocator_(allocator), | 85 host_(host), |
86 codec_context_(NULL), | 86 codec_context_(NULL), |
87 av_frame_(NULL), | 87 av_frame_(NULL), |
88 bits_per_channel_(0), | 88 bits_per_channel_(0), |
89 samples_per_second_(0), | 89 samples_per_second_(0), |
90 bytes_per_frame_(0), | 90 bytes_per_frame_(0), |
91 last_input_timestamp_(media::kNoTimestamp()), | 91 last_input_timestamp_(media::kNoTimestamp()), |
92 output_bytes_to_drop_(0) { | 92 output_bytes_to_drop_(0) { |
93 } | 93 } |
94 | 94 |
95 FFmpegCdmAudioDecoder::~FFmpegCdmAudioDecoder() { | 95 FFmpegCdmAudioDecoder::~FFmpegCdmAudioDecoder() { |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 SerializeInt64(output->GetDataSize()); | 344 SerializeInt64(output->GetDataSize()); |
345 serialized_audio_frames_.insert( | 345 serialized_audio_frames_.insert( |
346 serialized_audio_frames_.end(), | 346 serialized_audio_frames_.end(), |
347 output->GetData(), | 347 output->GetData(), |
348 output->GetData() + output->GetDataSize()); | 348 output->GetData() + output->GetDataSize()); |
349 } | 349 } |
350 } while (packet.size > 0); | 350 } while (packet.size > 0); |
351 | 351 |
352 if (!serialized_audio_frames_.empty()) { | 352 if (!serialized_audio_frames_.empty()) { |
353 decoded_frames->SetFrameBuffer( | 353 decoded_frames->SetFrameBuffer( |
354 allocator_->Allocate(serialized_audio_frames_.size())); | 354 host_->Allocate(serialized_audio_frames_.size())); |
355 if (!decoded_frames->FrameBuffer()) { | 355 if (!decoded_frames->FrameBuffer()) { |
356 LOG(ERROR) << "DecodeBuffer() cdm::Allocator::Allocate failed."; | 356 LOG(ERROR) << "DecodeBuffer() cdm::Host::Allocate failed."; |
357 return cdm::kDecodeError; | 357 return cdm::kDecodeError; |
358 } | 358 } |
359 memcpy(decoded_frames->FrameBuffer()->Data(), | 359 memcpy(decoded_frames->FrameBuffer()->Data(), |
360 &serialized_audio_frames_[0], | 360 &serialized_audio_frames_[0], |
361 serialized_audio_frames_.size()); | 361 serialized_audio_frames_.size()); |
362 decoded_frames->FrameBuffer()->SetSize(serialized_audio_frames_.size()); | 362 decoded_frames->FrameBuffer()->SetSize(serialized_audio_frames_.size()); |
363 serialized_audio_frames_.clear(); | 363 serialized_audio_frames_.clear(); |
364 | 364 |
365 return cdm::kSuccess; | 365 return cdm::kSuccess; |
366 } | 366 } |
(...skipping 22 matching lines...) Expand all Loading... |
389 } | 389 } |
390 } | 390 } |
391 | 391 |
392 void FFmpegCdmAudioDecoder::SerializeInt64(int64 value) { | 392 void FFmpegCdmAudioDecoder::SerializeInt64(int64 value) { |
393 int previous_size = serialized_audio_frames_.size(); | 393 int previous_size = serialized_audio_frames_.size(); |
394 serialized_audio_frames_.resize(previous_size + sizeof(value)); | 394 serialized_audio_frames_.resize(previous_size + sizeof(value)); |
395 memcpy(&serialized_audio_frames_[0] + previous_size, &value, sizeof(value)); | 395 memcpy(&serialized_audio_frames_[0] + previous_size, &value, sizeof(value)); |
396 } | 396 } |
397 | 397 |
398 } // namespace webkit_media | 398 } // namespace webkit_media |
OLD | NEW |