36 #define XMV_MIN_HEADER_SIZE 36
38 #define XMV_AUDIO_ADPCM51_FRONTLEFTRIGHT 1
39 #define XMV_AUDIO_ADPCM51_FRONTCENTERLOW 2
40 #define XMV_AUDIO_ADPCM51_REARLEFTRIGHT 4
42 #define XMV_AUDIO_ADPCM51 (XMV_AUDIO_ADPCM51_FRONTLEFTRIGHT | \
43 XMV_AUDIO_ADPCM51_FRONTCENTERLOW | \
44 XMV_AUDIO_ADPCM51_REARLEFTRIGHT)
46 #define XMV_BLOCK_ALIGN_SIZE 36
116 uint32_t file_version;
122 if ((file_version == 0) || (file_version > 4))
125 if (!memcmp(p->
buf + 12,
"xobX", 4))
148 uint32_t file_version;
149 uint32_t this_packet_size;
150 uint16_t audio_track;
161 if ((file_version != 4) && (file_version != 2))
218 packet->
track = track;
228 "(0x%04X)\n", track->
flags);
280 int mspel_bit = !!(data & 0x01);
282 int abt_flag = !!(data & 0x04);
283 int j_type_bit = !!(data & 0x08);
284 int top_left_mv_flag = !!(data & 0x10);
285 int per_mb_rl_bit = !!(data & 0x20);
286 int slice_count = (data >> 6) & 7;
292 data |= mspel_bit << 15;
293 data |= loop_filter << 14;
294 data |= abt_flag << 13;
295 data |= j_type_bit << 12;
296 data |= top_left_mv_flag << 11;
297 data |= per_mb_rl_bit << 10;
298 data |= slice_count << 7;
309 uint16_t audio_track;
310 uint32_t data_offset;
353 if ((packet->
data_size == 0) && (audio_track != 0))
444 uint32_t block_count;
491 uint32_t frame_size, frame_timestamp;
501 frame_size = (frame_header & 0x1FFFF) * 4 + 4;
502 frame_timestamp = (frame_header >> 17);
516 for (i = 0; i < frame_size; i += 4)
529 video->
pts += frame_timestamp;