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

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

Issue 1367403003: Added UMA metrics for MediaSourcePlayer and MediaCodecPlayer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@mtplayer-drm
Patch Set: Attempt to fix clang compilation Created 5 years, 2 months 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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_DECODER_JOB_H_ 5 #ifndef MEDIA_BASE_ANDROID_MEDIA_DECODER_JOB_H_
6 #define MEDIA_BASE_ANDROID_MEDIA_DECODER_JOB_H_ 6 #define MEDIA_BASE_ANDROID_MEDIA_DECODER_JOB_H_
7 7
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "media/base/android/demuxer_stream_player_params.h" 11 #include "media/base/android/demuxer_stream_player_params.h"
12 #include "media/base/android/media_codec_bridge.h" 12 #include "media/base/android/media_codec_bridge.h"
13 #include "ui/gl/android/scoped_java_surface.h" 13 #include "ui/gl/android/scoped_java_surface.h"
14 14
15 namespace base { 15 namespace base {
16 class SingleThreadTaskRunner; 16 class SingleThreadTaskRunner;
17 } 17 }
18 18
19 namespace media { 19 namespace media {
20 20
21 struct FrameStatistics;
21 class MediaDrmBridge; 22 class MediaDrmBridge;
22 23
23 // Class for managing all the decoding tasks. Each decoding task will be posted 24 // Class for managing all the decoding tasks. Each decoding task will be posted
24 // onto the same thread. The thread will be stopped once Stop() is called. 25 // onto the same thread. The thread will be stopped once Stop() is called.
25 // Data is stored in 2 chunks. When new data arrives, it is always stored in 26 // Data is stored in 2 chunks. When new data arrives, it is always stored in
26 // an inactive chunk. And when the current active chunk becomes empty, a new 27 // an inactive chunk. And when the current active chunk becomes empty, a new
27 // data request will be sent to the renderer. 28 // data request will be sent to the renderer.
28 class MediaDecoderJob { 29 class MediaDecoderJob {
29 public: 30 public:
30 // Return value when Decode() is called. 31 // Return value when Decode() is called.
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 111
111 protected: 112 protected:
112 // Creates a new MediaDecoderJob instance. 113 // Creates a new MediaDecoderJob instance.
113 // |decoder_task_runner| - Thread on which the decoder task will run. 114 // |decoder_task_runner| - Thread on which the decoder task will run.
114 // |request_data_cb| - Callback to request more data for the decoder. 115 // |request_data_cb| - Callback to request more data for the decoder.
115 // |config_changed_cb| - Callback to inform the caller that 116 // |config_changed_cb| - Callback to inform the caller that
116 // demuxer config has changed. 117 // demuxer config has changed.
117 MediaDecoderJob( 118 MediaDecoderJob(
118 const scoped_refptr<base::SingleThreadTaskRunner>& decoder_task_runner, 119 const scoped_refptr<base::SingleThreadTaskRunner>& decoder_task_runner,
119 const base::Closure& request_data_cb, 120 const base::Closure& request_data_cb,
120 const base::Closure& config_changed_cb); 121 const base::Closure& config_changed_cb,
122 FrameStatistics* frame_statistics);
121 123
122 // Release the output buffer at index |output_buffer_index| and render it if 124 // Release the output buffer at index |output_buffer_index| and render it if
123 // |render_output| is true. Upon completion, |callback| will be called. 125 // |render_output| is true. Upon completion, |callback| will be called.
124 virtual void ReleaseOutputBuffer( 126 virtual void ReleaseOutputBuffer(
125 int output_buffer_index, 127 int output_buffer_index,
126 size_t offset, 128 size_t offset,
127 size_t size, 129 size_t size,
128 bool render_output, 130 bool render_output,
129 base::TimeDelta current_presentation_timestamp, 131 base::TimeDelta current_presentation_timestamp,
130 const ReleaseOutputCompletionCallback& callback) = 0; 132 const ReleaseOutputCompletionCallback& callback) = 0;
(...skipping 16 matching lines...) Expand all
147 MediaDrmBridge* drm_bridge() { return drm_bridge_; } 149 MediaDrmBridge* drm_bridge() { return drm_bridge_; }
148 150
149 void set_is_content_encrypted(bool is_content_encrypted) { 151 void set_is_content_encrypted(bool is_content_encrypted) {
150 is_content_encrypted_ = is_content_encrypted; 152 is_content_encrypted_ = is_content_encrypted;
151 } 153 }
152 154
153 bool need_to_reconfig_decoder_job_; 155 bool need_to_reconfig_decoder_job_;
154 156
155 scoped_ptr<MediaCodecBridge> media_codec_bridge_; 157 scoped_ptr<MediaCodecBridge> media_codec_bridge_;
156 158
159 FrameStatistics* frame_statistics_;
160
157 private: 161 private:
158 friend class MediaSourcePlayerTest; 162 friend class MediaSourcePlayerTest;
159 163
160 // Causes this instance to be deleted on the thread it is bound to. 164 // Causes this instance to be deleted on the thread it is bound to.
161 void Release(); 165 void Release();
162 166
163 // Queues an access unit into |media_codec_bridge_|'s input buffer. 167 // Queues an access unit into |media_codec_bridge_|'s input buffer.
164 MediaCodecStatus QueueInputBuffer(const AccessUnit& unit); 168 MediaCodecStatus QueueInputBuffer(const AccessUnit& unit);
165 169
166 // Returns true if this object has data to decode. 170 // Returns true if this object has data to decode.
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 // This access unit is passed to the decoder during config changes to drain 357 // This access unit is passed to the decoder during config changes to drain
354 // the decoder. 358 // the decoder.
355 AccessUnit eos_unit_; 359 AccessUnit eos_unit_;
356 360
357 DISALLOW_IMPLICIT_CONSTRUCTORS(MediaDecoderJob); 361 DISALLOW_IMPLICIT_CONSTRUCTORS(MediaDecoderJob);
358 }; 362 };
359 363
360 } // namespace media 364 } // namespace media
361 365
362 #endif // MEDIA_BASE_ANDROID_MEDIA_DECODER_JOB_H_ 366 #endif // MEDIA_BASE_ANDROID_MEDIA_DECODER_JOB_H_
OLDNEW
« no previous file with comments | « media/base/android/media_codec_video_decoder.cc ('k') | media/base/android/media_decoder_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698