| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef MEDIA_CDM_PPAPI_EXTERNAL_CLEAR_KEY_FFMPEG_CDM_VIDEO_DECODER_H_ | 5 #ifndef MEDIA_CDM_PPAPI_EXTERNAL_CLEAR_KEY_FFMPEG_CDM_VIDEO_DECODER_H_ | 
| 6 #define MEDIA_CDM_PPAPI_EXTERNAL_CLEAR_KEY_FFMPEG_CDM_VIDEO_DECODER_H_ | 6 #define MEDIA_CDM_PPAPI_EXTERNAL_CLEAR_KEY_FFMPEG_CDM_VIDEO_DECODER_H_ | 
| 7 | 7 | 
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" | 
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" | 
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" | 
| 11 #include "media/cdm/ppapi/external_clear_key/cdm_video_decoder.h" | 11 #include "media/cdm/ppapi/external_clear_key/cdm_video_decoder.h" | 
| 12 #include "media/cdm/ppapi/external_clear_key/clear_key_cdm_common.h" | 12 #include "media/cdm/ppapi/external_clear_key/clear_key_cdm_common.h" | 
| 13 #include "media/ffmpeg/ffmpeg_deleters.h" | 13 #include "media/ffmpeg/ffmpeg_deleters.h" | 
| 14 | 14 | 
| 15 struct AVCodecContext; | 15 struct AVCodecContext; | 
| 16 struct AVFrame; | 16 struct AVFrame; | 
| 17 | 17 | 
| 18 namespace media { | 18 namespace media { | 
| 19 | 19 | 
| 20 class FFmpegCdmVideoDecoder : public CdmVideoDecoder { | 20 class FFmpegCdmVideoDecoder : public CdmVideoDecoder { | 
| 21  public: | 21  public: | 
| 22   explicit FFmpegCdmVideoDecoder(ClearKeyCdmHost* host); | 22   explicit FFmpegCdmVideoDecoder(ClearKeyCdmHost* host); | 
| 23   virtual ~FFmpegCdmVideoDecoder(); | 23   virtual ~FFmpegCdmVideoDecoder(); | 
| 24 | 24 | 
| 25   // CdmVideoDecoder implementation. | 25   // CdmVideoDecoder implementation. | 
| 26   virtual bool Initialize(const cdm::VideoDecoderConfig& config) OVERRIDE; | 26   virtual bool Initialize(const cdm::VideoDecoderConfig& config) override; | 
| 27   virtual void Deinitialize() OVERRIDE; | 27   virtual void Deinitialize() override; | 
| 28   virtual void Reset() OVERRIDE; | 28   virtual void Reset() override; | 
| 29   virtual cdm::Status DecodeFrame(const uint8_t* compressed_frame, | 29   virtual cdm::Status DecodeFrame(const uint8_t* compressed_frame, | 
| 30                                   int32_t compressed_frame_size, | 30                                   int32_t compressed_frame_size, | 
| 31                                   int64_t timestamp, | 31                                   int64_t timestamp, | 
| 32                                   cdm::VideoFrame* decoded_frame) OVERRIDE; | 32                                   cdm::VideoFrame* decoded_frame) override; | 
| 33   virtual bool is_initialized() const OVERRIDE { return is_initialized_; } | 33   virtual bool is_initialized() const override { return is_initialized_; } | 
| 34 | 34 | 
| 35   // Returns true when |format| and |data_size| specify a supported video | 35   // Returns true when |format| and |data_size| specify a supported video | 
| 36   // output configuration. | 36   // output configuration. | 
| 37   static bool IsValidOutputConfig(cdm::VideoFormat format, | 37   static bool IsValidOutputConfig(cdm::VideoFormat format, | 
| 38                                   const cdm::Size& data_size); | 38                                   const cdm::Size& data_size); | 
| 39 | 39 | 
| 40  private: | 40  private: | 
| 41   // Allocates storage, then copies video frame stored in |av_frame_| to | 41   // Allocates storage, then copies video frame stored in |av_frame_| to | 
| 42   // |cdm_video_frame|. Returns true when allocation and copy succeed. | 42   // |cdm_video_frame|. Returns true when allocation and copy succeed. | 
| 43   bool CopyAvFrameTo(cdm::VideoFrame* cdm_video_frame); | 43   bool CopyAvFrameTo(cdm::VideoFrame* cdm_video_frame); | 
| 44 | 44 | 
| 45   void ReleaseFFmpegResources(); | 45   void ReleaseFFmpegResources(); | 
| 46 | 46 | 
| 47   // FFmpeg structures owned by this object. | 47   // FFmpeg structures owned by this object. | 
| 48   scoped_ptr<AVCodecContext, ScopedPtrAVFreeContext> codec_context_; | 48   scoped_ptr<AVCodecContext, ScopedPtrAVFreeContext> codec_context_; | 
| 49   scoped_ptr<AVFrame, ScopedPtrAVFreeFrame> av_frame_; | 49   scoped_ptr<AVFrame, ScopedPtrAVFreeFrame> av_frame_; | 
| 50 | 50 | 
| 51   bool is_initialized_; | 51   bool is_initialized_; | 
| 52 | 52 | 
| 53   ClearKeyCdmHost* const host_; | 53   ClearKeyCdmHost* const host_; | 
| 54 | 54 | 
| 55   DISALLOW_COPY_AND_ASSIGN(FFmpegCdmVideoDecoder); | 55   DISALLOW_COPY_AND_ASSIGN(FFmpegCdmVideoDecoder); | 
| 56 }; | 56 }; | 
| 57 | 57 | 
| 58 }  // namespace media | 58 }  // namespace media | 
| 59 | 59 | 
| 60 #endif  // MEDIA_CDM_PPAPI_EXTERNAL_CLEAR_KEY_FFMPEG_CDM_VIDEO_DECODER_H_ | 60 #endif  // MEDIA_CDM_PPAPI_EXTERNAL_CLEAR_KEY_FFMPEG_CDM_VIDEO_DECODER_H_ | 
| OLD | NEW | 
|---|