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

Side by Side Diff: media/base/android/ndk_media_codec_bridge.cc

Issue 1499423004: Remove kint32max. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@kint9
Patch Set: rebase Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/ndk_media_codec_bridge.h" 5 #include "media/base/android/ndk_media_codec_bridge.h"
6 6
7 #include <media/NdkMediaError.h> 7 #include <media/NdkMediaError.h>
8 #include <media/NdkMediaFormat.h> 8 #include <media/NdkMediaFormat.h>
9 9
10 #include <limits>
11
10 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
11 #include "media/base/decrypt_config.h" 13 #include "media/base/decrypt_config.h"
12 14
13 namespace { 15 namespace {
14 const char kMediaFormatKeyCropLeft[] = "crop-left"; 16 const char kMediaFormatKeyCropLeft[] = "crop-left";
15 const char kMediaFormatKeyCropRight[] = "crop-right"; 17 const char kMediaFormatKeyCropRight[] = "crop-right";
16 const char kMediaFormatKeyCropBottom[] = "crop-bottom"; 18 const char kMediaFormatKeyCropBottom[] = "crop-bottom";
17 const char kMediaFormatKeyCropTop[] = "crop-top"; 19 const char kMediaFormatKeyCropTop[] = "crop-top";
18 } 20 }
19 21
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 int NdkMediaCodecBridge::GetOutputSamplingRate() { 86 int NdkMediaCodecBridge::GetOutputSamplingRate() {
85 AMediaFormat* format = AMediaCodec_getOutputFormat(media_codec_.get()); 87 AMediaFormat* format = AMediaCodec_getOutputFormat(media_codec_.get());
86 int sample_rate = 0; 88 int sample_rate = 0;
87 AMediaFormat_getInt32(format, AMEDIAFORMAT_KEY_SAMPLE_RATE, &sample_rate); 89 AMediaFormat_getInt32(format, AMEDIAFORMAT_KEY_SAMPLE_RATE, &sample_rate);
88 DCHECK(sample_rate != 0); 90 DCHECK(sample_rate != 0);
89 return sample_rate; 91 return sample_rate;
90 } 92 }
91 93
92 MediaCodecStatus NdkMediaCodecBridge::QueueInputBuffer( 94 MediaCodecStatus NdkMediaCodecBridge::QueueInputBuffer(
93 int index, 95 int index,
94 const uint8* data, 96 const uint8_t* data,
95 size_t data_size, 97 size_t data_size,
96 const base::TimeDelta& presentation_time) { 98 const base::TimeDelta& presentation_time) {
97 if (data_size > base::checked_cast<size_t>(kint32max)) 99 if (data_size >
100 base::checked_cast<size_t>(std::numeric_limits<int32_t>::max())) {
98 return MEDIA_CODEC_ERROR; 101 return MEDIA_CODEC_ERROR;
102 }
99 if (data && !FillInputBuffer(index, data, data_size)) 103 if (data && !FillInputBuffer(index, data, data_size))
100 return MEDIA_CODEC_ERROR; 104 return MEDIA_CODEC_ERROR;
101 105
102 media_status_t status = 106 media_status_t status =
103 AMediaCodec_queueInputBuffer(media_codec_.get(), index, 0, data_size, 107 AMediaCodec_queueInputBuffer(media_codec_.get(), index, 0, data_size,
104 presentation_time.InMicroseconds(), 0); 108 presentation_time.InMicroseconds(), 0);
105 return TranslateMediaCodecStatus(status); 109 return TranslateMediaCodecStatus(status);
106 } 110 }
107 111
108 MediaCodecStatus NdkMediaCodecBridge::QueueSecureInputBuffer( 112 MediaCodecStatus NdkMediaCodecBridge::QueueSecureInputBuffer(
109 int index, 113 int index,
110 const uint8* data, 114 const uint8_t* data,
111 size_t data_size, 115 size_t data_size,
112 const std::vector<char>& key_id, 116 const std::vector<char>& key_id,
113 const std::vector<char>& iv, 117 const std::vector<char>& iv,
114 const SubsampleEntry* subsamples, 118 const SubsampleEntry* subsamples,
115 int subsamples_size, 119 int subsamples_size,
116 const base::TimeDelta& presentation_time) { 120 const base::TimeDelta& presentation_time) {
117 if (data_size > base::checked_cast<size_t>(kint32max)) 121 if (data_size >
122 base::checked_cast<size_t>(std::numeric_limits<int32_t>::max())) {
118 return MEDIA_CODEC_ERROR; 123 return MEDIA_CODEC_ERROR;
124 }
119 if (key_id.size() > 16 || iv.size()) 125 if (key_id.size() > 16 || iv.size())
120 return MEDIA_CODEC_ERROR; 126 return MEDIA_CODEC_ERROR;
121 if (data && !FillInputBuffer(index, data, data_size)) 127 if (data && !FillInputBuffer(index, data, data_size))
122 return MEDIA_CODEC_ERROR; 128 return MEDIA_CODEC_ERROR;
123 129
124 int new_subsamples_size = subsamples_size == 0 ? 1 : subsamples_size; 130 int new_subsamples_size = subsamples_size == 0 ? 1 : subsamples_size;
125 std::vector<size_t> clear_data, encrypted_data; 131 std::vector<size_t> clear_data, encrypted_data;
126 if (subsamples_size == 0) { 132 if (subsamples_size == 0) {
127 DCHECK(!subsamples); 133 DCHECK(!subsamples);
128 clear_data.push_back(0); 134 clear_data.push_back(0);
129 encrypted_data.push_back(data_size); 135 encrypted_data.push_back(data_size);
130 } else { 136 } else {
131 DCHECK_GT(subsamples_size, 0); 137 DCHECK_GT(subsamples_size, 0);
132 DCHECK(subsamples); 138 DCHECK(subsamples);
133 for (int i = 0; i < subsamples_size; ++i) { 139 for (int i = 0; i < subsamples_size; ++i) {
134 DCHECK(subsamples[i].clear_bytes <= std::numeric_limits<uint16>::max()); 140 DCHECK(subsamples[i].clear_bytes <= std::numeric_limits<uint16_t>::max());
135 if (subsamples[i].cypher_bytes > 141 if (subsamples[i].cypher_bytes >
136 static_cast<uint32>(std::numeric_limits<int32>::max())) { 142 static_cast<uint32_t>(std::numeric_limits<int32_t>::max())) {
137 return MEDIA_CODEC_ERROR; 143 return MEDIA_CODEC_ERROR;
138 } 144 }
139 clear_data.push_back(subsamples[i].clear_bytes); 145 clear_data.push_back(subsamples[i].clear_bytes);
140 encrypted_data.push_back(subsamples[i].cypher_bytes); 146 encrypted_data.push_back(subsamples[i].cypher_bytes);
141 } 147 }
142 } 148 }
143 149
144 AMediaCodecCryptoInfo* crypto_info = AMediaCodecCryptoInfo_new( 150 AMediaCodecCryptoInfo* crypto_info = AMediaCodecCryptoInfo_new(
145 new_subsamples_size, 151 new_subsamples_size,
146 reinterpret_cast<uint8*>(const_cast<char*>(key_id.data())), 152 reinterpret_cast<uint8_t*>(const_cast<char*>(key_id.data())),
147 reinterpret_cast<uint8*>(const_cast<char*>(iv.data())), 153 reinterpret_cast<uint8_t*>(const_cast<char*>(iv.data())),
148 AMEDIACODECRYPTOINFO_MODE_AES_CTR, clear_data.data(), 154 AMEDIACODECRYPTOINFO_MODE_AES_CTR, clear_data.data(),
149 encrypted_data.data()); 155 encrypted_data.data());
150 156
151 media_status_t status = AMediaCodec_queueSecureInputBuffer( 157 media_status_t status = AMediaCodec_queueSecureInputBuffer(
152 media_codec_.get(), index, 0, crypto_info, 158 media_codec_.get(), index, 0, crypto_info,
153 presentation_time.InMicroseconds(), 0); 159 presentation_time.InMicroseconds(), 0);
154 return TranslateMediaCodecStatus(status); 160 return TranslateMediaCodecStatus(status);
155 } 161 }
156 162
157 void NdkMediaCodecBridge::QueueEOS(int input_buffer_index) { 163 void NdkMediaCodecBridge::QueueEOS(int input_buffer_index) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 return MEDIA_CODEC_DEQUEUE_OUTPUT_AGAIN_LATER; 203 return MEDIA_CODEC_DEQUEUE_OUTPUT_AGAIN_LATER;
198 else 204 else
199 return MEDIA_CODEC_ERROR; 205 return MEDIA_CODEC_ERROR;
200 } 206 }
201 207
202 void NdkMediaCodecBridge::ReleaseOutputBuffer(int index, bool render) { 208 void NdkMediaCodecBridge::ReleaseOutputBuffer(int index, bool render) {
203 AMediaCodec_releaseOutputBuffer(media_codec_.get(), index, render); 209 AMediaCodec_releaseOutputBuffer(media_codec_.get(), index, render);
204 } 210 }
205 211
206 void NdkMediaCodecBridge::GetInputBuffer(int input_buffer_index, 212 void NdkMediaCodecBridge::GetInputBuffer(int input_buffer_index,
207 uint8** data, 213 uint8_t** data,
208 size_t* capacity) { 214 size_t* capacity) {
209 *data = AMediaCodec_getInputBuffer(media_codec_.get(), input_buffer_index, 215 *data = AMediaCodec_getInputBuffer(media_codec_.get(), input_buffer_index,
210 capacity); 216 capacity);
211 } 217 }
212 218
213 bool NdkMediaCodecBridge::CopyFromOutputBuffer(int index, 219 bool NdkMediaCodecBridge::CopyFromOutputBuffer(int index,
214 size_t offset, 220 size_t offset,
215 void* dst, 221 void* dst,
216 int dst_size) { 222 int dst_size) {
217 size_t capacity; 223 size_t capacity;
218 uint8_t* src_data = 224 uint8_t* src_data =
219 AMediaCodec_getOutputBuffer(media_codec_.get(), index, &capacity); 225 AMediaCodec_getOutputBuffer(media_codec_.get(), index, &capacity);
220 226
221 if (capacity < offset || capacity - offset < static_cast<size_t>(dst_size)) 227 if (capacity < offset || capacity - offset < static_cast<size_t>(dst_size))
222 return false; 228 return false;
223 229
224 memcpy(dst, src_data + offset, dst_size); 230 memcpy(dst, src_data + offset, dst_size);
225 return true; 231 return true;
226 } 232 }
227 233
228 } // namespace media 234 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/ndk_media_codec_bridge.h ('k') | media/base/android/sdk_media_codec_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698