Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Side by Side Diff: media/filters/ffmpeg_demuxer.cc

Issue 10067035: RefCounted types should not have public destructors, media/ and gpu/ edition (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/filters/ffmpeg_demuxer.h ('k') | media/filters/ffmpeg_demuxer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 17 matching lines...) Expand all
28 // 28 //
29 class AVPacketBuffer : public Buffer { 29 class AVPacketBuffer : public Buffer {
30 public: 30 public:
31 AVPacketBuffer(scoped_ptr_malloc<AVPacket, ScopedPtrAVFreePacket> packet, 31 AVPacketBuffer(scoped_ptr_malloc<AVPacket, ScopedPtrAVFreePacket> packet,
32 const base::TimeDelta& timestamp, 32 const base::TimeDelta& timestamp,
33 const base::TimeDelta& duration) 33 const base::TimeDelta& duration)
34 : Buffer(timestamp, duration), 34 : Buffer(timestamp, duration),
35 packet_(packet.Pass()) { 35 packet_(packet.Pass()) {
36 } 36 }
37 37
38 virtual ~AVPacketBuffer() {}
39
40 // Buffer implementation. 38 // Buffer implementation.
41 virtual const uint8* GetData() const { 39 virtual const uint8* GetData() const {
42 return reinterpret_cast<const uint8*>(packet_->data); 40 return reinterpret_cast<const uint8*>(packet_->data);
43 } 41 }
44 42
45 virtual int GetDataSize() const { 43 virtual int GetDataSize() const {
46 return packet_->size; 44 return packet_->size;
47 } 45 }
48 46
47 protected:
48 virtual ~AVPacketBuffer() {}
49
49 private: 50 private:
50 scoped_ptr_malloc<AVPacket, ScopedPtrAVFreePacket> packet_; 51 scoped_ptr_malloc<AVPacket, ScopedPtrAVFreePacket> packet_;
51 52
52 DISALLOW_COPY_AND_ASSIGN(AVPacketBuffer); 53 DISALLOW_COPY_AND_ASSIGN(AVPacketBuffer);
53 }; 54 };
54 55
55 56
56 // 57 //
57 // FFmpegDemuxerStream 58 // FFmpegDemuxerStream
58 // 59 //
(...skipping 18 matching lines...) Expand all
77 break; 78 break;
78 default: 79 default:
79 NOTREACHED(); 80 NOTREACHED();
80 break; 81 break;
81 } 82 }
82 83
83 // Calculate the duration. 84 // Calculate the duration.
84 duration_ = ConvertStreamTimestamp(stream->time_base, stream->duration); 85 duration_ = ConvertStreamTimestamp(stream->time_base, stream->duration);
85 } 86 }
86 87
87 FFmpegDemuxerStream::~FFmpegDemuxerStream() {
88 base::AutoLock auto_lock(lock_);
89 DCHECK(stopped_);
90 DCHECK(read_queue_.empty());
91 DCHECK(buffer_queue_.empty());
92 }
93
94 bool FFmpegDemuxerStream::HasPendingReads() { 88 bool FFmpegDemuxerStream::HasPendingReads() {
95 DCHECK_EQ(MessageLoop::current(), demuxer_->message_loop()); 89 DCHECK_EQ(MessageLoop::current(), demuxer_->message_loop());
96 base::AutoLock auto_lock(lock_); 90 base::AutoLock auto_lock(lock_);
97 DCHECK(!stopped_ || read_queue_.empty()) 91 DCHECK(!stopped_ || read_queue_.empty())
98 << "Read queue should have been emptied if demuxing stream is stopped"; 92 << "Read queue should have been emptied if demuxing stream is stopped";
99 return !read_queue_.empty(); 93 return !read_queue_.empty();
100 } 94 }
101 95
102 void FFmpegDemuxerStream::EnqueuePacket( 96 void FFmpegDemuxerStream::EnqueuePacket(
103 scoped_ptr_malloc<AVPacket, ScopedPtrAVFreePacket> packet) { 97 scoped_ptr_malloc<AVPacket, ScopedPtrAVFreePacket> packet) {
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 const AudioDecoderConfig& FFmpegDemuxerStream::audio_decoder_config() { 251 const AudioDecoderConfig& FFmpegDemuxerStream::audio_decoder_config() {
258 CHECK_EQ(type_, AUDIO); 252 CHECK_EQ(type_, AUDIO);
259 return audio_config_; 253 return audio_config_;
260 } 254 }
261 255
262 const VideoDecoderConfig& FFmpegDemuxerStream::video_decoder_config() { 256 const VideoDecoderConfig& FFmpegDemuxerStream::video_decoder_config() {
263 CHECK_EQ(type_, VIDEO); 257 CHECK_EQ(type_, VIDEO);
264 return video_config_; 258 return video_config_;
265 } 259 }
266 260
261 FFmpegDemuxerStream::~FFmpegDemuxerStream() {
262 base::AutoLock auto_lock(lock_);
263 DCHECK(stopped_);
264 DCHECK(read_queue_.empty());
265 DCHECK(buffer_queue_.empty());
266 }
267
267 // static 268 // static
268 base::TimeDelta FFmpegDemuxerStream::ConvertStreamTimestamp( 269 base::TimeDelta FFmpegDemuxerStream::ConvertStreamTimestamp(
269 const AVRational& time_base, int64 timestamp) { 270 const AVRational& time_base, int64 timestamp) {
270 if (timestamp == static_cast<int64>(AV_NOPTS_VALUE)) 271 if (timestamp == static_cast<int64>(AV_NOPTS_VALUE))
271 return kNoTimestamp(); 272 return kNoTimestamp();
272 273
273 return ConvertFromTimeBase(time_base, timestamp); 274 return ConvertFromTimeBase(time_base, timestamp);
274 } 275 }
275 276
276 // 277 //
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 read_event_.Wait(); 723 read_event_.Wait();
723 return last_read_bytes_; 724 return last_read_bytes_;
724 } 725 }
725 726
726 void FFmpegDemuxer::SignalReadCompleted(int size) { 727 void FFmpegDemuxer::SignalReadCompleted(int size) {
727 last_read_bytes_ = size; 728 last_read_bytes_ = size;
728 read_event_.Signal(); 729 read_event_.Signal();
729 } 730 }
730 731
731 } // namespace media 732 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/ffmpeg_demuxer.h ('k') | media/filters/ffmpeg_demuxer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698