Message ID | 20220325230650.29751-2-michael@niedermayer.cc |
---|---|
State | Accepted |
Commit | 6265f0b4e1978485b8147ce7dbd5bc7533e7a298 |
Headers | show |
Series | [FFmpeg-devel,1/2] avformat/mov: Non overflowing ambisonic order check | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_aarch64_jetson | success | Make finished |
andriy/make_fate_aarch64_jetson | success | Make fate finished |
andriy/make_armv7_RPi4 | success | Make finished |
andriy/make_fate_armv7_RPi4 | success | Make fate finished |
On Sat, Mar 26, 2022 at 12:06:50AM +0100, Michael Niedermayer wrote: > This search takes alot of time especially when compared with small packets > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavformat/demux.c | 15 +++++++++------ > libavformat/internal.h | 5 +++++ > 2 files changed, 14 insertions(+), 6 deletions(-) with amr-nb in 3gp this changes ./ffmpeg -i matrixbench_mpeg2.mpg -ar 8000 -ac 1 -acodec amr_nb -ab 4.75k -vn test.3gp ./ffmpeg -i test.3gp -f null - 46631 decicycles in read_frame_internal, 8191 runs, 1 skips to 15719 decicycles in read_frame_internal, 8188 runs, 4 skips [...]
probably fine
On Sat, Mar 26, 2022 at 03:25:09PM +0100, Paul B Mahol wrote:
> probably fine
will apply
thx
[...]
diff --git a/libavformat/demux.c b/libavformat/demux.c index ac1f16edcd..ef189d9d8e 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -1407,12 +1407,15 @@ FF_ENABLE_DEPRECATION_WARNINGS } } - av_opt_get_dict_val(s, "metadata", AV_OPT_SEARCH_CHILDREN, &metadata); - if (metadata) { - s->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; - av_dict_copy(&s->metadata, metadata, 0); - av_dict_free(&metadata); - av_opt_set_dict_val(s, "metadata", NULL, AV_OPT_SEARCH_CHILDREN); + if (!si->metafree) { + int metaret = av_opt_get_dict_val(s, "metadata", AV_OPT_SEARCH_CHILDREN, &metadata); + if (metadata) { + s->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; + av_dict_copy(&s->metadata, metadata, 0); + av_dict_free(&metadata); + av_opt_set_dict_val(s, "metadata", NULL, AV_OPT_SEARCH_CHILDREN); + } + si->metafree = metaret == AVERROR_OPTION_NOT_FOUND; } if (s->debug & FF_FDEBUG_TS) diff --git a/libavformat/internal.h b/libavformat/internal.h index 342e6f7327..3ad76d992c 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -183,6 +183,11 @@ typedef struct FFFormatContext { * Set if chapter ids are strictly monotonic. */ int chapter_ids_monotonic; + + /** + * Contexts and child contexts do not contain a metadata option + */ + int metafree; } FFFormatContext; static av_always_inline FFFormatContext *ffformatcontext(AVFormatContext *s)
This search takes alot of time especially when compared with small packets Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavformat/demux.c | 15 +++++++++------ libavformat/internal.h | 5 +++++ 2 files changed, 14 insertions(+), 6 deletions(-)