Thursday, April 26, 2007

Learnt things in 26_Apr_2007

1.Communication
2.Technology
Directshow
VC++




The solution to the problem is ...

1.we have to develope the CBaseOutputPin with two input pins ...
Look at the implementation of it and imitate it..

2.Use the Two different Pins for an input pin

So that each can read samples from Separate pin...




PushMode
Pull mode


Push mode works this way: the upstream filter's output pin
delivers samples to the downstream filter's input pin by
calling IMemInputPin::Receive() or
IMemInputPin::ReceiveMultiple() on it. (The CNetworkSend
class uses CBaseInputPin as base for its input pins and
CBaseInputPin implements IMemInputPin.)

Pull mode works this way: the downstream filter's input pin
reads samples from the upstream filter's output pin by
calling IAsyncReader::SyncRead(),
IAsyncReader::SyncReadAligned() or
IAsyncReader::Request()/IAsyncReader::WaitForNext() on it.


The filter that initiates a data transfer (that is, the
upstream one in push mode and the downstream one in pull
mode) must do it on a separate thread. This thread may be
spawned internally or by, respectively, a preceding or
following filter.


In your case, you would need a following filter to handle
the thread but since the network sender is a renderer, there
is no following filter, so you must spawn a thread by
yourself. This thread needs to repeatedly call some internal
method on the input pin for it to read data from the
upstream filter's output pin and multicast it.


Then you have another problem: the muxer delivers a PS while
the splitter delivers a video ES but the network sender
requires a TS. So your input pin should be modified to
either accept a PS or a video ES and internally remux it
into a TS.




The input pin will either process the data synchronously (that is, completely inside the Receive method), or
process it asynchronously on a worker thread I has to do this thing in MV Merge Frames ?(?????). The input pin is allowed to block within the Receive method,
if it needs to wait for resources.


For video overlay, As I said earlier we need new Output pin which can hold two IMemInput pins

whereas CBaseOutputPin holds only one input pin. the Logic of CTransformFilter will not be suitable to the two input pin requirement

becuase cTransformFilter uses only one input pin..moreover CBaseOutput pin is used to hold the input pin..




The existing documentation "Introduction to DirectShow
Filter Development" is a good place to start, with the attention to the
sections on how filters connect, and data flow for filter developers.



1.I installed the Visual Studio 2005...
2.NNSTestAgent only displays the disk speed as zero.
3.Learning Directx Transform filters




In 2005, If I tried to run the Service application, the client application has an error like

the client has "Invalid System Authorization"

So I changed the Service account as "Local System" then now it is working well..

Previously Service account kept as "Local Service"...


Next Add the "Configurator client coding to the WMCSApp application"...







For directshow, u may have to know about

1.DirectShow
2.VC++
3.CSharp Remoting
4.CSharp WMI classes
5.Sql Server
6.Message Queue
7.MTS
8.COM , DCOM and COM+


http://www.databasejournal.com/features/mssql/archives.php - Sql Server archive




http://sworks.com/keng/da/multimedia/dtrans/c++/ - we can have the code for the DirectX Transform samples

No comments: