Unified · Split
| @@ -2799,6 +2799,7 @@ static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra · 2798 unmodified lines | |||
| 2799 | MOVMuxContext *mov = s->priv_data; | 2799 | MOVMuxContext *mov = s->priv_data; |
| 2800 | const char *hdlr, *descr = NULL, *hdlr_type = NULL; | 2800 | const char *hdlr, *descr = NULL, *hdlr_type = NULL; |
| 2801 | int64_t pos = avio_tell(pb); | 2801 | int64_t pos = avio_tell(pb); |
| 2802 | size_t descr_len; | ||
| 2802 | 2803 | ||
| 2803 | hdlr = "dhlr"; | 2804 | hdlr = "dhlr"; |
| 2804 | hdlr_type = "url "; | 2805 | hdlr_type = "url "; |
| @@ -2864,9 +2865,10 @@ static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra · 59 unmodified lines | |||
| 2864 | avio_wb32(pb, 0); /* reserved */ | 2865 | avio_wb32(pb, 0); /* reserved */ |
| 2865 | avio_wb32(pb, 0); /* reserved */ | 2866 | avio_wb32(pb, 0); /* reserved */ |
| 2866 | avio_wb32(pb, 0); /* reserved */ | 2867 | avio_wb32(pb, 0); /* reserved */ |
| 2868 | descr_len = strlen(descr); | ||
| 2867 | if (!track || track->mode == MODE_MOV) | 2869 | if (!track || track->mode == MODE_MOV) |
| 2868 | avio_w8(pb, strlen(descr)); /* pascal string */ | 2870 | avio_w8(pb, descr_len); /* pascal string */ |
| 2869 | avio_write(pb, descr, strlen(descr)); /* handler description */ | 2871 | avio_write(pb, descr, descr_len); /* handler description */ |
| 2870 | if (track && track->mode != MODE_MOV) | 2872 | if (track && track->mode != MODE_MOV) |
| 2871 | avio_w8(pb, 0); /* c string */ | 2873 | avio_w8(pb, 0); /* c string */ |
| 2872 | return update_size(pb, pos); | 2874 | return update_size(pb, pos); |
| @@ -3539,21 +3541,22 @@ static int mov_write_itunes_hdlr_tag(AVIOContext *pb, MOVMuxContext *mov, · 666 unmodified lines | |||
| 3539 | /* helper function to write a data tag with the specified string as data */ | 3541 | /* helper function to write a data tag with the specified string as data */ |
| 3540 | static int mov_write_string_data_tag(AVIOContext *pb, const char *data, int lang, int long_style) | 3542 | static int mov_write_string_data_tag(AVIOContext *pb, const char *data, int lang, int long_style) |
| 3541 | { | 3543 | { |
| 3544 | size_t data_len = strlen(data); | ||
| 3542 | if (long_style) { | 3545 | if (long_style) { |
| 3543 | int size = 16 + strlen(data); | 3546 | int size = 16 + data_len; |
| 3544 | avio_wb32(pb, size); /* size */ | 3547 | avio_wb32(pb, size); /* size */ |
| 3545 | ffio_wfourcc(pb, "data"); | 3548 | ffio_wfourcc(pb, "data"); |
| 3546 | avio_wb32(pb, 1); | 3549 | avio_wb32(pb, 1); |
| 3547 | avio_wb32(pb, 0); | 3550 | avio_wb32(pb, 0); |
| 3548 | avio_write(pb, data, strlen(data)); | 3551 | avio_write(pb, data, data_len); |
| 3549 | return size; | 3552 | return size; |
| 3550 | } else { | 3553 | } else { |
| 3554 | avio_wb16(pb, data_len); /* string length */ | ||
| 3551 | if (!lang) | 3555 | if (!lang) |
| 3552 | lang = ff_mov_iso639_to_lang("und", 1); | 3556 | lang = ff_mov_iso639_to_lang("und", 1); |
| 3553 | avio_wb16(pb, strlen(data)); /* string length */ | ||
| 3554 | avio_wb16(pb, lang); | 3557 | avio_wb16(pb, lang); |
| 3555 | avio_write(pb, data, strlen(data)); | 3558 | avio_write(pb, data, data_len); |
| 3556 | return strlen(data) + 4; | 3559 | return data_len + 4; |
| 3557 | } | 3560 | } |
| 3558 | } | 3561 | } |
| 3559 | 3562 | ||
| @@ -3829,9 +3832,10 @@ static int mov_write_mdta_keys_tag(AVIOContext *pb, MOVMuxContext *mov, · 269 unmodified lines | |||
| 3829 | avio_wb32(pb, 0); /* entry count */ | 3832 | avio_wb32(pb, 0); /* entry count */ |
| 3830 | 3833 | ||
| 3831 | while (t = av_dict_get(s->metadata, "", t, AV_DICT_IGNORE_SUFFIX)) { | 3834 | while (t = av_dict_get(s->metadata, "", t, AV_DICT_IGNORE_SUFFIX)) { |
| 3832 | avio_wb32(pb, strlen(t->key) + 8); | 3835 | size_t key_len = strlen(t->key); |
| 3836 | avio_wb32(pb, key_len + 8); | ||
| 3833 | ffio_wfourcc(pb, "mdta"); | 3837 | ffio_wfourcc(pb, "mdta"); |
| 3834 | avio_write(pb, t->key, strlen(t->key)); | 3838 | avio_write(pb, t->key, key_len); |
| 3835 | count += 1; | 3839 | count += 1; |
| 3836 | } | 3840 | } |
| 3837 | curpos = avio_tell(pb); | 3841 | curpos = avio_tell(pb); |