| OLD | NEW |
| 1 /* | 1 /* |
| 2 * MOV, 3GP, MP4 muxer | 2 * MOV, 3GP, MP4 muxer |
| 3 * Copyright (c) 2003 Thomas Raivio | 3 * Copyright (c) 2003 Thomas Raivio |
| 4 * Copyright (c) 2004 Gildas Bazin <gbazin at videolan dot org> | 4 * Copyright (c) 2004 Gildas Bazin <gbazin at videolan dot org> |
| 5 * Copyright (c) 2009 Baptiste Coudurier <baptiste dot coudurier at gmail dot co
m> | 5 * Copyright (c) 2009 Baptiste Coudurier <baptiste dot coudurier at gmail dot co
m> |
| 6 * | 6 * |
| 7 * This file is part of FFmpeg. | 7 * This file is part of FFmpeg. |
| 8 * | 8 * |
| 9 * FFmpeg is free software; you can redistribute it and/or | 9 * FFmpeg is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Lesser General Public | 10 * modify it under the terms of the GNU Lesser General Public |
| (...skipping 1337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1348 { | 1348 { |
| 1349 if(long_style){ | 1349 if(long_style){ |
| 1350 int64_t pos = url_ftell(pb); | 1350 int64_t pos = url_ftell(pb); |
| 1351 put_be32(pb, 0); /* size */ | 1351 put_be32(pb, 0); /* size */ |
| 1352 put_tag(pb, "data"); | 1352 put_tag(pb, "data"); |
| 1353 put_be32(pb, 1); | 1353 put_be32(pb, 1); |
| 1354 put_be32(pb, 0); | 1354 put_be32(pb, 0); |
| 1355 put_buffer(pb, data, strlen(data)); | 1355 put_buffer(pb, data, strlen(data)); |
| 1356 return updateSize(pb, pos); | 1356 return updateSize(pb, pos); |
| 1357 }else{ | 1357 }else{ |
| 1358 if (!lang) |
| 1359 lang = ff_mov_iso639_to_lang("und", 1); |
| 1358 put_be16(pb, strlen(data)); /* string length */ | 1360 put_be16(pb, strlen(data)); /* string length */ |
| 1359 put_be16(pb, lang); | 1361 put_be16(pb, lang); |
| 1360 put_buffer(pb, data, strlen(data)); | 1362 put_buffer(pb, data, strlen(data)); |
| 1361 return strlen(data) + 4; | 1363 return strlen(data) + 4; |
| 1362 } | 1364 } |
| 1363 } | 1365 } |
| 1364 | 1366 |
| 1365 static int mov_write_string_tag(ByteIOContext *pb, const char *name, const char
*value, int lang, int long_style){ | 1367 static int mov_write_string_tag(ByteIOContext *pb, const char *name, const char
*value, int lang, int long_style){ |
| 1366 int size = 0; | 1368 int size = 0; |
| 1367 if (value && value[0]) { | 1369 if (value && value[0]) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1383 char tag2[16]; | 1385 char tag2[16]; |
| 1384 | 1386 |
| 1385 if (!(t = av_metadata_get(s->metadata, tag, NULL, 0))) | 1387 if (!(t = av_metadata_get(s->metadata, tag, NULL, 0))) |
| 1386 return 0; | 1388 return 0; |
| 1387 | 1389 |
| 1388 len = strlen(t->key); | 1390 len = strlen(t->key); |
| 1389 snprintf(tag2, sizeof(tag2), "%s-", tag); | 1391 snprintf(tag2, sizeof(tag2), "%s-", tag); |
| 1390 while ((t2 = av_metadata_get(s->metadata, tag2, t2, AV_METADATA_IGNORE_SUFFI
X))) { | 1392 while ((t2 = av_metadata_get(s->metadata, tag2, t2, AV_METADATA_IGNORE_SUFFI
X))) { |
| 1391 len2 = strlen(t2->key); | 1393 len2 = strlen(t2->key); |
| 1392 if (len2 == len+4 && !strcmp(t->value, t2->value) | 1394 if (len2 == len+4 && !strcmp(t->value, t2->value) |
| 1393 && (l=ff_mov_iso639_to_lang(&t2->key[len2-3], 0)) >= 0) { | 1395 && (l=ff_mov_iso639_to_lang(&t2->key[len2-3], 1)) >= 0) { |
| 1394 lang = l; | 1396 lang = l; |
| 1395 break; | 1397 break; |
| 1396 } | 1398 } |
| 1397 } | 1399 } |
| 1398 return mov_write_string_tag(pb, name, t->value, lang, long_style); | 1400 return mov_write_string_tag(pb, name, t->value, lang, long_style); |
| 1399 } | 1401 } |
| 1400 | 1402 |
| 1401 /* iTunes track number */ | 1403 /* iTunes track number */ |
| 1402 static int mov_write_trkn_tag(ByteIOContext *pb, MOVMuxContext *mov, | 1404 static int mov_write_trkn_tag(ByteIOContext *pb, MOVMuxContext *mov, |
| 1403 AVFormatContext *s) | 1405 AVFormatContext *s) |
| (...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2131 sizeof(MOVMuxContext), | 2133 sizeof(MOVMuxContext), |
| 2132 CODEC_ID_AAC, | 2134 CODEC_ID_AAC, |
| 2133 CODEC_ID_H264, | 2135 CODEC_ID_H264, |
| 2134 mov_write_header, | 2136 mov_write_header, |
| 2135 mov_write_packet, | 2137 mov_write_packet, |
| 2136 mov_write_trailer, | 2138 mov_write_trailer, |
| 2137 .flags = AVFMT_GLOBALHEADER, | 2139 .flags = AVFMT_GLOBALHEADER, |
| 2138 .codec_tag = (const AVCodecTag* const []){codec_ipod_tags, 0}, | 2140 .codec_tag = (const AVCodecTag* const []){codec_ipod_tags, 0}, |
| 2139 }; | 2141 }; |
| 2140 #endif | 2142 #endif |
| OLD | NEW |