History

avformat/movenc: Avoid calling strlen multiple times

Andreas Rheinhardt committed 5 years ago

Commit 831718b1 parent 64020df1 file · +13 −9Browse files

Unified · Split

libavformat/movenc.c+13−9
@@ -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 */
3540static int mov_write_string_data_tag(AVIOContext *pb, const char *data, int lang, int long_style)3542static 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);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t