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

Side by Side Diff: media/formats/webm/webm_cluster_parser.h

Issue 2815303006: Convert MediaLog from being ref counted to owned by WebMediaPlayer. (Closed)
Patch Set: Rebase. Created 3 years, 8 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/formats/webm/webm_audio_client.cc ('k') | media/formats/webm/webm_cluster_parser.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_FORMATS_WEBM_WEBM_CLUSTER_PARSER_H_ 5 #ifndef MEDIA_FORMATS_WEBM_WEBM_CLUSTER_PARSER_H_
6 #define MEDIA_FORMATS_WEBM_WEBM_CLUSTER_PARSER_H_ 6 #define MEDIA_FORMATS_WEBM_WEBM_CLUSTER_PARSER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <deque> 10 #include <deque>
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 // https://tools.ietf.org/html/rfc6716#page-14 47 // https://tools.ietf.org/html/rfc6716#page-14
48 static const uint16_t kOpusFrameDurationsMu[]; 48 static const uint16_t kOpusFrameDurationsMu[];
49 49
50 private: 50 private:
51 // Helper class that manages per-track state. 51 // Helper class that manages per-track state.
52 class Track { 52 class Track {
53 public: 53 public:
54 Track(int track_num, 54 Track(int track_num,
55 bool is_video, 55 bool is_video,
56 base::TimeDelta default_duration, 56 base::TimeDelta default_duration,
57 const scoped_refptr<MediaLog>& media_log); 57 MediaLog* media_log);
58 Track(const Track& other); 58 Track(const Track& other);
59 ~Track(); 59 ~Track();
60 60
61 int track_num() const { return track_num_; } 61 int track_num() const { return track_num_; }
62 62
63 // If a buffer is currently held aside pending duration calculation, returns 63 // If a buffer is currently held aside pending duration calculation, returns
64 // its decode timestamp. Otherwise, returns kInfiniteDuration. 64 // its decode timestamp. Otherwise, returns kInfiniteDuration.
65 DecodeTimestamp GetReadyUpperBound(); 65 DecodeTimestamp GetReadyUpperBound();
66 66
67 // Prepares |ready_buffers_| for retrieval. Prior to calling, 67 // Prepares |ready_buffers_| for retrieval. Prior to calling,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 // If kNoTimestamp, then |estimated_next_frame_duration_| will be used. 134 // If kNoTimestamp, then |estimated_next_frame_duration_| will be used.
135 base::TimeDelta default_duration_; 135 base::TimeDelta default_duration_;
136 136
137 // If kNoTimestamp, then a default value will be used. This estimate is 137 // If kNoTimestamp, then a default value will be used. This estimate is
138 // the maximum (for video), or minimum (for audio) duration seen so far for 138 // the maximum (for video), or minimum (for audio) duration seen so far for
139 // this track, and is used only if |default_duration_| is kNoTimestamp. 139 // this track, and is used only if |default_duration_| is kNoTimestamp.
140 // TODO(chcunningham): Use maximum for audio too, adding checks to disable 140 // TODO(chcunningham): Use maximum for audio too, adding checks to disable
141 // splicing when these estimates are observed in SourceBufferStream. 141 // splicing when these estimates are observed in SourceBufferStream.
142 base::TimeDelta estimated_next_frame_duration_; 142 base::TimeDelta estimated_next_frame_duration_;
143 143
144 scoped_refptr<MediaLog> media_log_; 144 MediaLog* media_log_;
145 }; 145 };
146 146
147 typedef std::map<int, Track> TextTrackMap; 147 typedef std::map<int, Track> TextTrackMap;
148 148
149 public: 149 public:
150 WebMClusterParser(int64_t timecode_scale, 150 WebMClusterParser(int64_t timecode_scale,
151 int audio_track_num, 151 int audio_track_num,
152 base::TimeDelta audio_default_duration, 152 base::TimeDelta audio_default_duration,
153 int video_track_num, 153 int video_track_num,
154 base::TimeDelta video_default_duration, 154 base::TimeDelta video_default_duration,
155 const WebMTracksParser::TextTracks& text_tracks, 155 const WebMTracksParser::TextTracks& text_tracks,
156 const std::set<int64_t>& ignored_tracks, 156 const std::set<int64_t>& ignored_tracks,
157 const std::string& audio_encryption_key_id, 157 const std::string& audio_encryption_key_id,
158 const std::string& video_encryption_key_id, 158 const std::string& video_encryption_key_id,
159 const AudioCodec audio_codec, 159 const AudioCodec audio_codec,
160 const scoped_refptr<MediaLog>& media_log); 160 MediaLog* media_log);
161 ~WebMClusterParser() override; 161 ~WebMClusterParser() override;
162 162
163 // Resets the parser state so it can accept a new cluster. 163 // Resets the parser state so it can accept a new cluster.
164 void Reset(); 164 void Reset();
165 165
166 // Parses a WebM cluster element in |buf|. 166 // Parses a WebM cluster element in |buf|.
167 // 167 //
168 // Returns -1 if the parse fails. 168 // Returns -1 if the parse fails.
169 // Returns 0 if more data is needed. 169 // Returns 0 if more data is needed.
170 // Returns the number of bytes parsed on success. 170 // Returns the number of bytes parsed on success.
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 TextBufferQueueMap text_buffers_map_; 308 TextBufferQueueMap text_buffers_map_;
309 309
310 // Limits the range of buffers returned by Get{Audio,Video,Text}Buffers() to 310 // Limits the range of buffers returned by Get{Audio,Video,Text}Buffers() to
311 // this exclusive upper bound. Set to kNoDecodeTimestamp(), meaning not yet 311 // this exclusive upper bound. Set to kNoDecodeTimestamp(), meaning not yet
312 // calculated, by Reset() and Parse(). If kNoDecodeTimestamp(), then 312 // calculated, by Reset() and Parse(). If kNoDecodeTimestamp(), then
313 // Get{Audio,Video,Text}Buffers() will calculate it to be the minimum (decode) 313 // Get{Audio,Video,Text}Buffers() will calculate it to be the minimum (decode)
314 // timestamp across all tracks' |last_buffer_missing_duration_|, or 314 // timestamp across all tracks' |last_buffer_missing_duration_|, or
315 // kInfiniteDuration if no buffers are currently missing duration. 315 // kInfiniteDuration if no buffers are currently missing duration.
316 DecodeTimestamp ready_buffer_upper_bound_; 316 DecodeTimestamp ready_buffer_upper_bound_;
317 317
318 scoped_refptr<MediaLog> media_log_; 318 MediaLog* media_log_;
319 319
320 DISALLOW_IMPLICIT_CONSTRUCTORS(WebMClusterParser); 320 DISALLOW_IMPLICIT_CONSTRUCTORS(WebMClusterParser);
321 }; 321 };
322 322
323 } // namespace media 323 } // namespace media
324 324
325 #endif // MEDIA_FORMATS_WEBM_WEBM_CLUSTER_PARSER_H_ 325 #endif // MEDIA_FORMATS_WEBM_WEBM_CLUSTER_PARSER_H_
OLDNEW
« no previous file with comments | « media/formats/webm/webm_audio_client.cc ('k') | media/formats/webm/webm_cluster_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698