Today I have decided to take another look at the encoding problems that I have been experiencing.
Initially, I was encoding a single bit per frame by modifying the LSB of the X component of the motion vector belonging to the first macroblock. Unfortunately, I was experiencing issues where bits would flip. I have now experimented with different methods of encoding. I had collected results from encoding with the LSB (a bitmask of 1) and a bitmask of 2, 3, 4 and 8.
Using a bitmask of 3 only makes 2 bit flip out of the entire message. Across all of my results, one particular frame (99) does not retain any modifications made to the motion vector. Regardless of what is encoded (including nothing), the motion vector ends x component ends up being set to 0.
I am now looking at a method of skipping "bad frames" this does have some limitations:
- For the time being I am only working with text/ascii data. This will allow me to simply encode a skip frame as a single character and will mean that I do not need to worry about escape sequences.
- This method also assumes that the first frame is not a bad frame.
This initial idea is recursive in its nature and should be refined if the initial prototype proves successful.