📄 hvviddec.cpp
字号:
* *********************************************************************/HX_RESULTVvVideoDecoderFilter::DecideBufferSize(void){ return( HXR_OK );}/********************************************************************** * * StartStreaming * * PARAMETERS: None * * RETURNS: * * HRESULT: Returns NOERROR if this function is successful, * otherwise returns the error that occurred. * * DESCRIPTION: * * This function gets called by the base filter classes whenever * this filter is in the process of switching to active mode, * paused or running. * *********************************************************************/HX_RESULTVvVideoDecoderFilter::StartStreaming( const HXVA_Image_Format &src_fmt, const HXVA_Image_Format &dst_fmt ) {// this call is made to lock the critical section guarding this filter // critical sections need to be locked in order to protect data during // multithreading operations//CAutoLock cFilterLock( &m_csFilter ); HX_RESULT lResult = HXR_OK; // checks the return of called functions // try to load the video codec into global memory lResult = TheCodec().Load(); if ( lResult != HXR_OK ) // if it could not be loaded return( HXR_FAIL ); // return an error TheCodec().Enable(); // enable the video codec for use // GNEEL: SEND DOWN FID m_pcVideoCodec = TheCodec().OpenInstance( ); if ( NULL == m_pcVideoCodec ) // if the video codec instance could not be created return( HXR_OUTOFMEMORY ); // return an out of memory error m_input_format = src_fmt; m_output_format = dst_fmt; return( HXR_OK );}/********************************************************************** * * StopStreaming * * PARAMETERS: None * * RETURNS: * * HRESULT: Returns NOERROR if this function is successful, * otherwise returns the error that occurred. * * DESCRIPTION: * * This function gets called by the base filter classes whenever * this transform filter is in the process of leaving active mode * and entering stopped mode. * *********************************************************************/HX_RESULTVvVideoDecoderFilter::StopStreaming( void ){// this call is made to lock the critical sections guarding this filter // and receiving thread; critical sections need to be locked in order to// protect data during multithreading operations//CAutoLock cFilterLock( &m_csFilter ),// cReceiveLock( &m_csReceive ); if ( NULL == m_pcVideoCodec ) return( HXR_FAIL ); //end compression before deleting the pointer, otherwise codec stays open HX_RESULT lResult = HXR_OK; // checks the return of called functions if ( m_bStartDecompress == TRUE ) { lResult = m_pcVideoCodec->DecompressEnd(); if ( lResult == HXR_OK ) { m_bStartDecompress = FALSE; } } // terminate the video codec instance to remove it from memory TheCodec().CloseInstance( (HXH263CodecInstance*) m_pcVideoCodec ); m_pcVideoCodec = NULL; TheCodec().Disable(); TheCodec().Free(); return( HXR_OK );}/********************************************************************** * * EndOfStream * * PARAMETERS: None * * RETURNS: * * HRESULT: Returns NOERROR if this function is successful, * otherwise returns the error that occurred. * * DESCRIPTION: * * This function gets called from the output pin whenever * the output data has reached the end of the stream. If this * function is overridden, the end-of-stream notification must * be passed to the next filter. * *********************************************************************/HX_RESULTVvVideoDecoderFilter::EndOfStream( void ){// this call is made to lock the critical section guarding the receiving // thread; critical sections need to be locked in order to protect data // during multithreading operations//CAutoLock cReceiveLock(&m_csReceive); if ( NULL == m_pcVideoCodec ) { return HXR_FAIL; } // return the end-of-stream notification to the next filter that // is connected to this filter return HXR_OK;}/********************************************************************** * * EndFlush * * PARAMETERS: None * * RETURNS: * * HRESULT: Returns NOERROR if this function is successful, * otherwise returns the error that occurred. * * DESCRIPTION: * * This function gets called from the input pin whenever the * pin is leaving the flushing state. If this function is * overridden, the notification must be passed to the next filter. * *********************************************************************/HX_RESULTVvVideoDecoderFilter::EndFlush( void ){// this call is made to lock the critical section guarding the receiving // thread; critical sections need to be locked in order to protect data // during multithreading operations//CAutoLock cReceiveLock(&m_csReceive); // return the flushing notification to the next filter that is // connected to this filter return HXR_OK;}/********************************************************************** * * GetMediaType * * PARAMETERS: * * nPosition: the position of the media type in the media type list * pcMediaType:the returned output pin media type * * RETURNS: * * HRESULT: Returns NOERROR if this function is successful, * otherwise returns the error that occurred. * * DESCRIPTION: * * This function is called by the base filter classes to supply * one of the media types that the output pin supports based on * the position of the media type, nPosition, in the media type list. * *********************************************************************/HX_RESULTVvVideoDecoderFilter::GetMediaType( void ){ return( HXR_OK );}/********************************************************************** * * CheckInputType * * PARAMETERS: * * pcInMediaType: the media type associated with the input pin * * RETURNS: * * HRESULT: Returns NOERROR if this function is successful, * otherwise returns the error that occurred. * * DESCRIPTION: * * This function gets called by the base filter classes to * verify that the input pin supports the input media type * and to propose an output pin media type based on the * input pin media type. * *********************************************************************/HX_RESULTVvVideoDecoderFilter::CheckInputType( void ){ return HXR_OK;}/********************************************************************** * * CheckTransform * * PARAMETERS: * * pcInMediaType: the media type associated with the input pin * pcOutMediaType: the media type associated with the output pin * * RETURNS: * * HRESULT: Returns NOERROR if this function is successful, * otherwise returns the error that occurred. * * DESCRIPTION: * * This function gets called by the base filter classes to verify * that th input and output pins support their media types * *********************************************************************/HX_RESULTVvVideoDecoderFilter::CheckTransform( void ){ return HXR_OK;}//*** end VvVideoDecoderFilter class ***
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -