Re: AVStream: DMA & Process() QUEUEing
From: WDD (anonymous_at_microsoft.com)
Date: 05/26/04
- Next message: Stephan Wolf: "Re: NDIS_MINIPORT_CHARACTERISTICS"
- Previous message: Stephan Wolf: "Re: Online Crash Analysis (OCA)"
- In reply to: Max Paklin: "Re: AVStream: DMA & Process() QUEUEing"
- Next in thread: Max Paklin: "Re: AVStream: DMA & Process() QUEUEing"
- Reply: Max Paklin: "Re: AVStream: DMA & Process() QUEUEing"
- Messages sorted by: [ date ] [ thread ]
Date: Wed, 26 May 2004 14:31:51 -0400
What I was getting at was that the Flag
(KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL) states that the
process dispatch is only called when data arrives into a previously
empty queue.
How can the QUEUE be empty when I have cloned stream pointers on a Frames?
Cloning increases the reference count of the Frame thus not allowing the
frame to be cancelled, thus ensuring that the QUEUE is not empty.
Put in what you mentioned to return STATUS_PENDING but just wondering
why I get the second call to Process().
Max Paklin wrote:
> You have to clone stream pointers. This means that you queue will not be
> empty.
> As I said you should do KsPinAttemptProcessing when the DMA completes. This
> will trigger the processing.
>
> -- Max.
>
>
>
> "WDD" <anonymous@microsoft.com> wrote in message
> news:e$bY5tzQEHA.1348@TK2MSFTNGP12.phx.gbl...
>
>>But If my DMA is not complete, I have clones referencing frames, does
>>this not mean that the QUEUE is not empty?
>>
>>
>>Max Paklin wrote:
>>
>>>KS is doing queueing for you.
>>>There is a way to request Process() upon frame arrival on an empty
>
> queue, or
>
>>>request processing for every arrival, or request no processing at all.
>>>
>>>I think in your case what you probably want is to request processing on
>
> an
>
>>>empty queue.
>>>This mean NOT specifying both KSPIN_FLAG_DO_NOT_INITIATE_PROCESSING and
>>>KSPIN_FLAG_INITIATE_PROCESSING_ON_EVERY_ARRIVAL.
>>>
>>>In that case your Process() routine will be called when there is a frame
>>>delivered on an empty queue. If your DMA is in progress then you will
>
> have
>
>>>to simply return STATUS_PENDING from the Process() callback.
>>>When DMA is done just call KsPinAttemptProcessing() and that will
>
> initiate
>
>>>processing if it was pended before. If the queue is empty then nothing
>
> will
>
>>>happen (no data available), but when the sample finally arrives your
>>>Process() callback will be invoked.
>>>
>>>-- Max.
>>>
>>>
>>>
>>>"WDD" <anonymous@microsoft.com> wrote in message
>>>news:eqLMgQoQEHA.3532@TK2MSFTNGP12.phx.gbl...
>>>
>>>
>>>>Hi All,
>>>>
>>>>
>>>>Testing out a capture driver and get a Process() call, start DMA
>>>>operation, then return from Process().
>>>>
>>>>I get called with subsequent Process() calls prior to my DMA completion.
>>>>
>>>>Is it common to have a QUEUEing mechanism in the AVStream driver?
>>>
>>>
>>>
>
>
- Next message: Stephan Wolf: "Re: NDIS_MINIPORT_CHARACTERISTICS"
- Previous message: Stephan Wolf: "Re: Online Crash Analysis (OCA)"
- In reply to: Max Paklin: "Re: AVStream: DMA & Process() QUEUEing"
- Next in thread: Max Paklin: "Re: AVStream: DMA & Process() QUEUEing"
- Reply: Max Paklin: "Re: AVStream: DMA & Process() QUEUEing"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|