Beispiel #1
0
int RemuxFileW( unsigned short nTask, wchar_t* pInputFile, TUNE* pTune, int nInputFormat, 
			   wchar_t* pOutFile, int nOutputFormat, int nOption )
{
	REMUXER *pRemuxer;
	int ret, max_track_num;

	//if not specify a input format, detect it
	if ( nInputFormat == 0 )
		nInputFormat = DetectFileTypeW( pInputFile );
	if ( nInputFormat == 0 )
		return 0;

	if ( nInputFormat == MPEG_M2TS ) 
		 max_track_num = MAX_TRACK_NUM *2;
	else
		 max_track_num = MAX_TRACK_NUM;

	pRemuxer = CreateRemuxer( nInputFormat, max_track_num, ES_BUFFER_SIZE );
	pRemuxer->task = nTask;

	SetupMessageDumper( pRemuxer->demuxer, (DUMP)RemuxMessageDumper, pRemuxer );

	ret = OpenFileSourceW( pRemuxer->demuxer, pInputFile, nInputFormat,  pTune );
	if ( !ret )
	{
		ReleaseRemuxer( pRemuxer );
		return 0;
	}

	if ( nOption & 0x01 ) 
		DisabeTSPtsFix( pRemuxer ); 

	if ( nOption & 0x02 ) 
		SetupEPGDump( pRemuxer, (DUMP)EPGDumper, pRemuxer );

	SetupEPGDumpLanguage( pRemuxer, LanguageCode((unsigned char*)"eng") );

	if ( pOutFile != NULL && pOutFile[0] != 0x0 )
		CreateFileOutputW( pRemuxer, pOutFile, nOutputFormat, max_track_num );

	if ( IS_TS_TYPE(nOutputFormat) )
		SetupBlockDataDumper( pRemuxer->demuxer, BlockBufferTSDump, pRemuxer->ts_builder );
	else
	if ( IS_PS_TYPE(nOutputFormat) )
		SetupBlockDataDumper( pRemuxer->demuxer, BlockBufferPSDump, pRemuxer->ps_builder );

	pRemuxer->state = 1;

	//looping pump data from file into remuxer
	PumpFileData( pRemuxer->demuxer, 0, RemuxFileProgressCallback, pRemuxer ); 

	PostStatusMessage( pRemuxer, "STREAM END (slot:0)" );

	ReleaseFileOutput( pRemuxer );
	CloseFileSource( pRemuxer->demuxer );
	ReleaseRemuxer( pRemuxer );
	
	
	return 1;
}
Beispiel #2
0
void CTSParserFilter::ReadRegistryCfg()
{
	HKEY rootKey = HKEY_LOCAL_MACHINE;
	DWORD holder;
	HKEY myKey;
	DWORD readType;
	DWORD hsize = sizeof(holder);
	if (RegOpenKeyEx(rootKey, "SOFTWARE\\Frey Technologies\\Common\\DSFilters\\TSSplitter", 0, KEY_QUERY_VALUE, &myKey) == ERROR_SUCCESS)
	{
		if (RegQueryValueEx(myKey, "DisablePTSFix", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			if ( holder ) 
			{
				REMUXER*  pRemuxer;
				if  ( m_pInputPin->GetParser( &pRemuxer ) == NOERROR )
					DisabeTSPtsFix( pRemuxer );
			}
		}

		if (RegQueryValueEx(myKey, "EPGParserCtrl", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			REMUXER*  pRemuxer;
			if  ( m_pInputPin->GetParser( &pRemuxer ) == NOERROR )
			{
				//EPGParserCtrl( pRemuxer, holder ); //ZQ TODO
			}
		}

		//if (RegQueryValueEx(myKey, "AVInfoCtrl", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		//{
		//	REMUXER*  pRemuxer;
		//	if  ( m_pInputPin->GetParser( &pRemuxer ) == NOERROR )
		//	{
		//		AVInfoCtrl( pRemuxer, holder );
		//	}
		//}

		if (RegQueryValueEx(myKey, "DisableMultiAudio", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			REMUXER*  pRemuxer;
			if  ( m_pInputPin->GetParser( &pRemuxer ) == NOERROR )
			{
				if ( holder )
					DisableMultipleAudio( pRemuxer );
				else
					EnableMultipleAudio( pRemuxer );
			}
		}

		
		if (RegQueryValueEx(myKey, "RebuildPMTEnabled", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_bRebuildTSPMTEnabled = (BOOL)holder;
		}

		if (RegQueryValueEx(myKey, "OutputFormat", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			if ( (WORD)holder == 0 )
				holder = MPEG_PS;
			//format validation
			if ( (WORD)holder == MPEG_TS || (WORD)holder == MPEG_TS || (WORD)holder == MPEG_M2TS )
				m_wOutputFormat = (WORD)holder;
		}
		if (RegQueryValueEx(myKey, "DebugProgram", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_bDebugFlag = TRUE;
			m_dwSelectProgram = holder;
		}
		if (RegQueryValueEx(myKey, "DebugChannel", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_bDebugFlag = TRUE;
			m_dwSelectChannel = holder;
		}
		if (RegQueryValueEx(myKey, "DebugTSID", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_bDebugFlag = TRUE;
			m_dwSelectTSID = holder;
		}

		if (RegQueryValueEx(myKey, "DebugDumpSize", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_dwDumpSize = holder;
		}
		if (RegQueryValueEx(myKey, "PassThroughEnabled", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_bPassThroughEnabled = holder;
		}

		if (RegQueryValueEx(myKey, "NetworkType", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			SetNetworkType( (WORD)holder, 0 );
		}

		if (RegQueryValueEx(myKey, "DisablePIDDump", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_dwPIDDumpDisable = holder;
		}

		char fname[_MAX_PATH]={0};
		hsize = sizeof(fname);
		if (RegQueryValueEx(myKey, "DebugSource", 0, &readType, (LPBYTE) &fname, &hsize) == ERROR_SUCCESS)
		{
			SetDebugSourceFile( fname );		
		}

		char language[16]={0};
		hsize = sizeof(language)-2;
		if (RegQueryValueEx(myKey, "Language", 0, &readType, (LPBYTE) &language, &hsize) == ERROR_SUCCESS)
		{
			SetAudioLanguage( language );
		}

		if (RegQueryValueEx(myKey, "DisableClockTimeout", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_bDisableClockTimeout = holder;
		}
		
		if (RegQueryValueEx(myKey, "EnableSubtitle", 0, &readType, (LPBYTE) &holder, &hsize) == ERROR_SUCCESS)
		{
			m_bSubtitleEnable = holder;
		}

		RegCloseKey(myKey);
	}

}