芯方式

OMA DRM 1.0 support Forward Lock only

0
阅读(899)

[DESCRIPTION]
国外某些运营商可能会有这种需求,要求“ 手机只支持FL, CD和SD不能支持”
[SOLUTION]
1) download icfans procedure
vendor\drm\mtk\adp\src\drm_core_proc.c\drm_core_parse_drm_message
1. if (obj_type != MIME_SUBTYPE_DRM_RIGHTS_XML)
{
--- keep without change ---
}
else
{
--- remove all code---
DRM_RESULT(result, DRM_RESULT_NOT_SUPPORT, final);//add here
}
vendor\drm\mtk\adp\src\drm_core_proc.c\drm_core_install_object
1. remove case MIME_SUBTYPE_DRM_RIGHTS_XML, MIME_SUBTYPE_DRM_RIGHTS_WBXML
2. in case MIME_SUBTYPE_DRM_MESSAGE
if (obj_type != MIME_SUBTYPE_DRM_RIGHTS_XML)
{
--- keep without change ---
}
else
{
--- remove all code---
DRM_RESULT(result, DRM_RESULT_NOT_SUPPORT, final); //add here
}
3.in case MIME_SUBTYPE_DRM_CONTENT
......
if(input < DRM_RESULT_OK)
{
--- keep without change ---
}
//start to add
else
{
drm_info_struct *info1 = NULL;
info1 = (drm_info_struct*) drmt_mem_alloc(sizeof(drm_info_struct));
memset(info1, 0, sizeof(drm_info_struct));
info1->rights = (drm_rights_struct*) drmt_mem_alloc(DRM_RIGHTS_SIZE);
memset(info1->rights, 0, DRM_RIGHTS_SIZE);
info1->rights->best[0] = info1->rights->best[1] = info1->rights->best
[2] = info1->rights->best[3] = 0xFF;
if (drm_core_is_dcf_format(input, info1) == KAL_TRUE)
{
if (info1->rights->method != DRM_METHOD_FORWARD_LOCK)
{
FS_Close(input);
drm_core_release_info(info1);
DRM_RESULT(result, DRM_RESULT_NOT_SUPPORT, final);
}
}
drm_core_release_info(info1);
}
//end to add
---keep without change---
vendor\drm\mtk\adp\src\drm_core_proc.c\drm_core_encode_drm_message
--- keep without change ---
if (obj_type != MIME_SUBTYPE_DRM_RIGHTS_XML)
{
--- keep without change ---
}
else
{
--- remove all code---
DRM_RESULT(result, DRM_RESULT_NOT_SUPPORT, final); //add here
}
2) content access
vendor\drm\mtk\adp\src\drm_core_proc.c\drm_core_open_file
--- keep without change ---
if (drm_core_is_dcf_format(input, info) == KAL_TRUE)
{
--- keep without change ---
if (info->rights->method == DRM_METHOD_FORWARD_LOCK)
{
--- keep without change ---
}
else
{
--- remove all code ---
drm_core_release_info(info); //start to add
memset(&g_drm_handles[index], 0, sizeof(drm_handle_struct));
FS_Close(input);
return DRM_RESULT_NOT_SUPPORT; //end to add
}