OLD | NEW |
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 #include "media/filters/chunk_demuxer.h" | 5 #include "media/filters/chunk_demuxer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <list> | 9 #include <list> |
10 | 10 |
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1051 scoped_refptr<StreamParserBuffer> buffer; | 1051 scoped_refptr<StreamParserBuffer> buffer; |
1052 | 1052 |
1053 switch (state_) { | 1053 switch (state_) { |
1054 case UNINITIALIZED: | 1054 case UNINITIALIZED: |
1055 NOTREACHED(); | 1055 NOTREACHED(); |
1056 return; | 1056 return; |
1057 case RETURNING_DATA_FOR_READS: | 1057 case RETURNING_DATA_FOR_READS: |
1058 switch (stream_->GetNextBuffer(&buffer)) { | 1058 switch (stream_->GetNextBuffer(&buffer)) { |
1059 case SourceBufferStream::kSuccess: | 1059 case SourceBufferStream::kSuccess: |
1060 status = DemuxerStream::kOk; | 1060 status = DemuxerStream::kOk; |
| 1061 DVLOG(2) << __FUNCTION__ << ": returning kOk, type " << type_ |
| 1062 << ", dts " << buffer->GetDecodeTimestamp().InSecondsF() |
| 1063 << ", pts " << buffer->timestamp().InSecondsF() |
| 1064 << ", dur " << buffer->duration().InSecondsF() |
| 1065 << ", key " << buffer->is_key_frame(); |
1061 break; | 1066 break; |
1062 case SourceBufferStream::kNeedBuffer: | 1067 case SourceBufferStream::kNeedBuffer: |
1063 // Return early without calling |read_cb_| since we don't have | 1068 // Return early without calling |read_cb_| since we don't have |
1064 // any data to return yet. | 1069 // any data to return yet. |
| 1070 DVLOG(2) << __FUNCTION__ << ": returning kNeedBuffer, type " |
| 1071 << type_; |
1065 return; | 1072 return; |
1066 case SourceBufferStream::kEndOfStream: | 1073 case SourceBufferStream::kEndOfStream: |
1067 status = DemuxerStream::kOk; | 1074 status = DemuxerStream::kOk; |
1068 buffer = StreamParserBuffer::CreateEOSBuffer(); | 1075 buffer = StreamParserBuffer::CreateEOSBuffer(); |
| 1076 DVLOG(2) << __FUNCTION__ << ": returning kOk with EOS buffer, type " |
| 1077 << type_; |
1069 break; | 1078 break; |
1070 case SourceBufferStream::kConfigChange: | 1079 case SourceBufferStream::kConfigChange: |
1071 DVLOG(2) << "Config change reported to ChunkDemuxerStream."; | |
1072 status = kConfigChanged; | 1080 status = kConfigChanged; |
1073 buffer = NULL; | 1081 buffer = NULL; |
| 1082 DVLOG(2) << __FUNCTION__ << ": returning kConfigChange, type " |
| 1083 << type_; |
1074 break; | 1084 break; |
1075 } | 1085 } |
1076 break; | 1086 break; |
1077 case RETURNING_ABORT_FOR_READS: | 1087 case RETURNING_ABORT_FOR_READS: |
1078 // Null buffers should be returned in this state since we are waiting | 1088 // Null buffers should be returned in this state since we are waiting |
1079 // for a seek. Any buffers in the SourceBuffer should NOT be returned | 1089 // for a seek. Any buffers in the SourceBuffer should NOT be returned |
1080 // because they are associated with the seek. | 1090 // because they are associated with the seek. |
1081 status = DemuxerStream::kAborted; | 1091 status = DemuxerStream::kAborted; |
1082 buffer = NULL; | 1092 buffer = NULL; |
| 1093 DVLOG(2) << __FUNCTION__ << ": returning kAborted, type " << type_; |
1083 break; | 1094 break; |
1084 case SHUTDOWN: | 1095 case SHUTDOWN: |
1085 status = DemuxerStream::kOk; | 1096 status = DemuxerStream::kOk; |
1086 buffer = StreamParserBuffer::CreateEOSBuffer(); | 1097 buffer = StreamParserBuffer::CreateEOSBuffer(); |
| 1098 DVLOG(2) << __FUNCTION__ << ": returning kOk with EOS buffer, type " |
| 1099 << type_; |
1087 break; | 1100 break; |
1088 } | 1101 } |
1089 | 1102 |
1090 base::ResetAndReturn(&read_cb_).Run(status, buffer); | 1103 base::ResetAndReturn(&read_cb_).Run(status, buffer); |
1091 } | 1104 } |
1092 | 1105 |
1093 ChunkDemuxer::ChunkDemuxer(const base::Closure& open_cb, | 1106 ChunkDemuxer::ChunkDemuxer(const base::Closure& open_cb, |
1094 const NeedKeyCB& need_key_cb, | 1107 const NeedKeyCB& need_key_cb, |
1095 const LogCB& log_cb, | 1108 const LogCB& log_cb, |
1096 const scoped_refptr<MediaLog>& media_log, | 1109 const scoped_refptr<MediaLog>& media_log, |
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1842 } | 1855 } |
1843 | 1856 |
1844 void ChunkDemuxer::ShutdownAllStreams() { | 1857 void ChunkDemuxer::ShutdownAllStreams() { |
1845 for (SourceStateMap::iterator itr = source_state_map_.begin(); | 1858 for (SourceStateMap::iterator itr = source_state_map_.begin(); |
1846 itr != source_state_map_.end(); ++itr) { | 1859 itr != source_state_map_.end(); ++itr) { |
1847 itr->second->Shutdown(); | 1860 itr->second->Shutdown(); |
1848 } | 1861 } |
1849 } | 1862 } |
1850 | 1863 |
1851 } // namespace media | 1864 } // namespace media |
OLD | NEW |