This project provides a solution to reliably transmit video data from one location to another.
Up until now, standardisation organisation such as the Video Quality Experts Group (VQEG) or the International Telecommunications Union (ITU) have used only uncompressed video formats. The H.264 standard and its implementation in FFMPEG allows for lossless transmission of video data at a smaller file size.
DEFINITELY LOSSLESS simplifies the manipulation of YUV422 video data embedded in AVI files with UYVY422 Four-CC code. It also checks for truncation and correct reconstruction of the uncompressed video at the receiving side.
Please note, that this project is for experts in video processing. If you are not familiar with the above mentioned video formats, this project is probably of no use for you.
Lossless video encoding and transmission in YUV422 requires not only a lossless video encoding scheme like ITU-T H.264 offers but also a reliable implementation of the same and the possibility to verify that the data was correctly transmitted (i.e. not truncated).
This project uses FFMPEG for video encoding and the SHA512 algorithm to assure that video data was correctly transmitted and could be decoded without any loss of information.
There are two modes, encoding and decoding. Their principal processing steps are:
1) Calculate the digest for the provided video file
2) Convert the provided video file into plain YUV422
3) Calculate the digest for the plain YUV422 file
4) Encode the video losslessly with H.264
5) Calculate the digest of the H.264 file
6) Decode the H.264 file to plain YUV422
7) Calculate the digest for the decoded plain YUV422 file
8) Check that the digest of step 3 (before coding) and step 7 (after coding) match
1) Verify the digest of the H.264 file
2) Optional: Decode file to plain YUV422 format
3) Optional: Verify digest of plain YUV422 format
4) Decode H.264 file to uncompressed format, i.e. UYVY in AVI container
5) Convert uncompressed format to plain YUV422 format
6) Verify digest of plain YUV422 formats in encoding step 3 (before encoding) with decoding step 5 (after coding and transmission)
Please note that the processing is lossless only when used in conjunction with YUV422 color format. Any other color format, such as YUV420 often used in video coding will be automatically converted into yuv422 by ffmpeg which is a lossy input step. DEFINITELY LOSSLESS would then only guarantee that the created yuv422 representation is sent to the receiver.
Installation and Usage instructions can be found in Installation and Usage.
The project uses the Open Source License of QT. For calculating the SHA512 sums, the code of the GNU Crypto Project was used (written by David Madore based on previous work from Scott G. Miller). For the conversion of the video files, FFMEPG is executed as an external executable. Finally, the installer was made possible by the NSIS project.
The author(s) of DEFINITELY LOSSLESS would like to thank all authors and collaborators in the mentioned projects. DEFINITELY LOSSLESS was only achievable with their prior efforts.