]> git.alsa-project.org Git - alsa-utils.git/commitdiff
axfer: add informative output and an option to suppress it
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Tue, 13 Nov 2018 06:41:30 +0000 (15:41 +0900)
committerTakashi Iwai <tiwai@suse.de>
Tue, 13 Nov 2018 11:04:34 +0000 (12:04 +0100)
In current aplay, some informative output is available as a default. This
can be suppressed by a quiet option. This commit adds support for it.

An original aplay implementation has no effect of this option in a case
to handle multiple files. However, in a point of usability, this commit
support this case.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
axfer/subcmd-transfer.c
axfer/xfer-options.c
axfer/xfer.h

index 188589f762c70298a4260df5c02ffb36118be0cd..a165a93db28b66e3432902d59fd98ceb23111d73 100644 (file)
@@ -340,6 +340,21 @@ static int context_process_frames(struct context *ctx,
        int i;
        int err = 0;
 
+       if (!ctx->xfer.quiet) {
+               fprintf(stderr,
+                       "%s: Format '%s', Rate %u Hz, Channels ",
+                       snd_pcm_stream_name(direction),
+                       snd_pcm_format_description(ctx->xfer.sample_format),
+                       ctx->xfer.frames_per_second);
+               if (ctx->xfer.samples_per_frame == 1)
+                       fprintf(stderr, "'monaural'");
+               else if (ctx->xfer.samples_per_frame == 2)
+                       fprintf(stderr, "'Stereo'");
+               else
+                       fprintf(stderr, "%u", ctx->xfer.samples_per_frame);
+               fprintf(stderr, "\n");
+       }
+
        *actual_frame_count = 0;
        while (!ctx->interrupted) {
                struct container_context *cntr;
@@ -370,6 +385,18 @@ static int context_process_frames(struct context *ctx,
                        break;
        }
 
+       if (!ctx->xfer.quiet) {
+               fprintf(stderr,
+                       "%s: Expected %lu frames, Actual %lu frames\n",
+                       snd_pcm_stream_name(direction), expected_frame_count,
+                       *actual_frame_count);
+               if (ctx->interrupted) {
+                       fprintf(stderr, "Aborted by signal: %s\n",
+                              strsignal(ctx->signal));
+                       return 0;
+               }
+       }
+
        return err;
 }
 
index fb7124441d086007b79f37c662186c6ea2f08b46..7790ea9e5be31d09770750060961d1acab5ee40f 100644 (file)
@@ -227,7 +227,7 @@ int xfer_options_parse_args(struct xfer_context *xfer,
                            const struct xfer_data *data, int argc,
                            char *const *argv)
 {
-       static const char *short_opts = "CPhvf:c:r:t:I";
+       static const char *short_opts = "CPhvqf:c:r:t:I";
        static const struct option long_opts[] = {
                // For generic purposes.
                {"capture",             0, 0, 'C'},
@@ -235,6 +235,7 @@ int xfer_options_parse_args(struct xfer_context *xfer,
                {"xfer-type",           1, 0, OPT_XFER_TYPE},
                {"help",                0, 0, 'h'},
                {"verbose",             0, 0, 'v'},
+               {"quiet",               0, 0, 'q'},
                // For transfer backend.
                {"format",              1, 0, 'f'},
                {"channels",            1, 0, 'c'},
@@ -289,6 +290,8 @@ int xfer_options_parse_args(struct xfer_context *xfer,
                        xfer->help = true;
                else if (key == 'v')
                        ++xfer->verbose;
+               else if (key == 'q')
+                       xfer->quiet = true;
                else if (key == 'f')
                        xfer->sample_format_literal = arg_duplicate_string(optarg, &err);
                else if (key == 'c')
index df43d1c0d1c986edb896f2a3862d26cedbbce3b9..0ed84e47dbcbe2b4bdd8d4a6d9efb2dea2fe1be4 100644 (file)
@@ -33,6 +33,7 @@ struct xfer_context {
        unsigned int frames_per_second;
        unsigned int samples_per_frame;
        bool help:1;
+       bool quiet:1;
        bool multiple_cntrs:1;  // For mapper.
 
        snd_pcm_format_t sample_format;