FreeCalypso > hg > rtp-debug-utils
view pcm-study/pcm16-frag-extr.c @ 17:ab18adf989e3 default tip
pcm-study: new program pcm16-frag-extr
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 29 Oct 2024 00:32:33 +0000 |
parents | pcm-study/pcm-frag-extr.c@b5e73d5ebcd1 |
children |
line wrap: on
line source
/* * This program extracts a fragment of some N 160-sample frames from a PCM16 * recording file, starting at an arbitrary offset that may not be frame- * aligned, and saves this fragment to a new binary file. */ #include <stdio.h> #include <stdint.h> #include <stdlib.h> main(argc, argv) char **argv; { FILE *inf, *outf; u_long start_offset; unsigned n, nframes; uint8_t buf[320]; int cc; if (argc != 5) { fprintf(stderr, "usage: %s pcm-src-file start-offset N-frames pcm-out-file\n", argv[0]); exit(1); } inf = fopen(argv[1], "r"); if (!inf) { perror(argv[1]); exit(1); } start_offset = strtoul(argv[2], 0, 0); fseek(inf, start_offset, SEEK_SET); nframes = strtoul(argv[3], 0, 0); outf = fopen(argv[4], "w"); if (!outf) { perror(argv[4]); exit(1); } for (n = 0; n < nframes; n++) { cc = fread(buf, 2, 160, inf); if (cc > 0) fwrite(buf, 2, cc, outf); if (cc < 160) { fprintf(stderr, "warning: short read from %s\n", argv[1]); break; } } exit(0); }