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
27992799 MOVMuxContext *mov = s->priv_data;
28002800 const char *hdlr, *descr = NULL, *hdlr_type = NULL;
28012801 int64_t pos = avio_tell(pb);
2802+ size_t descr_len;
28022803
28032804 hdlr = "dhlr";
28042805 hdlr_type = "url ";
@@ -2864,9 +2865,10 @@ static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra · 59 unmodified lines
28642865 avio_wb32(pb, 0); /* reserved */
28652866 avio_wb32(pb, 0); /* reserved */
28662867 avio_wb32(pb, 0); /* reserved */
2868+ descr_len = strlen(descr);
28672869 if (!track || track->mode == MODE_MOV)
2868− avio_w8(pb, strlen(descr)); /* pascal string */
2869− avio_write(pb, descr, strlen(descr)); /* handler description */
2870+ avio_w8(pb, descr_len); /* pascal string */
2871+ avio_write(pb, descr, descr_len); /* handler description */
28702872 if (track && track->mode != MODE_MOV)
28712873 avio_w8(pb, 0); /* c string */
28722874 return update_size(pb, pos);
@@ -3539,21 +3541,22 @@ static int mov_write_itunes_hdlr_tag(AVIOContext *pb, MOVMuxContext *mov, · 666 unmodified lines
35393541 /* helper function to write a data tag with the specified string as data */
35403542 static int mov_write_string_data_tag(AVIOContext *pb, const char *data, int lang, int long_style)
35413543 {
3544+ size_t data_len = strlen(data);
35423545 if (long_style) {
3543− int size = 16 + strlen(data);
3546+ int size = 16 + data_len;
35443547 avio_wb32(pb, size); /* size */
35453548 ffio_wfourcc(pb, "data");
35463549 avio_wb32(pb, 1);
35473550 avio_wb32(pb, 0);
3548− avio_write(pb, data, strlen(data));
3551+ avio_write(pb, data, data_len);
35493552 return size;
35503553 } else {
3554+ avio_wb16(pb, data_len); /* string length */
35513555 if (!lang)
35523556 lang = ff_mov_iso639_to_lang("und", 1);
3553− avio_wb16(pb, strlen(data)); /* string length */
35543557 avio_wb16(pb, lang);
3555− avio_write(pb, data, strlen(data));
3556− return strlen(data) + 4;
3558+ avio_write(pb, data, data_len);
3559+ return data_len + 4;
35573560 }
35583561 }
35593562
@@ -3829,9 +3832,10 @@ static int mov_write_mdta_keys_tag(AVIOContext *pb, MOVMuxContext *mov, · 269 unmodified lines
38293832 avio_wb32(pb, 0); /* entry count */
38303833
38313834 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);
38333837 ffio_wfourcc(pb, "mdta");
3834− avio_write(pb, t->key, strlen(t->key));
3838+ avio_write(pb, t->key, key_len);
38353839 count += 1;
38363840 }
38373841 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