Chromium Code Reviews| Index: media/cdm/ppapi/cdm_wrapper.h |
| diff --git a/media/cdm/ppapi/cdm_wrapper.h b/media/cdm/ppapi/cdm_wrapper.h |
| index b27be424a41002115fc810714406a6c888568606..f3e70cc9cb06ccc2697b1c5374dfc705041275cf 100644 |
| --- a/media/cdm/ppapi/cdm_wrapper.h |
| +++ b/media/cdm/ppapi/cdm_wrapper.h |
| @@ -127,6 +127,12 @@ class CdmWrapper { |
| virtual void ConvertInputBuffer(const cdm::InputBuffer& v2, |
| cdm::InputBuffer_1* v1) = 0; |
| + // Starting in cdm::Host_6 |init_data_type| is a registered type instead of a |
|
ddorwin
2014/08/13 20:59:55
"Prior to CDM_6, |init_data_type| was a mime type.
sandersd (OOO until July 31)
2014/08/13 21:36:19
Done.
|
| + // content type. This helper convererts an |init_data_type| to a content type. |
| + // TODO(sandersd): Remove once Host_4 and Host_5 interfaces are removed. |
| + virtual const char* ConvertInitDataTypeToContentType( |
| + const char* init_data_type) const = 0; |
| + |
| protected: |
| CdmWrapper() {} |
| @@ -339,6 +345,15 @@ class CdmWrapperImpl : public CdmWrapper { |
| v1->timestamp = v2.timestamp; |
| } |
| + virtual const char* ConvertInitDataTypeToContentType( |
| + const char* init_data_type) const { |
| + if (!strcmp(init_data_type, "cenc")) |
| + return "video/mp4"; |
| + if (!strcmp(init_data_type, "webm")) |
| + return "video/webm"; |
| + return init_data_type; |
| + } |
| + |
| private: |
| CdmWrapperImpl(CdmInterface* cdm) : cdm_(cdm), next_session_id_(100) { |
| PP_DCHECK(cdm_); |
| @@ -361,7 +376,8 @@ class CdmWrapperImpl : public CdmWrapper { |
| // create a new session_id to pass to the CDM. For update and release, we need |
| // to look up |web_session_id| and convert it into the existing |session_id|. |
| // Since the callbacks don't come through this interface, cdm_adapter needs to |
| -// create the mapping (and delete it on release). |
| +// create the mapping (and delete it on release). Finally, for create, we need |
| +// to translate |init_data_type| to a MIME type. |
| // TODO(jrummell): Remove these once Host_4 interface is removed. |
| template <> |
| @@ -375,7 +391,7 @@ void CdmWrapperImpl<cdm::ContentDecryptionModule_4>::CreateSession( |
| uint32_t session_id = CreateSessionId(); |
| RegisterPromise(session_id, promise_id); |
| cdm_->CreateSession(session_id, |
| - init_data_type, |
| + ConvertInitDataTypeToContentType(init_data_type), |
| init_data_type_size, |
| init_data, |
| init_data_size); |
| @@ -472,6 +488,21 @@ CdmWrapperImpl<cdm::ContentDecryptionModule_4>::DecryptAndDecodeSamples( |
| // TODO(jrummell): Remove these once Host_5 interface is removed. |
| template <> |
| +void CdmWrapperImpl<cdm::ContentDecryptionModule_5>::CreateSession( |
| + uint32_t promise_id, |
| + const char* init_data_type, |
| + uint32_t init_data_type_size, |
| + const uint8_t* init_data, |
| + uint32_t init_data_size, |
| + cdm::SessionType session_type) { |
| + cdm_->CreateSession(promise_id, |
| + ConvertInitDataTypeToContentType(init_data_type), |
| + init_data_type_size, |
| + init_data, |
| + init_data_size); |
| +} |
| + |
| +template <> |
| void CdmWrapperImpl<cdm::ContentDecryptionModule_5>::LoadSession( |
| uint32_t promise_id, |
| const char* web_session_id, |