Description
***********

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.

Modes
*****

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

BROADCAST
=========

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.

PIPE
====

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.

Container-specific codec tags
*****************************

Generic raw YUVA formats
========================

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.

Raw Audio
=========

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

Subtitles
=========

UTF8     Raw UTF-8
SSA[0]   SubStation Alpha
DVDS     DVD subtitles
DVBS     DVB subtitles

Raw Data
========

UTF8     Raw UTF-8

Codecs
======

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
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