Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Losless Section Demux version 1.4



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 ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index