SMV

From MultimediaWiki
Jump to navigation Jump to search

Introduction

The Sigma Tel Motion Video Format (SMV) is a simple format used by many small media players that have the capability of playing video. This document describes the format of an SMV video file.

Format

An SMV file is composed of three sections, concatenated together:

  1. A .wav file for the audio stream, with a conventional WAV header.
  2. An SMV header, described below.
  3. An array of .jpeg files for the video stream, with headers, each prepended by a 24-bit (3 byte) little-endian value representing the size of the image and buffered at the end with nulls.

WAV File

The audio stream the SMV format uses is a regular IMA WAV audio file. Since the SMV format begins with a WAV file, audio players or converters usually detect it as if it was just a WAV file. Therefore, a demuxer implementation would have to seek to the SMV header in order to check if it's really an SMV.


SMV Header

The SMV header is composed of a magic ASCII string (SMV002000) followed by 24-bit (3 byte) little-endian values. Here is an example of an SMV header:

SMV002000 magic
128       width
128       height
16        header length (length of the SMV header)
1          unknown constant
8533       jpeg modulo
15        fps (frames per second)
1875      total number of frames in file
1          unknown constant
0          unknown constant
15        frames per jpeg
65793      extra padding (0x01010101)
65793      extra padding
65793      extra padding
65793      extra padding

JPEG Array

The video stream is composed of an array of JFIF .jpeg images. Each JPEG image is preceded with a 24-bit (3 byte) value indicating the size of the JPEG. Each JPEG image contains frames arranged vertically.

The width and height parameters in the SMV header specify the size of each frame, and the frames per jpeg parameter in the header specifies how many frames with be incorporated in each JPEG image. Each JPEG is buffered with an array of nulls at the end so that each image is at predictable locations. The number of nulls is specified by the jpeg modulo parameter in the SMV header.


External Links