34 #define MLV_VERSION "v2.0"
36 #define MLV_VIDEO_CLASS_RAW 1
37 #define MLV_VIDEO_CLASS_YUV 2
38 #define MLV_VIDEO_CLASS_JPEG 3
39 #define MLV_VIDEO_CLASS_H264 4
41 #define MLV_AUDIO_CLASS_WAV 1
43 #define MLV_CLASS_FLAG_DELTA 0x40
44 #define MLV_CLASS_FLAG_LZMA 0x80
138 if (vst && type ==
MKTAG(
'R',
'A',
'W',
'I') && size >= 164) {
152 }
else if (ast && type ==
MKTAG(
'W',
'A',
'V',
'I') && size >= 16) {
157 }
else if (type ==
MKTAG(
'I',
'N',
'F',
'O')) {
161 }
else if (type ==
MKTAG(
'I',
'D',
'N',
'T') && size >= 36) {
163 read_uint32(avctx, pb,
"cameraModel",
"0x%"PRIx32);
169 }
else if (type ==
MKTAG(
'L',
'E',
'N',
'S') && size >= 48) {
173 read_uint8(avctx, pb,
"stabilizerMode",
"%i");
183 }
else if (vst && type ==
MKTAG(
'V',
'I',
'D',
'F') && size >= 4) {
188 }
else if (ast && type ==
MKTAG(
'A',
'U',
'D',
'F') && size >= 4) {
193 }
else if (vst && type ==
MKTAG(
'W',
'B',
'A',
'L') && size >= 28) {
202 }
else if (type ==
MKTAG(
'R',
'T',
'C',
'I') && size >= 20) {
204 struct tm time = { 0 };
215 strftime(str,
sizeof(str),
"%Y-%m-%d %H:%M:%S", &time);
218 }
else if (type ==
MKTAG(
'E',
'X',
'P',
'O') && size >= 16) {
228 }
else if (type ==
MKTAG(
'S',
'T',
'Y',
'L') && size >= 36) {
236 }
else if (type ==
MKTAG(
'M',
'A',
'R',
'K')) {
237 }
else if (type ==
MKTAG(
'N',
'U',
'L',
'L')) {
238 }
else if (type ==
MKTAG(
'M',
'L',
'V',
'I')) {
240 av_log(avctx,
AV_LOG_INFO,
"unsupported tag %c%c%c%c, size %u\n", type&0xFF, (type>>8)&0xFF, (type>>16)&0xFF, (type>>24)&0xFF, size);
264 snprintf(guidstr,
sizeof(guidstr),
"0x%"PRIx64, guid);
336 mlv->
pb[100] = avctx->
pb;
347 for (i = 0; i < 100; i++) {
348 snprintf(filename + strlen(filename) - 2, 3,
"%02d", i);
372 ast->duration = ast->nb_index_entries;
390 unsigned int size, space;
419 if (space > UINT_MAX - 24 || size < (24 + space))
448 mlv->
pts = timestamp;
456 for (i = 0; i < 100; i++)