[FFmpeg-devel] [PATCH] avformat/dashenc: Use HTTP DELETE for HTTP base proto

Jeyapal, Karthick kjeyapal at akamai.com
Sat Mar 3 15:20:02 EET 2018



On 2/28/18 9:09 AM, Jeyapal, Karthick wrote:
>
>
> On 2/27/18 2:48 PM, Serhii Marchuk wrote:
>> ---
>>  libavformat/dashenc.c | 28 +++++++++++++++++++++++++---
>>  1 file changed, 25 insertions(+), 3 deletions(-)
>>
>> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
>> index 83e0cff728..66f12d8d49 100644
>> --- a/libavformat/dashenc.c
>> +++ b/libavformat/dashenc.c
>> @@ -1131,6 +1131,28 @@ static int update_stream_extradata(AVFormatContext *s, OutputStream *os,
>>      return 0;
>>  }
>>  
>> +static void dashenc_delete_file(AVFormatContext *s, char *filename) {
>> +    DASHContext *c = s->priv_data;
>> +    int http_base_proto = ff_is_http_proto(filename);
>> +
>> +    if (http_base_proto) {
>> +        AVIOContext *out = NULL;
>> +        AVDictionary *http_opts = NULL;
>> +
>> +        set_http_options(&http_opts, c);
>> +        av_dict_set(&http_opts, "method", "DELETE", 0);
>> +
>> +        if (dashenc_io_open(s, &out, filename, &http_opts) < 0) {
>> +            av_log(s, AV_LOG_ERROR, "failed to delete %s\n", filename);
>> +        }
>> +
>> +        av_dict_free(&http_opts);
>> +        dashenc_io_close(s, &out, filename);
>> +    } else if (unlink(filename) < 0) {
>> +        av_log(s, AV_LOG_ERROR, "failed to delete %s: %s\n", filename, strerror(errno));
>> +    }
>> +}
>> +
>>  static int dash_flush(AVFormatContext *s, int final, int stream)
>>  {
>>      DASHContext *c = s->priv_data;
>> @@ -1215,7 +1237,7 @@ static int dash_flush(AVFormatContext *s, int final, int stream)
>>                  for (j = 0; j < remove; j++) {
>>                      char filename[1024];
>>                      snprintf(filename, sizeof(filename), "%s%s", c->dirname, os->segments[j]->file);
>> -                    unlink(filename);
>> +                    dashenc_delete_file(s, filename);
>>                      av_free(os->segments[j]);
>>                  }
>>                  os->nb_segments -= remove;
>> @@ -1367,9 +1389,9 @@ static int dash_write_trailer(AVFormatContext *s)
>>          for (i = 0; i < s->nb_streams; i++) {
>>              OutputStream *os = &c->streams[i];
>>              snprintf(filename, sizeof(filename), "%s%s", c->dirname, os->initfile);
>> -            unlink(filename);
>> +            dashenc_delete_file(s, filename);
>>          }
>> -        unlink(s->url);
>> +        dashenc_delete_file(s, s->url);
>>      }
>>  
>>      return 0;
> Thanks for sending the patch. LGTM. 
> But let me test it with some of existing servers before the final push, just to make sure no existing functionality is broken.
Pushed.

Regards,
Karthick
>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel





More information about the ffmpeg-devel mailing list