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; }
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); } }