summaryrefslogtreecommitdiffstats
path: root/media/webm/webm_cluster_parser.cc
diff options
context:
space:
mode:
authorvrk@google.com <vrk@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-27 21:16:58 +0000
committervrk@google.com <vrk@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-27 21:16:58 +0000
commit950c3b3d1d0cb93b6ddcea6aaf9646b8842a5506 (patch)
treeb7be9df58fb83a5fa54bab684de8379999ab3491 /media/webm/webm_cluster_parser.cc
parent3b693bdd1be9f78da6806fe58ea2aca4ee6f8fb8 (diff)
downloadchromium_src-950c3b3d1d0cb93b6ddcea6aaf9646b8842a5506.zip
chromium_src-950c3b3d1d0cb93b6ddcea6aaf9646b8842a5506.tar.gz
chromium_src-950c3b3d1d0cb93b6ddcea6aaf9646b8842a5506.tar.bz2
Chrome-side implementation of media source timestamp offset
Adds functionality to signal an offset to be applied to the buffers in ChunkDemuxer. Is not triggerable from Chrome yet. BUG=139044 TEST=media_unittests Review URL: https://chromiumcodereview.appspot.com/10803019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148810 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/webm/webm_cluster_parser.cc')
-rw-r--r--media/webm/webm_cluster_parser.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/media/webm/webm_cluster_parser.cc b/media/webm/webm_cluster_parser.cc
index 14a360d..e9ef93e 100644
--- a/media/webm/webm_cluster_parser.cc
+++ b/media/webm/webm_cluster_parser.cc
@@ -43,6 +43,7 @@ WebMClusterParser::WebMClusterParser(int64 timecode_scale,
block_duration_(-1),
cluster_timecode_(-1),
cluster_start_time_(kNoTimestamp()),
+ cluster_ended_(false),
audio_(audio_track_num),
video_(video_track_num) {
CHECK_GE(video_encryption_key_id_size, 0);
@@ -59,6 +60,7 @@ void WebMClusterParser::Reset() {
last_block_timecode_ = -1;
cluster_timecode_ = -1;
cluster_start_time_ = kNoTimestamp();
+ cluster_ended_ = false;
parser_.Reset();
audio_.Reset();
video_.Reset();
@@ -70,10 +72,13 @@ int WebMClusterParser::Parse(const uint8* buf, int size) {
int result = parser_.Parse(buf, size);
- if (result <= 0)
+ if (result <= 0) {
+ cluster_ended_ = false;
return result;
+ }
- if (parser_.IsParsingComplete()) {
+ cluster_ended_ = parser_.IsParsingComplete();
+ if (cluster_ended_) {
// If there were no buffers in this cluster, set the cluster start time to
// be the |cluster_timecode_|.
if (cluster_start_time_ == kNoTimestamp()) {