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

Side by Side Diff: media/base/android/media_codec_bridge.h

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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 #ifndef MEDIA_BASE_ANDROID_MEDIA_CODEC_BRIDGE_H_ 5 #ifndef MEDIA_BASE_ANDROID_MEDIA_CODEC_BRIDGE_H_
6 #define MEDIA_BASE_ANDROID_MEDIA_CODEC_BRIDGE_H_ 6 #define MEDIA_BASE_ANDROID_MEDIA_CODEC_BRIDGE_H_
7 7
8 #include <jni.h> 8 #include <jni.h>
9 #include <stdint.h>
10
9 #include <set> 11 #include <set>
10 #include <string> 12 #include <string>
11 13
12 #include "base/android/scoped_java_ref.h" 14 #include "base/android/scoped_java_ref.h"
13 #include "base/time/time.h" 15 #include "base/time/time.h"
14 #include "media/base/audio_decoder_config.h" 16 #include "media/base/audio_decoder_config.h"
15 #include "media/base/video_decoder_config.h" 17 #include "media/base/video_decoder_config.h"
16 #include "ui/gfx/geometry/size.h" 18 #include "ui/gfx/geometry/size.h"
17 19
18 namespace media { 20 namespace media {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 112
111 // Used for checking for new sampling rate after DequeueInputBuffer() returns 113 // Used for checking for new sampling rate after DequeueInputBuffer() returns
112 // INFO_OUTPUT_FORMAT_CHANGED 114 // INFO_OUTPUT_FORMAT_CHANGED
113 int GetOutputSamplingRate(); 115 int GetOutputSamplingRate();
114 116
115 // Submits a byte array to the given input buffer. Call this after getting an 117 // Submits a byte array to the given input buffer. Call this after getting an
116 // available buffer from DequeueInputBuffer(). If |data| is NULL, assume the 118 // available buffer from DequeueInputBuffer(). If |data| is NULL, assume the
117 // input buffer has already been populated (but still obey |size|). 119 // input buffer has already been populated (but still obey |size|).
118 // |data_size| must be less than kint32max (because Java). 120 // |data_size| must be less than kint32max (because Java).
119 MediaCodecStatus QueueInputBuffer(int index, 121 MediaCodecStatus QueueInputBuffer(int index,
120 const uint8* data, 122 const uint8_t* data,
121 size_t data_size, 123 size_t data_size,
122 const base::TimeDelta& presentation_time); 124 const base::TimeDelta& presentation_time);
123 125
124 // Similar to the above call, but submits a buffer that is encrypted. Note: 126 // Similar to the above call, but submits a buffer that is encrypted. Note:
125 // NULL |subsamples| indicates the whole buffer is encrypted. If |data| is 127 // NULL |subsamples| indicates the whole buffer is encrypted. If |data| is
126 // NULL, assume the input buffer has already been populated (but still obey 128 // NULL, assume the input buffer has already been populated (but still obey
127 // |data_size|). |data_size| must be less than kint32max (because Java). 129 // |data_size|). |data_size| must be less than kint32max (because Java).
128 MediaCodecStatus QueueSecureInputBuffer( 130 MediaCodecStatus QueueSecureInputBuffer(
129 int index, 131 int index,
130 const uint8* data, 132 const uint8_t* data,
131 size_t data_size, 133 size_t data_size,
132 const std::string& key_id, 134 const std::string& key_id,
133 const std::string& iv, 135 const std::string& iv,
134 const std::vector<SubsampleEntry>& subsamples, 136 const std::vector<SubsampleEntry>& subsamples,
135 const base::TimeDelta& presentation_time); 137 const base::TimeDelta& presentation_time);
136 138
137 // Same QueueSecureInputBuffer overriden for the use with MediaSourcePlayer 139 // Same QueueSecureInputBuffer overriden for the use with MediaSourcePlayer
138 // and MediaCodecPlayer. 140 // and MediaCodecPlayer.
139 // TODO(timav): remove this method and keep only the one above after we 141 // TODO(timav): remove this method and keep only the one above after we
140 // switch to the Spitzer pipeline. 142 // switch to the Spitzer pipeline.
141 MediaCodecStatus QueueSecureInputBuffer( 143 MediaCodecStatus QueueSecureInputBuffer(
142 int index, 144 int index,
143 const uint8* data, 145 const uint8_t* data,
144 size_t data_size, 146 size_t data_size,
145 const uint8* key_id, 147 const uint8_t* key_id,
146 int key_id_size, 148 int key_id_size,
147 const uint8* iv, 149 const uint8_t* iv,
148 int iv_size, 150 int iv_size,
149 const SubsampleEntry* subsamples, 151 const SubsampleEntry* subsamples,
150 int subsamples_size, 152 int subsamples_size,
151 const base::TimeDelta& presentation_time); 153 const base::TimeDelta& presentation_time);
152 154
153 // Submits an empty buffer with a EOS (END OF STREAM) flag. 155 // Submits an empty buffer with a EOS (END OF STREAM) flag.
154 void QueueEOS(int input_buffer_index); 156 void QueueEOS(int input_buffer_index);
155 157
156 // Returns: 158 // Returns:
157 // MEDIA_CODEC_OK if an input buffer is ready to be filled with valid data, 159 // MEDIA_CODEC_OK if an input buffer is ready to be filled with valid data,
(...skipping 27 matching lines...) Expand all
185 187
186 // Returns the number of output buffers used by the codec. 188 // Returns the number of output buffers used by the codec.
187 // TODO(qinmin): this call is deprecated in Lollipop. 189 // TODO(qinmin): this call is deprecated in Lollipop.
188 int GetOutputBuffersCount(); 190 int GetOutputBuffersCount();
189 191
190 // Returns the capacity of each output buffer used by the codec. 192 // Returns the capacity of each output buffer used by the codec.
191 // TODO(qinmin): this call is deprecated in Lollipop. 193 // TODO(qinmin): this call is deprecated in Lollipop.
192 size_t GetOutputBuffersCapacity(); 194 size_t GetOutputBuffersCapacity();
193 195
194 // Returns an input buffer's base pointer and capacity. 196 // Returns an input buffer's base pointer and capacity.
195 void GetInputBuffer(int input_buffer_index, uint8** data, size_t* capacity); 197 void GetInputBuffer(int input_buffer_index, uint8_t** data, size_t* capacity);
196 198
197 // Copy |dst_size| bytes from output buffer |index|'s |offset| onwards into 199 // Copy |dst_size| bytes from output buffer |index|'s |offset| onwards into
198 // |*dst|. 200 // |*dst|.
199 bool CopyFromOutputBuffer(int index, size_t offset, void* dst, int dst_size); 201 bool CopyFromOutputBuffer(int index, size_t offset, void* dst, int dst_size);
200 202
201 static bool RegisterMediaCodecBridge(JNIEnv* env); 203 static bool RegisterMediaCodecBridge(JNIEnv* env);
202 204
203 protected: 205 protected:
204 // Returns true if |mime_type| is known to be unaccelerated (i.e. backed by a 206 // Returns true if |mime_type| is known to be unaccelerated (i.e. backed by a
205 // software codec instead of a hardware one). 207 // software codec instead of a hardware one).
(...skipping 14 matching lines...) Expand all
220 // the address to read. 222 // the address to read.
221 int GetOutputBufferAddress(int index, size_t offset, void** addr); 223 int GetOutputBufferAddress(int index, size_t offset, void** addr);
222 224
223 jobject media_codec() { return j_media_codec_.obj(); } 225 jobject media_codec() { return j_media_codec_.obj(); }
224 MediaCodecDirection direction_; 226 MediaCodecDirection direction_;
225 227
226 private: 228 private:
227 // Fills a particular input buffer; returns false if |data_size| exceeds the 229 // Fills a particular input buffer; returns false if |data_size| exceeds the
228 // input buffer's capacity (and doesn't touch the input buffer in that case). 230 // input buffer's capacity (and doesn't touch the input buffer in that case).
229 bool FillInputBuffer(int index, 231 bool FillInputBuffer(int index,
230 const uint8* data, 232 const uint8_t* data,
231 size_t data_size) WARN_UNUSED_RESULT; 233 size_t data_size) WARN_UNUSED_RESULT;
232 234
233 // Java MediaCodec instance. 235 // Java MediaCodec instance.
234 base::android::ScopedJavaGlobalRef<jobject> j_media_codec_; 236 base::android::ScopedJavaGlobalRef<jobject> j_media_codec_;
235 237
236 DISALLOW_COPY_AND_ASSIGN(MediaCodecBridge); 238 DISALLOW_COPY_AND_ASSIGN(MediaCodecBridge);
237 }; 239 };
238 240
239 class AudioCodecBridge : public MediaCodecBridge { 241 class AudioCodecBridge : public MediaCodecBridge {
240 public: 242 public:
241 // Returns an AudioCodecBridge instance if |codec| is supported, or a NULL 243 // Returns an AudioCodecBridge instance if |codec| is supported, or a NULL
242 // pointer otherwise. 244 // pointer otherwise.
243 static AudioCodecBridge* Create(const AudioCodec& codec); 245 static AudioCodecBridge* Create(const AudioCodec& codec);
244 246
245 // See MediaCodecBridge::IsKnownUnaccelerated(). 247 // See MediaCodecBridge::IsKnownUnaccelerated().
246 static bool IsKnownUnaccelerated(const AudioCodec& codec); 248 static bool IsKnownUnaccelerated(const AudioCodec& codec);
247 249
248 // Start the audio codec bridge. 250 // Start the audio codec bridge.
249 bool Start(const AudioCodec& codec, int sample_rate, int channel_count, 251 bool Start(const AudioCodec& codec,
250 const uint8* extra_data, size_t extra_data_size, 252 int sample_rate,
251 int64 codec_delay_ns, int64 seek_preroll_ns, 253 int channel_count,
252 bool play_audio, jobject media_crypto) WARN_UNUSED_RESULT; 254 const uint8_t* extra_data,
255 size_t extra_data_size,
256 int64_t codec_delay_ns,
257 int64_t seek_preroll_ns,
258 bool play_audio,
259 jobject media_crypto) WARN_UNUSED_RESULT;
253 260
254 // Plays the output buffer right away or save for later playback if |postpone| 261 // Plays the output buffer right away or save for later playback if |postpone|
255 // is set to true. This call must be called after DequeueOutputBuffer() and 262 // is set to true. This call must be called after DequeueOutputBuffer() and
256 // before ReleaseOutputBuffer. The data is extracted from the output buffers 263 // before ReleaseOutputBuffer. The data is extracted from the output buffers
257 // using |index|, |size| and |offset|. Returns the playback head position 264 // using |index|, |size| and |offset|. Returns the playback head position
258 // expressed in frames. 265 // expressed in frames.
259 // When |postpone| is set to true, the next PlayOutputBuffer() should have 266 // When |postpone| is set to true, the next PlayOutputBuffer() should have
260 // postpone == false, and it will play two buffers: the postponed one and 267 // postpone == false, and it will play two buffers: the postponed one and
261 // the one identified by |index|. 268 // the one identified by |index|.
262 int64 PlayOutputBuffer(int index, 269 int64_t PlayOutputBuffer(int index,
263 size_t size, 270 size_t size,
264 size_t offset, 271 size_t offset,
265 bool postpone = false); 272 bool postpone = false);
266 273
267 // Set the volume of the audio output. 274 // Set the volume of the audio output.
268 void SetVolume(double volume); 275 void SetVolume(double volume);
269 276
270 private: 277 private:
271 explicit AudioCodecBridge(const std::string& mime); 278 explicit AudioCodecBridge(const std::string& mime);
272 279
273 // Configure the java MediaFormat object with the extra codec data passed in. 280 // Configure the java MediaFormat object with the extra codec data passed in.
274 bool ConfigureMediaFormat(jobject j_format, const AudioCodec& codec, 281 bool ConfigureMediaFormat(jobject j_format,
275 const uint8* extra_data, size_t extra_data_size, 282 const AudioCodec& codec,
276 int64 codec_delay_ns, int64 seek_preroll_ns); 283 const uint8_t* extra_data,
284 size_t extra_data_size,
285 int64_t codec_delay_ns,
286 int64_t seek_preroll_ns);
277 }; 287 };
278 288
279 class MEDIA_EXPORT VideoCodecBridge : public MediaCodecBridge { 289 class MEDIA_EXPORT VideoCodecBridge : public MediaCodecBridge {
280 public: 290 public:
281 // See MediaCodecBridge::IsKnownUnaccelerated(). 291 // See MediaCodecBridge::IsKnownUnaccelerated().
282 static bool IsKnownUnaccelerated(const VideoCodec& codec, 292 static bool IsKnownUnaccelerated(const VideoCodec& codec,
283 MediaCodecDirection direction); 293 MediaCodecDirection direction);
284 294
285 // Create, start, and return a VideoCodecBridge decoder or NULL on failure. 295 // Create, start, and return a VideoCodecBridge decoder or NULL on failure.
286 static VideoCodecBridge* CreateDecoder( 296 static VideoCodecBridge* CreateDecoder(
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 VideoCodecBridge(const std::string& mime, 330 VideoCodecBridge(const std::string& mime,
321 bool is_secure, 331 bool is_secure,
322 MediaCodecDirection direction); 332 MediaCodecDirection direction);
323 333
324 int adaptive_playback_supported_for_testing_; 334 int adaptive_playback_supported_for_testing_;
325 }; 335 };
326 336
327 } // namespace media 337 } // namespace media
328 338
329 #endif // MEDIA_BASE_ANDROID_MEDIA_CODEC_BRIDGE_H_ 339 #endif // MEDIA_BASE_ANDROID_MEDIA_CODEC_BRIDGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698