Solved

Active Movie SDK

Posted on 1997-09-09
4
331 Views
Last Modified: 2008-03-06
Hi.

I'm looking for info on the Active Movie SDK.
I need to know how the interfaces interact with each other and how to
build an Async. source filter that reads from a server and passes the
media samples
to a transform filter that queues them.

Roman.
0
Comment
Question by:romanm
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 3

Accepted Solution

by:
msmits earned 100 total points
ID: 1169265
Look in the ActiveMovie SDK documentation. It can be found at:

  http://www.microsoft.com/devonly/tech/amov1doc/

and probably also with the SDK itself.

0
 

Expert Comment

by:jaakkola
ID: 1169266
The information how interfaces interact with each other are not described very well in the SDK documentation but the basic thing to do is to take some example filter and make a pin that has been inherited from the IAsyncReader interface. You need to implement a few member-functions that are:
      STDMETHODIMP RequestAllocator(IMemAllocator* pPreferred,ALLOCATOR_PROPERTIES* pProps,IMemAllocator ** ppActual);
      STDMETHODIMP SyncRead(LONGLONG llPosition, LONG lLength, BYTE* pBuffer);
      STDMETHODIMP SyncReadAligned(IMediaSample* pSample);
      STDMETHODIMP WaitForNext(DWORD dwTimeout,IMediaSample** ppSample, DWORD * pdwUser);
      STDMETHODIMP BeginFlush(void);
      STDMETHODIMP EndFlush(void);
      STDMETHODIMP Length(LONGLONG* pTotal, LONGLONG* pAvailable);
      STDMETHODIMP Request(IMediaSample* pSample, DWORD dwUser);

The meaning of the functions are explained in the documents but it has not been explained how the control flow goes. For example, if transform filter is MPEG-Splitter all the basic stuff is done in the begining as expected but after that splitter needs to have a sample (32 - 64 kB depending on the type of MPEG-1). When sample is processed then the filter is destroyed (so the source-filter instance is killed). When play is called from filter-graph the hole chain of filters is build again and data is being processed.

The best thing to do is to start doing your own filter from CSourceFilter class (don't inherite it but look it and make your own filter some what similar manner). Make the pin-class for the filter and inherit it from IAsyncReader-interface. You should use debugger to trace things inside the classes to see what happens. This should not take you more than two weeks.

If you want to see my Async. source filter please email me directly.

Good Luck!!
Mikko Jaakkola
0
 
LVL 3

Author Comment

by:romanm
ID: 1169267
Jaakkola
if you could send me your E-Mail or that filter you written
about I'd appreciate it.

thanks

0
 
LVL 3

Expert Comment

by:msmits
ID: 1169268
maybe you can mail him via the Experts Exchange administration, because it will cost him points to view the last comment you typed.
I believe jaakkola deserves the points more than I for his explanation and especially for the offering of the source.

0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question