avformat: add ff_match_url_ext()
Match url against a list of extensions similar to av_match_ext() Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
2a74826b02
commit
a7b06bfc5d
@ -50,6 +50,31 @@ int av_match_ext(const char *filename, const char *extensions)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ff_match_url_ext(const char *url, const char *extensions)
|
||||||
|
{
|
||||||
|
const char *ext;
|
||||||
|
URLComponents uc;
|
||||||
|
int ret;
|
||||||
|
char scratchpad[128];
|
||||||
|
|
||||||
|
if (!url)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
ret = ff_url_decompose(&uc, url, NULL);
|
||||||
|
if (ret < 0 || !URL_COMPONENT_HAVE(uc, scheme))
|
||||||
|
return ret;
|
||||||
|
for (ext = uc.query; *ext != '.' && ext > uc.path; ext--)
|
||||||
|
;
|
||||||
|
|
||||||
|
if (*ext != '.')
|
||||||
|
return 0;
|
||||||
|
if (uc.query - ext > sizeof(scratchpad))
|
||||||
|
return AVERROR(ENOMEM); //not enough memory in our scratchpad
|
||||||
|
av_strlcpy(scratchpad, ext + 1, FFMIN(sizeof(scratchpad), uc.query - ext));
|
||||||
|
|
||||||
|
return av_match_name(scratchpad, extensions);
|
||||||
|
}
|
||||||
|
|
||||||
const AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
|
const AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
|
||||||
const char *mime_type)
|
const char *mime_type)
|
||||||
{
|
{
|
||||||
|
@ -705,6 +705,15 @@ int ff_unlock_avformat(void);
|
|||||||
*/
|
*/
|
||||||
void ff_format_set_url(AVFormatContext *s, char *url);
|
void ff_format_set_url(AVFormatContext *s, char *url);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a positive value if the given url has one of the given
|
||||||
|
* extensions, negative AVERROR on error, 0 otherwise.
|
||||||
|
*
|
||||||
|
* @param url url to check against the given extensions
|
||||||
|
* @param extensions a comma-separated list of filename extensions
|
||||||
|
*/
|
||||||
|
int ff_match_url_ext(const char *url, const char *extensions);
|
||||||
|
|
||||||
struct FFOutputFormat;
|
struct FFOutputFormat;
|
||||||
void avpriv_register_devices(const struct FFOutputFormat * const o[], const AVInputFormat * const i[]);
|
void avpriv_register_devices(const struct FFOutputFormat * const o[], const AVInputFormat * const i[]);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user