merge
This commit is contained in:
commit
c7565b51b8
1 changed files with 13 additions and 10 deletions
|
@ -7,6 +7,15 @@
|
||||||
static int ifd = -1;
|
static int ifd = -1;
|
||||||
static int sts;
|
static int sts;
|
||||||
|
|
||||||
|
static void
|
||||||
|
flushout(void)
|
||||||
|
{
|
||||||
|
if(ifd >= 0){
|
||||||
|
close(ifd);
|
||||||
|
wait(&sts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static FLAC__StreamDecoderReadStatus
|
static FLAC__StreamDecoderReadStatus
|
||||||
decinput(FLAC__StreamDecoder *dec, FLAC__byte buffer[], size_t *bytes, void *client_data)
|
decinput(FLAC__StreamDecoder *dec, FLAC__byte buffer[], size_t *bytes, void *client_data)
|
||||||
{
|
{
|
||||||
|
@ -44,10 +53,7 @@ decoutput(FLAC__StreamDecoder *dec, FLAC__Frame *frame, FLAC__int32 *buffer[], v
|
||||||
bits = frame->header.bits_per_sample;
|
bits = frame->header.bits_per_sample;
|
||||||
sprintf(fmt, "s%dr%dc%d", bits, rate, chans);
|
sprintf(fmt, "s%dr%dc%d", bits, rate, chans);
|
||||||
|
|
||||||
if(ifd >= 0){
|
flushout();
|
||||||
close(ifd);
|
|
||||||
wait(&sts);
|
|
||||||
}
|
|
||||||
if(pipe(pfd) < 0){
|
if(pipe(pfd) < 0){
|
||||||
fprintf(stderr, "Error creating pipe\n");
|
fprintf(stderr, "Error creating pipe\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -67,6 +73,7 @@ decoutput(FLAC__StreamDecoder *dec, FLAC__Frame *frame, FLAC__int32 *buffer[], v
|
||||||
}
|
}
|
||||||
close(pfd[1]);
|
close(pfd[1]);
|
||||||
ifd = pfd[0];
|
ifd = pfd[0];
|
||||||
|
atexit(flushout);
|
||||||
}
|
}
|
||||||
len = frame->header.blocksize;
|
len = frame->header.blocksize;
|
||||||
b = (bits+7)/8;
|
b = (bits+7)/8;
|
||||||
|
@ -109,6 +116,8 @@ decoutput(FLAC__StreamDecoder *dec, FLAC__Frame *frame, FLAC__int32 *buffer[], v
|
||||||
static void
|
static void
|
||||||
decerror(FLAC__StreamDecoder *dec, FLAC__StreamDecoderErrorStatus status, void *client_data)
|
decerror(FLAC__StreamDecoder *dec, FLAC__StreamDecoderErrorStatus status, void *client_data)
|
||||||
{
|
{
|
||||||
|
fprintf(stderr, "decode error: %s (%d)\n", FLAC__StreamDecoderErrorStatusString[status], status);
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
|
@ -120,11 +129,5 @@ int main(int argc, char *argv[])
|
||||||
FLAC__stream_decoder_init_stream(dec, decinput, NULL, NULL, NULL, NULL, decoutput, NULL, decerror, NULL);
|
FLAC__stream_decoder_init_stream(dec, decinput, NULL, NULL, NULL, NULL, decoutput, NULL, decerror, NULL);
|
||||||
FLAC__stream_decoder_process_until_end_of_stream(dec);
|
FLAC__stream_decoder_process_until_end_of_stream(dec);
|
||||||
FLAC__stream_decoder_finish(dec);
|
FLAC__stream_decoder_finish(dec);
|
||||||
|
|
||||||
if(ifd >= 0){
|
|
||||||
close(ifd);
|
|
||||||
wait(&sts);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue