Please read the SISF_IntegrationGuide.doc file for the integration instructions.

The problems and fixes to make the SISF stuff working with CORE4.0 are :

1. The M2DecoderPlus instance was declared as pointer in
sectionfilterEngine.cpp and in global.h, whereas the it is just an
instance in MPEG4Player.cpp and MPEG4PlayerView.cpp.
Fix: Changed the M2DecObj as an instance in sectionfilterengine and
global.h files.

If it was made as a pointer in the MPEG4Player then there were some
linker errors saying that it was already defined in the M2DecoderPlus.lib. 
Since the code is not availabale for this library, this couldn't be verified.
So that is why it is made just as an instance everywhere.

2. The M2DecObj was as extern in SectionFilterEngine.cpp which is inserted into
both the MPEGJDec and IM1-2D projects. But at run time the M2DecObj instance
in the sectionfilterEngine inserted into the mpegjdec project ( it's output
is a dll file) was unable to resolve the correct address of its actual
instance variable which is defined in the IM1-2D project. The IM1-2D project
( IM1-2D.exe) depends on the MpegjDec project (mpegjdec.dll) and so we can't
set it to work in the other way round. We can't link the M2Decoder Instance
in the mpegjDec project with the IM1-2D project.
Fix: The M2DecObj in the MPEG4Player is made extern and the one in the
sectionfilter is made as the actual definition of the M2DecObj. SO when the
compiler first compiles the MpegjDec project, it enters the information for
that variable name into its table and when it encounters the extern variable
in the MPEG4Player it links it to the actual address.


Testing Efforts:
Currently the application is running the sample and writing into a file called "BasOutput5".
It is writing the following lines into it :
{
	Starting SF Test.
	Retrieving number of filters.
	Filter PAT.
	Initialised positive filter mask and def.
	Starting section filter.
}
From this it is clear that the sectionfiltering is not being done properly.
In the method startSectionFilterEngine() in the sectionfilterengine.cpp
file, the variable M2DOk is always "false". So the control is not coming out
of the loop :
do{
M2Dval = M2DecObj.M2DecStartSectionFilter(&filterInfo) ;
}while(!M2DOk);

Since the M2DOk boolean variable is again set to true only in M2DecoderPlus library when it filters 
a section ( according to Bas Bas Bergevoet ), it is clear that the section is not being filtered 
completely. But all the function calls are being called properly. This is tested using the Visual C++ 
debugger by setting various break points and message boxes.

Testing the MPEG2 TS stream from the MPEG4 player is also not done completely. It is not tested 
whether it is being started correctly or not ( which can be checked from the code that actually calls 
the M2DecoderPlus library to start the stream ).  







