4.4BSD/usr/src/contrib/mh-6.8/miscellany/multi-media/SPARC/SOUND.diff

*** :raw2audio.c	Thu Oct 11 13:12:39 1990
--- raw2audio.c	Fri Nov  1 17:20:00 1991
***************
*** 23,29 ****
  /* Local variables */
  char *prog;
  char prog_desc[] = "Convert raw data to audio file format";
! char prog_opts[] = "o:s:p:e:c:i:f?";	/* getopt() flags */
  
  char		*Stdin = "stdin";
  char		*Stdout = "stdout";
--- 23,29 ----
  /* Local variables */
  char *prog;
  char prog_desc[] = "Convert raw data to audio file format";
! char prog_opts[] = "o:s:p:e:c:i:fF?";	/* getopt() flags */
  
  char		*Stdin = "stdin";
  char		*Stdout = "stdout";
***************
*** 34,39 ****
--- 34,40 ----
  char		*Info = NULL;		/* pointer to info data */
  unsigned	Ilen = 0;		/* length of info data */
  int		Force = 0;		/* rewrite file header, if present */
+ int		Strip = 0;		/* strip header */
  unsigned	Offset = 0;		/* byte offset into raw data */
  Audio_hdr	Hdr;			/* audio header structure */
  char		*ofile;			/* output temporary file name */
***************
*** 139,144 ****
--- 140,148 ----
  		Info = optarg;		/* set information string */
  		Ilen = strlen(Info);
  		break;
+ 	case 'F':
+ 		Strip++;		/* strip header */
+ 		/* and fall... */
  	case 'f':
  		Force++;		/* force header rewrite */
  		break;
***************
*** 161,166 ****
--- 165,174 ----
  			if (Hdr.bytes_per_unit < 4)
  				err++;
  			break;
+ 		case AUDIO_ENCODING_ADPCM:
+ 			if (Hdr.bytes_per_unit != 1)
+ 				err++;
+ 			break;
  		}
  		if (err > 0) {
  			Error(stderr, "%s: encoding/precision mismatch\n",
***************
*** 317,322 ****
--- 325,331 ----
  		/* Write the audio file header first. */
  		if (Hdr.data_size != AUDIO_UNKNOWN_SIZE)
  			Hdr.data_size -= Offset;
+ 		if (Strip) goto copydata;
  		err = audio_write_filehdr(ofd, &Hdr, Info, Ilen);
  		if (err != AUDIO_SUCCESS)
  			goto writeerror;
***************
*** 435,443 ****
  		*dst = AUDIO_ENCODING_LINEAR;
  	else if (strncmp(str, "FLOAT", i) == 0)
  		*dst = AUDIO_ENCODING_FLOAT;
  	else {
  		Error(stderr,
! 		    "%s: encoding must be one of: ULAW, LINEAR, FLOAT\n", prog);
  		return (1);
  	}
  	return (0);
--- 444,454 ----
  		*dst = AUDIO_ENCODING_LINEAR;
  	else if (strncmp(str, "FLOAT", i) == 0)
  		*dst = AUDIO_ENCODING_FLOAT;
+ 	else if (strncmp(str, "ADPCM", i) == 0)
+ 		*dst = AUDIO_ENCODING_ADPCM;
  	else {
  		Error(stderr,
! 		    "%s: encoding must be one of: ULAW, LINEAR, FLOAT, ADPCM\n", prog);
  		return (1);
  	}
  	return (0);
*** multimedia/:audio_hdr.h	Thu Oct 11 13:12:45 1990
--- multimedia/audio_hdr.h	Fri Nov  1 09:47:12 1991
***************
*** 72,77 ****
--- 72,78 ----
  #define	AUDIO_ENCODING_ALAW	(2)	/* ISDN A-law */
  #define	AUDIO_ENCODING_LINEAR	(3)	/* PCM 2's-complement (0-center) */
  #define	AUDIO_ENCODING_FLOAT	(4)	/* IEEE float (-1. <-> +1.) */
+ #define	AUDIO_ENCODING_ADPCM	(23)	/* CCITT G.721*/
  
  
  /* Value used for indeterminate size (e.g., data passed through a pipe) */