/* * Class: sage_DShowDVDPlayer * Method: setupGraph0 * Signature: (JLjava/lang/String;Ljava/lang/String;ZZ)V */ JNIEXPORT void JNICALL Java_sage_DShowDVDPlayer_setupGraph0 (JNIEnv *env, jobject jo, jlong dataPtr, jstring jFilename, jstring jhostname, jboolean renderVideo, jboolean renderAudio) { NPE_RET(dataPtr); try { CDVDPlayerData* playerData = dynamic_cast<CDVDPlayerData*>((CPlayerData*) dataPtr); const jchar* wszFilename = jFilename ? env->GetStringChars(jFilename, NULL) : NULL; HRESULT hr = playerData->SetDVDLocation((const WCHAR*) wszFilename); if (wszFilename) env->ReleaseStringChars(jFilename, wszFilename); PLAYEXCEPT_RET(sage_PlaybackException_FILESYSTEM); if (renderAudio) { hr = playerData->RenderAudio(); PLAYEXCEPT_RET(sage_PlaybackException_AUDIO_RENDER); } if (renderVideo) { hr = playerData->RenderVideo(); PLAYEXCEPT_RET(sage_PlaybackException_VIDEO_RENDER); hr = playerData->RenderSubPicture(); HTESTPRINT(hr); // if there's no subpicture we're OK and shouldn't fail hr = playerData->RenderCC(); HTESTPRINT(hr); // if there's no CC we're OK and shouldn't fail } LogFilterGraphInfo(playerData->GetGraph()); } catch (...) { throwPlaybackException(env, sage_PlaybackException_DIRECTX_INSTALL, 0); } }
/* * Class: sage_DShowMediaPlayer * Method: setupGraph0 * Signature: (JLjava/lang/String;Ljava/lang/String;ZZ)V */ JNIEXPORT void JNICALL Java_sage_DShowMediaPlayer_setupGraph0 (JNIEnv *env, jobject jo, jlong dataPtr, jstring jFilename, jstring jhostname, jboolean renderVideo, jboolean renderAudio) { NPE_RET(dataPtr); try { CPlayerData* playData = (CPlayerData*) dataPtr; const jchar* wszFilename = env->GetStringChars(jFilename, NULL); const char* cHostname = jhostname ? env->GetStringUTFChars(jhostname, NULL) : NULL; HRESULT hr = playData->SetSourceFilename((const WCHAR**) &wszFilename, 1, cHostname); env->ReleaseStringChars(jFilename, wszFilename); if (cHostname) env->ReleaseStringUTFChars(jhostname, cHostname); if (hr == E_NOINTERFACE) { // This happens if they're using the wrong SageTV filter components from an older version PLAYEXCEPT_RET(sage_PlaybackException_SAGETV_INSTALL); } PLAYEXCEPT_RET(sage_PlaybackException_FILESYSTEM); BOOL hasDemux = playData->HasDemux(); if (hasDemux) { if (renderAudio) hr = playData->RenderAudio(); PLAYEXCEPT_RET(sage_PlaybackException_AUDIO_RENDER); if (renderVideo) hr = playData->RenderVideo(); PLAYEXCEPT_RET(sage_PlaybackException_VIDEO_RENDER); if (renderVideo) hr = playData->RenderCC(); // We accept failures rendering this //HTESTPRINT(hr); } else if (renderAudio || renderVideo) { hr = playData->RenderSource(); PLAYEXCEPT_RET(renderVideo ? sage_PlaybackException_VIDEO_RENDER : sage_PlaybackException_AUDIO_RENDER); } LogFilterGraphInfo(playData->GetGraph()); } catch (...) { throwPlaybackException(env, sage_PlaybackException_VIDEO_RENDER, 0); } }