Mercurial > libavformat.hg
comparison movenc.c @ 3457:0bbc97acefde libavformat
simplify
author | bcoudurier |
---|---|
date | Wed, 11 Jun 2008 09:06:27 +0000 |
parents | fb5dd21f7e18 |
children | 1ccb0b1813c9 |
comparison
equal
deleted
inserted
replaced
3456:fb5dd21f7e18 | 3457:0bbc97acefde |
---|---|
1252 static uint16_t language_code(const char *str) | 1252 static uint16_t language_code(const char *str) |
1253 { | 1253 { |
1254 return (((str[0]-0x60) & 0x1F) << 10) + (((str[1]-0x60) & 0x1F) << 5) + ((str[2]-0x60) & 0x1F); | 1254 return (((str[0]-0x60) & 0x1F) << 10) + (((str[1]-0x60) & 0x1F) << 5) + ((str[2]-0x60) & 0x1F); |
1255 } | 1255 } |
1256 | 1256 |
1257 static int mov_write_psp_udta_tag(ByteIOContext *pb, | 1257 static void mov_write_psp_udta_tag(ByteIOContext *pb, |
1258 const char *str, const char *lang, int type) | 1258 const char *str, const char *lang, int type) |
1259 { | 1259 { |
1260 int len = utf8len(str)+1; | 1260 int len = utf8len(str)+1; |
1261 if(len<=0) | 1261 if(len<=0) |
1262 return 0; | 1262 return; |
1263 put_be16(pb, len*2+10); /* size */ | 1263 put_be16(pb, len*2+10); /* size */ |
1264 put_be32(pb, type); /* type */ | 1264 put_be32(pb, type); /* type */ |
1265 put_be16(pb, language_code(lang)); /* language */ | 1265 put_be16(pb, language_code(lang)); /* language */ |
1266 put_be16(pb, 0x01); /* ? */ | 1266 put_be16(pb, 0x01); /* ? */ |
1267 ascii_to_wc(pb, str); | 1267 ascii_to_wc(pb, str); |
1268 return len*2+10; | |
1269 } | 1268 } |
1270 | 1269 |
1271 static int mov_write_uuidusmt_tag(ByteIOContext *pb, AVFormatContext *s) | 1270 static int mov_write_uuidusmt_tag(ByteIOContext *pb, AVFormatContext *s) |
1272 { | 1271 { |
1273 size_t size; | 1272 offset_t pos, pos2; |
1274 offset_t pos, curpos; | 1273 |
1275 | |
1276 size = 0; | |
1277 if (s->title[0]) { | 1274 if (s->title[0]) { |
1278 pos = url_ftell(pb); | 1275 pos = url_ftell(pb); |
1279 put_be32(pb, 0); /* size placeholder*/ | 1276 put_be32(pb, 0); /* size placeholder*/ |
1280 put_tag(pb, "uuid"); | 1277 put_tag(pb, "uuid"); |
1281 put_tag(pb, "USMT"); | 1278 put_tag(pb, "USMT"); |
1282 put_be32(pb, 0x21d24fce); /* 96 bit UUID */ | 1279 put_be32(pb, 0x21d24fce); /* 96 bit UUID */ |
1283 put_be32(pb, 0xbb88695c); | 1280 put_be32(pb, 0xbb88695c); |
1284 put_be32(pb, 0xfac9c740); | 1281 put_be32(pb, 0xfac9c740); |
1285 size += 24; | 1282 |
1286 | 1283 pos2 = url_ftell(pb); |
1287 put_be32(pb, 0); /* size placeholder*/ | 1284 put_be32(pb, 0); /* size placeholder*/ |
1288 put_tag(pb, "MTDT"); | 1285 put_tag(pb, "MTDT"); |
1289 put_be16(pb, 4); | 1286 put_be16(pb, 4); |
1290 size += 10; | |
1291 | 1287 |
1292 // ? | 1288 // ? |
1293 put_be16(pb, 0x0C); /* size */ | 1289 put_be16(pb, 0x0C); /* size */ |
1294 put_be32(pb, 0x0B); /* type */ | 1290 put_be32(pb, 0x0B); /* type */ |
1295 put_be16(pb, language_code("und")); /* language */ | 1291 put_be16(pb, language_code("und")); /* language */ |
1296 put_be16(pb, 0x0); /* ? */ | 1292 put_be16(pb, 0x0); /* ? */ |
1297 put_be16(pb, 0x021C); /* data */ | 1293 put_be16(pb, 0x021C); /* data */ |
1298 size += 12; | 1294 |
1299 | 1295 mov_write_psp_udta_tag(pb, LIBAVCODEC_IDENT, "eng", 0x04); |
1300 size += mov_write_psp_udta_tag(pb, LIBAVCODEC_IDENT, "eng", 0x04); | 1296 mov_write_psp_udta_tag(pb, s->title, "eng", 0x01); |
1301 size += mov_write_psp_udta_tag(pb, s->title, "eng", 0x01); | |
1302 // snprintf(dt,32,"%04d/%02d/%02d %02d:%02d:%02d",t_st->tm_year+1900,t_st->tm_mon+1,t_st->tm_mday,t_st->tm_hour,t_st->tm_min,t_st->tm_sec); | 1297 // snprintf(dt,32,"%04d/%02d/%02d %02d:%02d:%02d",t_st->tm_year+1900,t_st->tm_mon+1,t_st->tm_mday,t_st->tm_hour,t_st->tm_min,t_st->tm_sec); |
1303 size += mov_write_psp_udta_tag(pb, "2006/04/01 11:11:11", "und", 0x03); | 1298 mov_write_psp_udta_tag(pb, "2006/04/01 11:11:11", "und", 0x03); |
1304 | 1299 |
1305 // size | 1300 updateSize(pb, pos2); |
1306 curpos = url_ftell(pb); | 1301 return updateSize(pb, pos); |
1307 url_fseek(pb, pos, SEEK_SET); | 1302 } |
1308 put_be32(pb, size); | 1303 |
1309 url_fseek(pb, pos+24, SEEK_SET); | 1304 return 0; |
1310 put_be32(pb, size-24); | |
1311 url_fseek(pb, curpos, SEEK_SET); | |
1312 } | |
1313 | |
1314 return size; | |
1315 } | 1305 } |
1316 | 1306 |
1317 static int mov_write_moov_tag(ByteIOContext *pb, MOVContext *mov, | 1307 static int mov_write_moov_tag(ByteIOContext *pb, MOVContext *mov, |
1318 AVFormatContext *s) | 1308 AVFormatContext *s) |
1319 { | 1309 { |