Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3
@ 2023-05-15  0:05 Michael Niedermayer
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 2/3] avformat: add ff_match_url_ext() Michael Niedermayer
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Michael Niedermayer @ 2023-05-15  0:05 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

The 1000 did result in the appearance of a never ending reload loop

The RFC mandates that "If the client reloads a Playlist file and finds that it has not
changed, then it MUST wait for a period of one-half the target
duration before retrying." and if it has changed
"the client MUST wait for at least the target duration before attempting to reload the
Playlist file again"

Trying to reload 3 times seems a better default than 1000 given these
durations

Issue found by: Сергей Колесников
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavformat/hls.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/hls.c b/libavformat/hls.c
index 11e345b280..df2442c376 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -2556,7 +2556,7 @@ static const AVOption hls_options[] = {
         {.str = "3gp,aac,avi,ac3,eac3,flac,mkv,m3u8,m4a,m4s,m4v,mpg,mov,mp2,mp3,mp4,mpeg,mpegts,ogg,ogv,oga,ts,vob,wav"},
         INT_MIN, INT_MAX, FLAGS},
     {"max_reload", "Maximum number of times a insufficient list is attempted to be reloaded",
-        OFFSET(max_reload), AV_OPT_TYPE_INT, {.i64 = 1000}, 0, INT_MAX, FLAGS},
+        OFFSET(max_reload), AV_OPT_TYPE_INT, {.i64 = 3}, 0, INT_MAX, FLAGS},
     {"m3u8_hold_counters", "The maximum number of times to load m3u8 when it refreshes without new segments",
         OFFSET(m3u8_hold_counters), AV_OPT_TYPE_INT, {.i64 = 1000}, 0, INT_MAX, FLAGS},
     {"http_persistent", "Use persistent HTTP connections",
-- 
2.17.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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 2/3] avformat: add ff_match_url_ext()
  2023-05-15  0:05 [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3 Michael Niedermayer
@ 2023-05-15  0:05 ` Michael Niedermayer
  2023-05-15  3:10   ` Leo Izen
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal Michael Niedermayer
  2023-09-16 17:39 ` [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3 Michael Niedermayer
  2 siblings, 1 reply; 12+ messages in thread
From: Michael Niedermayer @ 2023-05-15  0:05 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Match url against a list of extensions similar to av_match_ext()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavformat/format.c   | 25 +++++++++++++++++++++++++
 libavformat/internal.h |  9 +++++++++
 2 files changed, 34 insertions(+)

diff --git a/libavformat/format.c b/libavformat/format.c
index 52b814e67d..04fdbacec0 100644
--- a/libavformat/format.c
+++ b/libavformat/format.c
@@ -50,6 +50,31 @@ int av_match_ext(const char *filename, const char *extensions)
     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 char *mime_type)
 {
diff --git a/libavformat/internal.h b/libavformat/internal.h
index f575064e8f..43466fbe6d 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -705,6 +705,15 @@ int ff_unlock_avformat(void);
  */
 void ff_format_set_url(AVFormatContext *s, char *url);
 
+/**
+ * Return a positive value if the given url has one of the given
+ * extensions, 0 otherwise.
+ *
+ * @param filename   file name 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;
 void avpriv_register_devices(const struct FFOutputFormat * const o[], const AVInputFormat * const i[]);
 
-- 
2.17.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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal
  2023-05-15  0:05 [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3 Michael Niedermayer
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 2/3] avformat: add ff_match_url_ext() Michael Niedermayer
@ 2023-05-15  0:05 ` Michael Niedermayer
  2023-05-15  0:17   ` Michael Niedermayer
                     ` (2 more replies)
  2023-09-16 17:39 ` [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3 Michael Niedermayer
  2 siblings, 3 replies; 12+ messages in thread
From: Michael Niedermayer @ 2023-05-15  0:05 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

This is not well tested and can likely be improved, just a
hotfix for hls probe failures since 6b1f68ccb04d791f0250e05687c346a99ff47ea1

Should fix Ticket10353 (please test and report cases that still fail)

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavformat/hls.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libavformat/hls.c b/libavformat/hls.c
index df2442c376..790ae7a96a 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -2534,7 +2534,16 @@ static int hls_probe(const AVProbeData *p)
         strstr(p->buf, "#EXT-X-TARGETDURATION:") ||
         strstr(p->buf, "#EXT-X-MEDIA-SEQUENCE:")) {
 
-        if (!av_match_ext(p->filename, "m3u8,hls,m3u")) {
+        int mime_ok = p->mime_type && !(
+            av_strcasecmp(p->mime_type, "application/vnd.apple.mpegurl") &&
+            av_strcasecmp(p->mime_type, "audio/mpegurl") &&
+            av_strcasecmp(p->mime_type, "audio/x-mpegurl") &&
+            av_strcasecmp(p->mime_type, "application/x-mpegurl")
+            );
+
+        if (!av_match_ext    (p->filename, "m3u8,hls,m3u") &&
+             ff_match_url_ext(p->filename, "m3u8,hls,m3u") <= 0 &&
+            !mime_ok) {
             av_log(NULL, AV_LOG_ERROR, "Not detecting m3u8/hls with non standard extension\n");
             return 0;
         }
-- 
2.17.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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal Michael Niedermayer
@ 2023-05-15  0:17   ` Michael Niedermayer
  2023-05-15  1:08     ` Michael Niedermayer
  2023-05-15  3:14   ` Leo Izen
  2023-05-15  9:58   ` Kacper Michajlow
  2 siblings, 1 reply; 12+ messages in thread
From: Michael Niedermayer @ 2023-05-15  0:17 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 704 bytes --]

On Mon, May 15, 2023 at 02:05:47AM +0200, Michael Niedermayer wrote:
> This is not well tested and can likely be improved, just a
> hotfix for hls probe failures since 6b1f68ccb04d791f0250e05687c346a99ff47ea1
> 
> Should fix Ticket10353 (please test and report cases that still fail)
> 
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavformat/hls.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)

i will apply this real soon as it seems to affect many people


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Republics decline into democracies and democracies degenerate into
despotisms. -- Aristotle

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal
  2023-05-15  0:17   ` Michael Niedermayer
@ 2023-05-15  1:08     ` Michael Niedermayer
  0 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2023-05-15  1:08 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 866 bytes --]

On Mon, May 15, 2023 at 02:17:35AM +0200, Michael Niedermayer wrote:
> On Mon, May 15, 2023 at 02:05:47AM +0200, Michael Niedermayer wrote:
> > This is not well tested and can likely be improved, just a
> > hotfix for hls probe failures since 6b1f68ccb04d791f0250e05687c346a99ff47ea1
> > 
> > Should fix Ticket10353 (please test and report cases that still fail)
> > 
> > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> > ---
> >  libavformat/hls.c | 11 ++++++++++-
> >  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> i will apply this real soon as it seems to affect many people

Patch 2 & 3 applied

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

"Nothing to hide" only works if the folks in power share the values of
you and everyone you know entirely and always will -- Tom Scott


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/3] avformat: add ff_match_url_ext()
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 2/3] avformat: add ff_match_url_ext() Michael Niedermayer
@ 2023-05-15  3:10   ` Leo Izen
  2023-05-15 19:12     ` Michael Niedermayer
  0 siblings, 1 reply; 12+ messages in thread
From: Leo Izen @ 2023-05-15  3:10 UTC (permalink / raw)
  To: ffmpeg-devel

On 5/14/23 20:05, Michael Niedermayer wrote:
> Match url against a list of extensions similar to av_match_ext()
> 
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>   libavformat/format.c   | 25 +++++++++++++++++++++++++
>   libavformat/internal.h |  9 +++++++++
>   2 files changed, 34 insertions(+)
> 
> diff --git a/libavformat/format.c b/libavformat/format.c
> index 52b814e67d..04fdbacec0 100644
> --- a/libavformat/format.c
> +++ b/libavformat/format.c
> @@ -50,6 +50,31 @@ int av_match_ext(const char *filename, const char *extensions)
>       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));

This FFMIN is superfluous as sizeof(scratchpad) will always be greater 
than or equal to uc.query - ext after the check above it.

> +
> +    return av_match_name(scratchpad, extensions);
> +}
> +
>   const AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
>                                         const char *mime_type)
>   {
> diff --git a/libavformat/internal.h b/libavformat/internal.h
> index f575064e8f..43466fbe6d 100644
> --- a/libavformat/internal.h
> +++ b/libavformat/internal.h
> @@ -705,6 +705,15 @@ int ff_unlock_avformat(void);
>    */
>   void ff_format_set_url(AVFormatContext *s, char *url);
>   
> +/**
> + * Return a positive value if the given url has one of the given
> + * extensions, 0 otherwise.
> + *
> + * @param filename   file name to check against the given extensions

Copy/paste error, this should be @param url.

> + * @param extensions a comma-separated list of filename extensions
> + */
> +int ff_match_url_ext(const char *url, const char *extensions);
> +
>   struct FFOutputFormat;
>   void avpriv_register_devices(const struct FFOutputFormat * const o[], const AVInputFormat * const i[]);
>   
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal Michael Niedermayer
  2023-05-15  0:17   ` Michael Niedermayer
@ 2023-05-15  3:14   ` Leo Izen
  2023-05-15 19:30     ` Michael Niedermayer
  2023-05-15  9:58   ` Kacper Michajlow
  2 siblings, 1 reply; 12+ messages in thread
From: Leo Izen @ 2023-05-15  3:14 UTC (permalink / raw)
  To: ffmpeg-devel



On 5/14/23 20:05, Michael Niedermayer wrote:
> This is not well tested and can likely be improved, just a
> hotfix for hls probe failures since 6b1f68ccb04d791f0250e05687c346a99ff47ea1
> 
> Should fix Ticket10353 (please test and report cases that still fail)
> 
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>   libavformat/hls.c | 11 ++++++++++-
>   1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/libavformat/hls.c b/libavformat/hls.c
> index df2442c376..790ae7a96a 100644
> --- a/libavformat/hls.c
> +++ b/libavformat/hls.c
> @@ -2534,7 +2534,16 @@ static int hls_probe(const AVProbeData *p)
>           strstr(p->buf, "#EXT-X-TARGETDURATION:") ||
>           strstr(p->buf, "#EXT-X-MEDIA-SEQUENCE:")) {
>   
> -        if (!av_match_ext(p->filename, "m3u8,hls,m3u")) {
> +        int mime_ok = p->mime_type && !(
> +            av_strcasecmp(p->mime_type, "application/vnd.apple.mpegurl") &&
> +            av_strcasecmp(p->mime_type, "audio/mpegurl") &&
> +            av_strcasecmp(p->mime_type, "audio/x-mpegurl") &&
> +            av_strcasecmp(p->mime_type, "application/x-mpegurl")
> +            );
> +
> +        if (!av_match_ext    (p->filename, "m3u8,hls,m3u") &&
> +             ff_match_url_ext(p->filename, "m3u8,hls,m3u") <= 0 &&
What's the point of checking both av_match_ext and ff_match_url_ext 
here? Should only want one or the other.
> +            !mime_ok) {

Put !mime_ok first to take advantage of lazy &&, as it will usually be 
okay in practice.

>               av_log(NULL, AV_LOG_ERROR, "Not detecting m3u8/hls with non standard extension\n");
>               return 0;
>           }
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal Michael Niedermayer
  2023-05-15  0:17   ` Michael Niedermayer
  2023-05-15  3:14   ` Leo Izen
@ 2023-05-15  9:58   ` Kacper Michajlow
  2023-05-15 19:44     ` Michael Niedermayer
  2 siblings, 1 reply; 12+ messages in thread
From: Kacper Michajlow @ 2023-05-15  9:58 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On Mon, 15 May 2023 at 02:06, Michael Niedermayer
<michael@niedermayer.cc> wrote:
>
> This is not well tested and can likely be improved, just a
> hotfix for hls probe failures since 6b1f68ccb04d791f0250e05687c346a99ff47ea1
>
> Should fix Ticket10353 (please test and report cases that still fail)
>
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavformat/hls.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/hls.c b/libavformat/hls.c
> index df2442c376..790ae7a96a 100644
> --- a/libavformat/hls.c
> +++ b/libavformat/hls.c
> @@ -2534,7 +2534,16 @@ static int hls_probe(const AVProbeData *p)
>          strstr(p->buf, "#EXT-X-TARGETDURATION:") ||
>          strstr(p->buf, "#EXT-X-MEDIA-SEQUENCE:")) {
>
> -        if (!av_match_ext(p->filename, "m3u8,hls,m3u")) {
> +        int mime_ok = p->mime_type && !(
> +            av_strcasecmp(p->mime_type, "application/vnd.apple.mpegurl") &&
> +            av_strcasecmp(p->mime_type, "audio/mpegurl") &&
> +            av_strcasecmp(p->mime_type, "audio/x-mpegurl") &&
> +            av_strcasecmp(p->mime_type, "application/x-mpegurl")

How about we AV_LOG_WARNING when non-standard/deprecated mime type is
used? If we want to be strict about rfc8216 only two first should be
supported. Of course for compatibility reasons likely we need to
support all of them, but warn about it would be nice touch.

> +            );
> +
> +        if (!av_match_ext    (p->filename, "m3u8,hls,m3u") &&
> +             ff_match_url_ext(p->filename, "m3u8,hls,m3u") <= 0 &&

Where '.hls' came from? I don't think those are in fact used in the
wild? Maybe we can be strict and use only "m3u8,m3u"?

> +            !mime_ok) {
>              av_log(NULL, AV_LOG_ERROR, "Not detecting m3u8/hls with non standard extension\n");

This log wording is little bit off now, when there is no extension and
only mime matching.

>              return 0;
>          }
> --
> 2.17.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-request@ffmpeg.org with subject "unsubscribe".

Minor remarks, but funcionally the patch resolves the issue. Thanks.

- Kacper
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 2/3] avformat: add ff_match_url_ext()
  2023-05-15  3:10   ` Leo Izen
@ 2023-05-15 19:12     ` Michael Niedermayer
  0 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2023-05-15 19:12 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 2810 bytes --]

On Sun, May 14, 2023 at 11:10:00PM -0400, Leo Izen wrote:
> On 5/14/23 20:05, Michael Niedermayer wrote:
> > Match url against a list of extensions similar to av_match_ext()
> > 
> > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> > ---
> >   libavformat/format.c   | 25 +++++++++++++++++++++++++
> >   libavformat/internal.h |  9 +++++++++
> >   2 files changed, 34 insertions(+)
> > 
> > diff --git a/libavformat/format.c b/libavformat/format.c
> > index 52b814e67d..04fdbacec0 100644
> > --- a/libavformat/format.c
> > +++ b/libavformat/format.c
> > @@ -50,6 +50,31 @@ int av_match_ext(const char *filename, const char *extensions)
> >       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));
> 
> This FFMIN is superfluous as sizeof(scratchpad) will always be greater than
> or equal to uc.query - ext after the check above it.

yes, ill remove it, if noone else did it before me


> 
> > +
> > +    return av_match_name(scratchpad, extensions);
> > +}
> > +
> >   const AVOutputFormat *av_guess_format(const char *short_name, const char *filename,
> >                                         const char *mime_type)
> >   {
> > diff --git a/libavformat/internal.h b/libavformat/internal.h
> > index f575064e8f..43466fbe6d 100644
> > --- a/libavformat/internal.h
> > +++ b/libavformat/internal.h
> > @@ -705,6 +705,15 @@ int ff_unlock_avformat(void);
> >    */
> >   void ff_format_set_url(AVFormatContext *s, char *url);
> > +/**
> > + * Return a positive value if the given url has one of the given
> > + * extensions, 0 otherwise.
> > + *
> > + * @param filename   file name to check against the given extensions
> 
> Copy/paste error, this should be @param url.

too late, ive already pushed the patch with this fixed

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Frequently ignored answer#1 FFmpeg bugs should be sent to our bugtracker. User
questions about the command line tools should be sent to the ffmpeg-user ML.
And questions about how to use libav* should be sent to the libav-user ML.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal
  2023-05-15  3:14   ` Leo Izen
@ 2023-05-15 19:30     ` Michael Niedermayer
  0 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2023-05-15 19:30 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 2005 bytes --]

On Sun, May 14, 2023 at 11:14:12PM -0400, Leo Izen wrote:
> 
> 
> On 5/14/23 20:05, Michael Niedermayer wrote:
> > This is not well tested and can likely be improved, just a
> > hotfix for hls probe failures since 6b1f68ccb04d791f0250e05687c346a99ff47ea1
> > 
> > Should fix Ticket10353 (please test and report cases that still fail)
> > 
> > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> > ---
> >   libavformat/hls.c | 11 ++++++++++-
> >   1 file changed, 10 insertions(+), 1 deletion(-)
> > 
> > diff --git a/libavformat/hls.c b/libavformat/hls.c
> > index df2442c376..790ae7a96a 100644
> > --- a/libavformat/hls.c
> > +++ b/libavformat/hls.c
> > @@ -2534,7 +2534,16 @@ static int hls_probe(const AVProbeData *p)
> >           strstr(p->buf, "#EXT-X-TARGETDURATION:") ||
> >           strstr(p->buf, "#EXT-X-MEDIA-SEQUENCE:")) {
> > -        if (!av_match_ext(p->filename, "m3u8,hls,m3u")) {
> > +        int mime_ok = p->mime_type && !(
> > +            av_strcasecmp(p->mime_type, "application/vnd.apple.mpegurl") &&
> > +            av_strcasecmp(p->mime_type, "audio/mpegurl") &&
> > +            av_strcasecmp(p->mime_type, "audio/x-mpegurl") &&
> > +            av_strcasecmp(p->mime_type, "application/x-mpegurl")
> > +            );
> > +
> > +        if (!av_match_ext    (p->filename, "m3u8,hls,m3u") &&
> > +             ff_match_url_ext(p->filename, "m3u8,hls,m3u") <= 0 &&
> What's the point of checking both av_match_ext and ff_match_url_ext here?
> Should only want one or the other.

is p->filename a URL ?


> > +            !mime_ok) {
> 
> Put !mime_ok first to take advantage of lazy &&, as it will usually be okay
> in practice.

ok, will reorder it

thx


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Homeopathy is like voting while filling the ballot out with transparent ink.
Sometimes the outcome one wanted occurs. Rarely its worse than filling out
a ballot properly.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal
  2023-05-15  9:58   ` Kacper Michajlow
@ 2023-05-15 19:44     ` Michael Niedermayer
  0 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2023-05-15 19:44 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 2534 bytes --]

On Mon, May 15, 2023 at 11:58:16AM +0200, Kacper Michajlow wrote:
> On Mon, 15 May 2023 at 02:06, Michael Niedermayer
> <michael@niedermayer.cc> wrote:
> >
> > This is not well tested and can likely be improved, just a
> > hotfix for hls probe failures since 6b1f68ccb04d791f0250e05687c346a99ff47ea1
> >
> > Should fix Ticket10353 (please test and report cases that still fail)
> >
> > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> > ---
> >  libavformat/hls.c | 11 ++++++++++-
> >  1 file changed, 10 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavformat/hls.c b/libavformat/hls.c
> > index df2442c376..790ae7a96a 100644
> > --- a/libavformat/hls.c
> > +++ b/libavformat/hls.c
> > @@ -2534,7 +2534,16 @@ static int hls_probe(const AVProbeData *p)
> >          strstr(p->buf, "#EXT-X-TARGETDURATION:") ||
> >          strstr(p->buf, "#EXT-X-MEDIA-SEQUENCE:")) {
> >
> > -        if (!av_match_ext(p->filename, "m3u8,hls,m3u")) {
> > +        int mime_ok = p->mime_type && !(
> > +            av_strcasecmp(p->mime_type, "application/vnd.apple.mpegurl") &&
> > +            av_strcasecmp(p->mime_type, "audio/mpegurl") &&
> > +            av_strcasecmp(p->mime_type, "audio/x-mpegurl") &&
> > +            av_strcasecmp(p->mime_type, "application/x-mpegurl")
> 
> How about we AV_LOG_WARNING when non-standard/deprecated mime type is
> used? If we want to be strict about rfc8216 only two first should be
> supported. Of course for compatibility reasons likely we need to
> support all of them, but warn about it would be nice touch.

ok

> 
> > +            );
> > +
> > +        if (!av_match_ext    (p->filename, "m3u8,hls,m3u") &&
> > +             ff_match_url_ext(p->filename, "m3u8,hls,m3u") <= 0 &&
> 
> Where '.hls' came from? I don't think those are in fact used in the
> wild? Maybe we can be strict and use only "m3u8,m3u"?

i was thinking of it but i left them in yesterday. Ill post a patch
that would remove them.
I have a few files ending in hls but none of them qualify as "in the wild"


> 
> > +            !mime_ok) {
> >              av_log(NULL, AV_LOG_ERROR, "Not detecting m3u8/hls with non standard extension\n");
> 
> This log wording is little bit off now, when there is no extension and
> only mime matching.

will post a patch

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

It is dangerous to be right in matters on which the established authorities
are wrong. -- Voltaire

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3
  2023-05-15  0:05 [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3 Michael Niedermayer
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 2/3] avformat: add ff_match_url_ext() Michael Niedermayer
  2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal Michael Niedermayer
@ 2023-09-16 17:39 ` Michael Niedermayer
  2 siblings, 0 replies; 12+ messages in thread
From: Michael Niedermayer @ 2023-09-16 17:39 UTC (permalink / raw)
  To: FFmpeg development discussions and patches


[-- Attachment #1.1: Type: text/plain, Size: 1072 bytes --]

On Mon, May 15, 2023 at 02:05:45AM +0200, Michael Niedermayer wrote:
> The 1000 did result in the appearance of a never ending reload loop
> 
> The RFC mandates that "If the client reloads a Playlist file and finds that it has not
> changed, then it MUST wait for a period of one-half the target
> duration before retrying." and if it has changed
> "the client MUST wait for at least the target duration before attempting to reload the
> Playlist file again"
> 
> Trying to reload 3 times seems a better default than 1000 given these
> durations
> 
> Issue found by: Сергей Колесников
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavformat/hls.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

will apply

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

If you fake or manipulate statistics in a paper in physics you will never
get a job again.
If you fake or manipulate statistics in a paper in medicin you will get
a job for life at the pharma industry.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-09-16 17:40 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-15  0:05 [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3 Michael Niedermayer
2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 2/3] avformat: add ff_match_url_ext() Michael Niedermayer
2023-05-15  3:10   ` Leo Izen
2023-05-15 19:12     ` Michael Niedermayer
2023-05-15  0:05 ` [FFmpeg-devel] [PATCH 3/3] avformat/hls: Try to implement RFC8216 playlist refusal Michael Niedermayer
2023-05-15  0:17   ` Michael Niedermayer
2023-05-15  1:08     ` Michael Niedermayer
2023-05-15  3:14   ` Leo Izen
2023-05-15 19:30     ` Michael Niedermayer
2023-05-15  9:58   ` Kacper Michajlow
2023-05-15 19:44     ` Michael Niedermayer
2023-09-16 17:39 ` [FFmpeg-devel] [PATCH 1/3] avformat/hls: reduce default max reload to 3 Michael Niedermayer

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git