Directory : IM1Player\2DPlayer-CSELT
Files modified :

	AudioSourceProxy.cpp:
		throws decoder Underflow event from the getData() method
		When the getData() method called from the renderer fails in fetching data from
		the outputstream due to lack of data in the output stream that has to be written by the 
		Decoder , we throw an decoder underflow event from the renderer.

	Presenter.cpp
		throws missed frames event from the render() method 
		In the method Render(), we do some calculation to find out if the renderer missed a/some 
		frames and throw missed frames event from this renderer.

	DrawableImage.cpp
		The method prerender() fetches the data that it need to render and renders it. If it 
		fails in getting data from the decode, it will throw decoder underflow event.
		NOTE: THe current implementation of the visual renderer just redraws the previous 
		frame that it fetched instead of waiting for data. So this doesn't permit us to throw the 
		decoder underflow event from here, because even if we compare, the current frame with the 
		previous frame, they can be still the same even when there is no decoder underflow.

	

Dir: IM1Player\Core
Files modified :
	Executiv.h	:
		added a new public method (GetInline) to get InlineImp pointer from the executive.
		This Inline is used to access the ObjectDescriptors through the StreamAssociation List
		in Inline and using which the current decoder is mapped on the native side.
	Inline.h
		made ZArray<StreamAssociation> as a public variable to access the Stream Association
		through which the Object Descriptors of various decoders are obtained.
	AL.h
		added a public method to get the node associated with it. Htis is used to set the decoder
		for the newly attached ESD.
	Stream.cpp / ..\include\MediaStream.h
		in method fetchnext a status variable is set to indicate stream overflow/underflow

	ODImp.h / OpenStr.cpp

		A new method mpegjDetach()was added to the ObjectDescriptorImp class  which takes in a 
		ESID as an argument and detaches it from the decoder.
		Another method mpegjDetach() was added to the ES_DescriptorImp class to detach itself 
		from the decoder associated with it. This is a slight modification from the Detach() method 
		in  this class which deletes the decoder and the releases the library.
		Inorder to access the method SetDecoder(), a new virtual function mySetDecoder() was added
		which inturn calls the SetDecoder() method. This is done sothat we can access the 
		ES_DescritorImp methods from a different project.
		
	


Dir: IM1PLayer\Decoder
Files Modified:
	Decoder.cpp/DecoderImp.h/Decoder.h
		The Run() method of the Decoder thread was modified to add code that will generate some 
		decoder specific events on the java side. A new variable ( int stop ) was added to make 
		the decoder stop from decoding the same data again and again. The current implementation 
		of decoder doesn't complain when it has no data to read. it will just decode the prevoius 
		frame again and again.	
	

Dir: IM1Player\mpegj
Files Modified :
	MPEGJTerminalInterface.h
		Added two new structure for creating linked lists for storing events before the event 
		thread throws them onto the java side. Also, the thread specific variable such as handle 
		to the thread were added sothat we can access them from different files and terminate the thread.

	MPDecoderIM1Imp.cpp 
	MPDEcoderIM1Imp.h
	MPDEcoderInterface.h
		Contains the function pointer table for the MPDecoder methods corresponding to the methods 
		in the APIs. Currently start and stop were implemented, but attach and detach are not 
		implemented due to some complexities arising in doing so.
	ResourceManagerIM1Imp.cpp 
	ResourceManagerIM1Imp.h
	ResourceManagerInterface.h
		Contains the function pointer table for the resource manager APIs.

Dir: IM1Player\Mpgj
	Renamed directory Java to FilesUsedinAtlanticDemo
	Now all the file that the MPEGJDecoder need to invoke the java appllication in the demo are in
	the directory mpegj/java ( outside of the im1player directory ). 

Dir: IM1Player\Zvi\H263
Files Modified:
	H263Dec.cpp	
		The run() method was modified to generate some events that are specific to this decoder.

Dir: IM1Player\Zvi\MpegjDec
Files Modified:
	MpegjDec.cpp
		Now after invoking the JVM, the mpegjDecoder thread creates the event thread. The event
		thread sleeps untill some one calls the Resume thread method and it will check the linked 
		lists in the mpegj pointer table and if any events are added to the linked list then it 
		will generate the events onthe java side and again goes to Sleep. So this thread althoug 
		will be running in infinite loop, doesn't take the CPU time.

Dir: mpegj\decoder
Files modified:
	MPDecoderImp.cpp
		The JNI related functions that are called from the java API's of MPDecoder are implemented 
		in this file. These methods call the corresponding method using the function pointers
		in the MPDEcoder function pointer table.

Dir: mpegj\stubs
		All the JNI stub files are moved into this directory.

	
	


	