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
130 if (vst && type ==
MKTAG(
'R',
'A',
'W',
'I') && size >= 164) {
144 }
else if (ast && type ==
MKTAG(
'W',
'A',
'V',
'I') && size >= 16) {
149 }
else if (type ==
MKTAG(
'I',
'N',
'F',
'O')) {
153 }
else if (type ==
MKTAG(
'I',
'D',
'N',
'T') && size >= 36) {
155 read_uint32(avctx, pb,
"cameraModel",
"0x%"PRIx32);
161 }
else if (type ==
MKTAG(
'L',
'E',
'N',
'S') && size >= 48) {
165 read_uint8(avctx, pb,
"stabilizerMode",
"%i");
175 }
else if (vst && type ==
MKTAG(
'V',
'I',
'D',
'F') && size >= 4) {
180 }
else if (ast && type ==
MKTAG(
'A',
'U',
'D',
'F') && size >= 4) {
185 }
else if (vst && type ==
MKTAG(
'W',
'B',
'A',
'L') && size >= 28) {
194 }
else if (type ==
MKTAG(
'R',
'T',
'C',
'I') && size >= 20) {
196 struct tm time = { 0 };
207 strftime(str,
sizeof(str),
"%Y-%m-%d %H:%M:%S", &time);
210 }
else if (type ==
MKTAG(
'E',
'X',
'P',
'O') && size >= 16) {
220 }
else if (type ==
MKTAG(
'S',
'T',
'Y',
'L') && size >= 36) {
228 }
else if (type ==
MKTAG(
'M',
'A',
'R',
'K')) {
229 }
else if (type ==
MKTAG(
'N',
'U',
'L',
'L')) {
230 }
else if (type ==
MKTAG(
'M',
'L',
'V',
'I')) {
232 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);
256 snprintf(guidstr,
sizeof(guidstr),
"0x%"PRIx64, guid);
328 mlv->
pb[100] = avctx->
pb;
339 for (i = 0; i < 100; i++) {
340 snprintf(filename + strlen(filename) - 2, 3,
"%02d", i);
364 ast->duration = ast->nb_index_entries;
382 unsigned int size, space;
411 if (space > UINT_MAX - 24 || size < (24 + space))
440 mlv->
pts = timestamp;
448 for (i = 0; i < 100; i++)