// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CDM_CONTENT_DECRYPTION_MODULE_H_ #define CDM_CONTENT_DECRYPTION_MODULE_H_ #include <type_traits> #include "content_decryption_module_export.h" #if defined(_MSC_VER) typedef unsigned char uint8_t; typedef unsigned int uint32_t; typedef int int32_t; typedef __int64 int64_t; #else #include <stdint.h> #endif // The version number must be rolled when the exported functions are updated! // If the CDM and the adapter use different versions of these functions, the // adapter will fail to load or crash! #define CDM_MODULE_VERSION … // Build the versioned entrypoint name. // The extra macros are necessary to expand version to an actual value. #define INITIALIZE_CDM_MODULE … #define BUILD_ENTRYPOINT(name, version) … #define BUILD_ENTRYPOINT_NO_EXPANSION(name, version) … // Macro to check that |type| does the following: // 1. is a standard layout. // 2. is trivial. // 3. sizeof(type) matches the expected size in bytes. As some types contain // pointers, the size is specified for both 32 and 64 bit. #define CHECK_TYPE(type, size_32, size_64) … extern "C" { CDM_API void INITIALIZE_CDM_MODULE(); CDM_API void DeinitializeCdmModule(); // Returns a pointer to the requested CDM Host interface upon success. // Returns NULL if the requested CDM Host interface is not supported. // The caller should cast the returned pointer to the type matching // |host_interface_version|. GetCdmHostFunc; // Returns a pointer to the requested CDM upon success. // Returns NULL if an error occurs or the requested |cdm_interface_version| or // |key_system| is not supported or another error occurs. // The caller should cast the returned pointer to the type matching // |cdm_interface_version|. // Caller retains ownership of arguments and must call Destroy() on the returned // object. CDM_API void* CreateCdmInstance(int cdm_interface_version, const char* key_system, uint32_t key_system_size, GetCdmHostFunc get_cdm_host_func, void* user_data); CDM_API const char* GetCdmVersion(); } // extern "C" cdm // namespace cdm #endif // CDM_CONTENT_DECRYPTION_MODULE_H_