File: linear.c

package info (click to toggle)
mgetty 1.2.1-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,880 kB
  • sloc: ansic: 42,728; sh: 6,487; perl: 6,262; makefile: 1,457; tcl: 756; lisp: 283
file content (82 lines) | stat: -rw-r--r-- 1,587 bytes parent folder | download | duplicates (13)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
 * linear.c
 *
 * Converts pvf <--> linear.
 *
 * $Id: linear.c,v 1.5 1999/03/16 09:59:20 marcs Exp $
 *
 */

#include "../include/voice.h"

int pvftolin (FILE *fd_in, FILE *fd_out, pvf_header *header_in, int is_signed,
 int bits16, int intel)
     {
     int data;

     while (1)
          {
          data = header_in->read_pvf_data(fd_in) >> 8;
          if (feof(fd_in))
               break;

          if (data > 0x7fff)
               data = 0x7fff;

          if (data < -0x8000)
               data = -0x8000;

          if (!is_signed)
               data += 0x8000;

          if (bits16 && intel)
               putc(data & 0xff, fd_out);

          putc((data >> 8), fd_out);

          if (bits16 && !intel)
               putc(data & 0xff, fd_out);

          }

     return(OK);
     }

int lintopvf (FILE *fd_in, FILE *fd_out, pvf_header *header_out,
 int is_signed, int bits16, int intel)
     {
     int data;

     while ((data = getc(fd_in)) != EOF)
          {

          if (bits16)
               {

               if (intel)
                    data |= (getc(fd_in) << 8);
               else
                    {
                    data <<= 8;
                    data |= (getc(fd_in));
                    }

               }
          else
               data = (data << 8);

          if (is_signed)
               {

               if (data > 0x7fff)
                    data -= 0x10000;

               }
          else
               data -= 0x8000;

          header_out->write_pvf_data(fd_out, ((data) << 8));
          }

     return(OK);
     }