History

avconv: Set new interrupt callbacks for all AVFormatContexts, use avio_open2() everywhere

Martin Storsjö committed 15 years ago

Commit 2abe9471 parent a4009c61 file · +15 −9Browse files

Unified · Split

avconv.c+15−9
@@ -503,11 +503,13 @@ static void term_init(void) · 502 unmodified lines
503#endif503#endif
504}504}
505 505
506static int decode_interrupt_cb(void)506static int decode_interrupt_cb(void *ctx)
507{507{
508 return received_nb_signals > 1;508 return received_nb_signals > 1;
509}509}
510 510
511static const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL };
512
511void exit_program(int ret)513void exit_program(int ret)
512{514{
513 int i;515 int i;
@@ -2272,6 +2274,7 @@ static int transcode_init(OutputFile *output_files, · 1758 unmodified lines
2272 /* open files and write file headers */2274 /* open files and write file headers */
2273 for (i = 0; i < nb_output_files; i++) {2275 for (i = 0; i < nb_output_files; i++) {
2274 os = output_files[i].ctx;2276 os = output_files[i].ctx;
2277 os->interrupt_callback = int_cb;
2275 if (avformat_write_header(os, &output_files[i].opts) < 0) {2278 if (avformat_write_header(os, &output_files[i].opts) < 0) {
2276 snprintf(error, sizeof(error), "Could not write header for output file #%d (incorrect codec parameters ?)", i);2279 snprintf(error, sizeof(error), "Could not write header for output file #%d (incorrect codec parameters ?)", i);
2277 ret = AVERROR(EINVAL);2280 ret = AVERROR(EINVAL);
@@ -2887,7 +2890,7 @@ static void dump_attachment(AVStream *st, const char *filename) · 609 unmodified lines
2887 2890
2888 assert_file_overwrite(filename);2891 assert_file_overwrite(filename);
2889 2892
2890 if ((ret = avio_open (&out, filename, AVIO_FLAG_WRITE)) < 0) {2893 if ((ret = avio_open2(&out, filename, AVIO_FLAG_WRITE, &int_cb, NULL)) < 0) {
2891 av_log(NULL, AV_LOG_FATAL, "Could not open file %s for writing.\n",2894 av_log(NULL, AV_LOG_FATAL, "Could not open file %s for writing.\n",
2892 filename);2895 filename);
2893 exit_program(1);2896 exit_program(1);
@@ -2945,6 +2948,7 @@ static int opt_input_file(OptionsContext *o, const char *opt, const char *filena · 51 unmodified lines
2945 av_dict_set(&format_opts, "pixel_format", o->frame_pix_fmts[o->nb_frame_pix_fmts - 1].u.str, 0);2948 av_dict_set(&format_opts, "pixel_format", o->frame_pix_fmts[o->nb_frame_pix_fmts - 1].u.str, 0);
2946 2949
2947 ic->flags |= AVFMT_FLAG_NONBLOCK;2950 ic->flags |= AVFMT_FLAG_NONBLOCK;
2951 ic->interrupt_callback = int_cb;
2948 2952
2949 /* open the input file with generic libav function */2953 /* open the input file with generic libav function */
2950 err = avformat_open_input(&ic, filename, file_iformat, &format_opts);2954 err = avformat_open_input(&ic, filename, file_iformat, &format_opts);
@@ -3074,12 +3078,12 @@ static int get_preset_file_2(const char *preset_name, const char *codec_name, AV · 123 unmodified lines
3074 if (codec_name) {3078 if (codec_name) {
3075 snprintf(filename, sizeof(filename), "%s%s/%s-%s.avpreset", base[i],3079 snprintf(filename, sizeof(filename), "%s%s/%s-%s.avpreset", base[i],
3076 i != 1 ? "" : "/.avconv", codec_name, preset_name);3080 i != 1 ? "" : "/.avconv", codec_name, preset_name);
3077 ret = avio_open(s, filename, AVIO_FLAG_READ);3081 ret = avio_open2(s, filename, AVIO_FLAG_READ, &int_cb, NULL);
3078 }3082 }
3079 if (ret) {3083 if (ret) {
3080 snprintf(filename, sizeof(filename), "%s%s/%s.avpreset", base[i],3084 snprintf(filename, sizeof(filename), "%s%s/%s.avpreset", base[i],
3081 i != 1 ? "" : "/.avconv", preset_name);3085 i != 1 ? "" : "/.avconv", preset_name);
3082 ret = avio_open(s, filename, AVIO_FLAG_READ);3086 ret = avio_open2(s, filename, AVIO_FLAG_READ, &int_cb, NULL);
3083 }3087 }
3084 }3088 }
3085 return ret;3089 return ret;
@@ -3465,8 +3469,9 @@ static int copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata) · 379 unmodified lines
3465static int read_avserver_streams(OptionsContext *o, AVFormatContext *s, const char *filename)3469static int read_avserver_streams(OptionsContext *o, AVFormatContext *s, const char *filename)
3466{3470{
3467 int i, err;3471 int i, err;
3468 AVFormatContext *ic = NULL;3472 AVFormatContext *ic = avformat_alloc_context();
3469 3473
3474 ic->interrupt_callback = int_cb;
3470 err = avformat_open_input(&ic, filename, NULL, NULL);3475 err = avformat_open_input(&ic, filename, NULL, NULL);
3471 if (err < 0)3476 if (err < 0)
3472 return err;3477 return err;
@@ -3529,6 +3534,7 @@ static void opt_output_file(void *optctx, const char *filename) · 56 unmodified lines
3529 }3534 }
3530 3535
3531 oc->oformat = file_oformat;3536 oc->oformat = file_oformat;
3537 oc->interrupt_callback = int_cb;
3532 av_strlcpy(oc->filename, filename, sizeof(oc->filename));3538 av_strlcpy(oc->filename, filename, sizeof(oc->filename));
3533 3539
3534 if (!strcmp(file_oformat->name, "ffm") &&3540 if (!strcmp(file_oformat->name, "ffm") &&
@@ -3621,7 +3627,7 @@ static void opt_output_file(void *optctx, const char *filename) · 86 unmodified lines
3621 const char *p;3627 const char *p;
3622 int64_t len;3628 int64_t len;
3623 3629
3624 if ((err = avio_open(&pb, o->attachments[i], AVIO_FLAG_READ)) < 0) {3630 if ((err = avio_open2(&pb, o->attachments[i], AVIO_FLAG_READ, &int_cb, NULL)) < 0) {
3625 av_log(NULL, AV_LOG_FATAL, "Could not open attachment file %s.\n",3631 av_log(NULL, AV_LOG_FATAL, "Could not open attachment file %s.\n",
3626 o->attachments[i]);3632 o->attachments[i]);
3627 exit_program(1);3633 exit_program(1);
@@ -3671,7 +3677,9 @@ static void opt_output_file(void *optctx, const char *filename) · 43 unmodified lines
3671 assert_file_overwrite(filename);3677 assert_file_overwrite(filename);
3672 3678
3673 /* open the file */3679 /* open the file */
3674 if ((err = avio_open(&oc->pb, filename, AVIO_FLAG_WRITE)) < 0) {3680 if ((err = avio_open2(&oc->pb, filename, AVIO_FLAG_WRITE,
3681 &oc->interrupt_callback,
3682 &output_files[nb_output_files - 1].opts)) < 0) {
3675 print_error(filename, err);3683 print_error(filename, err);
3676 exit_program(1);3684 exit_program(1);
3677 }3685 }
@@ -4219,8 +4227,6 @@ int main(int argc, char **argv) · 541 unmodified lines
4219 av_register_all();4227 av_register_all();
4220 avformat_network_init();4228 avformat_network_init();
4221 4229
4222 avio_set_interrupt_cb(decode_interrupt_cb);
4223
4224 show_banner();4230 show_banner();
4225 4231
4226 /* parse options */4232 /* parse options */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t