> The current solution works 99% of the time and only rarely encounters errors in practice. It works 100% of the time under ideal conditions (i.e. when not round-tripped through Youtube).
> When encoding some data, each byte is converted to a "tile", which is a rectangle of arbitrary size filled with one of 256 colors. The "palette" used for these colors was specifically tuned to maximize resistance to Youtube's compression.
Sounds like you'd want to add an error correcting code on top?
Absolutely!
YouTube's lossy compression algorithm is playing the role and f a lossy channel over which one wants to "communicate". What then one needs is to use channel coding. This is a pretty nontrivial channel though.
Yes, the error model for this channel is pretty crazy.