[vlc-devel] [PATCH 2/2] vlc_block: store per block ancillary

Rémi Denis-Courmont remi at remlab.net
Sun Jul 8 13:28:38 CEST 2018


Le sunnuntaina 8. heinäkuuta 2018, 14.03.21 EEST Denis Charmet a écrit :
> I feel like we are splitting hair for the sake of theory. I proposed
> some kind of generic solution but at some point we'll have to trust the
> decoder/packetizer to deal with those side data, or ignore them and let
> the helpers duplicate them and pass them for the other step.
> 
> Because the issue will be the same with out of band data because either
> the packetizer will know about the wanted ancillary and handle them or
> let them be and create new block but then the link between the out of
> band side datas and the original block will be lost and the next step
> won't be able to handle them.

Indeed. The problem is the same with all approaches: it cannot work 
generically. The side data will need special case handling, or it will be 
lost.

Yet François justified the current approach precisely on the basis that it 
would work generically:

| As mentioned, the amount of code to transmit, manage and rebind
| sidedata is huge. We can transmit it the simple way along with the
| referred data.

I don't believe that.

> (...) if the solutions are somehow equivalent why not stick to the one
> proposed?

There are always the same two objections:

1) Until/unless the merger of data_buffer_t and data_packet_t into block_t is 
undone, it bloats the block_t structure for ad-hoc use. In other words, it is 
"out of place".

2) Unlike new parameter or new call, adding a field hides all the regressions. 
The compiler will not raise warnings or errors. Instead, a tedious audit of 
the block_t-dependent code is needed. If it had been done, we would not have 
found 3 issues already (leak, timeshift, block chain).

> Provided the patch handles blockchain and timeshift serialization?

> IMO putting them inside the structure, and duplicate it on split if not
> handled is the easiest way to ensure that the linking between the block
> and its side data is maintained and passed throughout the chain.

Certainly, if both objections were addressed, then the side data field could 
work.

> I wouldn't mind using the out of band way but I just cannot figure out
> a way to do it, while the in structure seems quite straightforward to
> me.

I don't deny that it is doable. But it is not straightforward, at least not if 
you factor in all the entailed auditing and fixing, and especially separating 
the other block_t use cases.

-- 
Rémi Denis-Courmont
http://www.remlab.net/





More information about the vlc-devel mailing list