ftp.nice.ch/pub/next/unix/audio/sms.N.bs.tar.gz#/sms/smsResample/smsResample.c

This is smsResample.c in view mode; [Download] [Up]

/*
 *
 *    main program for smsResample
 *
 */
#include "../sms.h"
#define USAGE "Usage: smsResample [factor] <inputSmsFile> <outputSmsFile>"

void main (int argc, char *argv[])
{
	char *pChInputSmsFile = NULL, *pChOutputSmsFile = NULL, *pChProgramName;
	SMSHeader *pSmsHeader;
	char *pOldRecord, *pNewRecord;
	int iError, iFactor, i;
  
	/* get user arguments */
	pChProgramName = argv[0];
	if (argc != 4) 
		quit(USAGE);   
    
	if (sscanf(argv[1],"%d",&iFactor) < 1)
		quit("Invalid factor");

	pChInputSmsFile = argv[2];
	pChOutputSmsFile = argv[3];

	if ((iError = readSmsFile (pChInputSmsFile, &pSmsHeader)) < 0)
	{
		if (iError == SMS_NOPEN)
			quit ("cannot open file");
		if (iError == SMS_RDERR)
			quit("read error");
		if (iError == SMS_NSMS)
			quit ("not an SMS file");
		if (iError == SMS_MALLOC)
			quit ("cannot allocate memory");
			quit ("error");
	}	    
  
	pOldRecord = (char *) pSmsHeader->pChDataRecords + 
		(iFactor * pSmsHeader->iRecordBSize);
	pNewRecord = (char *) pSmsHeader->pChDataRecords + 
		pSmsHeader->iRecordBSize;

	for (i = 1 + iFactor; i < pSmsHeader->nRecords; i += iFactor)
	{
		memcpy ((char *) pNewRecord, (char *) pOldRecord, 
		        pSmsHeader->iRecordBSize);
		pOldRecord += (iFactor * pSmsHeader->iRecordBSize);
		pNewRecord += pSmsHeader->iRecordBSize;
	}
  
	pSmsHeader->nRecords /= iFactor;
	pSmsHeader->iFrameRate /= iFactor;
  
	writeSmsFile (pChOutputSmsFile, pSmsHeader);

	free (pSmsHeader);
	exit (0);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.