Today I merged the latest dvb-kernel cvs into our cvs tree, which contains a driver for the AViA GTX and eNX. Using your new section demux filtering does not work anymore, because you broke the accelerated memcopy. This memcopy callback also checks crc32 in our driver (which is the reason why this and the crc32 callback were introduced in dvb-kernel). Your implementation does a) not set crc_val to ~0 for new
adding crc_val before each memcopy would be simple but ->
sections before calling memcopy and b) does not restrict memcopy to the size of the copied section. Unfortunately this is not documented, so it
this could be tricky to fix because memcopy is no more used
to trasport one complete section, but is used to fill the intermediate
buffer and from this buffer a pointer arithmetic is used to isolate
complete sections without need of memcopy. Crc check should be done there.
The old code is broken in boundary conditions, dropping some sections
that should have been otherwise correctly received.
The new code reduces the number of memcopy's. Depending on TS stream,
it could sometimes deliver many sections with a single memcopy.
is not your fault that you didn't notice. I tried to fix the code but didn't succeed. What is the exact difference to the old section demux and why shouldn't we fix the old one instead if it is broken?
I tried to fix to the old code, but as the old code was of too
cumbersome structure it was difficult to follow and I think I
wasn't able to seal it 100% losless.
I propose to keep the old code and introduce crc check in the pointer arithmetic part if this is acceptable with the hardware, give me crc
code sample and I'll add it in
Emard
-- Info: To unsubscribe send a mail to [EMAIL PROTECTED] with "unsubscribe linux-dvb" as subject.
