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 {