PVMFStatus PVOMA1KMJRecognizerPlugin::Recognize( PVMFDataStreamFactory& aSourceDataStreamFactory, PVMFRecognizerMIMEStringList* aFormatHint, Oscl_Vector<PVMFRecognizerResult,OsclMemAllocator>& aRecognizerResult ) { Oscl_FileServer fileServ; PVFile pvfile; // set data stream pvfile.SetCPM(&aSourceDataStreamFactory); // open data stream int32 ret = pvfile.Open( NULL,Oscl_File::MODE_READ | Oscl_File::MODE_BINARY,fileServ); if(ret) // open data stream failed { LOGD("PVOMA1KMJRecognizerPlugin:Recognize pvfile.Open failed"); return PVMFFailure; } DrmPluginDataAccess dataAccess(&pvfile); T_DRM_Input_Data drmInputData = { (int32_t)&dataAccess, TYPE_DRM_UNKNOWN, DrmPluginGetDataLen, DrmPluginReadData, DrmPluginSeekData }; int32_t session = SVC_drm_openSession(drmInputData); if((DRM_MEDIA_DATA_INVALID == session) || (DRM_FAILURE == session)) { LOGD("PVOMA1KMJRecognizerPlugin:Recognize SVC_drm_openSession failed"); pvfile.Close(); return PVMFFailure; } char mediaType[CONTENT_TYPE_LEN] = {0}; ret = SVC_drm_getContentType(session,(uint8_t*)mediaType); SVC_drm_closeSession(session); pvfile.Close(); if(DRM_SUCCESS != ret) // get DRM content type failed { LOGD("PVOMA1KMJRecognizerPlugin:Recognize SVC_drm_getTypeDirectly failed"); return PVMFFailure; } // save content type for use by outer PVMFRecognizerResult result; RecognizeContentType(mediaType,result.iRecognizedFormat); result.iRecognitionConfidence = PVMFRecognizerConfidenceCertain; aRecognizerResult.push_back(result); return PVMFSuccess; }
String CDrmRawContent::NativeGetContentType() { uint8_t contentType[64] = {0}; String str(""); if (DRM_SUCCESS == SVC_drm_getContentType(mId, contentType)){ str = String((char*)contentType); } return str; }
/* native interface */ JNIEXPORT jstring JNICALL Java_android_drm_mobile1_DrmRawContent_nativeGetContentType (JNIEnv * env, jobject rawContent) { jint id; uint8_t contentType[64] = {0}; jstring str = NULL; if (JNI_DRM_FAILURE == getObjectIntField(env, rawContent, "id", &id)) return NULL; if (DRM_SUCCESS == SVC_drm_getContentType(id, contentType)) str = (*env)->NewStringUTF(env, (char *)contentType); return str; }