LMLM4: Difference between revisions
Jump to navigation
Jump to search
m (typo) |
m (faster method of calculating the number of padding bytes) |
||
Line 12: | Line 12: | ||
uint32_t packet_size; | uint32_t packet_size; | ||
uint8_t data[packet_size - 8]; | uint8_t data[packet_size - 8]; | ||
uint8_t padding[ | uint8_t padding[ -packet_size & 511 ]; | ||
} LMLM4_Packet; | } LMLM4_Packet; | ||
Revision as of 13:22, 4 January 2008
- Extension: LML uses .divx on their website, though there are other file formats that use that, too.
- Company: Linux Media Labs
- Website: http://www.linuxmedialabs.com/
LMLM4 files are near-raw files, containing MPEG-4 video and MPEG-1 Layer II, μ-law or ADPCM audio.
A file contains multiple packets, padded with zeroes to a multiple of 512 (one block).
typedef struct { uint16_t channel_number; uint16_t frame_type; uint32_t packet_size; uint8_t data[packet_size - 8]; uint8_t padding[ -packet_size & 511 ]; } LMLM4_Packet;
The maximum size of a packet is 1048576 bytes, which is 2048 blocks.
channel_number, frame_type and packet_size are stored in big-endian order.
The following frametypes are supported:
0x00 - I-Frame, video 0x01 - P-Frame, video 0x02 - B-Frame, video 0x04 - MPEG-1 Layer 2 audio 0x05 - μ-law, audio 0x06 - ADPCM, audio
One packet contains a complete decodable frame.