NUT


1 描述

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.

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