[FFmpeg-devel] [PATCH] avformat/dashenc: Added proper logging when io_open fails for write

Jeyapal, Karthick kjeyapal at akamai.com
Mon Dec 3 07:43:18 EET 2018


On 11/30/18 10:55 AM, Karthick J wrote:
> ---
>  libavformat/dashenc.c | 19 +++++++++++++------
>  1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c
> index 04218af6a6..09207dcf44 100644
> --- a/libavformat/dashenc.c
> +++ b/libavformat/dashenc.c
> @@ -209,6 +209,15 @@ static const char *get_format_str(SegmentType segment_type) {
>      return NULL;
>  }
>  
> +static int handle_io_open_error(AVFormatContext *s, int err, char *url) {
> +    DASHContext *c = s->priv_data;
> +    char errbuf[AV_ERROR_MAX_STRING_SIZE];
> +    av_strerror(err, errbuf, sizeof(errbuf));
> +    av_log(s, c->ignore_io_errors ? AV_LOG_WARNING : AV_LOG_ERROR,
> +           "Unable to open %s for writing: %s\n", url, errbuf);
> +    return c->ignore_io_errors ? 0 : err;
> +}
> +
>  static inline SegmentType select_segment_type(SegmentType segment_type, enum AVCodecID codec_id)
>  {
>      if (segment_type == SEGMENT_TYPE_AUTO) {
> @@ -531,7 +540,7 @@ static void output_segment_list(OutputStream *os, AVIOContext *out, AVFormatCont
>          ret = dashenc_io_open(s, &c->m3u8_out, temp_filename_hls, &http_opts);
>          av_dict_free(&http_opts);
>          if (ret < 0) {
> -            av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename_hls);
> +            handle_io_open_error(s, ret, temp_filename_hls);
>              return;
>          }
>          for (i = start_index; i < os->nb_segments; i++) {
> @@ -846,8 +855,7 @@ static int write_manifest(AVFormatContext *s, int final)
>      ret = dashenc_io_open(s, &c->mpd_out, temp_filename, &opts);
>      av_dict_free(&opts);
>      if (ret < 0) {
> -        av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename);
> -        return c->ignore_io_errors ? 0 : ret;
> +        return handle_io_open_error(s, ret, temp_filename);
>      }
>      out = c->mpd_out;
>      avio_printf(out, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
> @@ -937,8 +945,7 @@ static int write_manifest(AVFormatContext *s, int final)
>          ret = dashenc_io_open(s, &c->m3u8_out, temp_filename, &opts);
>          av_dict_free(&opts);
>          if (ret < 0) {
> -            av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename);
> -            return c->ignore_io_errors ? 0 : ret;
> +            return handle_io_open_error(s, ret, temp_filename);
>          }
>  
>          ff_hls_write_playlist_version(c->m3u8_out, 7);
> @@ -1567,7 +1574,7 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt)
>          ret = dashenc_io_open(s, &os->out, os->temp_path, &opts);
>          av_dict_free(&opts);
>          if (ret < 0) {
> -            return c->ignore_io_errors ? 0 : ret;
> +            return handle_io_open_error(s, ret, os->temp_path);
>          }
>      }
>  
Pushed



More information about the ffmpeg-devel mailing list