OLD | NEW |
---|---|
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 #include "content/renderer/media/websourcebuffer_impl.h" | 5 #include "content/renderer/media/websourcebuffer_impl.h" |
6 | 6 |
7 #include "base/float_util.h" | 7 #include "base/float_util.h" |
8 #include "media/base/buffers.h" | |
8 #include "media/filters/chunk_demuxer.h" | 9 #include "media/filters/chunk_demuxer.h" |
9 | 10 |
10 namespace content { | 11 namespace content { |
11 | 12 |
12 static base::TimeDelta DoubleToTimeDelta(double time) { | 13 static base::TimeDelta DoubleToTimeDelta(double time) { |
13 DCHECK(!base::IsNaN(time)); | 14 DCHECK(!base::IsNaN(time)); |
14 DCHECK_GE(time, 0); | 15 DCHECK_GE(time, 0); |
15 if (time == std::numeric_limits<double>::infinity()) | 16 if (time == std::numeric_limits<double>::infinity()) |
16 return media::kInfiniteDuration(); | 17 return media::kInfiniteDuration(); |
17 | 18 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
53 media::Ranges<base::TimeDelta> ranges = demuxer_->GetBufferedRanges(id_); | 54 media::Ranges<base::TimeDelta> ranges = demuxer_->GetBufferedRanges(id_); |
54 blink::WebTimeRanges result(ranges.size()); | 55 blink::WebTimeRanges result(ranges.size()); |
55 for (size_t i = 0; i < ranges.size(); i++) { | 56 for (size_t i = 0; i < ranges.size(); i++) { |
56 result[i].start = ranges.start(i).InSecondsF(); | 57 result[i].start = ranges.start(i).InSecondsF(); |
57 result[i].end = ranges.end(i).InSecondsF(); | 58 result[i].end = ranges.end(i).InSecondsF(); |
58 } | 59 } |
59 return result; | 60 return result; |
60 } | 61 } |
61 | 62 |
62 void WebSourceBufferImpl::append(const unsigned char* data, unsigned length) { | 63 void WebSourceBufferImpl::append(const unsigned char* data, unsigned length) { |
63 demuxer_->AppendData(id_, data, length); | 64 bool offset_updated = append(data, length, NULL); |
65 DCHECK(!offset_updated); | |
66 } | |
67 | |
68 bool WebSourceBufferImpl::append( | |
69 const unsigned char* data, | |
70 unsigned length, | |
71 double* new_timestamp_offset) { | |
72 base::TimeDelta new_offset_if_updated; | |
73 demuxer_->AppendData(id_, data, length, &new_offset_if_updated); | |
acolwell GONE FROM CHROMIUM
2014/02/27 18:27:21
Sorry to keep causing thrashing on this. Based on
wolenetz
2014/02/27 21:48:49
Done.
| |
74 if (new_timestamp_offset && new_offset_if_updated != media::kNoTimestamp()) { | |
75 *new_timestamp_offset = new_offset_if_updated.InSecondsF(); | |
76 return true; | |
77 } | |
78 | |
79 return false; | |
64 } | 80 } |
65 | 81 |
66 void WebSourceBufferImpl::abort() { | 82 void WebSourceBufferImpl::abort() { |
67 demuxer_->Abort(id_); | 83 demuxer_->Abort(id_); |
68 } | 84 } |
69 | 85 |
70 void WebSourceBufferImpl::remove(double start, double end) { | 86 void WebSourceBufferImpl::remove(double start, double end) { |
71 demuxer_->Remove(id_, DoubleToTimeDelta(start), DoubleToTimeDelta(end)); | 87 demuxer_->Remove(id_, DoubleToTimeDelta(start), DoubleToTimeDelta(end)); |
72 } | 88 } |
73 | 89 |
(...skipping 10 matching lines...) Expand all Loading... | |
84 void WebSourceBufferImpl::setAppendWindowEnd(double end) { | 100 void WebSourceBufferImpl::setAppendWindowEnd(double end) { |
85 demuxer_->SetAppendWindowEnd(id_, DoubleToTimeDelta(end)); | 101 demuxer_->SetAppendWindowEnd(id_, DoubleToTimeDelta(end)); |
86 } | 102 } |
87 | 103 |
88 void WebSourceBufferImpl::removedFromMediaSource() { | 104 void WebSourceBufferImpl::removedFromMediaSource() { |
89 demuxer_->RemoveId(id_); | 105 demuxer_->RemoveId(id_); |
90 demuxer_ = NULL; | 106 demuxer_ = NULL; |
91 } | 107 } |
92 | 108 |
93 } // namespace content | 109 } // namespace content |
OLD | NEW |