# NUT

# Table of Contents

- 1 Description
- 2 Modes
  - 2.1 BROADCAST
  - 2.2 PIPE
- 3 Container-specific codec tags
  - 3.1 Generic raw YUVA formats
  - 3.2 Raw Audio
  - 3.3 Subtitles
  - 3.4 Raw Data
  - 3.5 Codecs

# 1 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.

The official nut specification is at https://git.ffmpeg.org/gitweb/nut.git/blob/refs/heads/master:/docs/nut.txt In case of any differences between this text and the official specification, the official specification shall prevail.

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

## 2.1 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.

## 2.2 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.

# 3 Container-specific codec tags

## 3.1 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.

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

## 3.3 Subtitles

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

## 3.4 Raw Data

UTF8 | Raw UTF-8

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