view pcm-study/pcm-frag-extr.c @ 14:e7f43262efa1

rtp-stream-dump: add hex dump option
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 28 Jul 2024 01:53:41 +0000
parents b5e73d5ebcd1
children
line wrap: on
line source

/*
 * This program extracts a fragment of some N 160-sample frames from a G.711
 * 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[160];
	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, 1, 160, inf);
		if (cc > 0)
			fwrite(buf, 1, cc, outf);
		if (cc < 160) {
			fprintf(stderr, "warning: short read from %s\n",
				argv[1]);
			break;
		}
	}
	exit(0);
}