Ejemplo n.º 1
0
long video_get_width(int id) {
	get_videor(videoStruct, id, -1);
	IBasicVideo *pBasicVideo;
	videoStruct->pGraph->QueryInterface(IID_IBasicVideo,
	 (LPVOID *)&pBasicVideo);

	// obtain width
	long width;
	pBasicVideo->get_VideoWidth(&width);

	// release
	pBasicVideo->Release();
	
	return width;
}
Ejemplo n.º 2
0
/*
 * Class:     sage_DShowMediaPlayer
 * Method:    getVideoDimensions0
 * Signature: (J)Ljava/awt/Dimension;
 */
JNIEXPORT jobject JNICALL Java_sage_DShowMediaPlayer_getVideoDimensions0
  (JNIEnv *env, jobject jo, jlong dataPtr)
{
	if (!dataPtr) return NULL;
	CPlayerData* playData = (CPlayerData*) dataPtr;
	IGraphBuilder* pGraph = playData->GetGraph();
	if (!pGraph) return JNI_FALSE;
	IBasicVideo* pBV = NULL;
	HRESULT hr = pGraph->QueryInterface(IID_IBasicVideo, (void**)&pBV);
	if (SUCCEEDED(hr))
	{
		long nativeWidth, nativeHeight;
		hr = pBV->get_VideoWidth(&nativeWidth);
		if (FAILED(hr)) { SAFE_RELEASE(pBV); return NULL; }
		hr = pBV->get_VideoHeight(&nativeHeight);
		if (FAILED(hr)) { SAFE_RELEASE(pBV); return NULL; }
		static jclass dimClass = (jclass) env->NewGlobalRef(env->FindClass("java/awt/Dimension"));
		static jmethodID constMeth = env->GetMethodID(dimClass, "<init>", "(II)V");
		jobject dimObj = env->NewObject(dimClass, constMeth, nativeWidth, nativeHeight);
		SAFE_RELEASE(pBV);
		return dimObj;
	}
	return NULL;
}
Ejemplo n.º 3
0
HRESULT fsPartMediaPlayer::Open(HANDLE hFile, UINT64 uMaxAvail)
{
	HRESULT hr;

	Close ();

	
	m_stream.Attach (hFile, uMaxAvail);

	
	if (m_stream.Get_MediaType () == NULL)
		return E_FAIL;

	m_reader.Set_MediaType (m_stream.Get_MediaType ());

	

	RIF (CoCreateInstance (CLSID_FilterGraph, NULL, CLSCTX_INPROC,
		IID_IGraphBuilder, (void**) &m_pGB));

	IFilterGraph* pFG = NULL;
	RIF (m_pGB->QueryInterface (IID_IFilterGraph, (void**)&pFG));

	RIF (pFG->AddFilter (&m_reader, NULL));
	pFG->Release ();

	RIF (m_pGB->Render (m_reader.GetPin (0)));

	RIF (m_pGB->QueryInterface (IID_IMediaControl, (void**)&m_pMC));
	RIF (m_pGB->QueryInterface (IID_IMediaEventEx, (void**)&m_pME));
	RIF (m_pGB->QueryInterface (IID_IMediaSeeking, (void**)&m_pMS));
	
	m_pGB->QueryInterface (IID_IVideoWindow, (void**)&m_pVW);
	m_pGB->QueryInterface (IID_IBasicAudio, (void**)&m_pBA);

	IBasicVideo* pBV = NULL;
	m_pGB->QueryInterface (IID_IBasicVideo, (void**) &pBV);
	if (pBV != NULL)
	{
		long nW, nH;
		pBV->get_VideoWidth (&nW);
		pBV->get_VideoHeight (&nH);
		m_fVideoRatio = (double)nW / nH;
		pBV->Release ();
	}
	else
	{
		m_fVideoRatio = 1;
	}

	if (m_pVW)
	{
		if (FAILED (m_pVW->put_MessageDrain ((OAHWND)m_hOutWnd)))
		{
			SAFE_RELEASE (m_pVW);
		}
	}

	RIF (m_pME->SetNotifyWindow ((OAHWND)m_hOutWnd, WM_VIDEONOTIFY, LONG(this)));

	if (m_pVW)
	{
		m_pVW->put_Visible (OAFALSE);
		m_pVW->put_WindowStyle (WS_CHILD);
		m_pVW->put_Owner ((OAHWND)m_hOutWnd);

		AutoSize ();

		m_pVW->put_Visible (OATRUE);

		m_pVW->SetWindowForeground (-1);
	}

	m_state = VFPS_STOPPED;

	return S_OK;
}
Ejemplo n.º 4
0
HRESULT fsPartMediaPlayer::Open2(LPCSTR pszFile)
{
	HRESULT hr;

	Close ();

	RIF (CoCreateInstance (CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**) &m_pGB));

	WCHAR wszFile [MAX_PATH];
	MultiByteToWideChar (CP_ACP, 0, pszFile, -1, wszFile, MAX_PATH);

	RIF (m_pGB->RenderFile (wszFile, NULL));

	RIF (m_pGB->QueryInterface (IID_IMediaControl, (void**) &m_pMC));
    RIF (m_pGB->QueryInterface (IID_IMediaEventEx, (void**) &m_pME));
    RIF (m_pGB->QueryInterface (IID_IMediaSeeking, (void**) &m_pMS));

	m_pGB->QueryInterface (IID_IVideoWindow, (void**) &m_pVW);

	IBasicVideo* pBV = NULL;
	m_pGB->QueryInterface (IID_IBasicVideo, (void**) &pBV);
	if (pBV != NULL)
	{
		long nW, nH;
		pBV->get_VideoWidth (&nW);
		pBV->get_VideoHeight (&nH);
		m_fVideoRatio = (double)nW / nH;
	}
	else
	{
		m_fVideoRatio = 1;
	}

    
    RIF (m_pGB->QueryInterface (IID_IBasicAudio, (void**) &m_pBA));

	BOOL bAudioOnly = m_pVW == NULL || pBV == NULL;

	if (pBV)
		pBV->Release ();

	if (bAudioOnly == FALSE)
	{
		long l;
		if (FAILED (m_pVW->get_Visible (&l)))
			bAudioOnly = TRUE;
	}

	

	if (m_pVW)
	{
		if (FAILED (m_pVW->put_MessageDrain ((OAHWND)m_hOutWnd)))
		{
			SAFE_RELEASE (m_pVW);
		}
	}

	RIF (m_pME->SetNotifyWindow ((OAHWND)m_hOutWnd, WM_VIDEONOTIFY, LONG(this)));

	if (m_pVW)
	{
		m_pVW->put_Visible (OAFALSE);
		m_pVW->put_WindowStyle (WS_CHILD);
		m_pVW->put_Owner ((OAHWND)m_hOutWnd);

		AutoSize ();

		m_pVW->put_Visible (OATRUE);

		m_pVW->SetWindowForeground (-1);
	}

	m_state = VFPS_STOPPED;

	return S_OK;
}