NXV: Difference between revisions
Jump to navigation
Jump to search
MagicalTux (talk | contribs) No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
* Extension: nxv | * Extension: nxv | ||
* Samples: | * Samples: [http://www.banahogg.com/DIA41.nxv] (see note) | ||
NXV is a container format used by the "Brando MP4 Watch" product. The wrist watch is reported to support MP4, WMV and WMA, however this is achieved by first converting the files to the NXV format. | NXV is a container format used by the "Brando MP4 Watch" product. The wrist watch is reported to support MP4, WMV and WMA, however this is achieved by first converting the files to the NXV format. | ||
==Container Format== | ==Container Format== | ||
The format consists of a sequence of 512-bytes packets. | |||
Header packet: | |||
bytes 0-11 ASCIIZ magic ("NXV File") | bytes 0-11 ASCIIZ magic ("NXV File") | ||
bytes 16-19 ASCIIZ version ("1.0.0", "3.0.1" or "3.0.2") | bytes 16-19 ASCIIZ version ("1.0.0", "3.0.1" or "3.0.2") | ||
Line 11: | Line 15: | ||
byte 22-23 unknown (little endian) | byte 22-23 unknown (little endian) | ||
byte 24-511 rand byte | byte 24-511 rand byte | ||
while eof | The a/v sequence commences at byte 512 with an audio packet: | ||
u8[ | |||
uint curSequence = 0 | |||
while !eof | |||
u8[500] audio payload | |||
u8[4] unknown | |||
be32 sequence number | |||
le16 length (bytes) | le16 length (bytes) | ||
le16 unknown | le16 unknown (pixels == bytes/2?) | ||
u8[length] video payload | if (sequence == curSequence) | ||
curSequence += 1 | |||
u8[length] video payload | |||
==Audio Payload== | ==Audio Payload== | ||
Line 22: | Line 33: | ||
==Video Payload== | ==Video Payload== | ||
Raw video | Raw video - be16 in 565 RGB format. If the version is "1.0.0", the video is at full-resolution. If the version is "3.0.1", the video is at quarter-resolution; that is, the video data is 1/4 of the size indicated and is scaled in each direction by two on playback. Version "3.0.2" seems to indicate a different format - likely sixteenth-resolution. | ||
==Notes== | ==Notes== | ||
* Supported video resolutions are: 96x64, 96x80, 96x96, 128x96, 128x128, 160x128, 176x128. Despite the reduction in video resolution, the resulting NXV file size exceeds that of the input video file. | * Supported video resolutions are: 96x64, 96x80, 96x96, 128x96, 128x128, 160x128, 176x128. Despite the reduction in video resolution, the resulting NXV file size exceeds that of the input video file. | ||
* Intermediate files are used by the NxvConverter program to store the audio and video payloads (filename.mp3 and filename.tmp) prior to muxing to the NXV file. | * Intermediate files are used by the NxvConverter program to store the audio and video payloads (filename.mp3 and filename.tmp) prior to muxing to the NXV file. | ||
* | * All NXV files examined so far have one frame per video packet and the packets appear at regular intervals. Low and Mid quality have one frame per four audio packets; High quality has one frame for every two audio packets. | ||
* The content of the sequence and length values in an audio packet not followed by a video packet is unknown - probably nothing. | |||
* Example file is an encoding of public domain footage from [http://www.archive.org/details/movies Internet Archive: Moving Image Archive] | |||
==External Links== | ==External Links== |
Revision as of 12:11, 21 January 2007
- Extension: nxv
- Samples: [1] (see note)
NXV is a container format used by the "Brando MP4 Watch" product. The wrist watch is reported to support MP4, WMV and WMA, however this is achieved by first converting the files to the NXV format.
Container Format
The format consists of a sequence of 512-bytes packets.
Header packet:
bytes 0-11 ASCIIZ magic ("NXV File") bytes 16-19 ASCIIZ version ("1.0.0", "3.0.1" or "3.0.2") byte 20 width (pixels) byte 21 height (pixels) byte 22-23 unknown (little endian) byte 24-511 rand byte
The a/v sequence commences at byte 512 with an audio packet:
uint curSequence = 0 while !eof u8[500] audio payload u8[4] unknown be32 sequence number le16 length (bytes) le16 unknown (pixels == bytes/2?) if (sequence == curSequence) curSequence += 1 u8[length] video payload
Audio Payload
The audio payload is an MP3 stream, including RIFF WAVE headers.
Video Payload
Raw video - be16 in 565 RGB format. If the version is "1.0.0", the video is at full-resolution. If the version is "3.0.1", the video is at quarter-resolution; that is, the video data is 1/4 of the size indicated and is scaled in each direction by two on playback. Version "3.0.2" seems to indicate a different format - likely sixteenth-resolution.
Notes
- Supported video resolutions are: 96x64, 96x80, 96x96, 128x96, 128x128, 160x128, 176x128. Despite the reduction in video resolution, the resulting NXV file size exceeds that of the input video file.
- Intermediate files are used by the NxvConverter program to store the audio and video payloads (filename.mp3 and filename.tmp) prior to muxing to the NXV file.
- All NXV files examined so far have one frame per video packet and the packets appear at regular intervals. Low and Mid quality have one frame per four audio packets; High quality has one frame for every two audio packets.
- The content of the sequence and length values in an audio packet not followed by a video packet is unknown - probably nothing.
- Example file is an encoding of public domain footage from Internet Archive: Moving Image Archive