| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "media/base/android/media_codec_loop.h" | 5 #include "media/base/android/media_codec_loop.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "media/base/bind_to_current_loop.h" | 10 #include "media/base/bind_to_current_loop.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 MediaCodecLoop::InputData::InputData() {} | 32 MediaCodecLoop::InputData::InputData() {} |
| 33 | 33 |
| 34 MediaCodecLoop::InputData::InputData(const InputData& other) | 34 MediaCodecLoop::InputData::InputData(const InputData& other) |
| 35 : memory(other.memory), | 35 : memory(other.memory), |
| 36 length(other.length), | 36 length(other.length), |
| 37 key_id(other.key_id), | 37 key_id(other.key_id), |
| 38 iv(other.iv), | 38 iv(other.iv), |
| 39 subsamples(other.subsamples), | 39 subsamples(other.subsamples), |
| 40 presentation_time(other.presentation_time), | 40 presentation_time(other.presentation_time), |
| 41 is_eos(other.is_eos), | 41 is_eos(other.is_eos), |
| 42 is_encrypted(other.is_encrypted) {} | 42 encryption_scheme(other.encryption_scheme) {} |
| 43 | 43 |
| 44 MediaCodecLoop::InputData::~InputData() {} | 44 MediaCodecLoop::InputData::~InputData() {} |
| 45 | 45 |
| 46 MediaCodecLoop::MediaCodecLoop( | 46 MediaCodecLoop::MediaCodecLoop( |
| 47 int sdk_int, | 47 int sdk_int, |
| 48 Client* client, | 48 Client* client, |
| 49 std::unique_ptr<MediaCodecBridge> media_codec, | 49 std::unique_ptr<MediaCodecBridge> media_codec, |
| 50 scoped_refptr<base::SingleThreadTaskRunner> task_runner) | 50 scoped_refptr<base::SingleThreadTaskRunner> task_runner) |
| 51 : state_(STATE_READY), | 51 : state_(STATE_READY), |
| 52 client_(client), | 52 client_(client), |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 | 192 |
| 193 if (input_data.is_eos) { | 193 if (input_data.is_eos) { |
| 194 media_codec_->QueueEOS(input_buffer.index); | 194 media_codec_->QueueEOS(input_buffer.index); |
| 195 SetState(STATE_DRAINING); | 195 SetState(STATE_DRAINING); |
| 196 client_->OnInputDataQueued(true); | 196 client_->OnInputDataQueued(true); |
| 197 return; | 197 return; |
| 198 } | 198 } |
| 199 | 199 |
| 200 media::MediaCodecStatus status = MEDIA_CODEC_OK; | 200 media::MediaCodecStatus status = MEDIA_CODEC_OK; |
| 201 | 201 |
| 202 if (input_data.is_encrypted) { | 202 if (input_data.encryption_scheme.is_encrypted()) { |
| 203 // Note that input_data might not have a valid memory ptr if this is a | 203 // Note that input_data might not have a valid memory ptr if this is a |
| 204 // re-send of a buffer that was sent before decryption keys arrived. | 204 // re-send of a buffer that was sent before decryption keys arrived. |
| 205 | 205 |
| 206 status = media_codec_->QueueSecureInputBuffer( | 206 status = media_codec_->QueueSecureInputBuffer( |
| 207 input_buffer.index, input_data.memory, input_data.length, | 207 input_buffer.index, input_data.memory, input_data.length, |
| 208 input_data.key_id, input_data.iv, input_data.subsamples, | 208 input_data.key_id, input_data.iv, input_data.subsamples, |
| 209 input_data.presentation_time); | 209 input_data.encryption_scheme, input_data.presentation_time); |
| 210 | 210 |
| 211 } else { | 211 } else { |
| 212 status = media_codec_->QueueInputBuffer( | 212 status = media_codec_->QueueInputBuffer( |
| 213 input_buffer.index, input_data.memory, input_data.length, | 213 input_buffer.index, input_data.memory, input_data.length, |
| 214 input_data.presentation_time); | 214 input_data.presentation_time); |
| 215 } | 215 } |
| 216 | 216 |
| 217 switch (status) { | 217 switch (status) { |
| 218 case MEDIA_CODEC_ERROR: | 218 case MEDIA_CODEC_ERROR: |
| 219 DLOG(ERROR) << __func__ << ": MEDIA_CODEC_ERROR from QueueInputBuffer"; | 219 DLOG(ERROR) << __func__ << ": MEDIA_CODEC_ERROR from QueueInputBuffer"; |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 RETURN_STRING(STATE_DRAINED); | 369 RETURN_STRING(STATE_DRAINED); |
| 370 RETURN_STRING(STATE_ERROR); | 370 RETURN_STRING(STATE_ERROR); |
| 371 } | 371 } |
| 372 #undef RETURN_STRING | 372 #undef RETURN_STRING |
| 373 | 373 |
| 374 NOTREACHED() << "Unknown state " << state; | 374 NOTREACHED() << "Unknown state " << state; |
| 375 return nullptr; | 375 return nullptr; |
| 376 } | 376 } |
| 377 | 377 |
| 378 } // namespace media | 378 } // namespace media |
| OLD | NEW |