void InitializeLimeEvents() { static int initialized = 0; IsJavaRunning = 1; if (!initialized) { LimeFunction *f; initialized = TRUE; f = NewLimeFunction(LIME_PACKAGE, LIME_GRAPHICS_CLASS, "initialize"); f->call(f, NULL); DeleteLimeFunction(f); /* initialize the event bridge */ f = NewLimeFunction(LIME_PACKAGE, LIME_EVENT_CLASS, "initialize"); f->call(f, NULL); DeleteLimeFunction(f); } CreateThread(NULL, 0, DispatcherThread, (void *)2000, 0, NULL); }
static javacall_result video_start_video_snapshot(javacall_handle handle, const javacall_utf16* imageType, long length) { audio_handle* pHandle = (audio_handle*)handle; char* data; static LimeFunction *f = NULL; if (snapshot_buffer != NULL) { return JAVACALL_FAIL; } if (f == NULL) { f = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "snapshot"); } f->call(f, &data, &dataLength, pHandle->hWnd, imageType, length); if(data == NULL){ dataLength = -1; } snapshot_buffer = (char *) malloc(dataLength); memcpy(snapshot_buffer, data, dataLength); javanotify_on_media_notification( JAVACALL_EVENT_MEDIA_SNAPSHOT_FINISHED, pHandle->isolateId, pHandle->playerId, NULL == data ? JAVACALL_FAIL : JAVACALL_OK, NULL); return JAVACALL_OK; }
void initializeWMASupport() { int vmArgc=0; // char *vmArgv[3]; /* CLDC parameters */ LimeFunction *initWMA = NULL; char* resultBytes = NULL; int resultLen = 0; initWMA = NewLimeFunction(WMA_CLIENT_PACKAGE, "WMAClientBridge", "initializeWMASupport"); initWMA->call(initWMA, &resultBytes, &resultLen); if (resultLen < 3) { /* it's too small to be a valid response */ } else { char* resultStr = NULL; char* clientTrafficPort = NULL; char* serverTrafficPort = NULL; char* phoneNum = NULL; char* newlinePtr = NULL; char* keyPtr = NULL; char* valuePtr = NULL; /* make the result null-terminated */ resultStr = (char*)malloc(resultLen + 1); resultStr[resultLen] = '\0'; memcpy(resultStr, resultBytes, resultLen); /* break up the result string into its 3 pieces */ newlinePtr = strrchr(resultStr, '\n'); phoneNum = newlinePtr + 1; *newlinePtr = '\0'; newlinePtr = strrchr(resultStr, '\n'); serverTrafficPort = newlinePtr + 1; *newlinePtr = '\0'; clientTrafficPort = resultStr; smsInPortNumber = atoi(clientTrafficPort); smsOutPortNumber = atoi(serverTrafficPort); devicePhoneNumber = strdup(phoneNum); javacall_set_property("com.sun.midp.io.j2me.sms.PhoneNumber", devicePhoneNumber, JAVACALL_TRUE, JAVACALL_APPLICATION_PROPERTY); free(resultStr); } DeleteLimeFunction(initWMA); }
static javacall_result video_set_video_location(javacall_handle handle, long x, long y, long w, long h) { audio_handle* pHandle = (audio_handle*)handle; static LimeFunction *f1 = NULL; static LimeFunction *f2 = NULL; static LimeFunction *f3 = NULL; static LimeFunction *f4 = NULL; int res; if (f1 == NULL) { f1 = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "setDisplayX"); } f1->call(f1, &res, pHandle->hWnd, x); if (f2 == NULL) { f2 = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "setDisplayY"); } f2->call(f2, &res, pHandle->hWnd, y); if (f3 == NULL) { f3 = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "setDisplayWidth"); } f3->call(f3, &res, pHandle->hWnd, w); if (f4 == NULL) { f4 = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "setDisplayHeight"); } f4->call(f4, &res, pHandle->hWnd, h); return JAVACALL_OK; }
static javacall_result video_get_video_size(javacall_handle handle, long* width, long* height) { audio_handle* pHandle = (audio_handle*)handle; static LimeFunction *f1 = NULL; static LimeFunction *f2 = NULL; if (f1 == NULL) { f1 = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "getSourceWidth"); } f1->call(f1, width, pHandle->hWnd); if (f2 == NULL) { f2 = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "getSourceHeight"); } f2->call(f2, height, pHandle->hWnd); return JAVACALL_OK; }
void CheckLimeEvent() { static LimeFunction *f = NULL; int *returnData; int returnLength; __int64 waitFor = 0; bool_t forever = 1; KVMEventType evt; int i; if (f == NULL) { f = NewLimeFunction(LIME_PACKAGE, LIME_EVENT_CLASS, "getEvents"); f->trace(f, FALSE); } LIME_DEBUG_PRINTF("Waiting for event\n"); /* Ask the LIME server for an event */ f->call(f, &returnData, &returnLength, EVENT_BUFFER_SIZE, forever, waitFor); if (returnData == NULL) { returnLength = 0; } LIME_DEBUG_PRINTF("getEvents return length: %d \n",returnLength); if ( returnLength %4 != 0 ) { LIME_DEBUG_PRINTF("Bad lime event size, adjusting\n"); returnLength = (returnLength/4) * 4; } if (returnLength == 0) { LIME_DEBUG_PRINTF("Ignoring lime event\n"); return; } else { /* Send events to JVM */ for (i=0; i<returnLength; i+=EVENT_SIZE) { /* Decode the event */ evt.type = returnData[i + 0]; evt.chr = returnData[i + 1]; evt.screenX = returnData[i + 2]; evt.screenY = returnData[i + 3]; SendEvent(&evt); } } }
static javacall_result video_set_video_color_key( javacall_handle handle, javacall_bool on, javacall_pixel color) { static LimeFunction *f = NULL; if (f == NULL) { f = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "setVideoAlpha"); } f->call(f, NULL, !on, color); return JAVACALL_OK; }
static javacall_result skip_frames(javacall_handle handle, long* nFrames) { audio_handle* pHandle = (audio_handle*)handle; static LimeFunction *f = NULL; if (f == NULL) { f = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "skip"); } f->call(f, nFrames, pHandle->hWnd, *nFrames); return JAVACALL_OK; }
static javacall_result seek_to_frame(javacall_handle handle, long frameNum, long* actualFrameNum) { audio_handle* pHandle = (audio_handle*)handle; static LimeFunction *f = NULL; if (f == NULL) { f = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "seek"); } f->call(f, actualFrameNum, pHandle->hWnd, frameNum); return JAVACALL_OK; }
static javacall_result map_time_to_frame(javacall_handle handle, long ms, long* frameNum) { audio_handle* pHandle = (audio_handle*)handle; static LimeFunction *f = NULL; if (f == NULL) { f = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "mapTimeToFrame"); } f->call(f, frameNum, pHandle->hWnd, ms); return JAVACALL_OK; }
static javacall_result video_set_video_visible(javacall_handle handle, javacall_bool visible) { audio_handle* pHandle = (audio_handle*)handle; static LimeFunction *f = NULL; int res; if (f == NULL) { f = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "setVisible"); } f->call(f, &res, pHandle->hWnd, visible); return JAVACALL_OK; }
void tearDownWMASupport() { LimeFunction *killWMA = NULL; int result = 0; killWMA = NewLimeFunction(WMA_CLIENT_PACKAGE, "WMAClientBridge", "cleanupWMASupport"); /* result is only for synchronization so it doesn't run ansynchronously */ killWMA->call(killWMA, &result); DeleteLimeFunction(killWMA); free(devicePhoneNumber); }
static javacall_result video_set_video_fullscreenmode( javacall_handle handle, javacall_bool fullScreenMode ) { audio_handle* pHandle = (audio_handle*)handle; static LimeFunction *f = NULL; int res = 0; if (f == NULL) { f = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "setDisplayFullScreen"); } f->call(f, &res, pHandle->hWnd, fullScreenMode); return JAVACALL_OK; }
static javacall_handle video_create(int appId, int playerId, jc_fmt mediaType, const javacall_utf16_string URI) { static LimeFunction *f = NULL; javacall_int64 res = 0; audio_handle* pHandle = MALLOC(sizeof(audio_handle)); size_t uriLength = ( NULL != URI ) ? wcslen(URI) : 0; javacall_utf16 *mediaTypeWide; int mediaTypeWideLen; int len = MAX_MIMETYPE_LENGTH; char *buff = MALLOC(len); if (buff == NULL) { return NULL; } if (NULL == pHandle) { return NULL; } if (f == NULL) { f = NewLimeFunction(LIME_MMAPI_PACKAGE, LIME_MMAPI_CLASS, "createVideoPlayer"); } if (fmt_str2mime(fmt_enum2str(mediaType), buff, len) == JAVACALL_FAIL) { mediaTypeWide = NULL; mediaTypeWideLen = 0; } else { mediaTypeWide = char_to_unicode(buff); mediaTypeWideLen = wcslen(mediaTypeWide); } f->call(f, &res, mediaTypeWide, mediaTypeWideLen, URI, uriLength); if (res <= 0) { return NULL; } pHandle->hWnd = (long) res; pHandle->offset = 0; pHandle->duration = -1; pHandle->curTime = 0; pHandle->isolateId = appId; pHandle->playerId = playerId; pHandle->timerId = 0; pHandle->isForeground = JAVACALL_TRUE; pHandle->mediaType = mediaType; pHandle->buffer = NULL; pHandle->wholeContentSize = -1; pHandle->isBuffered = JAVACALL_FALSE; pHandle->volume = -1; pHandle->mute = JAVACALL_FALSE; pHandle->mutex = mmaudio_mutex_create(); #ifdef ENABLE_EXTRA_CAMERA_CONTROLS pHandle->pExtraCC = NULL; if( JC_FMT_CAPTURE_VIDEO == mediaType ) { extra_camera_controls_init( pHandle ); } #endif //ENABLE_EXTRA_CAMERA_CONTROLS // set the file name to the URI if (NULL != URI && uriLength>0) { wcstombs(pHandle->fileName, URI, uriLength); } if (buff != NULL) { FREE(buff); } return pHandle; }