* [TINYCOMPRESS][PATCH] crec: support streaming output to stdout
@ 2015-02-19 14:55 Richard Fitzgerald
2015-02-24 16:36 ` Vinod Koul
0 siblings, 1 reply; 5+ messages in thread
From: Richard Fitzgerald @ 2015-02-19 14:55 UTC (permalink / raw)
To: vinod.koul; +Cc: alsa-devel, patches
From: Ammar Zahid Ali Syed <aali@opensource.wolfsonmicro.com>
It's useful for testing to be able to stream the captured
audio to stdout instead of having to go via a file.
Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Signed-off-by: Ammar Ali <aali@opensource.wolfsonmicro.com>
---
crec.c | 73 ++++++++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 46 insertions(+), 27 deletions(-)
diff --git a/crec.c b/crec.c
index e3f189f..258fade 100644
--- a/crec.c
+++ b/crec.c
@@ -77,6 +77,8 @@
static int verbose;
static int file;
+static FILE *finfo;
+static bool streamed;
static const unsigned int DEFAULT_CHANNELS = 1;
static const unsigned int DEFAULT_RATE = 44100;
@@ -151,7 +153,7 @@ static void size_wave_header(struct wave_header *header, uint32_t size)
static void usage(void)
{
- fprintf(stderr, "usage: crec [OPTIONS] filename\n"
+ fprintf(stderr, "usage: crec [OPTIONS] [filename]\n"
"-c\tcard number\n"
"-d\tdevice node\n"
"-b\tbuffer size\n"
@@ -162,6 +164,8 @@ static void usage(void)
"-C\tSpecify the number of channels (default %u)\n"
"-R\tSpecify the sample rate (default %u)\n"
"-F\tSpecify the format: S16_LE, S32_LE (default S16_LE)\n\n"
+ "If filename is not given the output is\n"
+ "written to stdout\n\n"
"Example:\n"
"\tcrec -c 1 -d 2 test.wav\n"
"\tcrec -f 5 test.wav\n",
@@ -180,7 +184,7 @@ static int print_time(struct compress *compress)
fprintf(stderr, "ERR: %s\n", compress_get_error(compress));
return -1;
} else {
- printf("DSP recorded %jd.%jd\n",
+ fprintf(finfo, "DSP recorded %jd.%jd\n",
(intmax_t)tstamp.tv_sec, (intmax_t)tstamp.tv_nsec*1000);
}
return 0;
@@ -195,6 +199,10 @@ static int finish_record()
if (!file)
return -ENOENT;
+ /* can't rewind if streaming to stdout */
+ if (streamed)
+ return 0;
+
/* Get amount of data written to file */
ret = lseek(file, 0, SEEK_END);
if (ret < 0)
@@ -256,22 +264,27 @@ void capture_samples(char *name, unsigned int card, unsigned int device,
length = length * rate * (samplebits / 8) * channels;
if (verbose)
- printf("%s: entry, reading %u bytes\n", __func__, length);
-
- file = open(name, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
- if (file == -1) {
- fprintf(stderr, "Unable to open file '%s'\n", name);
- exit(EXIT_FAILURE);
- }
+ fprintf(finfo, "%s: entry, reading %u bytes\n", __func__, length);
+ if (!name) {
+ file = STDOUT_FILENO;
+ } else {
+ file = open(name, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+ if (file == -1) {
+ fprintf(stderr, "Unable to open file '%s'\n", name);
+ exit(EXIT_FAILURE);
+ }
+ }
/* Write a header, will update with size once record is complete */
- init_wave_header(&header, channels, rate, samplebits);
- written = write(file, &header, sizeof(header));
- if (written != sizeof(header)) {
+ if (!streamed) {
+ init_wave_header(&header, channels, rate, samplebits);
+ written = write(file, &header, sizeof(header));
+ if (written != sizeof(header)) {
fprintf(stderr, "Error writing output file header: %s\n",
strerror(errno));
goto file_exit;
- }
+ }
+ }
memset(&codec, 0, sizeof(codec));
memset(&config, 0, sizeof(config));
@@ -299,7 +312,7 @@ void capture_samples(char *name, unsigned int card, unsigned int device,
};
if (verbose)
- printf("%s: Opened compress device\n", __func__);
+ fprintf(finfo, "%s: Opened compress device\n", __func__);
size = config.fragment_size;
buffer = malloc(size * config.fragments);
@@ -308,15 +321,15 @@ void capture_samples(char *name, unsigned int card, unsigned int device,
goto comp_exit;
}
- printf("Recording file %s On Card %u device %u, with buffer of %lu bytes\n",
+ fprintf(finfo, "Recording file %s On Card %u device %u, with buffer of %lu bytes\n",
name, card, device, buffer_size);
- printf("Format %u Channels %u, %u Hz\n",
- codec.id, codec.ch_out, rate);
+ fprintf(finfo, "Codec %u Format %u Channels %u, %u Hz\n",
+ codec.id, codec.format, codec.ch_out, rate);
compress_start(compress);
if (verbose)
- printf("%s: Capturing audio NOW!!!\n", __func__);
+ fprintf(finfo, "%s: Capturing audio NOW!!!\n", __func__);
do {
if (length && size > length - total_read)
@@ -344,7 +357,7 @@ void capture_samples(char *name, unsigned int card, unsigned int device,
}
if (verbose) {
print_time(compress);
- printf("%s: read %d\n", __func__, read);
+ fprintf(finfo, "%s: read %d\n", __func__, read);
}
}
} while (!length || total_read < length);
@@ -362,7 +375,7 @@ void capture_samples(char *name, unsigned int card, unsigned int device,
}
if (verbose)
- printf("%s: exit success\n", __func__);
+ fprintf(finfo, "%s: exit success\n", __func__);
free(buffer);
close(file);
@@ -379,7 +392,7 @@ file_exit:
close(file);
if (verbose)
- printf("%s: exit failure\n", __func__);
+ fprintf(finfo, "%s: exit failure\n", __func__);
exit(EXIT_FAILURE);
}
@@ -408,7 +421,7 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
- if (argc < 2)
+ if (argc < 1)
usage();
verbose = 0;
@@ -456,15 +469,21 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
}
- if (optind >= argc)
- usage();
-
- file = argv[optind];
+ if (optind >= argc) {
+ file = NULL;
+ finfo = fopen("/dev/null", "w");
+ streamed = true;
+ } else {
+ file = argv[optind];
+ finfo = stdout;
+ streamed = false;
+ }
capture_samples(file, card, device, buffer_size, frag, length,
rate, channels, format);
- printf("Finish capturing... Close Normally\n");
+ fprintf(finfo, "Finish capturing... Close Normally\n");
+
exit(EXIT_SUCCESS);
}
--
1.7.2.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [TINYCOMPRESS][PATCH] crec: support streaming output to stdout
2015-02-19 14:55 [TINYCOMPRESS][PATCH] crec: support streaming output to stdout Richard Fitzgerald
@ 2015-02-24 16:36 ` Vinod Koul
2015-02-25 15:30 ` Richard Fitzgerald
0 siblings, 1 reply; 5+ messages in thread
From: Vinod Koul @ 2015-02-24 16:36 UTC (permalink / raw)
To: Richard Fitzgerald; +Cc: alsa-devel, patches
On Thu, Feb 19, 2015 at 02:55:40PM +0000, Richard Fitzgerald wrote:
> From: Ammar Zahid Ali Syed <aali@opensource.wolfsonmicro.com>
>
> It's useful for testing to be able to stream the captured
> audio to stdout instead of having to go via a file.
This looks okay to me. But it fails to apply, what was it generataed against?
--
~Vinod
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [TINYCOMPRESS][PATCH] crec: support streaming output to stdout
2015-02-24 16:36 ` Vinod Koul
@ 2015-02-25 15:30 ` Richard Fitzgerald
2015-03-04 12:57 ` Vinod Koul
0 siblings, 1 reply; 5+ messages in thread
From: Richard Fitzgerald @ 2015-02-25 15:30 UTC (permalink / raw)
To: Vinod Koul; +Cc: alsa-devel, patches
On Tue, Feb 24, 2015 at 10:06:26PM +0530, Vinod Koul wrote:
> On Thu, Feb 19, 2015 at 02:55:40PM +0000, Richard Fitzgerald wrote:
> > From: Ammar Zahid Ali Syed <aali@opensource.wolfsonmicro.com>
> >
> > It's useful for testing to be able to stream the captured
> > audio to stdout instead of having to go via a file.
> This looks okay to me. But it fails to apply, what was it generataed against?
>
It was generated against the master tinycompress branch.
I have just tried to apply it on top of the current head patch
"makefile.linux: allow env to override CROSS_COMPILE and CC" and it
applies ok for me.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [TINYCOMPRESS][PATCH] crec: support streaming output to stdout
2015-02-25 15:30 ` Richard Fitzgerald
@ 2015-03-04 12:57 ` Vinod Koul
2015-03-04 16:27 ` Richard Fitzgerald
0 siblings, 1 reply; 5+ messages in thread
From: Vinod Koul @ 2015-03-04 12:57 UTC (permalink / raw)
To: Richard Fitzgerald; +Cc: alsa-devel, patches
On Wed, Feb 25, 2015 at 03:30:53PM +0000, Richard Fitzgerald wrote:
> On Tue, Feb 24, 2015 at 10:06:26PM +0530, Vinod Koul wrote:
> > On Thu, Feb 19, 2015 at 02:55:40PM +0000, Richard Fitzgerald wrote:
> > > From: Ammar Zahid Ali Syed <aali@opensource.wolfsonmicro.com>
> > >
> > > It's useful for testing to be able to stream the captured
> > > audio to stdout instead of having to go via a file.
> > This looks okay to me. But it fails to apply, what was it generataed against?
> >
>
> It was generated against the master tinycompress branch.
> I have just tried to apply it on top of the current head patch
> "makefile.linux: allow env to override CROSS_COMPILE and CC" and it
> applies ok for me.
That is possible as your tree already knew this patch and how to resolve
this. Anyway I went ahead and have manually applied this one, can you check
if this is fine
--
~Vinod
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [TINYCOMPRESS][PATCH] crec: support streaming output to stdout
2015-03-04 12:57 ` Vinod Koul
@ 2015-03-04 16:27 ` Richard Fitzgerald
0 siblings, 0 replies; 5+ messages in thread
From: Richard Fitzgerald @ 2015-03-04 16:27 UTC (permalink / raw)
To: Vinod Koul; +Cc: alsa-devel, patches
On Wed, Mar 04, 2015 at 06:27:08PM +0530, Vinod Koul wrote:
> On Wed, Feb 25, 2015 at 03:30:53PM +0000, Richard Fitzgerald wrote:
> > On Tue, Feb 24, 2015 at 10:06:26PM +0530, Vinod Koul wrote:
> > > On Thu, Feb 19, 2015 at 02:55:40PM +0000, Richard Fitzgerald wrote:
> > > > From: Ammar Zahid Ali Syed <aali@opensource.wolfsonmicro.com>
> > > >
> > > > It's useful for testing to be able to stream the captured
> > > > audio to stdout instead of having to go via a file.
> > > This looks okay to me. But it fails to apply, what was it generataed against?
> > >
> >
> > It was generated against the master tinycompress branch.
> > I have just tried to apply it on top of the current head patch
> > "makefile.linux: allow env to override CROSS_COMPILE and CC" and it
> > applies ok for me.
> That is possible as your tree already knew this patch and how to resolve
> this. Anyway I went ahead and have manually applied this one, can you check
> if this is fine
I diffed upstream master against my tree and they are identical.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-03-04 16:27 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-19 14:55 [TINYCOMPRESS][PATCH] crec: support streaming output to stdout Richard Fitzgerald
2015-02-24 16:36 ` Vinod Koul
2015-02-25 15:30 ` Richard Fitzgerald
2015-03-04 12:57 ` Vinod Koul
2015-03-04 16:27 ` Richard Fitzgerald
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).