From d875cb215e77c638fcc849fc1d1557ea50a972bc Mon Sep 17 00:00:00 2001 From: "hclam@chromium.org" Date: Fri, 3 Sep 2010 21:14:50 +0000 Subject: Remove refcounting of VideoDecodeEngine VideoDecodeEngine doesn't need refcounting, all decode engines live on one thread so there isn't a problem posting task to a random thread. Also the stop is asynchronous, we can always until the stop is done before we destroy the object and doesn't need refcounting to destroy it. TEST=media_unittests Review URL: http://codereview.chromium.org/3125032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58539 0039d316-1c4b-4281-b951-d872f2087c98 --- media/mf/mft_h264_decoder_example.cc | 12 +++++----- media/mf/test/mft_h264_decoder_unittest.cc | 38 +++++++++++++++--------------- 2 files changed, 25 insertions(+), 25 deletions(-) (limited to 'media/mf') diff --git a/media/mf/mft_h264_decoder_example.cc b/media/mf/mft_h264_decoder_example.cc index 25c2947..4f5cd64 100644 --- a/media/mf/mft_h264_decoder_example.cc +++ b/media/mf/mft_h264_decoder_example.cc @@ -151,7 +151,7 @@ class MftH264DecoderHandler info_.stream_info_ = stream_info; } virtual void OnEmptyBufferCallback(scoped_refptr buffer) { - if (reader_ && decoder_.get()) { + if (reader_ && decoder_) { scoped_refptr input; reader_->Read(&input); if (!input->IsEndOfStream()) @@ -169,8 +169,8 @@ class MftH264DecoderHandler virtual void SetReader(FFmpegFileReader* reader) { reader_ = reader; } - virtual void SetDecoder(scoped_refptr decoder) { - decoder_ = decoder; + virtual void SetDecoder(MftH264Decoder* decoder) { + decoder_= decoder; } virtual void DecodeSingleFrame() { scoped_refptr frame; @@ -185,7 +185,7 @@ class MftH264DecoderHandler int frames_read_; int frames_decoded_; FFmpegFileReader* reader_; - scoped_refptr decoder_; + MftH264Decoder* decoder_; }; class RenderToWindowHandler : public MftH264DecoderHandler { @@ -295,7 +295,7 @@ static int Run(bool use_dxva, bool render, const std::string& input_file) { } } - scoped_refptr mft(new MftH264Decoder(use_dxva)); + scoped_ptr mft(new MftH264Decoder(use_dxva)); if (!mft.get()) { LOG(ERROR) << "Failed to create fake MFT"; return -1; @@ -306,7 +306,7 @@ static int Run(bool use_dxva, bool render, const std::string& input_file) { handler = new RenderToWindowHandler(window, MessageLoop::current()); else handler = new MftH264DecoderHandler(); - handler->SetDecoder(mft); + handler->SetDecoder(mft.get()); handler->SetReader(reader.get()); if (!handler.get()) { LOG(ERROR) << "FAiled to create handler"; diff --git a/media/mf/test/mft_h264_decoder_unittest.cc b/media/mf/test/mft_h264_decoder_unittest.cc index c14a3e41..e805127 100644 --- a/media/mf/test/mft_h264_decoder_unittest.cc +++ b/media/mf/test/mft_h264_decoder_unittest.cc @@ -128,7 +128,7 @@ class SimpleMftH264DecoderHandler : public VideoDecodeEngine::EventHandler { info_.stream_info_ = stream_info; } virtual void OnEmptyBufferCallback(scoped_refptr buffer) { - if (reader_.get() && decoder_.get()) { + if (reader_.get() && decoder_) { empty_buffer_callback_count_++; scoped_refptr input; reader_->ReadCallback(&input); @@ -142,7 +142,7 @@ class SimpleMftH264DecoderHandler : public VideoDecodeEngine::EventHandler { void SetReader(scoped_refptr reader) { reader_ = reader; } - void SetDecoder(scoped_refptr decoder) { + void SetDecoder(MftH264Decoder* decoder) { decoder_ = decoder; } @@ -154,7 +154,7 @@ class SimpleMftH264DecoderHandler : public VideoDecodeEngine::EventHandler { int fill_buffer_callback_count_; VideoCodecInfo info_; scoped_refptr reader_; - scoped_refptr decoder_; + MftH264Decoder* decoder_; scoped_refptr current_frame_; }; @@ -165,7 +165,7 @@ TEST_F(MftH264DecoderTest, LibraryInit) { } TEST_F(MftH264DecoderTest, DecoderUninitializedAtFirst) { - scoped_refptr decoder(new MftH264Decoder(true)); + scoped_ptr decoder(new MftH264Decoder(true)); ASSERT_TRUE(decoder.get()); EXPECT_EQ(MftH264Decoder::kUninitialized, decoder->state()); } @@ -174,7 +174,7 @@ TEST_F(MftH264DecoderTest, DecoderInitMissingArgs) { VideoCodecConfig config; config.width_ = 800; config.height_ = 600; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(NULL, NULL, config); EXPECT_EQ(MftH264Decoder::kUninitialized, decoder->state()); @@ -186,7 +186,7 @@ TEST_F(MftH264DecoderTest, DecoderInitNoDxva) { VideoCodecConfig config; config.width_ = 800; config.height_ = 600; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(1, handler.init_count_); @@ -200,7 +200,7 @@ TEST_F(MftH264DecoderTest, DecoderInitDxva) { VideoCodecConfig config; config.width_ = 800; config.height_ = 600; - scoped_refptr decoder(new MftH264Decoder(true)); + scoped_ptr decoder(new MftH264Decoder(true)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(1, handler.init_count_); @@ -214,7 +214,7 @@ TEST_F(MftH264DecoderTest, DecoderUninit) { VideoCodecConfig config; config.width_ = 800; config.height_ = 600; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(MftH264Decoder::kNormal, decoder->state()); @@ -229,7 +229,7 @@ TEST_F(MftH264DecoderTest, UninitBeforeInit) { VideoCodecConfig config; config.width_ = 800; config.height_ = 600; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Uninitialize(); EXPECT_EQ(0, handler.uninit_count_); @@ -241,7 +241,7 @@ TEST_F(MftH264DecoderTest, InitWithNegativeDimensions) { VideoCodecConfig config; config.width_ = -123; config.height_ = -456; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(MftH264Decoder::kNormal, decoder->state()); @@ -256,7 +256,7 @@ TEST_F(MftH264DecoderTest, InitWithTooHighDimensions) { VideoCodecConfig config; config.width_ = kDecoderMaxWidth + 1; config.height_ = kDecoderMaxHeight + 1; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(MftH264Decoder::kNormal, decoder->state()); @@ -271,7 +271,7 @@ TEST_F(MftH264DecoderTest, DrainOnEmptyBuffer) { VideoCodecConfig config; config.width_ = 1024; config.height_ = 768; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(MftH264Decoder::kNormal, decoder->state()); @@ -300,12 +300,12 @@ TEST_F(MftH264DecoderTest, NoOutputOnGarbageInput) { VideoCodecConfig config; config.width_ = 1024; config.height_ = 768; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(MftH264Decoder::kNormal, decoder->state()); handler.SetReader(reader); - handler.SetDecoder(decoder); + handler.SetDecoder(decoder.get()); while (MftH264Decoder::kStopped != decoder->state()) { scoped_refptr frame; decoder->FillThisBuffer(frame); @@ -328,7 +328,7 @@ TEST_F(MftH264DecoderTest, FlushAtStart) { VideoCodecConfig config; config.width_ = 1024; config.height_ = 768; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(MftH264Decoder::kNormal, decoder->state()); @@ -348,12 +348,12 @@ TEST_F(MftH264DecoderTest, NoFlushAtStopped) { VideoCodecConfig config; config.width_ = 1024; config.height_ = 768; - scoped_refptr decoder(new MftH264Decoder(false)); + scoped_ptr decoder(new MftH264Decoder(false)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(MftH264Decoder::kNormal, decoder->state()); handler.SetReader(reader); - handler.SetDecoder(decoder); + handler.SetDecoder(decoder.get()); while (MftH264Decoder::kStopped != decoder->state()) { scoped_refptr frame; decoder->FillThisBuffer(frame); @@ -391,12 +391,12 @@ void DecodeValidVideo(const std::string& filename, int num_frames, bool dxva) { VideoCodecConfig config; config.width_ = 1; config.height_ = 1; - scoped_refptr decoder(new MftH264Decoder(dxva)); + scoped_ptr decoder(new MftH264Decoder(dxva)); ASSERT_TRUE(decoder.get()); decoder->Initialize(&loop, &handler, config); EXPECT_EQ(MftH264Decoder::kNormal, decoder->state()); handler.SetReader(reader); - handler.SetDecoder(decoder); + handler.SetDecoder(decoder.get()); while (MftH264Decoder::kStopped != decoder->state()) { scoped_refptr frame; decoder->FillThisBuffer(frame); -- cgit v1.1