Re: AVStream: DMA & Process() QUEUEing

From: WDD (anonymous_at_microsoft.com)
Date: 05/26/04


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?
>>>
>>>
>>>
>
>



Relevant Pages

  • Re: AVStream: DMA & Process() QUEUEing
    ... But If my DMA is not complete, I have clones referencing frames, does ... this not mean that the QUEUE is not empty? ... > In that case your Processroutine will be called when there is a frame ...
    (microsoft.public.development.device.drivers)
  • Re: Keyboard stops working after *lock [Was: 2.6.21-rc2-mm1]
    ... Periodic load table ... Skel QH link element ... queue is empty ...
    (Linux-Kernel)
  • Re: AVStream: DMA & Process() QUEUEing
    ... As I said you should do KsPinAttemptProcessing when the DMA completes. ... > this not mean that the QUEUE is not empty? ... >> request processing for every arrival, or request no processing at all. ...
    (microsoft.public.development.device.drivers)
  • Re: Block-ram FIFO in Xilinx
    ... In a BlockRAM implementation, this does not make any sense, for width ... Remember, excessive depth or width has no impact, as long as the FIFO ... reliable generation of the Full and Empty flags at high clock rates. ... I would like to use the queue with different sizes of the data bus. ...
    (comp.arch.fpga)
  • Re: Do I need a RTOS?
    ... Avail slots are by nature empty correct? ... in the avail queue, as I earlier defined them to be. ... head-pointers are equal to each other, the avail-queue is full and the ... decide to execute them is another issue. ...
    (comp.arch.embedded)