public WorkerFileDataSearch(StreamParserContext owner, MessageHandlerDelegate messageCallbackFromOwner, SearchRequest searchRequest) : base(owner, messageCallbackFromOwner) { this.sectionManager = new ManagerSection(owner); this.streamDemux = new StreamDemux(owner); this.searchRequest = searchRequest; //In search mode. We will not parse standard SI/PSI sections, instead ,we will set up a filter for the expected data. Filter filterForSearch = null; if (searchRequest.SearchType == DataType.SECTION) { //To search sections. filterForSearch = new Filter(owner, HandleDataFromDemux, searchRequest.SearchType, searchRequest.SelectedPid, searchRequest.FilterMask.Length, searchRequest.FilterMask, searchRequest.FilterMatch); } else { //To search TS packet or PES packet. filterForSearch = new Filter(owner, HandleDataFromDemux, searchRequest.SearchType, searchRequest.SelectedPid); } //In order to fitler out what we are expecting. streamDemux.AddFilter(filterForSearch); }
public StreamParserCore(StreamParserContext owner, MessageHandlerDelegate messageCallback) : base(owner) { this.streamDemux = new StreamDemux(owner); /** * Create all necessary modules even we don't need all them in some cases. * In live environment,i.e. IP network or device, we will need all of them. */ sectionManager = new ManagerSection(owner); serviceManager = new ManagerService(owner); streamBitrateManager = new ManagerMuxBitrate(); pidManager = new ManagerPid(owner); AddDefaultPidType(); this.messageCallback = messageCallback; //Set up filters to receive standard SI/PSI sections. EnableStandardFilters(streamDemux); }