https://github.com/alessiomaffeis/xmpng
XMPNG (Differential Motion PNG) is a simple lossless video codec, particularly well-suited for high quality screencasts and screen sharing applications
https://github.com/alessiomaffeis/xmpng
codec lossless video video-codec
Last synced: 11 months ago
JSON representation
XMPNG (Differential Motion PNG) is a simple lossless video codec, particularly well-suited for high quality screencasts and screen sharing applications
- Host: GitHub
- URL: https://github.com/alessiomaffeis/xmpng
- Owner: alessiomaffeis
- License: mit
- Created: 2015-06-16T16:55:22.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2017-02-21T21:14:38.000Z (over 9 years ago)
- Last Synced: 2025-04-03T22:24:39.906Z (about 1 year ago)
- Topics: codec, lossless, video, video-codec
- Language: C#
- Homepage:
- Size: 3.91 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# XMPNG
XMPNG (Differential Motion PNG) is a simple lossless video codec, particularly well-suited for high quality screencasts and screen sharing applications. This is a quick, proof of concept C#/.NET implementation from an old academic project.
The concept is pretty straightforward: the encoder writes the initial **I** frame as a full PNG image, then it writes each subsequent **P** frame as the PNG encoded XOR "difference" with respect of its preceding frame (i.e. P2 = Frame 2 XOR Frame 1).
This method allows to greatly reduce both the inter-frame temporal redundancy, by means of the fast and effective XOR "difference", and the intra-frame spatial redundancy, thanks to PNG's own 2D prediction filter.

Then, the decoder can reconstruct the exact, original frames by making a XOR operation between each **P** frame and the previous reconstructed frame (e.g. Frame 2 = P2 XOR Frame 1)
