On Sat, 22 Jan 2011, Udo Richter wrote:
Thought of that too, for a longer perspective. However, what do you think where to add such a hook ideally?
My original idea was to hook in cDevice::Action() as it would bring most flexible setup to blacklist/rewrite pids. However, I forgot the current section mechanism and pat/pmt parsing.
Adding a hook to cDevice::Action would affect all streams, including transfer mode and streaming etc., but has no known relation between PID and stream type. Also, there may be several video streams in parallel here. And I wouldn't consider it good style to provide just filtered streams for all in any case.
Wouldn't stripping NALU fill data help to reduce the required network bandwidth for streamdev, xineliboutput, and vnsi plugins? I do see many benefits using filtered streams everywhere. You could also transcode only certain video/audio pids as the device class know its' transponder/channel parameters.
Adding a hook to cRecorder::Receive() would be nice, as (although not explicitly specified) the data is received as single TS packets, which would allow packet dropping easily. Also, the packets can easily be checked for the (one and only) video PID and video type. However, Receive() is supposed to return immediately, esp. since its called within a Lock() of the device.
You could simply hook up into the ringbuffer methods used in cRecorder.
A more flexible way would be to add yet another ring buffer between the receiving buffer and the frame detector, and do the hook between the buffers. But another buffer will be additional overhead...
..and you already thought about it. :) Anyway, it's up to the plugin how big the overhead will be and it wouldn't hurt when recording. It's up to the user how many recording filters she's going to chain...
BR, -- rofa
Am 22.01.2011 20:21, schrieb Rolf Ahrenberg:
And I wouldn't consider it good style to provide just filtered streams for all in any case.
Wouldn't stripping NALU fill data help to reduce the required network bandwidth for streamdev, xineliboutput, and vnsi plugins? I do see many benefits using filtered streams everywhere.
Receivers like streamdev and vnsi are free to filter their streams too, if they want. An output device on the other hand will decode the TS stream to PES stream and then to nalu stream anyway (ignoring the fill), so it doesn't make much sense to do deep packet analysis and TS rewriting and filtering right before that.
Cheers,
Udo