aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-05-28 12:25:59 +0200
committerHarald Welte <laforge@gnumonks.org>2017-05-28 14:30:05 +0200
commit495c694781d21c66acbdd7fb8726c7058d62de86 (patch)
tree19b797a2e0f72829db74393fb7c956f8712edd35
parent8b01f0ca05d92c593d9f33e40bae3f6dbb78a521 (diff)
print meaningful error messages if something goes wrong in main/pq
-rw-r--r--src/main.c31
-rw-r--r--src/pq_format.c3
-rw-r--r--src/procqueue.c10
3 files changed, 34 insertions, 10 deletions
diff --git a/src/main.c b/src/main.c
index d3affbf..60a3bab 100644
--- a/src/main.c
+++ b/src/main.c
@@ -440,8 +440,10 @@ make_processing_chain(struct gapk_state *gs)
else if (gs->opts.alsa_in)
pq_queue_alsa_input(gs->pq, gs->opts.alsa_in, fmt_in->frame_len);
#endif
- else
+ else {
+ fprintf(stderr, "Unknown/invalid input\n");
return -1;
+ }
/* Decoding to PCM ? */
if (need_dec)
@@ -452,8 +454,11 @@ make_processing_chain(struct gapk_state *gs)
const struct format_desc *fmt_dec;
fmt_dec = fmt_get_from_type(codec_in->codec_dec_format_type);
- if (!fmt_dec)
+ if (!fmt_dec) {
+ fprintf(stderr, "Cannot determine decoder input format for codec %s\n",
+ codec_in->name);
return -EINVAL;
+ }
pq_queue_fmt_convert(gs->pq, fmt_in, 0);
pq_queue_fmt_convert(gs->pq, fmt_dec, 1);
@@ -480,8 +485,11 @@ make_processing_chain(struct gapk_state *gs)
const struct format_desc *fmt_enc;
fmt_enc = fmt_get_from_type(codec_out->codec_enc_format_type);
- if (!fmt_enc)
+ if (!fmt_enc) {
+ fprintf(stderr, "Cannot determine encoder output format for codec %s\n",
+ codec_out->name);
return -EINVAL;
+ }
pq_queue_fmt_convert(gs->pq, fmt_enc, 0);
pq_queue_fmt_convert(gs->pq, fmt_out, 1);
@@ -502,8 +510,10 @@ make_processing_chain(struct gapk_state *gs)
else if (gs->opts.alsa_out)
pq_queue_alsa_output(gs->pq, gs->opts.alsa_out, fmt_out->frame_len);
#endif
- else
+ else {
+ fprintf(stderr, "Unknown/invalid output\n");
return -1;
+ }
return 0;
}
@@ -569,23 +579,30 @@ int main(int argc, char *argv[])
gs->pq = pq_create();
if (!gs->pq) {
rv = -ENOMEM;
+ fprintf(stderr, "Error creating processing queue\n");
goto error;
}
/* Open source / destination files */
rv = files_open(gs);
- if (rv)
+ if (rv) {
+ fprintf(stderr, "Error opening file(s)\n");
goto error;
+ }
/* Handle input/output headers */
rv = handle_headers(gs);
- if (rv)
+ if (rv) {
+ fprintf(stderr, "Error handling header(s)\n");
goto error;
+ }
/* Make processing chain */
rv = make_processing_chain(gs);
- if (rv)
+ if (rv) {
+ fprintf(stderr, "Error making processing chain\n");
goto error;
+ }
signal(SIGINT, &signal_handler);
diff --git a/src/pq_format.c b/src/pq_format.c
index 2089218..590dfd8 100644
--- a/src/pq_format.c
+++ b/src/pq_format.c
@@ -42,7 +42,8 @@ pq_queue_fmt_convert(struct pq *pq, const struct format_desc *fmt, int to_from_n
struct pq_item *item;
const struct codec_desc *codec = codec_get_from_type(fmt->codec_type);
- if (!codec)
+ if (!codec) {
+ fprintf(stderr, "Cannot determine codec from format %s\n", fmt->name);
return -EINVAL;
item = pq_add_item(pq);
diff --git a/src/procqueue.c b/src/procqueue.c
index 66c2967..b61be89 100644
--- a/src/procqueue.c
+++ b/src/procqueue.c
@@ -72,8 +72,11 @@ pq_add_item(struct pq *pq)
{
struct pq_item *item;
- if (pq->n_items == MAX_PQ_ITEMS)
+ if (pq->n_items == MAX_PQ_ITEMS) {
+ fprintf(stderr, "Processing Queue cannot handle more than %u items\n",
+ MAX_PQ_ITEMS);
return NULL;
+ }
item = calloc(1, sizeof(struct pq_item));
if (!item)
@@ -98,8 +101,11 @@ pq_prepare(struct pq *pq)
for (i=0; i<pq->n_items; i++) {
struct pq_item *item = pq->items[i];
- if (item->len_in && item->len_in != len_prev)
+ if (item->len_in && item->len_in != len_prev) {
+ fprintf(stderr, "PQ item requires input size %u, but previous output is %u\n",
+ item->len_in, len_prev);
return -EINVAL;
+ }
if (i < (pq->n_items-1)) {
unsigned int buf_size = item->len_out;