diff mbox series

[FFmpeg-devel] libavformat/hlsenc: set HTTP options before writing WebVTT HLS playlists

Message ID c68d2819-a06b-4e12-b227-f76bcbbee038@gridpoint.nl
State New
Headers show
Series [FFmpeg-devel] libavformat/hlsenc: set HTTP options before writing WebVTT HLS playlists | expand

Checks

Context Check Description
yinshiyou/configure_loongarch64 warning Failed to apply patch
andriy/configure_x86 warning Failed to apply patch

Commit Message

Léon Spaans Oct. 1, 2023, 2:40 p.m. UTC
Fixes: Erroneous HTTP POST instead of HTTP PUT for WebVTT HLS variant 
playlists.

Signed-off-by: Léon Spaans <leons@gridpoint.nl>
---
  libavformat/hlsenc.c | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)

              if (hls->ignore_io_errors)
                  ret = 0;
              goto fail;

Comments

Steven Liu Oct. 1, 2023, 11:16 p.m. UTC | #1
Léon Spaans <leons@gridpoint.nl>于2023年10月1日 周日22:40写道:

> Fixes: Erroneous HTTP POST instead of HTTP PUT for WebVTT HLS variant
> playlists.
>
> Signed-off-by: Léon Spaans <leons@gridpoint.nl>
> ---
>   libavformat/hlsenc.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> index 08f3746ce7..150320a880 100644
> --- a/libavformat/hlsenc.c
> +++ b/libavformat/hlsenc.c
> @@ -1585,6 +1585,7 @@ static int hls_window(AVFormatContext *s, int
> last, VariantStream *vs)
>               ret = 0;
>           goto fail;
>       }
> +    av_dict_free(&options);
>        for (en = vs->segments; en; en = en->next) {
>           if (target_duration <= en->duration)
> @@ -1635,8 +1636,11 @@ static int hls_window(AVFormatContext *s, int
> last, VariantStream *vs)
>           ff_hls_write_end_list(byterange_mode ? hls->m3u8_out : vs->out);
>        if (vs->vtt_m3u8_name) {
> +        set_http_options(vs->avf, &options, hls);
>           snprintf(temp_vtt_filename, sizeof(temp_vtt_filename),
> use_temp_file ? "%s.tmp" : "%s", vs->vtt_m3u8_name);
> -        if ((ret = hlsenc_io_open(s, &hls->sub_m3u8_out,
> temp_vtt_filename, &options)) < 0) {
> +        ret = hlsenc_io_open(s, &hls->sub_m3u8_out, temp_vtt_filename,
> &options);
> +        av_dict_free(&options);
> +        if (ret < 0) {
>               if (hls->ignore_io_errors)
>                   ret = 0;
>               goto fail;
> --
> 2.40.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".
>
LGTM


Thanks
Steven
Léon Spaans Oct. 2, 2023, 3:50 a.m. UTC | #2
Thanks Steven!

Have a wonderful day!

Léon


> On 2 Oct 2023, at 01:17, Steven Liu <lingjiujianke@gmail.com> wrote:
> 
> Léon Spaans <leons@gridpoint.nl>于2023年10月1日 周日22:40写道:
> 
>> Fixes: Erroneous HTTP POST instead of HTTP PUT for WebVTT HLS variant
>> playlists.
>> 
>> Signed-off-by: Léon Spaans <leons@gridpoint.nl>
>> ---
>>  libavformat/hlsenc.c | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>> 
>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
>> index 08f3746ce7..150320a880 100644
>> --- a/libavformat/hlsenc.c
>> +++ b/libavformat/hlsenc.c
>> @@ -1585,6 +1585,7 @@ static int hls_window(AVFormatContext *s, int
>> last, VariantStream *vs)
>>              ret = 0;
>>          goto fail;
>>      }
>> +    av_dict_free(&options);
>>       for (en = vs->segments; en; en = en->next) {
>>          if (target_duration <= en->duration)
>> @@ -1635,8 +1636,11 @@ static int hls_window(AVFormatContext *s, int
>> last, VariantStream *vs)
>>          ff_hls_write_end_list(byterange_mode ? hls->m3u8_out : vs->out);
>>       if (vs->vtt_m3u8_name) {
>> +        set_http_options(vs->avf, &options, hls);
>>          snprintf(temp_vtt_filename, sizeof(temp_vtt_filename),
>> use_temp_file ? "%s.tmp" : "%s", vs->vtt_m3u8_name);
>> -        if ((ret = hlsenc_io_open(s, &hls->sub_m3u8_out,
>> temp_vtt_filename, &options)) < 0) {
>> +        ret = hlsenc_io_open(s, &hls->sub_m3u8_out, temp_vtt_filename,
>> &options);
>> +        av_dict_free(&options);
>> +        if (ret < 0) {
>>              if (hls->ignore_io_errors)
>>                  ret = 0;
>>              goto fail;
>> --
>> 2.40.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".
>> 
> LGTM
> 
> 
> Thanks
> Steven
> _______________________________________________
> 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".
Léon Spaans Oct. 5, 2023, 7:15 a.m. UTC | #3
According to Patchwork the patch results in 2 "Failed to apply" warnings 
for contexts "yinshiyou/configure_loongarch64" and "andriy/configure_x86".

This is not something I saw in the `make fate` output.

Is there something I should know allowing me to fix this? Or can this be 
ignored?


Thanks && kind regards.


On 10/2/23 05:50, Léon Spaans wrote:
> Thanks Steven!
>
> Have a wonderful day!
>
> Léon
>
>
>> On 2 Oct 2023, at 01:17, Steven Liu <lingjiujianke@gmail.com> wrote:
>>
>> Léon Spaans <leons@gridpoint.nl>于2023年10月1日 周日22:40写道:
>>
>>> Fixes: Erroneous HTTP POST instead of HTTP PUT for WebVTT HLS variant
>>> playlists.
>>>
>>> Signed-off-by: Léon Spaans <leons@gridpoint.nl>
>>> ---
>>>   libavformat/hlsenc.c | 6 +++++-
>>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
>>> index 08f3746ce7..150320a880 100644
>>> --- a/libavformat/hlsenc.c
>>> +++ b/libavformat/hlsenc.c
>>> @@ -1585,6 +1585,7 @@ static int hls_window(AVFormatContext *s, int
>>> last, VariantStream *vs)
>>>               ret = 0;
>>>           goto fail;
>>>       }
>>> +    av_dict_free(&options);
>>>        for (en = vs->segments; en; en = en->next) {
>>>           if (target_duration <= en->duration)
>>> @@ -1635,8 +1636,11 @@ static int hls_window(AVFormatContext *s, int
>>> last, VariantStream *vs)
>>>           ff_hls_write_end_list(byterange_mode ? hls->m3u8_out : vs->out);
>>>        if (vs->vtt_m3u8_name) {
>>> +        set_http_options(vs->avf, &options, hls);
>>>           snprintf(temp_vtt_filename, sizeof(temp_vtt_filename),
>>> use_temp_file ? "%s.tmp" : "%s", vs->vtt_m3u8_name);
>>> -        if ((ret = hlsenc_io_open(s, &hls->sub_m3u8_out,
>>> temp_vtt_filename, &options)) < 0) {
>>> +        ret = hlsenc_io_open(s, &hls->sub_m3u8_out, temp_vtt_filename,
>>> &options);
>>> +        av_dict_free(&options);
>>> +        if (ret < 0) {
>>>               if (hls->ignore_io_errors)
>>>                   ret = 0;
>>>               goto fail;
>>> --
>>> 2.40.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".
>>>
>> LGTM
>>
>>
>> Thanks
>> Steven
>> _______________________________________________
>> 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".
Steven Liu Oct. 5, 2023, 7:25 a.m. UTC | #4
Léon Spaans <leons@gridpoint.nl>于2023年10月5日 周四15:15写道:

> According to Patchwork the patch results in 2 "Failed to apply" warnings
> for contexts "yinshiyou/configure_loongarch64" and "andriy/configure_x86".
>
> This is not something I saw in the `make fate` output.
>
> Is there something I should know allowing me to fix this? Or can this be
> ignored?


Don’t worry, These days are holidays in China mainland, maybe two days
later will check it.

>
>
>
> Thanks && kind regards.
>
>
> On 10/2/23 05:50, Léon Spaans wrote:
> > Thanks Steven!
> >
> > Have a wonderful day!
> >
> > Léon
> >
> >
> >> On 2 Oct 2023, at 01:17, Steven Liu <lingjiujianke@gmail.com> wrote:
> >>
> >> Léon Spaans <leons@gridpoint.nl>于2023年10月1日 周日22:40写道:
> >>
> >>> Fixes: Erroneous HTTP POST instead of HTTP PUT for WebVTT HLS variant
> >>> playlists.
> >>>
> >>> Signed-off-by: Léon Spaans <leons@gridpoint.nl>
> >>> ---
> >>>   libavformat/hlsenc.c | 6 +++++-
> >>>   1 file changed, 5 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
> >>> index 08f3746ce7..150320a880 100644
> >>> --- a/libavformat/hlsenc.c
> >>> +++ b/libavformat/hlsenc.c
> >>> @@ -1585,6 +1585,7 @@ static int hls_window(AVFormatContext *s, int
> >>> last, VariantStream *vs)
> >>>               ret = 0;
> >>>           goto fail;
> >>>       }
> >>> +    av_dict_free(&options);
> >>>        for (en = vs->segments; en; en = en->next) {
> >>>           if (target_duration <= en->duration)
> >>> @@ -1635,8 +1636,11 @@ static int hls_window(AVFormatContext *s, int
> >>> last, VariantStream *vs)
> >>>           ff_hls_write_end_list(byterange_mode ? hls->m3u8_out :
> vs->out);
> >>>        if (vs->vtt_m3u8_name) {
> >>> +        set_http_options(vs->avf, &options, hls);
> >>>           snprintf(temp_vtt_filename, sizeof(temp_vtt_filename),
> >>> use_temp_file ? "%s.tmp" : "%s", vs->vtt_m3u8_name);
> >>> -        if ((ret = hlsenc_io_open(s, &hls->sub_m3u8_out,
> >>> temp_vtt_filename, &options)) < 0) {
> >>> +        ret = hlsenc_io_open(s, &hls->sub_m3u8_out, temp_vtt_filename,
> >>> &options);
> >>> +        av_dict_free(&options);
> >>> +        if (ret < 0) {
> >>>               if (hls->ignore_io_errors)
> >>>                   ret = 0;
> >>>               goto fail;
> >>> --
> >>> 2.40.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".
> >>>
> >> LGTM
> >>
> >>
> >> Thanks
> >> Steven
> >> _______________________________________________
> >> 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".
> _______________________________________________
> 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".
>
Steven Liu Oct. 6, 2023, 2:50 p.m. UTC | #5
Steven Liu <lingjiujianke@gmail.com> 于2023年10月5日周四 15:25写道:
>
>
>
> Léon Spaans <leons@gridpoint.nl>于2023年10月5日 周四15:15写道:
>>
>> According to Patchwork the patch results in 2 "Failed to apply" warnings
>> for contexts "yinshiyou/configure_loongarch64" and "andriy/configure_x86".
>>
>> This is not something I saw in the `make fate` output.
>>
>> Is there something I should know allowing me to fix this? Or can this be
>> ignored?
>
>
> Don’t worry, These days are holidays in China mainland, maybe two days later will check it.
>>
>>
>>
>>
>> Thanks && kind regards.
>>
>>
>> On 10/2/23 05:50, Léon Spaans wrote:
>> > Thanks Steven!
>> >
>> > Have a wonderful day!
>> >
>> > Léon
Hi Léon,

I read this patch again, I have some question:
>> >
>> >
>> >> On 2 Oct 2023, at 01:17, Steven Liu <lingjiujianke@gmail.com> wrote:
>> >>
>> >> Léon Spaans <leons@gridpoint.nl>于2023年10月1日 周日22:40写道:
>> >>
>> >>> Fixes: Erroneous HTTP POST instead of HTTP PUT for WebVTT HLS variant
>> >>> playlists.
>> >>>
>> >>> Signed-off-by: Léon Spaans <leons@gridpoint.nl>
>> >>> ---
>> >>>   libavformat/hlsenc.c | 6 +++++-
>> >>>   1 file changed, 5 insertions(+), 1 deletion(-)
>> >>>
>> >>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
>> >>> index 08f3746ce7..150320a880 100644
>> >>> --- a/libavformat/hlsenc.c
>> >>> +++ b/libavformat/hlsenc.c
>> >>> @@ -1585,6 +1585,7 @@ static int hls_window(AVFormatContext *s, int
>> >>> last, VariantStream *vs)
>> >>>               ret = 0;
>> >>>           goto fail;
>> >>>       }
>> >>> +    av_dict_free(&options);
this should modify as:

    snprintf(temp_filename, sizeof(temp_filename), use_temp_file ?
"%s.tmp" : "%s", vs->m3u8_name);
    ret = hlsenc_io_open(s, byterange_mode ? &hls->m3u8_out :
&vs->out, temp_filename, &options);
    av_dict_free(&options);
    if (ret < 0) {
        if (hls->ignore_io_errors)
            ret = 0;
        goto fail;
    }

Because there have one goto fail when hlsenc_io_open failed;
>> >>>        for (en = vs->segments; en; en = en->next) {
>> >>>           if (target_duration <= en->duration)
>> >>> @@ -1635,8 +1636,11 @@ static int hls_window(AVFormatContext *s, int
>> >>> last, VariantStream *vs)
>> >>>           ff_hls_write_end_list(byterange_mode ? hls->m3u8_out : vs->out);
>> >>>        if (vs->vtt_m3u8_name) {
>> >>> +        set_http_options(vs->avf, &options, hls);
should this set vs->vtt_avf ?
maybe subtitle of webvtt should use vs->vtt_avf, is it?
>> >>>           snprintf(temp_vtt_filename, sizeof(temp_vtt_filename),
>> >>> use_temp_file ? "%s.tmp" : "%s", vs->vtt_m3u8_name);
>> >>> -        if ((ret = hlsenc_io_open(s, &hls->sub_m3u8_out,
>> >>> temp_vtt_filename, &options)) < 0) {
>> >>> +        ret = hlsenc_io_open(s, &hls->sub_m3u8_out, temp_vtt_filename,
>> >>> &options);
>> >>> +        av_dict_free(&options);
>> >>> +        if (ret < 0) {
>> >>>               if (hls->ignore_io_errors)
>> >>>                   ret = 0;
>> >>>               goto fail;
>> >>> --
>> >>> 2.40.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".
>> >>>
>> >> LGTM
>> >>
>> >>
>> >> Thanks
>> >> Steven
>> >> _______________________________________________
>> >> 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".
>> _______________________________________________
>> 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".

Thanks

Steven
Léon Spaans Oct. 6, 2023, 9:09 p.m. UTC | #6
Thanks Steven!

>>    libavformat/hlsenc.c | 6 +++++-
>>    1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
>> index 08f3746ce7..150320a880 100644
>> --- a/libavformat/hlsenc.c
>> +++ b/libavformat/hlsenc.c
>> @@ -1585,6 +1585,7 @@ static int hls_window(AVFormatContext *s, int
>> last, VariantStream *vs)
>>                ret = 0;
>>            goto fail;
>>        }
>> +    av_dict_free(&options);
> this should modify as:
>
>      snprintf(temp_filename, sizeof(temp_filename), use_temp_file ?
> "%s.tmp" : "%s", vs->m3u8_name);
>      ret = hlsenc_io_open(s, byterange_mode ? &hls->m3u8_out :
> &vs->out, temp_filename, &options);
>      av_dict_free(&options);
>      if (ret < 0) {
>          if (hls->ignore_io_errors)
>              ret = 0;
>          goto fail;
>      }
>
> Because there have one goto fail when hlsenc_io_open failed;

Fixing this as well indeed seems better!

>>         for (en = vs->segments; en; en = en->next) {
>>            if (target_duration <= en->duration)
>> @@ -1635,8 +1636,11 @@ static int hls_window(AVFormatContext *s, int
>> last, VariantStream *vs)
>>            ff_hls_write_end_list(byterange_mode ? hls->m3u8_out : vs->out);
>>         if (vs->vtt_m3u8_name) {
>> +        set_http_options(vs->avf, &options, hls);
> should this set vs->vtt_avf ?
> maybe subtitle of webvtt should use vs->vtt_avf, is it?

Using `vs->vtt_avf` makes more sense here indeed.

>>            snprintf(temp_vtt_filename, sizeof(temp_vtt_filename),
>> use_temp_file ? "%s.tmp" : "%s", vs->vtt_m3u8_name);
>> -        if ((ret = hlsenc_io_open(s, &hls->sub_m3u8_out,
>> temp_vtt_filename, &options)) < 0) {
>> +        ret = hlsenc_io_open(s, &hls->sub_m3u8_out, temp_vtt_filename,
>> &options);
>> +        av_dict_free(&options);
>> +        if (ret < 0) {
>>                if (hls->ignore_io_errors)
>>                    ret = 0;
>>                goto fail;
>> --

I have changed the patch accordingly and will resend.


Léon
diff mbox series

Patch

diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c
index 08f3746ce7..150320a880 100644
--- a/libavformat/hlsenc.c
+++ b/libavformat/hlsenc.c
@@ -1585,6 +1585,7 @@  static int hls_window(AVFormatContext *s, int 
last, VariantStream *vs)
              ret = 0;
          goto fail;
      }
+    av_dict_free(&options);
       for (en = vs->segments; en; en = en->next) {
          if (target_duration <= en->duration)
@@ -1635,8 +1636,11 @@  static int hls_window(AVFormatContext *s, int 
last, VariantStream *vs)
          ff_hls_write_end_list(byterange_mode ? hls->m3u8_out : vs->out);
       if (vs->vtt_m3u8_name) {
+        set_http_options(vs->avf, &options, hls);
          snprintf(temp_vtt_filename, sizeof(temp_vtt_filename), 
use_temp_file ? "%s.tmp" : "%s", vs->vtt_m3u8_name);
-        if ((ret = hlsenc_io_open(s, &hls->sub_m3u8_out, 
temp_vtt_filename, &options)) < 0) {
+        ret = hlsenc_io_open(s, &hls->sub_m3u8_out, temp_vtt_filename, 
&options);
+        av_dict_free(&options);
+        if (ret < 0) {