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

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

Issue 1278193003: In-class-initialize LIMITED_MEDIA_LOG log counters (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fix_518069
Patch Set: (Rebase and) Nix the enum->const cleanup from this CL Created 5 years, 4 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 | « media/filters/frame_processor.cc ('k') | media/filters/source_buffer_stream.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 // SourceBufferStream is a data structure that stores media Buffers in ranges. 5 // SourceBufferStream is a data structure that stores media Buffers in ranges.
6 // Buffers can be appended out of presentation order. Buffers are retrieved by 6 // Buffers can be appended out of presentation order. Buffers are retrieved by
7 // seeking to the desired start point and calling GetNextBuffer(). Buffers are 7 // seeking to the desired start point and calling GetNextBuffer(). Buffers are
8 // returned in sequential presentation order. 8 // returned in sequential presentation order.
9 9
10 #ifndef MEDIA_FILTERS_SOURCE_BUFFER_STREAM_H_ 10 #ifndef MEDIA_FILTERS_SOURCE_BUFFER_STREAM_H_
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 // is wrong with the content. 341 // is wrong with the content.
342 scoped_refptr<MediaLog> media_log_; 342 scoped_refptr<MediaLog> media_log_;
343 343
344 // List of disjoint buffered ranges, ordered by start time. 344 // List of disjoint buffered ranges, ordered by start time.
345 RangeList ranges_; 345 RangeList ranges_;
346 346
347 // Indicates which decoder config is being used by the decoder. 347 // Indicates which decoder config is being used by the decoder.
348 // GetNextBuffer() is only allows to return buffers that have a 348 // GetNextBuffer() is only allows to return buffers that have a
349 // config ID that matches this index. If there is a mismatch then 349 // config ID that matches this index. If there is a mismatch then
350 // it must signal that a config change is needed. 350 // it must signal that a config change is needed.
351 int current_config_index_; 351 int current_config_index_ = 0;
352 352
353 // Indicates which decoder config to associate with new buffers 353 // Indicates which decoder config to associate with new buffers
354 // being appended. Each new buffer appended has its config ID set 354 // being appended. Each new buffer appended has its config ID set
355 // to the value of this field. 355 // to the value of this field.
356 int append_config_index_; 356 int append_config_index_ = 0;
357 357
358 // Holds the audio/video configs for this stream. |current_config_index_| 358 // Holds the audio/video configs for this stream. |current_config_index_|
359 // and |append_config_index_| represent indexes into one of these vectors. 359 // and |append_config_index_| represent indexes into one of these vectors.
360 std::vector<AudioDecoderConfig> audio_configs_; 360 std::vector<AudioDecoderConfig> audio_configs_;
361 std::vector<VideoDecoderConfig> video_configs_; 361 std::vector<VideoDecoderConfig> video_configs_;
362 362
363 // Holds the text config for this stream. 363 // Holds the text config for this stream.
364 TextTrackConfig text_track_config_; 364 TextTrackConfig text_track_config_;
365 365
366 // True if more data needs to be appended before the Seek() can complete, 366 // True if more data needs to be appended before the Seek() can complete,
367 // false if no Seek() has been requested or the Seek() is completed. 367 // false if no Seek() has been requested or the Seek() is completed.
368 bool seek_pending_; 368 bool seek_pending_ = false;
369 369
370 // True if the end of the stream has been signalled. 370 // True if the end of the stream has been signalled.
371 bool end_of_stream_; 371 bool end_of_stream_ = false;
372 372
373 // Timestamp of the last request to Seek(). 373 // Timestamp of the last request to Seek().
374 base::TimeDelta seek_buffer_timestamp_; 374 base::TimeDelta seek_buffer_timestamp_;
375 375
376 // Pointer to the seeked-to Range. This is the range from which 376 // Pointer to the seeked-to Range. This is the range from which
377 // GetNextBuffer() calls are fulfilled after the |track_buffer_| has been 377 // GetNextBuffer() calls are fulfilled after the |track_buffer_| has been
378 // emptied. 378 // emptied.
379 SourceBufferRange* selected_range_; 379 SourceBufferRange* selected_range_ = nullptr;
380 380
381 // Queue of the next buffers to be returned from calls to GetNextBuffer(). If 381 // Queue of the next buffers to be returned from calls to GetNextBuffer(). If
382 // |track_buffer_| is empty, return buffers from |selected_range_|. 382 // |track_buffer_| is empty, return buffers from |selected_range_|.
383 BufferQueue track_buffer_; 383 BufferQueue track_buffer_;
384 384
385 // If there has been no intervening Seek, this will be true if the last 385 // If there has been no intervening Seek, this will be true if the last
386 // emitted buffer emptied |track_buffer_|. 386 // emitted buffer emptied |track_buffer_|.
387 bool just_exhausted_track_buffer_; 387 bool just_exhausted_track_buffer_ = false;
388 388
389 // The start time of the current media segment being appended. 389 // The start time of the current media segment being appended.
390 DecodeTimestamp media_segment_start_time_; 390 DecodeTimestamp media_segment_start_time_;
391 391
392 // Points to the range containing the current media segment being appended. 392 // Points to the range containing the current media segment being appended.
393 RangeList::iterator range_for_next_append_; 393 RangeList::iterator range_for_next_append_;
394 394
395 // True when the next call to Append() begins a new media segment. 395 // True when the next call to Append() begins a new media segment.
396 bool new_media_segment_; 396 bool new_media_segment_ = false;
397 397
398 // The timestamp of the last buffer appended to the media segment, set to 398 // The timestamp of the last buffer appended to the media segment, set to
399 // kNoDecodeTimestamp() if the beginning of the segment. 399 // kNoDecodeTimestamp() if the beginning of the segment.
400 DecodeTimestamp last_appended_buffer_timestamp_; 400 DecodeTimestamp last_appended_buffer_timestamp_;
401 bool last_appended_buffer_is_keyframe_; 401 bool last_appended_buffer_is_keyframe_ = false;
402 402
403 // The decode timestamp on the last buffer returned by the most recent 403 // The decode timestamp on the last buffer returned by the most recent
404 // GetNextBuffer() call. Set to kNoDecodeTimestamp() if GetNextBuffer() hasn't 404 // GetNextBuffer() call. Set to kNoDecodeTimestamp() if GetNextBuffer() hasn't
405 // been called yet or a seek has happened since the last GetNextBuffer() call. 405 // been called yet or a seek has happened since the last GetNextBuffer() call.
406 DecodeTimestamp last_output_buffer_timestamp_; 406 DecodeTimestamp last_output_buffer_timestamp_;
407 407
408 // Stores the largest distance between two adjacent buffers in this stream. 408 // Stores the largest distance between two adjacent buffers in this stream.
409 base::TimeDelta max_interbuffer_distance_; 409 base::TimeDelta max_interbuffer_distance_;
410 410
411 // The maximum amount of data in bytes the stream will keep in memory. 411 // The maximum amount of data in bytes the stream will keep in memory.
412 size_t memory_limit_; 412 size_t memory_limit_;
413 413
414 // Indicates that a kConfigChanged status has been reported by GetNextBuffer() 414 // Indicates that a kConfigChanged status has been reported by GetNextBuffer()
415 // and GetCurrentXXXDecoderConfig() must be called to update the current 415 // and GetCurrentXXXDecoderConfig() must be called to update the current
416 // config. GetNextBuffer() must not be called again until 416 // config. GetNextBuffer() must not be called again until
417 // GetCurrentXXXDecoderConfig() has been called. 417 // GetCurrentXXXDecoderConfig() has been called.
418 bool config_change_pending_; 418 bool config_change_pending_ = false;
419 419
420 // Used by HandleNextBufferWithSplice() or HandleNextBufferWithPreroll() when 420 // Used by HandleNextBufferWithSplice() or HandleNextBufferWithPreroll() when
421 // a splice frame buffer or buffer with preroll is returned from 421 // a splice frame buffer or buffer with preroll is returned from
422 // GetNextBufferInternal(). 422 // GetNextBufferInternal().
423 scoped_refptr<StreamParserBuffer> pending_buffer_; 423 scoped_refptr<StreamParserBuffer> pending_buffer_;
424 424
425 // Indicates which of the splice buffers in |splice_buffer_| should be 425 // Indicates which of the splice buffers in |splice_buffer_| should be
426 // handled out next. 426 // handled out next.
427 size_t splice_buffers_index_; 427 size_t splice_buffers_index_ = 0;
428 428
429 // Indicates that all buffers before |pending_buffer_| have been handed out. 429 // Indicates that all buffers before |pending_buffer_| have been handed out.
430 bool pending_buffers_complete_; 430 bool pending_buffers_complete_ = false;
431 431
432 // Indicates that splice frame generation is enabled. 432 // Indicates that splice frame generation is enabled.
433 const bool splice_frames_enabled_; 433 const bool splice_frames_enabled_;
434 434
435 // To prevent log spam, count the number of warnings and successes logged. 435 // To prevent log spam, count the number of warnings and successes logged.
436 int num_splice_generation_warning_logs_; 436 int num_splice_generation_warning_logs_ = 0;
437 int num_splice_generation_success_logs_; 437 int num_splice_generation_success_logs_ = 0;
438 int num_track_buffer_gap_warning_logs_; 438 int num_track_buffer_gap_warning_logs_ = 0;
439 439
440 DISALLOW_COPY_AND_ASSIGN(SourceBufferStream); 440 DISALLOW_COPY_AND_ASSIGN(SourceBufferStream);
441 }; 441 };
442 442
443 } // namespace media 443 } // namespace media
444 444
445 #endif // MEDIA_FILTERS_SOURCE_BUFFER_STREAM_H_ 445 #endif // MEDIA_FILTERS_SOURCE_BUFFER_STREAM_H_
OLDNEW
« no previous file with comments | « media/filters/frame_processor.cc ('k') | media/filters/source_buffer_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698