mirror of https://git.ffmpeg.org/ffmpeg.git
nutdec: update AVFormatContext.event_flags with STREAM_/METADATA_UPDATED whenever metadata changes.
Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
parent
0f789322ef
commit
fa3a5dd4de
|
@ -461,9 +461,11 @@ static int decode_info_header(NUTContext *nut)
|
||||||
int64_t value, end;
|
int64_t value, end;
|
||||||
char name[256], str_value[1024], type_str[256];
|
char name[256], str_value[1024], type_str[256];
|
||||||
const char *type;
|
const char *type;
|
||||||
|
int *event_flags;
|
||||||
AVChapter *chapter = NULL;
|
AVChapter *chapter = NULL;
|
||||||
AVStream *st = NULL;
|
AVStream *st = NULL;
|
||||||
AVDictionary **metadata = NULL;
|
AVDictionary **metadata = NULL;
|
||||||
|
int metadata_flag = 0;
|
||||||
|
|
||||||
end = get_packetheader(nut, bc, 1, INFO_STARTCODE);
|
end = get_packetheader(nut, bc, 1, INFO_STARTCODE);
|
||||||
end += avio_tell(bc);
|
end += avio_tell(bc);
|
||||||
|
@ -484,8 +486,13 @@ static int decode_info_header(NUTContext *nut)
|
||||||
} else if (stream_id_plus1) {
|
} else if (stream_id_plus1) {
|
||||||
st = s->streams[stream_id_plus1 - 1];
|
st = s->streams[stream_id_plus1 - 1];
|
||||||
metadata = &st->metadata;
|
metadata = &st->metadata;
|
||||||
} else
|
event_flags = &st->event_flags;
|
||||||
|
metadata_flag = AVSTREAM_EVENT_FLAG_METADATA_UPDATED;
|
||||||
|
} else {
|
||||||
metadata = &s->metadata;
|
metadata = &s->metadata;
|
||||||
|
event_flags = &s->event_flags;
|
||||||
|
metadata_flag = AVFMT_EVENT_FLAG_METADATA_UPDATED;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
get_str(bc, name, sizeof(name));
|
get_str(bc, name, sizeof(name));
|
||||||
|
@ -521,10 +528,12 @@ static int decode_info_header(NUTContext *nut)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (metadata && av_strcasecmp(name, "Uses") &&
|
if (metadata && av_strcasecmp(name, "Uses") &&
|
||||||
av_strcasecmp(name, "Depends") && av_strcasecmp(name, "Replaces"))
|
av_strcasecmp(name, "Depends") && av_strcasecmp(name, "Replaces")) {
|
||||||
|
*event_flags |= metadata_flag;
|
||||||
av_dict_set(metadata, name, str_value, 0);
|
av_dict_set(metadata, name, str_value, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (skip_reserved(bc, end) || ffio_get_checksum(bc)) {
|
if (skip_reserved(bc, end) || ffio_get_checksum(bc)) {
|
||||||
av_log(s, AV_LOG_ERROR, "info header checksum mismatch\n");
|
av_log(s, AV_LOG_ERROR, "info header checksum mismatch\n");
|
||||||
|
|
Loading…
Reference in New Issue