| 32 | } |
| 33 | |
| 34 | int main(int argc, char **argv) |
| 35 | { |
| 36 | int bps = 0, duration = 0, verbose = 0, ret, i; |
| 37 | const char *input_url = NULL, *output_url = NULL; |
| 38 | int64_t stream_pos = 0; |
| 39 | int64_t start_time; |
| 40 | AVIOContext *input, *output; |
| 41 | AVDictionary *in_opts = NULL; |
| 42 | AVDictionary *out_opts = NULL; |
| 43 | |
| 44 | avformat_network_init(); |
| 45 | |
| 46 | for (i = 1; i < argc; i++) { |
| 47 | if (!strcmp(argv[i], "-b") && i + 1 < argc) { |
| 48 | bps = atoi(argv[i + 1]); |
| 49 | i++; |
| 50 | } else if (!strcmp(argv[i], "-d") && i + 1 < argc) { |
| 51 | duration = atoi(argv[i + 1]); |
| 52 | i++; |
| 53 | } else if (!strcmp(argv[i], "-oi") && i + 1 < argc) { |
| 54 | if (av_dict_parse_string(&in_opts, argv[i + 1], "=", ":", 0) < 0) { |
| 55 | fprintf(stderr, "Cannot parse option string %s\n", |
| 56 | argv[i + 1]); |
| 57 | return usage(argv[0], 1); |
| 58 | } |
| 59 | i++; |
| 60 | } else if (!strcmp(argv[i], "-oo") && i + 1 < argc) { |
| 61 | if (av_dict_parse_string(&out_opts, argv[i + 1], "=", ":", 0) < 0) { |
| 62 | fprintf(stderr, "Cannot parse option string %s\n", |
| 63 | argv[i + 1]); |
| 64 | return usage(argv[0], 1); |
| 65 | } |
| 66 | i++; |
| 67 | } else if (!strcmp(argv[i], "-v")) { |
| 68 | verbose = 1; |
| 69 | } else if (!input_url) { |
| 70 | input_url = argv[i]; |
| 71 | } else if (!output_url) { |
| 72 | output_url = argv[i]; |
| 73 | } else { |
| 74 | return usage(argv[0], 1); |
| 75 | } |
| 76 | } |
| 77 | if (!output_url) |
| 78 | return usage(argv[0], 1); |
| 79 | |
| 80 | ret = avio_open2(&input, input_url, AVIO_FLAG_READ, NULL, &in_opts); |
| 81 | if (ret) { |
| 82 | fprintf(stderr, "Unable to open %s: %s\n", input_url, av_err2str(ret)); |
| 83 | return 1; |
| 84 | } |
| 85 | if (verbose) { |
| 86 | int64_t size = avio_seek(input, 0, AVSEEK_SIZE); |
| 87 | if (size >= 0) { |
| 88 | fprintf(stderr, "aviocat: input size: %"PRId64"\n", size); |
| 89 | } else { |
| 90 | fprintf(stderr, "aviocat: input size: unknown\n"); |
| 91 | } |
nothing calls this directly
no test coverage detected