Merge commit 'b9d08c77a44390b0848c06f20bc0e9e951ba6a3c'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 25 Nov 2014 01:14:15 +0000 (02:14 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 25 Nov 2014 01:14:15 +0000 (02:14 +0100)
* commit 'b9d08c77a44390b0848c06f20bc0e9e951ba6a3c':
  lavf: Don't try to update files atomically with renames on windows

Conflicts:
libavformat/dashenc.c
libavformat/hdsenc.c
libavformat/internal.h
libavformat/smoothstreamingenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavformat/dashenc.c
libavformat/hdsenc.c
libavformat/internal.h
libavformat/smoothstreamingenc.c

@@@ -392,7 -394,7 +394,7 @@@ static int write_manifest(AVFormatConte
      avio_printf(out, "</MPD>\n");
      avio_flush(out);
      avio_close(out);
-     return ff_rename(temp_filename, s->filename, s);
 -    return USE_RENAME_REPLACE ? ff_rename(temp_filename, s->filename) : 0;
++    return USE_RENAME_REPLACE ? ff_rename(temp_filename, s->filename, s) : 0;
  }
  
  static int dash_write_header(AVFormatContext *s)
@@@ -645,7 -646,7 +649,7 @@@ static int dash_flush(AVFormatContext *
          } else {
              ffurl_close(os->out);
              os->out = NULL;
-             ret = ff_rename(temp_path, full_path, s);
 -            ret = USE_RENAME_REPLACE ? ff_rename(temp_path, full_path) : 0;
++            ret = USE_RENAME_REPLACE ? ff_rename(temp_path, full_path, s) : 0;
              if (ret < 0)
                  break;
          }
@@@ -204,7 -206,7 +206,7 @@@ static int write_manifest(AVFormatConte
      avio_printf(out, "</manifest>\n");
      avio_flush(out);
      avio_close(out);
-     return ff_rename(temp_filename, filename, s);
 -    return USE_RENAME_REPLACE ? ff_rename(temp_filename, filename) : 0;
++    return USE_RENAME_REPLACE ? ff_rename(temp_filename, filename, s) : 0;
  }
  
  static void update_size(AVIOContext *out, int64_t pos)
@@@ -285,7 -289,7 +289,7 @@@ static int write_abst(AVFormatContext *
      update_size(out, afrt_pos);
      update_size(out, 0);
      avio_close(out);
-     return ff_rename(temp_filename, filename, s);
 -    return USE_RENAME_REPLACE ? ff_rename(temp_filename, filename) : 0;
++    return USE_RENAME_REPLACE ? ff_rename(temp_filename, filename, s) : 0;
  }
  
  static int init_file(AVFormatContext *s, OutputStream *os, int64_t start_ts)
@@@ -378,61 -358,17 +378,67 @@@ int ff_generate_avci_extradata(AVStrea
   * @param newpath destination path
   * @return        0 or AVERROR on failure
   */
 -static inline int ff_rename(const char *oldpath, const char *newpath)
 +static inline int ff_rename(const char *oldpath, const char *newpath, void *logctx)
  {
 -    if (rename(oldpath, newpath) == -1)
 -        return AVERROR(errno);
 -    return 0;
 +    int ret = 0;
 +    if (rename(oldpath, newpath) == -1) {
 +        ret = AVERROR(errno);
 +        if (logctx)
 +            av_log(logctx, AV_LOG_ERROR, "failed to rename file %s to %s\n", oldpath, newpath);
 +    }
 +    return ret;
  }
  
 +/**
 + * Allocate extradata with additional FF_INPUT_BUFFER_PADDING_SIZE at end
 + * which is always set to 0.
 + *
 + * @param size size of extradata
 + * @return 0 if OK, AVERROR_xxx on error
 + */
 +int ff_alloc_extradata(AVCodecContext *avctx, int size);
 +
 +/**
 + * Allocate extradata with additional FF_INPUT_BUFFER_PADDING_SIZE at end
 + * which is always set to 0 and fill it from pb.
 + *
 + * @param size size of extradata
 + * @return >= 0 if OK, AVERROR_xxx on error
 + */
 +int ff_get_extradata(AVCodecContext *avctx, AVIOContext *pb, int size);
 +
 +/**
 + * add frame for rfps calculation.
 + *
 + * @param dts timestamp of the i-th frame
 + * @return 0 if OK, AVERROR_xxx on error
 + */
 +int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t dts);
 +
 +void ff_rfps_calculate(AVFormatContext *ic);
 +
 +/**
 + * Flags for AVFormatContext.write_uncoded_frame()
 + */
 +enum AVWriteUncodedFrameFlags {
 +
 +    /**
 +     * Query whether the feature is possible on this stream.
 +     * The frame argument is ignored.
 +     */
 +    AV_WRITE_UNCODED_FRAME_QUERY           = 0x0001,
 +
 +};
 +
 +/**
 + * Copies the whilelists from one context to the other
 + */
 +int ff_copy_whitelists(AVFormatContext *dst, AVFormatContext *src);
 +
+ #ifndef _WIN32
+ #define USE_RENAME_REPLACE 1
+ #else
+ #define USE_RENAME_REPLACE 0
+ #endif
  #endif /* AVFORMAT_INTERNAL_H */
@@@ -283,7 -285,7 +285,7 @@@ static int write_manifest(AVFormatConte
      avio_printf(out, "</SmoothStreamingMedia>\n");
      avio_flush(out);
      avio_close(out);
-     return ff_rename(temp_filename, filename, s);
 -    return USE_RENAME_REPLACE ? ff_rename(temp_filename, filename) : 0;
++    return USE_RENAME_REPLACE ? ff_rename(temp_filename, filename, s) : 0;
  }
  
  static int ism_write_header(AVFormatContext *s)