diff options
author | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-30 21:36:00 +0000 |
---|---|---|
committer | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-30 21:36:00 +0000 |
commit | c9ea52e108e514c9c3fc9c1d721316cbe9d4cd4a (patch) | |
tree | a5e46cbbb7e3c8a01c65c85ddc1828f4f698bd94 | |
parent | 2e18d74b76c4b03a92ee008b6a5e5caaf6139224 (diff) | |
download | chromium_src-c9ea52e108e514c9c3fc9c1d721316cbe9d4cd4a.zip chromium_src-c9ea52e108e514c9c3fc9c1d721316cbe9d4cd4a.tar.gz chromium_src-c9ea52e108e514c9c3fc9c1d721316cbe9d4cd4a.tar.bz2 |
Fix h.264 Profile conversion between ppapi & media worlds (since they were off by one before).
Review URL: https://chromiumcodereview.appspot.com/9864025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129951 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | media/base/video_decoder_config.h | 1 | ||||
-rw-r--r-- | webkit/plugins/ppapi/ppb_video_decoder_impl.cc | 34 |
2 files changed, 32 insertions, 3 deletions
diff --git a/media/base/video_decoder_config.h b/media/base/video_decoder_config.h index 96dd677..3d4d98c 100644 --- a/media/base/video_decoder_config.h +++ b/media/base/video_decoder_config.h @@ -34,6 +34,7 @@ enum MEDIA_EXPORT VideoCodec { }; // Video stream profile. This *must* match PP_VideoDecoder_Profile. +// (enforced in webkit/plugins/ppapi/ppb_video_decoder_impl.cc) enum MEDIA_EXPORT VideoCodecProfile { // Keep the values in this enum unique, as they imply format (h.264 vs. VP8, // for example), and keep the values for a particular format grouped diff --git a/webkit/plugins/ppapi/ppb_video_decoder_impl.cc b/webkit/plugins/ppapi/ppb_video_decoder_impl.cc index ac4a82b..db8a8f6 100644 --- a/webkit/plugins/ppapi/ppb_video_decoder_impl.cc +++ b/webkit/plugins/ppapi/ppb_video_decoder_impl.cc @@ -48,9 +48,37 @@ PPB_VideoDecoder_Impl::~PPB_VideoDecoder_Impl() { // Convert PP_VideoDecoder_Profile to media::VideoCodecProfile. static media::VideoCodecProfile PPToMediaProfile( const PP_VideoDecoder_Profile pp_profile) { - // TODO(fischman,vrk): this assumes the enum values in the two Profile types - // match up exactly. Add a COMPILE_ASSERT for this somewhere. - return static_cast<media::VideoCodecProfile>(pp_profile); + switch (pp_profile) { + case PP_VIDEODECODER_H264PROFILE_NONE: + // HACK: PPAPI contains a bogus "none" h264 profile that doesn't + // correspond to anything in h.264; but a number of released chromium + // versions silently promoted this to Baseline profile, so we retain that + // behavior here. Fall through. + case PP_VIDEODECODER_H264PROFILE_BASELINE: + return media::H264PROFILE_BASELINE; + case PP_VIDEODECODER_H264PROFILE_MAIN: + return media::H264PROFILE_MAIN; + case PP_VIDEODECODER_H264PROFILE_EXTENDED: + return media::H264PROFILE_EXTENDED; + case PP_VIDEODECODER_H264PROFILE_HIGH: + return media::H264PROFILE_HIGH; + case PP_VIDEODECODER_H264PROFILE_HIGH10PROFILE: + return media::H264PROFILE_HIGH10PROFILE; + case PP_VIDEODECODER_H264PROFILE_HIGH422PROFILE: + return media::H264PROFILE_HIGH422PROFILE; + case PP_VIDEODECODER_H264PROFILE_HIGH444PREDICTIVEPROFILE: + return media::H264PROFILE_HIGH444PREDICTIVEPROFILE; + case PP_VIDEODECODER_H264PROFILE_SCALABLEBASELINE: + return media::H264PROFILE_SCALABLEBASELINE; + case PP_VIDEODECODER_H264PROFILE_SCALABLEHIGH: + return media::H264PROFILE_SCALABLEHIGH; + case PP_VIDEODECODER_H264PROFILE_STEREOHIGH: + return media::H264PROFILE_STEREOHIGH; + case PP_VIDEODECODER_H264PROFILE_MULTIVIEWHIGH: + return media::H264PROFILE_MULTIVIEWHIGH; + default: + return media::VIDEO_CODEC_PROFILE_UNKNOWN; + } } // static |