Hi Hans, Chris, any other developers working on the new DMA code,

I tried the trunk on my PPC ivtv machine and can't get it to capture  
anything. MythTV complains that the driver has stopped recording, and  
I get the following kernel message:

        ivtv0 warning: encoder MPEG: Couldn't find start of buffer within  
the first 256 bytes

Fortunately, ivtv-0.9.x works just fine on my PPC machine, so it must  
be a new change in the trunk. I think the cause is the buffer  
(pointer?) being byteswapped and the DMA_MAGIC_COOKIE never gets  
found.... This could be a result of using a char instead of a  
v4l2_buffer in ivtv_buffer in ivtv-driver.h. Typecasting chars to  
pointers always result in endian issues....

trunk ivtv-irq.c 218: u32buf = (u32 *)buf->buf;
0.9 ivtv-irq.c 296: (u32 *)(buf->buffer.m.userptr)

trunk struct ivtv_buffer {
         struct list_head list;
         dma_addr_t dma_handle;
         unsigned long b_flags;
         char *buf;                                             // leads to 
endian issues...

         u32 bytesused;
         u32 readpos;
};

0.9 struct ivtv_buffer {
         size_t readpos;
         dma_addr_t dma_handle;
         struct v4l2_buffer buffer;                     // conversion handled 
by  
v4l2_buffer!
         struct list_head list;
         unsigned long ts;
         unsigned long b_flags;
         unsigned long *page;
         unsigned char **vpage;
};

The "0.9" way of doing the buffer looks much safer to me... hope this  
helps.

- Rick

_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to