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

Side by Side Diff: media/filters/video_renderer_base.h

Issue 12324005: Fix crash in VideoRendererBase::ThreadMain(). (Closed) Base URL: http://git.chromium.org/chromium/src.git@git-svn
Patch Set: Created 7 years, 10 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
« no previous file with comments | « no previous file | media/filters/video_renderer_base.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #ifndef MEDIA_FILTERS_VIDEO_RENDERER_BASE_H_ 5 #ifndef MEDIA_FILTERS_VIDEO_RENDERER_BASE_H_
6 #define MEDIA_FILTERS_VIDEO_RENDERER_BASE_H_ 6 #define MEDIA_FILTERS_VIDEO_RENDERER_BASE_H_
7 7
8 #include <deque> 8 #include <deque>
9 9
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 VideoFrameQueue ready_frames_; 174 VideoFrameQueue ready_frames_;
175 175
176 // Used to signal |thread_| as frames are added to |frames_|. Rule of thumb: 176 // Used to signal |thread_| as frames are added to |frames_|. Rule of thumb:
177 // always check |state_| to see if it was set to STOPPED after waking up! 177 // always check |state_| to see if it was set to STOPPED after waking up!
178 base::ConditionVariable frame_available_; 178 base::ConditionVariable frame_available_;
179 179
180 // State transition Diagram of this class: 180 // State transition Diagram of this class:
181 // [kUninitialized] -------> [kError] 181 // [kUninitialized] -------> [kError]
182 // | 182 // |
183 // | Initialize() 183 // | Initialize()
184 // [kInitializing]
185 // |
184 // V All frames returned 186 // V All frames returned
185 // +------[kFlushed]<-----[kFlushing]<--- OnDecoderResetDone() 187 // +------[kFlushed]<-----[kFlushing]<--- OnDecoderResetDone()
186 // | | Preroll() or upon ^ 188 // | | Preroll() or upon ^
187 // | V got first frame [kFlushingDecoder] 189 // | V got first frame [kFlushingDecoder]
188 // | [kPrerolling] ^ 190 // | [kPrerolling] ^
189 // | | | Flush() 191 // | | | Flush()
190 // | V Got enough frames | 192 // | V Got enough frames |
191 // | [kPrerolled]---------------------->[kPaused] 193 // | [kPrerolled]---------------------->[kPaused]
192 // | | Pause() ^ 194 // | | Pause() ^
193 // | V Play() | 195 // | V Play() |
194 // | [kPlaying]---------------------------| 196 // | [kPlaying]---------------------------|
195 // | | Pause() ^ 197 // | | Pause() ^
196 // | V Receive EOF frame. | Pause() 198 // | V Receive EOF frame. | Pause()
197 // | [kEnded]-----------------------------+ 199 // | [kEnded]-----------------------------+
198 // | ^ 200 // | ^
199 // | | 201 // | |
200 // +-----> [kStopped] [Any state other than] 202 // +-----> [kStopped] [Any state other than]
201 // [kUninitialized/kError] 203 // [kUninitialized/kError]
202 204
203 // Simple state tracking variable. 205 // Simple state tracking variable.
204 enum State { 206 enum State {
205 kUninitialized, 207 kUninitialized,
208 kInitializing,
206 kPrerolled, 209 kPrerolled,
207 kPaused, 210 kPaused,
208 kFlushingDecoder, 211 kFlushingDecoder,
209 kFlushing, 212 kFlushing,
210 kFlushed, 213 kFlushed,
211 kPrerolling, 214 kPrerolling,
212 kPlaying, 215 kPlaying,
213 kEnded, 216 kEnded,
214 kStopped, 217 kStopped,
215 kError, 218 kError,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 // either for calling |paint_cb_| or for dropping. Set to kNoTimestamp() 268 // either for calling |paint_cb_| or for dropping. Set to kNoTimestamp()
266 // during flushing. 269 // during flushing.
267 base::TimeDelta last_timestamp_; 270 base::TimeDelta last_timestamp_;
268 271
269 DISALLOW_COPY_AND_ASSIGN(VideoRendererBase); 272 DISALLOW_COPY_AND_ASSIGN(VideoRendererBase);
270 }; 273 };
271 274
272 } // namespace media 275 } // namespace media
273 276
274 #endif // MEDIA_FILTERS_VIDEO_RENDERER_BASE_H_ 277 #endif // MEDIA_FILTERS_VIDEO_RENDERER_BASE_H_
OLDNEW
« no previous file with comments | « no previous file | media/filters/video_renderer_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698