|
|
@ -163,7 +163,6 @@ static int write_manifest(AVFormatContext *s, int final) |
|
|
|
HDSContext *c = s->priv_data; |
|
|
|
HDSContext *c = s->priv_data; |
|
|
|
AVIOContext *out; |
|
|
|
AVIOContext *out; |
|
|
|
char filename[1024], temp_filename[1024]; |
|
|
|
char filename[1024], temp_filename[1024]; |
|
|
|
const char *write_filename; |
|
|
|
|
|
|
|
int ret, i; |
|
|
|
int ret, i; |
|
|
|
float duration = 0; |
|
|
|
float duration = 0; |
|
|
|
|
|
|
|
|
|
|
@ -172,11 +171,10 @@ static int write_manifest(AVFormatContext *s, int final) |
|
|
|
|
|
|
|
|
|
|
|
snprintf(filename, sizeof(filename), "%s/index.f4m", s->filename); |
|
|
|
snprintf(filename, sizeof(filename), "%s/index.f4m", s->filename); |
|
|
|
snprintf(temp_filename, sizeof(temp_filename), "%s/index.f4m.tmp", s->filename); |
|
|
|
snprintf(temp_filename, sizeof(temp_filename), "%s/index.f4m.tmp", s->filename); |
|
|
|
write_filename = USE_RENAME_REPLACE ? temp_filename : filename; |
|
|
|
ret = avio_open2(&out, temp_filename, AVIO_FLAG_WRITE, |
|
|
|
ret = avio_open2(&out, write_filename, AVIO_FLAG_WRITE, |
|
|
|
|
|
|
|
&s->interrupt_callback, NULL); |
|
|
|
&s->interrupt_callback, NULL); |
|
|
|
if (ret < 0) { |
|
|
|
if (ret < 0) { |
|
|
|
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", write_filename); |
|
|
|
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename); |
|
|
|
return ret; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|
avio_printf(out, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); |
|
|
|
avio_printf(out, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); |
|
|
@ -206,7 +204,7 @@ static int write_manifest(AVFormatContext *s, int final) |
|
|
|
avio_printf(out, "</manifest>\n"); |
|
|
|
avio_printf(out, "</manifest>\n"); |
|
|
|
avio_flush(out); |
|
|
|
avio_flush(out); |
|
|
|
avio_close(out); |
|
|
|
avio_close(out); |
|
|
|
return USE_RENAME_REPLACE ? ff_rename(temp_filename, filename, s) : 0; |
|
|
|
return ff_rename(temp_filename, filename, s); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void update_size(AVIOContext *out, int64_t pos) |
|
|
|
static void update_size(AVIOContext *out, int64_t pos) |
|
|
@ -225,7 +223,6 @@ static int write_abst(AVFormatContext *s, OutputStream *os, int final) |
|
|
|
HDSContext *c = s->priv_data; |
|
|
|
HDSContext *c = s->priv_data; |
|
|
|
AVIOContext *out; |
|
|
|
AVIOContext *out; |
|
|
|
char filename[1024], temp_filename[1024]; |
|
|
|
char filename[1024], temp_filename[1024]; |
|
|
|
const char *write_filename; |
|
|
|
|
|
|
|
int i, ret; |
|
|
|
int i, ret; |
|
|
|
int64_t asrt_pos, afrt_pos; |
|
|
|
int64_t asrt_pos, afrt_pos; |
|
|
|
int start = 0, fragments; |
|
|
|
int start = 0, fragments; |
|
|
@ -243,11 +240,10 @@ static int write_abst(AVFormatContext *s, OutputStream *os, int final) |
|
|
|
"%s/stream%d.abst", s->filename, index); |
|
|
|
"%s/stream%d.abst", s->filename, index); |
|
|
|
snprintf(temp_filename, sizeof(temp_filename), |
|
|
|
snprintf(temp_filename, sizeof(temp_filename), |
|
|
|
"%s/stream%d.abst.tmp", s->filename, index); |
|
|
|
"%s/stream%d.abst.tmp", s->filename, index); |
|
|
|
write_filename = USE_RENAME_REPLACE ? temp_filename : filename; |
|
|
|
ret = avio_open2(&out, temp_filename, AVIO_FLAG_WRITE, |
|
|
|
ret = avio_open2(&out, write_filename, AVIO_FLAG_WRITE, |
|
|
|
|
|
|
|
&s->interrupt_callback, NULL); |
|
|
|
&s->interrupt_callback, NULL); |
|
|
|
if (ret < 0) { |
|
|
|
if (ret < 0) { |
|
|
|
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", write_filename); |
|
|
|
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename); |
|
|
|
return ret; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|
avio_wb32(out, 0); // abst size
|
|
|
|
avio_wb32(out, 0); // abst size
|
|
|
@ -289,7 +285,7 @@ static int write_abst(AVFormatContext *s, OutputStream *os, int final) |
|
|
|
update_size(out, afrt_pos); |
|
|
|
update_size(out, afrt_pos); |
|
|
|
update_size(out, 0); |
|
|
|
update_size(out, 0); |
|
|
|
avio_close(out); |
|
|
|
avio_close(out); |
|
|
|
return USE_RENAME_REPLACE ? ff_rename(temp_filename, filename, s) : 0; |
|
|
|
return ff_rename(temp_filename, filename, s); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static int init_file(AVFormatContext *s, OutputStream *os, int64_t start_ts) |
|
|
|
static int init_file(AVFormatContext *s, OutputStream *os, int64_t start_ts) |
|
|
|