NUT is a low overhead generic container format. It stores audio, video, subtitle and user-defined streams in a simple, yet efficient, way.
It was created by a group of FFmpeg and MPlayer developers in 2003 and was finalized in 2008.
The official nut specification is at svn://svn.mplayerhq.hu/nut In case of any differences between this text and the official specification, the official specification shall prevail.
NUT has some variants signaled by using the flags field in its main header.
BROADCAST | Extend the syncpoint to report the sender wallclock |
PIPE | Omit completely the syncpoint |
The BROADCAST variant provides a secondary time reference to facilitate detecting endpoint latency and network delays. It assumes all the endpoint clocks are synchronized. To be used in real-time scenarios.
The PIPE variant assumes NUT is used as non-seekable intermediate container, by not using syncpoint removes unneeded overhead and reduces the overall memory usage.
Since many exotic planar YUVA pixel formats are not considered by the AVI/QuickTime FourCC lists, the following scheme is adopted for representing them.
The first two bytes can contain the values: Y1 = only Y Y2 = Y+A Y3 = YUV Y4 = YUVA
The third byte represents the width and height chroma subsampling values for the UV planes, that is the amount to shift the luma width/height right to find the chroma width/height.
The fourth byte is the number of bits used (8, 16, ...).
If the order of bytes is inverted, that means that each component has to be read big-endian.
ALAW | A-LAW |
ULAW | MU-LAW |
P<type><interleaving><bits> | little-endian PCM |
<bits><interleaving><type>P | big-endian PCM |
<type> is S for signed integer, U for unsigned integer, F for IEEE float <interleaving> is D for default, P is for planar. <bits> is 8/16/24/32
PFD[32] would for example be signed 32 bit little-endian IEEE float
UTF8 | Raw UTF-8 |
SSA[0] | SubStation Alpha |
DVDS | DVD subtitles |
DVBS | DVB subtitles |
UTF8 | Raw UTF-8 |
3IV1 | non-compliant MPEG-4 generated by old 3ivx |
ASV1 | Asus Video |
ASV2 | Asus Video 2 |
CVID | Cinepak |
CYUV | Creative YUV |
DIVX | non-compliant MPEG-4 generated by old DivX |
DUCK | Truemotion 1 |
FFV1 | FFmpeg video 1 |
FFVH | FFmpeg Huffyuv |
H261 | ITU H.261 |
H262 | ITU H.262 |
H263 | ITU H.263 |
H264 | ITU H.264 |
HFYU | Huffyuv |
I263 | Intel H.263 |
IV31 | Indeo 3.1 |
IV32 | Indeo 3.2 |
IV50 | Indeo 5.0 |
LJPG | ITU JPEG (lossless) |
MJLS | ITU JPEG-LS |
MJPG | ITU JPEG |
MPG4 | MS MPEG-4v1 (not ISO MPEG-4) |
MP42 | MS MPEG-4v2 |
MP43 | MS MPEG-4v3 |
MP4V | ISO MPEG-4 Part 2 Video (from old encoders) |
mpg1 | ISO MPEG-1 Video |
mpg2 | ISO MPEG-2 Video |
MRLE | MS RLE |
MSVC | MS Video 1 |
RT21 | Indeo 2.1 |
RV10 | RealVideo 1.0 |
RV20 | RealVideo 2.0 |
RV30 | RealVideo 3.0 |
RV40 | RealVideo 4.0 |
SNOW | FFmpeg Snow |
SVQ1 | Sorenson Video 1 |
SVQ3 | Sorenson Video 3 |
theo | Xiph Theora |
TM20 | Truemotion 2.0 |
UMP4 | non-compliant MPEG-4 generated by UB Video MPEG-4 |
VCR1 | ATI VCR1 |
VP30 | VP 3.0 |
VP31 | VP 3.1 |
VP50 | VP 5.0 |
VP60 | VP 6.0 |
VP61 | VP 6.1 |
VP62 | VP 6.2 |
VP70 | VP 7.0 |
WMV1 | MS WMV7 |
WMV2 | MS WMV8 |
WMV3 | MS WMV9 |
WV1F | non-compliant MPEG-4 generated by ? |
WVC1 | VC-1 |
XVID | non-compliant MPEG-4 generated by old Xvid |
XVIX | non-compliant MPEG-4 generated by old Xvid with interlacing bug |