X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmov.c;h=ae48c02287891bb02d9af3a49e0ae2237974d92d;hb=1fc396318833280a520bf568d5605791decf87d7;hp=b2ef482ce2de4890bdf30a1375e28113e6070f43;hpb=314c198413bf4cc07190ba3b828d693cc474db9d;p=ffmpeg diff --git a/libavformat/mov.c b/libavformat/mov.c index b2ef482ce2d..ae48c022878 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -83,6 +83,7 @@ static int mov_metadata_track_or_disc_number(MOVContext *c, AVIOContext *pb, snprintf(buf, sizeof(buf), "%d", current); else snprintf(buf, sizeof(buf), "%d/%d", current, total); + c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; av_dict_set(&c->fc->metadata, key, buf, 0); return 0; @@ -91,15 +92,13 @@ static int mov_metadata_track_or_disc_number(MOVContext *c, AVIOContext *pb, static int mov_metadata_int8_bypass_padding(MOVContext *c, AVIOContext *pb, unsigned len, const char *key) { - char buf[16]; - /* bypass padding bytes */ avio_r8(pb); avio_r8(pb); avio_r8(pb); - snprintf(buf, sizeof(buf), "%d", avio_r8(pb)); - av_dict_set(&c->fc->metadata, key, buf, 0); + c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; + av_dict_set_int(&c->fc->metadata, key, avio_r8(pb), 0); return 0; } @@ -107,10 +106,8 @@ static int mov_metadata_int8_bypass_padding(MOVContext *c, AVIOContext *pb, static int mov_metadata_int8_no_padding(MOVContext *c, AVIOContext *pb, unsigned len, const char *key) { - char buf[16]; - - snprintf(buf, sizeof(buf), "%d", avio_r8(pb)); - av_dict_set(&c->fc->metadata, key, buf, 0); + c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; + av_dict_set_int(&c->fc->metadata, key, avio_r8(pb), 0); return 0; } @@ -125,6 +122,7 @@ static int mov_metadata_gnre(MOVContext *c, AVIOContext *pb, genre = avio_r8(pb); if (genre < 1 || genre > ID3v1_GENRE_MAX) return 0; + c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; av_dict_set(&c->fc->metadata, key, ff_id3v1_genre_str[genre-1], 0); return 0; @@ -254,6 +252,7 @@ static int mov_metadata_loci(MOVContext *c, AVIOContext *pb, unsigned len) snprintf(key2, sizeof(key2), "%s-%s", key, language); av_dict_set(&c->fc->metadata, key2, buf, 0); } + c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; return av_dict_set(&c->fc->metadata, key, buf, 0); } @@ -372,6 +371,7 @@ static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom) return ret < 0 ? ret : AVERROR_INVALIDDATA; str[str_size] = 0; } + c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; av_dict_set(&c->fc->metadata, key, str, 0); if (*language && strcmp(language, "und")) { snprintf(key2, sizeof(key2), "%s-%s", key, language); @@ -580,7 +580,7 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; } -int ff_mov_read_esds(AVFormatContext *fc, AVIOContext *pb, MOVAtom atom) +int ff_mov_read_esds(AVFormatContext *fc, AVIOContext *pb) { AVStream *st; int tag; @@ -604,7 +604,7 @@ int ff_mov_read_esds(AVFormatContext *fc, AVIOContext *pb, MOVAtom atom) static int mov_read_esds(MOVContext *c, AVIOContext *pb, MOVAtom atom) { - return ff_mov_read_esds(c->fc, pb, atom); + return ff_mov_read_esds(c->fc, pb); } static int mov_read_dac3(MOVContext *c, AVIOContext *pb, MOVAtom atom) @@ -730,7 +730,6 @@ static int mov_read_ftyp(MOVContext *c, AVIOContext *pb, MOVAtom atom) { uint32_t minor_ver; int comp_brand_size; - char minor_ver_str[11]; /* 32 bit integer -> 10 digits + null */ char* comp_brands_str; uint8_t type[5] = {0}; @@ -740,8 +739,7 @@ static int mov_read_ftyp(MOVContext *c, AVIOContext *pb, MOVAtom atom) av_log(c->fc, AV_LOG_DEBUG, "ISO: File Type Major Brand: %.4s\n",(char *)&type); av_dict_set(&c->fc->metadata, "major_brand", type, 0); minor_ver = avio_rb32(pb); /* minor version */ - snprintf(minor_ver_str, sizeof(minor_ver_str), "%"PRIu32"", minor_ver); - av_dict_set(&c->fc->metadata, "minor_version", minor_ver_str, 0); + av_dict_set_int(&c->fc->metadata, "minor_version", minor_ver, 0); comp_brand_size = atom.size - 8; if (comp_brand_size < 0) @@ -1637,7 +1635,7 @@ static int mov_finalize_stsd_codec(MOVContext *c, AVIOContext *pb, static int mov_skip_multiple_stsd(MOVContext *c, AVIOContext *pb, int codec_tag, int format, - int size) + int64_t size) { int video_codec_id = ff_codec_get_id(ff_codec_movvideo_tags, format); @@ -3075,7 +3073,7 @@ static int mov_read_uuid(MOVContext *c, AVIOContext *pb, MOVAtom atom) } ptr = buffer; - while ((ptr = av_stristr(ptr, "systemBitrate=\"")) != NULL) { + while ((ptr = av_stristr(ptr, "systemBitrate=\""))) { ptr += sizeof("systemBitrate=\"") - 1; c->bitrates_count++; c->bitrates = av_realloc_f(c->bitrates, c->bitrates_count, sizeof(*c->bitrates)); @@ -3564,7 +3562,7 @@ static int mov_read_header(AVFormatContext *s) if (mov->moov_retry) avio_seek(pb, 0, SEEK_SET); if ((err = mov_read_default(mov, pb, atom)) < 0) { - av_log(s, AV_LOG_ERROR, "error reading header: %d\n", err); + av_log(s, AV_LOG_ERROR, "error reading header\n"); mov_read_close(s); return err; }