Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "base/callback.h" | 5 #include "base/callback.h" |
| 6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
| 9 #include "base/stl_util-inl.h" | 9 #include "base/stl_util-inl.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 522 StreamHasEnded(); | 522 StreamHasEnded(); |
| 523 return; | 523 return; |
| 524 } | 524 } |
| 525 | 525 |
| 526 // Queue the packet with the appropriate stream. | 526 // Queue the packet with the appropriate stream. |
| 527 // TODO(scherkus): should we post this back to the pipeline thread? I'm | 527 // TODO(scherkus): should we post this back to the pipeline thread? I'm |
| 528 // worried about downstream filters (i.e., decoders) executing on this | 528 // worried about downstream filters (i.e., decoders) executing on this |
| 529 // thread. | 529 // thread. |
| 530 DCHECK_GE(packet->stream_index, 0); | 530 DCHECK_GE(packet->stream_index, 0); |
| 531 DCHECK_LT(packet->stream_index, static_cast<int>(packet_streams_.size())); | 531 DCHECK_LT(packet->stream_index, static_cast<int>(packet_streams_.size())); |
| 532 FFmpegDemuxerStream* demuxer_stream = packet_streams_[packet->stream_index]; | 532 FFmpegDemuxerStream* demuxer_stream = NULL; |
| 533 size_t i = packet->stream_index; | |
|
fbarchard
2010/11/08 15:55:47
Why create a new variable (i)?
FFmpegDemuxerStream
| |
| 534 // Defend against ffmpeg giving us a bad stream index. | |
| 535 if (i < packet_streams_.size()) { | |
| 536 demuxer_stream = packet_streams_[i]; | |
| 537 } | |
| 533 if (demuxer_stream) { | 538 if (demuxer_stream) { |
| 534 // Queue the packet with the appropriate stream. The stream takes | 539 // Queue the packet with the appropriate stream. The stream takes |
| 535 // ownership of the AVPacket. | 540 // ownership of the AVPacket. |
| 536 if (packet.get()) { | 541 if (packet.get()) { |
| 537 // If a packet is returned by FFmpeg's av_parser_parse2() | 542 // If a packet is returned by FFmpeg's av_parser_parse2() |
| 538 // the packet will reference an inner memory of FFmpeg. | 543 // the packet will reference an inner memory of FFmpeg. |
| 539 // In this case, the packet's "destruct" member is NULL, | 544 // In this case, the packet's "destruct" member is NULL, |
| 540 // and it MUST be duplicated. This fixes issue with MP3 and possibly | 545 // and it MUST be duplicated. This fixes issue with MP3 and possibly |
| 541 // other codecs. It is safe to call this function even if the packet does | 546 // other codecs. It is safe to call this function even if the packet does |
| 542 // not refer to inner memory from FFmpeg. | 547 // not refer to inner memory from FFmpeg. |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 611 read_event_.Wait(); | 616 read_event_.Wait(); |
| 612 return last_read_bytes_; | 617 return last_read_bytes_; |
| 613 } | 618 } |
| 614 | 619 |
| 615 void FFmpegDemuxer::SignalReadCompleted(size_t size) { | 620 void FFmpegDemuxer::SignalReadCompleted(size_t size) { |
| 616 last_read_bytes_ = size; | 621 last_read_bytes_ = size; |
| 617 read_event_.Signal(); | 622 read_event_.Signal(); |
| 618 } | 623 } |
| 619 | 624 |
| 620 } // namespace media | 625 } // namespace media |
| OLD | NEW |