| 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 |