Right.
I’ll split the remaining steps to get tv-led DV working on all devices (not limited to CoreELEC, also applies to computers, etc) into two category’s: technical uncertainty and implementation.
Technical Uncertainty
This is referring to any steps in the process of going from a file to outputting from a device. To me, the only remaining part here is the modifications made to the DV metadata from the file before it is output from the device. I discovered that the metadata is modified based on the captures of the DV tunnel - these modifications were minor though.
I haven’t yet looked into this in detail yet, but, by looking the source code provided here, it doesn’t seem anything major. This would need more looking at, but it seems limited to the functions update_md_for_hdmi
, update_dm_l0_for_hdmi
, and update_dm_ext_for_hdmi
. My first impression is that these functions are small and self-contained enough to be understood / reimplemented.
I do not see this being a particular problem, and it shouldn’t stop other people working on the implementation.
Implementation:
Steps needed:
- Embed the metadata (after it has been modified per above) into the LSB of the chroma channel.
- Set hdmi AVI infoframe to full range 8-bit RGB
- Send the vendor specific infoframe
For CoreELEC:
Steps 2 and 3 are easy / known how to do. Step 1 would be easy if the video data could be read and written to at a stage after all processing (i.e. after adding in the GUI) is done. I don’t know how/if this can be achieved.
To be clear though, the only difficulty here is actually getting access to the bytes to read/write to a small number of pixels.
This is something that clearly licensed devices can do. It would be worth seeing if the code for this part can be found and if it does actually rely on parts of the SoC that are not only functional on licensed devices.
For FEL content, adding in the EL layer would also need to be done - I have no idea how this could be implemented.
For computers:
Step 2 is easy. To me, step 1 appears to be a straightforward process, all it should take is adding a custom post processing step to the video output. I can’t imagine this being hard for someone with experience in video post processing on a computer.
Step 3, I don’t know if computers let you send vendor specific info frames that you want. If so, that should give TV-led DV. If not, the vendor specific infoframe would need to be added after the computer, from my limited understanding this is something a hd fury could do.
Summary:
This is likely where I really would need help from others on the implementation parts to make meaningful progress. In particularly, any help and ideas on how to get the metadata embedded into the video stream in CoreELEC would be much appreciated.