avconv: use read_file() for reading the 2pass stats
Also, drop the now unused cmdutils_read_file(). There is no reason to have two functions doing essentially the same thing.
This commit is contained in:
parent
6d5d924604
commit
bd2ab27c48
@ -1196,9 +1196,9 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc)
|
|||||||
}
|
}
|
||||||
ost->logfile = f;
|
ost->logfile = f;
|
||||||
} else {
|
} else {
|
||||||
char *logbuffer;
|
char *logbuffer = read_file(logfilename);
|
||||||
size_t logbuffer_size;
|
|
||||||
if (cmdutils_read_file(logfilename, &logbuffer, &logbuffer_size) < 0) {
|
if (!logbuffer) {
|
||||||
av_log(NULL, AV_LOG_FATAL, "Error reading log file '%s' for pass-2 encoding\n",
|
av_log(NULL, AV_LOG_FATAL, "Error reading log file '%s' for pass-2 encoding\n",
|
||||||
logfilename);
|
logfilename);
|
||||||
exit_program(1);
|
exit_program(1);
|
||||||
|
55
cmdutils.c
55
cmdutils.c
@ -1396,61 +1396,6 @@ int read_yesno(void)
|
|||||||
return yesno;
|
return yesno;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
FILE *f = fopen(filename, "rb");
|
|
||||||
|
|
||||||
if (!f) {
|
|
||||||
av_log(NULL, AV_LOG_ERROR, "Cannot read file '%s': %s\n", filename,
|
|
||||||
strerror(errno));
|
|
||||||
return AVERROR(errno);
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = fseek(f, 0, SEEK_END);
|
|
||||||
if (ret == -1) {
|
|
||||||
ret = AVERROR(errno);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = ftell(f);
|
|
||||||
if (ret < 0) {
|
|
||||||
ret = AVERROR(errno);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
*size = ret;
|
|
||||||
|
|
||||||
ret = fseek(f, 0, SEEK_SET);
|
|
||||||
if (ret == -1) {
|
|
||||||
ret = AVERROR(errno);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
*bufptr = av_malloc(*size + 1);
|
|
||||||
if (!*bufptr) {
|
|
||||||
av_log(NULL, AV_LOG_ERROR, "Could not allocate file buffer\n");
|
|
||||||
ret = AVERROR(ENOMEM);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
ret = fread(*bufptr, 1, *size, f);
|
|
||||||
if (ret < *size) {
|
|
||||||
av_free(*bufptr);
|
|
||||||
if (ferror(f)) {
|
|
||||||
av_log(NULL, AV_LOG_ERROR, "Error while reading file '%s': %s\n",
|
|
||||||
filename, strerror(errno));
|
|
||||||
ret = AVERROR(errno);
|
|
||||||
} else
|
|
||||||
ret = AVERROR_EOF;
|
|
||||||
} else {
|
|
||||||
ret = 0;
|
|
||||||
(*bufptr)[(*size)++] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
|
||||||
fclose(f);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_pts_correction(PtsCorrectionContext *ctx)
|
void init_pts_correction(PtsCorrectionContext *ctx)
|
||||||
{
|
{
|
||||||
ctx->num_faulty_pts = ctx->num_faulty_dts = 0;
|
ctx->num_faulty_pts = ctx->num_faulty_dts = 0;
|
||||||
|
12
cmdutils.h
12
cmdutils.h
@ -460,18 +460,6 @@ int show_sample_fmts(void *optctx, const char *opt, const char *arg);
|
|||||||
*/
|
*/
|
||||||
int read_yesno(void);
|
int read_yesno(void);
|
||||||
|
|
||||||
/**
|
|
||||||
* Read the file with name filename, and put its content in a newly
|
|
||||||
* allocated 0-terminated buffer.
|
|
||||||
*
|
|
||||||
* @param filename file to read from
|
|
||||||
* @param bufptr location where pointer to buffer is returned
|
|
||||||
* @param size location where size of buffer is returned
|
|
||||||
* @return 0 in case of success, a negative value corresponding to an
|
|
||||||
* AVERROR error code in case of failure.
|
|
||||||
*/
|
|
||||||
int cmdutils_read_file(const char *filename, char **bufptr, size_t *size);
|
|
||||||
|
|
||||||
typedef struct PtsCorrectionContext {
|
typedef struct PtsCorrectionContext {
|
||||||
int64_t num_faulty_pts; /// Number of incorrect PTS values so far
|
int64_t num_faulty_pts; /// Number of incorrect PTS values so far
|
||||||
int64_t num_faulty_dts; /// Number of incorrect DTS values so far
|
int64_t num_faulty_dts; /// Number of incorrect DTS values so far
|
||||||
|
Loading…
x
Reference in New Issue
Block a user