Merge remote-tracking branch 'qatar/master'
* qatar/master: ARM: fix Thumb PIC on Apple nut: add do {} while (0) to GET_V tiffenc: Check av_malloc() results. tiffenc: Simplify pixel format setup using AVPixFmtDescriptor. Use atexit() instead of defining a custom exit_program() interface. msvc: Fix detection of VFW & Avisynth required libs Conflicts: ffmpeg.c ffmpeg_opt.c ffplay.c ffprobe.c ffserver.c libavcodec/tiffenc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
58
ffmpeg.c
58
ffmpeg.c
@ -378,7 +378,7 @@ static int decode_interrupt_cb(void *ctx)
|
||||
|
||||
const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL };
|
||||
|
||||
void av_noreturn exit_program(int ret)
|
||||
static void exit_program()
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -456,8 +456,6 @@ void av_noreturn exit_program(int ret)
|
||||
(int) received_sigterm);
|
||||
exit (255);
|
||||
}
|
||||
|
||||
exit(ret);
|
||||
}
|
||||
|
||||
void assert_avoptions(AVDictionary *m)
|
||||
@ -465,7 +463,7 @@ void assert_avoptions(AVDictionary *m)
|
||||
AVDictionaryEntry *t;
|
||||
if ((t = av_dict_get(m, "", NULL, AV_DICT_IGNORE_SUFFIX))) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Option %s not found.\n", t->key);
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -482,7 +480,7 @@ static void assert_codec_experimental(AVCodecContext *c, int encoder)
|
||||
if (!(codec->capabilities & CODEC_CAP_EXPERIMENTAL))
|
||||
av_log(NULL, AV_LOG_FATAL, "Or use the non experimental %s '%s'.\n",
|
||||
codec_string, codec->name);
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -564,7 +562,7 @@ static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost)
|
||||
avctx->codec ? avctx->codec->name : "copy");
|
||||
print_error("", a);
|
||||
if (exit_on_error)
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
*pkt = new_pkt;
|
||||
|
||||
@ -586,7 +584,7 @@ static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost)
|
||||
ret = av_interleaved_write_frame(s, pkt);
|
||||
if (ret < 0) {
|
||||
print_error("av_interleaved_write_frame()", ret);
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -637,7 +635,7 @@ static void do_audio_out(AVFormatContext *s, OutputStream *ost,
|
||||
update_benchmark(NULL);
|
||||
if (avcodec_encode_audio2(enc, &pkt, frame, &got_packet) < 0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Audio encoding failed (avcodec_encode_audio2)\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
update_benchmark("encode_audio %d.%d", ost->file_index, ost->index);
|
||||
|
||||
@ -716,7 +714,7 @@ static void do_subtitle_out(AVFormatContext *s,
|
||||
if (sub->pts == AV_NOPTS_VALUE) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Subtitle packets must have a pts\n");
|
||||
if (exit_on_error)
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -752,7 +750,7 @@ static void do_subtitle_out(AVFormatContext *s,
|
||||
subtitle_out_max_size, sub);
|
||||
if (subtitle_out_size < 0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Subtitle encoding failed\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
av_init_packet(&pkt);
|
||||
@ -895,7 +893,7 @@ static void do_video_out(AVFormatContext *s,
|
||||
update_benchmark("encode_video %d.%d", ost->file_index, ost->index);
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Video encoding failed\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (got_packet) {
|
||||
@ -955,7 +953,7 @@ static void do_video_stats(AVFormatContext *os, OutputStream *ost,
|
||||
vstats_file = fopen(vstats_filename, "w");
|
||||
if (!vstats_file) {
|
||||
perror("fopen");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1288,7 +1286,7 @@ static void flush_encoders(void)
|
||||
update_benchmark("flush %s %d.%d", desc, ost->file_index, ost->index);
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "%s encoding failed\n", desc);
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
*size += pkt.size;
|
||||
if (ost->logfile && enc->stats_out) {
|
||||
@ -1481,7 +1479,7 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
|
||||
av_log(NULL, AV_LOG_FATAL, "Unable to find default channel "
|
||||
"layout for Input Stream #%d.%d\n", ist->file_index,
|
||||
ist->st->index);
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
decoded_frame->channel_layout = avctx->channel_layout;
|
||||
|
||||
@ -1509,7 +1507,7 @@ static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output)
|
||||
int j;
|
||||
if (configure_filtergraph(fg) < 0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Error reinitializing filters!\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
for (j = 0; j < fg->nb_outputs; j++) {
|
||||
OutputStream *ost = fg->outputs[j]->ost;
|
||||
@ -1624,7 +1622,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
|
||||
if (ist_in_filtergraph(filtergraphs[i], ist) &&
|
||||
configure_filtergraph(filtergraphs[i]) < 0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Error reinitializing filters!\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1660,7 +1658,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output)
|
||||
} else
|
||||
if(av_buffersrc_add_frame(ist->filters[i]->filter, decoded_frame, AV_BUFFERSRC_FLAG_PUSH)<0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Failed to inject frame into filter network\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1859,7 +1857,7 @@ static void print_sdp(void)
|
||||
AVFormatContext **avc = av_malloc(sizeof(*avc) * nb_output_files);
|
||||
|
||||
if (!avc)
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
for (i = 0; i < nb_output_files; i++)
|
||||
avc[i] = output_files[i]->ctx;
|
||||
|
||||
@ -1927,7 +1925,7 @@ static void parse_forced_key_frames(char *kf, OutputStream *ost,
|
||||
ost->forced_kf_pts = av_malloc(sizeof(*ost->forced_kf_pts) * n);
|
||||
if (!ost->forced_kf_pts) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Could not allocate forced key frames array.\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
p = kf;
|
||||
@ -2093,7 +2091,7 @@ static int transcode_init(void)
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
if (audio_volume != 256) {
|
||||
av_log(NULL, AV_LOG_FATAL, "-acodec copy and -vol are incompatible (frames are not decoded)\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
codec->channel_layout = icodec->channel_layout;
|
||||
codec->sample_rate = icodec->sample_rate;
|
||||
@ -2240,7 +2238,7 @@ static int transcode_init(void)
|
||||
if (cmdutils_read_file(logfilename, &logbuffer, &logbuffer_size) < 0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Error reading log file '%s' for pass-2 encoding\n",
|
||||
logfilename);
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
codec->stats_in = logbuffer;
|
||||
}
|
||||
@ -2249,7 +2247,7 @@ static int transcode_init(void)
|
||||
if (!f) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Cannot write log file '%s' for pass-1 encoding: %s\n",
|
||||
logfilename, strerror(errno));
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
ost->logfile = f;
|
||||
}
|
||||
@ -2724,7 +2722,7 @@ static int process_input(int file_index)
|
||||
if (ret != AVERROR_EOF) {
|
||||
print_error(is->filename, ret);
|
||||
if (exit_on_error)
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
ifile->eof_reached = 1;
|
||||
|
||||
@ -2845,7 +2843,7 @@ static int process_input(int file_index)
|
||||
av_log(NULL, AV_LOG_ERROR, "Error while decoding stream #%d:%d: %s\n",
|
||||
ist->file_index, ist->st->index, buf);
|
||||
if (exit_on_error)
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
discard_packet:
|
||||
@ -3119,6 +3117,8 @@ int main(int argc, char **argv)
|
||||
OptionsContext o = { 0 };
|
||||
int64_t ti;
|
||||
|
||||
atexit(exit_program);
|
||||
|
||||
reset_options(&o, 0);
|
||||
|
||||
setvbuf(stderr,NULL,_IONBF,0); /* win32 runtime needs this */
|
||||
@ -3153,29 +3153,29 @@ int main(int argc, char **argv)
|
||||
if (nb_output_files <= 0 && nb_input_files == 0) {
|
||||
show_usage();
|
||||
av_log(NULL, AV_LOG_WARNING, "Use -h to get full help or, even better, run 'man %s'\n", program_name);
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* file converter / grab */
|
||||
if (nb_output_files <= 0) {
|
||||
av_log(NULL, AV_LOG_FATAL, "At least one output file must be specified\n");
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// if (nb_input_files == 0) {
|
||||
// av_log(NULL, AV_LOG_FATAL, "At least one input file must be specified\n");
|
||||
// exit_program(1);
|
||||
// exit(1);
|
||||
// }
|
||||
|
||||
current_time = ti = getutime();
|
||||
if (transcode() < 0)
|
||||
exit_program(1);
|
||||
exit(1);
|
||||
ti = getutime() - ti;
|
||||
if (do_benchmark) {
|
||||
int maxrss = getmaxrss() / 1024;
|
||||
printf("bench: utime=%0.3fs maxrss=%ikB\n", ti / 1000000.0, maxrss);
|
||||
}
|
||||
|
||||
exit_program(0);
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user