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

Unified Diff: webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h

Issue 11316045: Add a libvpx video decoder to ClearKeyCdm and move the fake video decoder to its own class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h
diff --git a/webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h b/webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h
index a835673cbf00b2fbd8cdf2700344a433879d2df6..df583555902d2d221bc265d226fcfbe196ef81e8 100644
--- a/webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h
+++ b/webkit/media/crypto/ppapi/ffmpeg_cdm_video_decoder.h
@@ -12,6 +12,11 @@
struct AVCodecContext;
struct AVFrame;
+// TODO(tomfinegan): Move Libvpx VP8 support to a new source file.
+typedef struct vpx_codec_ctx vpx_codec_ctx_t;
+typedef struct vpx_image vpx_image_t;
+
+
namespace webkit_media {
class FFmpegCdmVideoDecoder {
@@ -37,12 +42,28 @@ class FFmpegCdmVideoDecoder {
cdm::VideoFrame* decoded_frame);
private:
+ //
+ bool AllocateYuvFrameBuffer(int width, int height,
+ cdm::VideoFrame* cdm_video_frame);
+
// Allocates storage, then copies video frame stored in |av_frame_| to
// |cdm_video_frame|. Returns true when allocation and copy succeed.
bool CopyAvFrameTo(cdm::VideoFrame* cdm_video_frame);
+ bool CopyVpxImageTo(cdm::VideoFrame* cdm_video_frame);
void ReleaseFFmpegResources();
+ bool InitializeFFmpeg(const cdm::VideoDecoderConfig& config);
+ bool InitializeLibvpx(const cdm::VideoDecoderConfig& config);
+ cdm::Status DecodeFrameFFmpeg(const uint8_t* compressed_frame,
+ int32_t compressed_frame_size,
+ int64_t timestamp,
+ cdm::VideoFrame* decoded_frame);
+ cdm::Status DecodeFrameLibvpx(const uint8_t* compressed_frame,
+ int32_t compressed_frame_size,
+ int64_t timestamp,
+ cdm::VideoFrame* decoded_frame);
+
// FFmpeg structures owned by this object.
AVCodecContext* codec_context_;
AVFrame* av_frame_;
@@ -51,6 +72,11 @@ class FFmpegCdmVideoDecoder {
cdm::Allocator* const allocator_;
+ // TODO(tomfinegan): Libvpx VP8 decoding support does not belong in this
+ // class.
+ vpx_codec_ctx_t* vpx_codec_;
+ vpx_image_t* vpx_image_;
+
DISALLOW_COPY_AND_ASSIGN(FFmpegCdmVideoDecoder);
};

Powered by Google App Engine
This is Rietveld 408576698