> On Nov 22, 2019, at 4:56 PM, Steven Liu <l...@chinaffmpeg.org> wrote: > > Signed-off-by: Steven Liu <l...@chinaffmpeg.org> > --- > doc/APIchanges | 3 +++ > libavformat/protocols.c | 16 ++++++++++++++++ > libavformat/url.h | 9 +++++++++ > libavformat/version.h | 2 +- > 4 files changed, 29 insertions(+), 1 deletion(-) > > diff --git a/doc/APIchanges b/doc/APIchanges > index 401c65a753..804a57de41 100644 > --- a/doc/APIchanges > +++ b/doc/APIchanges > @@ -15,6 +15,9 @@ libavutil: 2017-10-21 > > API changes, most recent first: > > +2019-11-22 - xxxxxxxxxx - lavf 58.35.101 - url.h > + Add av_find_protocol_by_name(). > + > 2019-11-17 - 1c23abc88f - lavu 56.36.100 - eval API > Add av_expr_count_vars(). > > diff --git a/libavformat/protocols.c b/libavformat/protocols.c > index face5b29b5..d4dee23a8e 100644 > --- a/libavformat/protocols.c > +++ b/libavformat/protocols.c > @@ -107,6 +107,22 @@ const char *avio_enum_protocols(void **opaque, int > output) > return avio_enum_protocols(opaque, output); > } > > +const URLProtocol *av_find_protocol_by_name(const char *name) > +{ > + int i = 0; > + const URLProtocol **protocols; > + protocols = ffurl_get_protocols(NULL, NULL); > + for (i = 0; protocols[i]; i++) { > + const URLProtocol *proto = protocols[i]; > + if (!strcmp(proto->name, name)) { > + av_freep(&protocols); > + return proto; > + } > + } > + av_freep(&protocols); > + return NULL; > +} > +
No null pointer check on ‘name’. And I prefer av_free() is this case. > const URLProtocol **ffurl_get_protocols(const char *whitelist, > const char *blacklist) > { > diff --git a/libavformat/url.h b/libavformat/url.h > index 4750bfff82..fe0aa10b27 100644 > --- a/libavformat/url.h > +++ b/libavformat/url.h > @@ -322,6 +322,15 @@ void ff_make_absolute_url(char *buf, int size, const > char *base, > */ > AVIODirEntry *ff_alloc_dir_entry(void); > > +/** > + * Return the URLProtocol of the protocol that will handle the passed name. > + * > + * NULL is returned if no protocol could be found for the name. > + * > + * @return URLProtocol of the protocol or NULL. > + */ > +const URLProtocol *av_find_protocol_by_name(const char *name); > + > const AVClass *ff_urlcontext_child_class_next(const AVClass *prev); > > /** > diff --git a/libavformat/version.h b/libavformat/version.h > index bac54aed9d..213b66b45f 100644 > --- a/libavformat/version.h > +++ b/libavformat/version.h > @@ -33,7 +33,7 @@ > // Also please add any ticket numbers that you believe might be affected here > #define LIBAVFORMAT_VERSION_MAJOR 58 > #define LIBAVFORMAT_VERSION_MINOR 35 > -#define LIBAVFORMAT_VERSION_MICRO 100 > +#define LIBAVFORMAT_VERSION_MICRO 101 > > #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ > LIBAVFORMAT_VERSION_MINOR, \ > -- > 2.15.1 > > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".