ReactOS  0.4.14-dev-342-gdc047f9
msg711.c File Reference
#include <assert.h>
#include <stdarg.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "winnls.h"
#include "mmsystem.h"
#include "mmreg.h"
#include "msacm.h"
#include "msacmdrv.h"
#include "wine/debug.h"
Include dependency graph for msg711.c:

Go to the source code of this file.

Classes

struct  tagAcmG711Data
 
struct  Format
 

Macros

#define SIGN_BIT   (0x80) /* Sign bit for an A-law byte. */
 
#define QUANT_MASK   (0xf) /* Quantization field mask. */
 
#define NSEGS   (8) /* Number of A-law segments. */
 
#define SEG_SHIFT   (4) /* Left shift for segment number. */
 
#define SEG_MASK   (0x70) /* Segment field mask. */
 
#define BIAS   (0x84) /* Bias for linear code. */
 
#define CLIP   8159
 

Typedefs

typedef struct tagAcmG711Data AcmG711Data
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (g711)
 
static LRESULT G711_drvOpen (LPCSTR str)
 
static LRESULT G711_drvClose (DWORD_PTR dwDevID)
 
static DWORD G711_GetFormatIndex (const WAVEFORMATEX *wfx)
 
static short R16 (const unsigned char *src)
 
static void W16 (unsigned char *dst, short s)
 
static short search (int val, const short *table, int size)
 
static unsigned char linear2alaw (int pcm_val)
 
static int alaw2linear (unsigned char a_val)
 
static unsigned char linear2ulaw (short pcm_val)
 
static short ulaw2linear (unsigned char u_val)
 
static unsigned char alaw2ulaw (unsigned char aval)
 
static unsigned char ulaw2alaw (unsigned char uval)
 
static void cvtXXalaw16K (PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
 
static void cvtXX16alawK (PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
 
static void cvtXXulaw16K (PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
 
static void cvtXX16ulawK (PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
 
static void cvtXXalawulawK (PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
 
static void cvtXXulawalawK (PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
 
static LRESULT G711_DriverDetails (PACMDRIVERDETAILSW add)
 
static LRESULT G711_FormatTagDetails (PACMFORMATTAGDETAILSW aftd, DWORD dwQuery)
 
static LRESULT G711_FormatDetails (PACMFORMATDETAILSW afd, DWORD dwQuery)
 
static LRESULT G711_FormatSuggest (PACMDRVFORMATSUGGEST adfs)
 
static void G711_Reset (PACMDRVSTREAMINSTANCE adsi, AcmG711Data *aad)
 
static LRESULT G711_StreamOpen (PACMDRVSTREAMINSTANCE adsi)
 
static LRESULT G711_StreamClose (PACMDRVSTREAMINSTANCE adsi)
 
static LRESULT G711_StreamSize (const ACMDRVSTREAMINSTANCE *adsi, PACMDRVSTREAMSIZE adss)
 
static LRESULT G711_StreamConvert (PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMHEADER adsh)
 
LRESULT CALLBACK G711_DriverProc (DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg, LPARAM dwParam1, LPARAM dwParam2)
 

Variables

static const Format PCM_Formats []
 
static const Format ALaw_Formats []
 
static const Format ULaw_Formats []
 
static const short seg_aend [8] = {0x1F, 0x3F, 0x7F, 0x0FF, 0x1FF, 0x3FF, 0x7FF, 0x0FFF}
 
static const short seg_uend [8] = {0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF}
 
static const unsigned char _u2a [128]
 
static const unsigned char _a2u [128]
 
static const unsigned short _a2l []
 
static const unsigned short _u2l []
 

Macro Definition Documentation

◆ BIAS

#define BIAS   (0x84) /* Bias for linear code. */

Definition at line 395 of file msg711.c.

◆ CLIP

#define CLIP   8159

Definition at line 396 of file msg711.c.

◆ NSEGS

#define NSEGS   (8) /* Number of A-law segments. */

Definition at line 203 of file msg711.c.

◆ QUANT_MASK

#define QUANT_MASK   (0xf) /* Quantization field mask. */

Definition at line 202 of file msg711.c.

◆ SEG_MASK

#define SEG_MASK   (0x70) /* Segment field mask. */

Definition at line 205 of file msg711.c.

◆ SEG_SHIFT

#define SEG_SHIFT   (4) /* Left shift for segment number. */

Definition at line 204 of file msg711.c.

◆ SIGN_BIT

#define SIGN_BIT   (0x80) /* Sign bit for an A-law byte. */

Definition at line 201 of file msg711.c.

Typedef Documentation

◆ AcmG711Data

Function Documentation

◆ alaw2linear()

static int alaw2linear ( unsigned char  a_val)
inlinestatic

Definition at line 389 of file msg711.c.

390 {
391  return (short)_a2l[a_val];
392 }
static const unsigned short _a2l[]
Definition: msg711.c:354

Referenced by cvtXXalaw16K().

◆ alaw2ulaw()

static unsigned char alaw2ulaw ( unsigned char  aval)
inlinestatic

Definition at line 533 of file msg711.c.

534 {
535  aval &= 0xff;
536  return (unsigned char) ((aval & 0x80) ? (0xFF ^ _a2u[aval ^ 0xD5]) :
537  (0x7F ^ _a2u[aval ^ 0x55]));
538 }
static const unsigned char _a2u[128]
Definition: msg711.c:232

Referenced by cvtXXalawulawK().

◆ cvtXX16alawK()

static void cvtXX16alawK ( PACMDRVSTREAMINSTANCE  adsi,
const unsigned char src,
LPDWORD  srcsize,
unsigned char dst,
LPDWORD  dstsize 
)
static

Definition at line 567 of file msg711.c.

570 {
571  DWORD len = min(*srcsize / 2, *dstsize);
572  DWORD i;
573 
574  *srcsize = len * 2;
575  *dstsize = len;
576  for (i = 0; i < len; i++)
577  {
578  *dst++ = linear2alaw(R16(src)); src += 2;
579  }
580 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define min(a, b)
Definition: monoChain.cc:55
static short R16(const unsigned char *src)
Definition: msg711.c:132
static unsigned char linear2alaw(int pcm_val)
Definition: msg711.c:289

Referenced by G711_StreamOpen().

◆ cvtXX16ulawK()

static void cvtXX16ulawK ( PACMDRVSTREAMINSTANCE  adsi,
const unsigned char src,
LPDWORD  srcsize,
unsigned char dst,
LPDWORD  dstsize 
)
static

Definition at line 599 of file msg711.c.

602 {
603  DWORD len = min(*srcsize / 2, *dstsize);
604  DWORD i;
605 
606  *srcsize = len * 2;
607  *dstsize = len;
608  for (i = 0; i < len; i++)
609  {
610  *dst++ = linear2ulaw(R16(src)); src += 2;
611  }
612 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static unsigned char linear2ulaw(short pcm_val)
Definition: msg711.c:428
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define min(a, b)
Definition: monoChain.cc:55
static short R16(const unsigned char *src)
Definition: msg711.c:132

Referenced by G711_StreamOpen().

◆ cvtXXalaw16K()

static void cvtXXalaw16K ( PACMDRVSTREAMINSTANCE  adsi,
const unsigned char src,
LPDWORD  srcsize,
unsigned char dst,
LPDWORD  dstsize 
)
static

Definition at line 550 of file msg711.c.

553 {
554  DWORD len = min(*srcsize, *dstsize / 2);
555  DWORD i;
556  short w;
557 
558  *srcsize = len;
559  *dstsize = len * 2;
560  for (i = 0; i < len; i++)
561  {
562  w = alaw2linear(*src++);
563  W16(dst, w); dst += 2;
564  }
565 }
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
static void W16(unsigned char *dst, short s)
Definition: msg711.c:142
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned long DWORD
Definition: ntddk_ex.h:95
static int alaw2linear(unsigned char a_val)
Definition: msg711.c:389
GLenum GLsizei len
Definition: glext.h:6722
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define min(a, b)
Definition: monoChain.cc:55

Referenced by G711_StreamOpen().

◆ cvtXXalawulawK()

static void cvtXXalawulawK ( PACMDRVSTREAMINSTANCE  adsi,
const unsigned char src,
LPDWORD  srcsize,
unsigned char dst,
LPDWORD  dstsize 
)
static

Definition at line 614 of file msg711.c.

617 {
618  DWORD len = min(*srcsize, *dstsize);
619  DWORD i;
620 
621  *srcsize = len;
622  *dstsize = len;
623 
624  for (i = 0; i < len; i++)
625  *dst++ = alaw2ulaw(*src++);
626 }
static unsigned char alaw2ulaw(unsigned char aval)
Definition: msg711.c:533
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define min(a, b)
Definition: monoChain.cc:55

Referenced by G711_StreamOpen().

◆ cvtXXulaw16K()

static void cvtXXulaw16K ( PACMDRVSTREAMINSTANCE  adsi,
const unsigned char src,
LPDWORD  srcsize,
unsigned char dst,
LPDWORD  dstsize 
)
static

Definition at line 582 of file msg711.c.

585 {
586  DWORD len = min(*srcsize, *dstsize / 2);
587  DWORD i;
588  short w;
589 
590  *srcsize = len;
591  *dstsize = len * 2;
592  for (i = 0; i < len; i++)
593  {
594  w = ulaw2linear(*src++);
595  W16(dst, w); dst += 2;
596  }
597 }
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
static void W16(unsigned char *dst, short s)
Definition: msg711.c:142
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
GLenum src
Definition: glext.h:6340
static short ulaw2linear(unsigned char u_val)
Definition: msg711.c:525
GLenum GLenum dst
Definition: glext.h:6340
#define min(a, b)
Definition: monoChain.cc:55

Referenced by G711_StreamOpen().

◆ cvtXXulawalawK()

static void cvtXXulawalawK ( PACMDRVSTREAMINSTANCE  adsi,
const unsigned char src,
LPDWORD  srcsize,
unsigned char dst,
LPDWORD  dstsize 
)
static

Definition at line 629 of file msg711.c.

632 {
633  DWORD len = min(*srcsize, *dstsize);
634  DWORD i;
635 
636  *srcsize = len;
637  *dstsize = len;
638 
639  for (i = 0; i < len; i++)
640  *dst++ = ulaw2alaw(*src++);
641 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned long DWORD
Definition: ntddk_ex.h:95
static unsigned char ulaw2alaw(unsigned char uval)
Definition: msg711.c:542
GLenum GLsizei len
Definition: glext.h:6722
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define min(a, b)
Definition: monoChain.cc:55

Referenced by G711_StreamOpen().

◆ G711_DriverDetails()

static LRESULT G711_DriverDetails ( PACMDRIVERDETAILSW  add)
static

Definition at line 647 of file msg711.c.

648 {
651  add->wMid = MM_MICROSOFT;
652  add->wPid = MM_MSFT_ACM_G711;
653  add->vdwACM = 0x01000000;
654  add->vdwDriver = 0x01000000;
655  add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
656  add->cFormatTags = 3; /* PCM, G711 A-LAW & MU-LAW */
657  add->cFilterTags = 0;
658  add->hicon = NULL;
659  MultiByteToWideChar( CP_ACP, 0, "Microsoft CCITT G.711", -1,
660  add->szShortName, ARRAY_SIZE( add->szShortName ));
661  MultiByteToWideChar( CP_ACP, 0, "Wine G711 converter", -1,
662  add->szLongName, ARRAY_SIZE( add->szLongName ));
663  MultiByteToWideChar( CP_ACP, 0, "Brought to you by the Wine team...", -1,
664  add->szCopyright, ARRAY_SIZE( add->szCopyright ));
665  MultiByteToWideChar( CP_ACP, 0, "Refer to LICENSE file", -1,
666  add->szLicensing, ARRAY_SIZE( add->szLicensing ));
667  add->szFeatures[0] = 0;
668 
669  return MMSYSERR_NOERROR;
670 }
int add
Definition: i386-dis.c:3122
#define CP_ACP
Definition: compat.h:99
#define ACMDRIVERDETAILS_SUPPORTF_CODEC
Definition: msacm.h:61
#define MM_MSFT_ACM_G711
Definition: mmreg.h:149
#define ACMDRIVERDETAILS_FCCCOMP_UNDEFINED
Definition: msacm.h:59
smooth NULL
Definition: ftsmooth.c:416
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
#define MM_MICROSOFT
Definition: mmreg.h:144
#define ARRAY_SIZE(a)
Definition: main.h:24
#define MultiByteToWideChar
Definition: compat.h:100
#define ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC
Definition: msacm.h:58

Referenced by G711_DriverProc().

◆ G711_DriverProc()

LRESULT CALLBACK G711_DriverProc ( DWORD_PTR  dwDevID,
HDRVR  hDriv,
UINT  wMsg,
LPARAM  dwParam1,
LPARAM  dwParam2 
)

Definition at line 1078 of file msg711.c.

1080 {
1081  TRACE("(%08lx %p %04x %08lx %08lx);\n",
1082  dwDevID, hDriv, wMsg, dwParam1, dwParam2);
1083 
1084  switch (wMsg)
1085  {
1086  case DRV_LOAD: return 1;
1087  case DRV_FREE: return 1;
1088  case DRV_OPEN: return G711_drvOpen((LPSTR)dwParam1);
1089  case DRV_CLOSE: return G711_drvClose(dwDevID);
1090  case DRV_ENABLE: return 1;
1091  case DRV_DISABLE: return 1;
1092  case DRV_QUERYCONFIGURE: return 1;
1093  case DRV_CONFIGURE: MessageBoxA(0, "MS G711 (a-Law & mu-Law) filter !", "Wine Driver", MB_OK); return 1;
1094  case DRV_INSTALL: return DRVCNF_RESTART;
1095  case DRV_REMOVE: return DRVCNF_RESTART;
1096 
1097  case ACMDM_DRIVER_NOTIFY:
1098  /* no caching from other ACM drivers is done so far */
1099  return MMSYSERR_NOERROR;
1100 
1101  case ACMDM_DRIVER_DETAILS:
1102  return G711_DriverDetails((PACMDRIVERDETAILSW)dwParam1);
1103 
1105  return G711_FormatTagDetails((PACMFORMATTAGDETAILSW)dwParam1, dwParam2);
1106 
1107  case ACMDM_FORMAT_DETAILS:
1108  return G711_FormatDetails((PACMFORMATDETAILSW)dwParam1, dwParam2);
1109 
1110  case ACMDM_FORMAT_SUGGEST:
1111  return G711_FormatSuggest((PACMDRVFORMATSUGGEST)dwParam1);
1112 
1113  case ACMDM_STREAM_OPEN:
1114  return G711_StreamOpen((PACMDRVSTREAMINSTANCE)dwParam1);
1115 
1116  case ACMDM_STREAM_CLOSE:
1117  return G711_StreamClose((PACMDRVSTREAMINSTANCE)dwParam1);
1118 
1119  case ACMDM_STREAM_SIZE:
1120  return G711_StreamSize((PACMDRVSTREAMINSTANCE)dwParam1, (PACMDRVSTREAMSIZE)dwParam2);
1121 
1122  case ACMDM_STREAM_CONVERT:
1123  return G711_StreamConvert((PACMDRVSTREAMINSTANCE)dwParam1, (PACMDRVSTREAMHEADER)dwParam2);
1124 
1127  /* this converter is not a hardware driver */
1129  case ACMDM_FILTER_DETAILS:
1130  /* this converter is not a filter */
1131  case ACMDM_STREAM_RESET:
1132  /* only needed for asynchronous driver... we aren't, so just say it */
1133  return MMSYSERR_NOTSUPPORTED;
1134  case ACMDM_STREAM_PREPARE:
1136  /* nothing special to do here... so don't do anything */
1137  return MMSYSERR_NOERROR;
1138 
1139  default:
1140  return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
1141  }
1142 }
#define DRV_DISABLE
Definition: mmsystem.h:123
static LRESULT G711_DriverDetails(PACMDRIVERDETAILSW add)
Definition: msg711.c:647
static LRESULT G711_drvClose(DWORD_PTR dwDevID)
Definition: msg711.c:49
static LRESULT G711_StreamClose(PACMDRVSTREAMINSTANCE adsi)
Definition: msg711.c:968
#define ACMDM_STREAM_RESET
Definition: msacmdrv.h:62
#define DRV_CLOSE
Definition: mmsystem.h:122
#define ACMDM_STREAM_OPEN
Definition: msacmdrv.h:58
#define ACMDM_FORMATTAG_DETAILS
Definition: msacmdrv.h:51
char * LPSTR
Definition: xmlstorage.h:182
#define ACMDM_STREAM_PREPARE
Definition: msacmdrv.h:63
#define ACMDM_STREAM_CLOSE
Definition: msacmdrv.h:59
#define DRV_QUERYCONFIGURE
Definition: mmsystem.h:126
#define DRV_OPEN
Definition: mmsystem.h:121
int WINAPI MessageBoxA(_In_opt_ HWND, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_ UINT)
#define ACMDM_DRIVER_NOTIFY
Definition: msacmdrv.h:45
#define ACMDM_FORMAT_SUGGEST
Definition: msacmdrv.h:53
#define ACMDM_DRIVER_DETAILS
Definition: msacmdrv.h:46
#define ACMDM_STREAM_CONVERT
Definition: msacmdrv.h:61
static LRESULT G711_FormatDetails(PACMFORMATDETAILSW afd, DWORD dwQuery)
Definition: msg711.c:737
#define DRV_LOAD(x)
#define DRVCNF_RESTART
Definition: mmsystem.h:135
#define DRV_REMOVE
Definition: mmsystem.h:128
#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT
Definition: msacmdrv.h:49
#define ACMDM_HARDWARE_WAVE_CAPS_INPUT
Definition: msacmdrv.h:48
#define TRACE(s)
Definition: solgame.cpp:4
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
#define DRV_CONFIGURE
Definition: mmsystem.h:125
#define DRV_FREE
Definition: mmsystem.h:124
#define MMSYSERR_NOTSUPPORTED
Definition: mmsystem.h:104
static LRESULT G711_StreamConvert(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMHEADER adsh)
Definition: msg711.c:1045
#define ACMDM_FILTERTAG_DETAILS
Definition: msacmdrv.h:55
static LRESULT G711_FormatTagDetails(PACMFORMATTAGDETAILSW aftd, DWORD dwQuery)
Definition: msg711.c:676
#define ACMDM_STREAM_UNPREPARE
Definition: msacmdrv.h:64
static LRESULT G711_StreamOpen(PACMDRVSTREAMINSTANCE adsi)
Definition: msg711.c:858
#define DRV_ENABLE
Definition: mmsystem.h:120
static LRESULT G711_StreamSize(const ACMDRVSTREAMINSTANCE *adsi, PACMDRVSTREAMSIZE adss)
Definition: msg711.c:978
static LRESULT G711_FormatSuggest(PACMDRVFORMATSUGGEST adfs)
Definition: msg711.c:793
#define MB_OK
Definition: winuser.h:784
static LRESULT G711_drvOpen(LPCSTR str)
Definition: msg711.c:41
#define DRV_INSTALL
Definition: mmsystem.h:127
LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hDrv, UINT Msg, LPARAM lParam1, LPARAM lParam2)
Definition: driver.c:554
#define ACMDM_FORMAT_DETAILS
Definition: msacmdrv.h:52
#define ACMDM_STREAM_SIZE
Definition: msacmdrv.h:60
#define ACMDM_FILTER_DETAILS
Definition: msacmdrv.h:56

◆ G711_drvClose()

static LRESULT G711_drvClose ( DWORD_PTR  dwDevID)
static

Definition at line 49 of file msg711.c.

50 {
51  return 1;
52 }

Referenced by G711_DriverProc().

◆ G711_drvOpen()

static LRESULT G711_drvOpen ( LPCSTR  str)
static

Definition at line 41 of file msg711.c.

42 {
43  return 1;
44 }

Referenced by G711_DriverProc().

◆ G711_FormatDetails()

static LRESULT G711_FormatDetails ( PACMFORMATDETAILSW  afd,
DWORD  dwQuery 
)
static

Definition at line 737 of file msg711.c.

738 {
739  switch (dwQuery)
740  {
742  if (G711_GetFormatIndex(afd->pwfx) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
743  break;
745  afd->pwfx->wFormatTag = afd->dwFormatTag;
746  switch (afd->dwFormatTag)
747  {
748  case WAVE_FORMAT_PCM:
753  afd->pwfx->nBlockAlign = afd->pwfx->nChannels * 2;
754  afd->pwfx->nAvgBytesPerSec = afd->pwfx->nSamplesPerSec * afd->pwfx->nBlockAlign;
755  break;
756  case WAVE_FORMAT_ALAW:
762  afd->pwfx->nAvgBytesPerSec = afd->pwfx->nSamplesPerSec * afd->pwfx->nChannels;
763  afd->pwfx->cbSize = 0;
764  break;
765  case WAVE_FORMAT_MULAW:
771  afd->pwfx->nAvgBytesPerSec = afd->pwfx->nSamplesPerSec * afd->pwfx->nChannels;
772  afd->pwfx->cbSize = 0;
773  break;
774  default:
775  WARN("Unsupported tag %08x\n", afd->dwFormatTag);
776  return MMSYSERR_INVALPARAM;
777  }
778  break;
779  default:
780  WARN("Unsupported query %08x\n", dwQuery);
781  return MMSYSERR_NOTSUPPORTED;
782  }
784  afd->szFormat[0] = 0; /* let MSACM format this for us... */
785 
786  return MMSYSERR_NOERROR;
787 }
PWAVEFORMATEX pwfx
Definition: msacm.h:507
DWORD nAvgBytesPerSec
Definition: mmreg.h:81
WORD nChannels
Definition: mmreg.h:79
#define WARN(fmt,...)
Definition: debug.h:111
#define ACMDRIVERDETAILS_SUPPORTF_CODEC
Definition: msacm.h:61
int nChannels
Definition: imaadp32.c:63
int nBits
Definition: imaadp32.c:64
static DWORD G711_GetFormatIndex(const WAVEFORMATEX *wfx)
Definition: msg711.c:93
static const Format ALaw_Formats[]
Definition: msg711.c:78
#define WAVE_FORMAT_PCM
Definition: constants.h:425
#define ACM_FORMATDETAILSF_FORMAT
Definition: msacm.h:161
#define WAVE_FORMAT_MULAW
Definition: constants.h:428
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
WCHAR szFormat[ACMFORMATDETAILS_FORMAT_CHARS]
Definition: msacm.h:509
#define MMSYSERR_NOTSUPPORTED
Definition: mmsystem.h:104
WORD wFormatTag
Definition: mmreg.h:78
DWORD dwFormatIndex
Definition: msacm.h:504
#define ACMERR_NOTPOSSIBLE
Definition: msacm.h:36
#define MMSYSERR_INVALPARAM
Definition: mmsystem.h:107
#define ARRAY_SIZE(a)
Definition: main.h:24
DWORD fdwSupport
Definition: msacm.h:506
WORD cbSize
Definition: mmreg.h:84
static const Format PCM_Formats[]
Definition: msg711.c:70
#define WAVE_FORMAT_ALAW
Definition: constants.h:427
static const Format ULaw_Formats[]
Definition: msg711.c:84
DWORD nSamplesPerSec
Definition: mmreg.h:80
WORD nBlockAlign
Definition: mmreg.h:82
#define ACM_FORMATDETAILSF_INDEX
Definition: msacm.h:160
int rate
Definition: imaadp32.c:65
WORD wBitsPerSample
Definition: mmreg.h:83
DWORD dwFormatTag
Definition: msacm.h:505

Referenced by G711_DriverProc().

◆ G711_FormatSuggest()

static LRESULT G711_FormatSuggest ( PACMDRVFORMATSUGGEST  adfs)
static

Definition at line 793 of file msg711.c.

794 {
795  /* some tests ... */
796  if (adfs->cbwfxSrc < sizeof(PCMWAVEFORMAT) ||
797  adfs->cbwfxDst < sizeof(PCMWAVEFORMAT) ||
798  G711_GetFormatIndex(adfs->pwfxSrc) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
799  /* FIXME: should do those tests against the real size (according to format tag */
800 
801  /* If no suggestion for destination, then copy source value */
803  adfs->pwfxDst->nChannels = adfs->pwfxSrc->nChannels;
806 
808  {
809  if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM)
810  adfs->pwfxDst->wBitsPerSample = 8;
811  else
812  adfs->pwfxDst->wBitsPerSample = 16;
813  }
815  {
816  switch (adfs->pwfxSrc->wFormatTag)
817  {
818  case WAVE_FORMAT_PCM: adfs->pwfxDst->wFormatTag = WAVE_FORMAT_ALAW; break;
819  case WAVE_FORMAT_ALAW: adfs->pwfxDst->wFormatTag = WAVE_FORMAT_PCM; break;
820  case WAVE_FORMAT_MULAW: adfs->pwfxDst->wFormatTag = WAVE_FORMAT_PCM; break;
821  }
822  }
823  /* check if result is ok */
824  if (G711_GetFormatIndex(adfs->pwfxDst) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
825 
826  /* recompute other values */
827  switch (adfs->pwfxDst->wFormatTag)
828  {
829  case WAVE_FORMAT_PCM:
830  adfs->pwfxDst->nBlockAlign = adfs->pwfxDst->nChannels * 2;
832  break;
833  case WAVE_FORMAT_ALAW:
834  adfs->pwfxDst->nBlockAlign = adfs->pwfxDst->nChannels;
836  break;
837  case WAVE_FORMAT_MULAW:
838  adfs->pwfxDst->nBlockAlign = adfs->pwfxDst->nChannels;
840  break;
841  }
842 
843  return MMSYSERR_NOERROR;
844 }
#define ACM_FORMATSUGGESTF_NSAMPLESPERSEC
Definition: msacm.h:176
PWAVEFORMATEX pwfxDst
Definition: msacmdrv.h:153
DWORD nAvgBytesPerSec
Definition: mmreg.h:81
WORD nChannels
Definition: mmreg.h:79
#define ACM_FORMATSUGGESTF_WFORMATTAG
Definition: msacm.h:174
static DWORD G711_GetFormatIndex(const WAVEFORMATEX *wfx)
Definition: msg711.c:93
#define WAVE_FORMAT_PCM
Definition: constants.h:425
#define WAVE_FORMAT_MULAW
Definition: constants.h:428
#define ACM_FORMATSUGGESTF_NCHANNELS
Definition: msacm.h:175
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
WORD wFormatTag
Definition: mmreg.h:78
#define ACMERR_NOTPOSSIBLE
Definition: msacm.h:36
PWAVEFORMATEX pwfxSrc
Definition: msacmdrv.h:151
#define WAVE_FORMAT_ALAW
Definition: constants.h:427
DWORD nSamplesPerSec
Definition: mmreg.h:80
WORD nBlockAlign
Definition: mmreg.h:82
WORD wBitsPerSample
Definition: mmreg.h:83
#define ACM_FORMATSUGGESTF_WBITSPERSAMPLE
Definition: msacm.h:177

Referenced by G711_DriverProc().

◆ G711_FormatTagDetails()

static LRESULT G711_FormatTagDetails ( PACMFORMATTAGDETAILSW  aftd,
DWORD  dwQuery 
)
static

Definition at line 676 of file msg711.c.

677 {
678  static const WCHAR szPcm[]={'P','C','M',0};
679  static const WCHAR szALaw[]={'A','-','L','a','w',0};
680  static const WCHAR szULaw[]={'U','-','L','a','w',0};
681 
682  switch (dwQuery)
683  {
685  if (aftd->dwFormatTagIndex >= 3) return ACMERR_NOTPOSSIBLE;
686  break;
688  if (aftd->dwFormatTag == WAVE_FORMAT_UNKNOWN)
689  {
690  aftd->dwFormatTagIndex = 1;
691  break;
692  }
693  /* fall through */
695  switch (aftd->dwFormatTag)
696  {
697  case WAVE_FORMAT_PCM: aftd->dwFormatTagIndex = 0; break;
698  case WAVE_FORMAT_ALAW: aftd->dwFormatTagIndex = 1; break;
699  case WAVE_FORMAT_MULAW: aftd->dwFormatTagIndex = 2; break;
700  default: return ACMERR_NOTPOSSIBLE;
701  }
702  break;
703  default:
704  WARN("Unsupported query %08x\n", dwQuery);
705  return MMSYSERR_NOTSUPPORTED;
706  }
707 
709  switch (aftd->dwFormatTagIndex)
710  {
711  case 0:
713  aftd->cbFormatSize = sizeof(PCMWAVEFORMAT);
715  lstrcpyW(aftd->szFormatTag, szPcm);
716  break;
717  case 1:
719  aftd->cbFormatSize = sizeof(WAVEFORMATEX);
721  lstrcpyW(aftd->szFormatTag, szALaw);
722  break;
723  case 2:
725  aftd->cbFormatSize = sizeof(WAVEFORMATEX);
727  lstrcpyW(aftd->szFormatTag, szULaw);
728  break;
729  }
730  return MMSYSERR_NOERROR;
731 }
#define WAVE_FORMAT_UNKNOWN
Definition: mmreg.h:95
#define WARN(fmt,...)
Definition: debug.h:111
#define ACMDRIVERDETAILS_SUPPORTF_CODEC
Definition: msacm.h:61
struct tWAVEFORMATEX WAVEFORMATEX
Definition: austream.idl:23
struct pcmwaveformat_tag PCMWAVEFORMAT
static const Format ALaw_Formats[]
Definition: msg711.c:78
#define WAVE_FORMAT_PCM
Definition: constants.h:425
#define WAVE_FORMAT_MULAW
Definition: constants.h:428
DWORD cStandardFormats
Definition: msacm.h:534
#define ACM_FORMATTAGDETAILSF_FORMATTAG
Definition: msacm.h:183
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define ACM_FORMATTAGDETAILSF_INDEX
Definition: msacm.h:182
#define MMSYSERR_NOTSUPPORTED
Definition: mmsystem.h:104
#define ACM_FORMATTAGDETAILSF_LARGESTSIZE
Definition: msacm.h:184
DWORD dwFormatTagIndex
Definition: msacm.h:530
#define ACMERR_NOTPOSSIBLE
Definition: msacm.h:36
#define lstrcpyW
Definition: compat.h:414
#define ARRAY_SIZE(a)
Definition: main.h:24
WCHAR szFormatTag[ACMFORMATTAGDETAILS_FORMATTAG_CHARS]
Definition: msacm.h:535
static const Format PCM_Formats[]
Definition: msg711.c:70
#define WAVE_FORMAT_ALAW
Definition: constants.h:427
static const Format ULaw_Formats[]
Definition: msg711.c:84

Referenced by G711_DriverProc().

◆ G711_GetFormatIndex()

static DWORD G711_GetFormatIndex ( const WAVEFORMATEX wfx)
static

Definition at line 93 of file msg711.c.

94 {
95  int i, hi;
96  const Format* fmts;
97 
98  switch (wfx->wFormatTag)
99  {
100  case WAVE_FORMAT_PCM:
101  hi = ARRAY_SIZE(PCM_Formats);
102  fmts = PCM_Formats;
103  break;
104  case WAVE_FORMAT_ALAW:
105  hi = ARRAY_SIZE(ALaw_Formats);
106  fmts = ALaw_Formats;
107  break;
108  case WAVE_FORMAT_MULAW:
109  hi = ARRAY_SIZE(ULaw_Formats);
110  fmts = ULaw_Formats;
111  break;
112  default:
113  return 0xFFFFFFFF;
114  }
115 
116  for (i = 0; i < hi; i++)
117  {
118  if (wfx->nChannels == fmts[i].nChannels &&
119  wfx->nSamplesPerSec == fmts[i].rate &&
120  wfx->wBitsPerSample == fmts[i].nBits)
121  return i;
122  }
123 
124  return 0xFFFFFFFF;
125 }
static const Format ALaw_Formats[]
Definition: msg711.c:78
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define WAVE_FORMAT_PCM
Definition: constants.h:425
#define WAVE_FORMAT_MULAW
Definition: constants.h:428
WORD wBitsPerSample
Definition: audioclient.idl:45
static struct fmt fmts[]
DWORD nSamplesPerSec
Definition: audioclient.idl:42
#define ARRAY_SIZE(a)
Definition: main.h:24
static const Format PCM_Formats[]
Definition: msg711.c:70
#define WAVE_FORMAT_ALAW
Definition: constants.h:427
static const Format ULaw_Formats[]
Definition: msg711.c:84

Referenced by G711_FormatDetails(), G711_FormatSuggest(), and G711_StreamOpen().

◆ G711_Reset()

static void G711_Reset ( PACMDRVSTREAMINSTANCE  adsi,
AcmG711Data aad 
)
static

Definition at line 850 of file msg711.c.

851 {
852 }

Referenced by G711_StreamConvert(), and G711_StreamOpen().

◆ G711_StreamClose()

static LRESULT G711_StreamClose ( PACMDRVSTREAMINSTANCE  adsi)
static

Definition at line 968 of file msg711.c.

969 {
970  HeapFree(GetProcessHeap(), 0, (void*)adsi->dwDriver);
971  return MMSYSERR_NOERROR;
972 }
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
#define GetProcessHeap()
Definition: compat.h:403
DWORD_PTR dwDriver
Definition: msacmdrv.h:107
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by G711_DriverProc().

◆ G711_StreamConvert()

static LRESULT G711_StreamConvert ( PACMDRVSTREAMINSTANCE  adsi,
PACMDRVSTREAMHEADER  adsh 
)
static

Definition at line 1045 of file msg711.c.

1046 {
1047  AcmG711Data* aad = (AcmG711Data*)adsi->dwDriver;
1048  DWORD nsrc = adsh->cbSrcLength;
1049  DWORD ndst = adsh->cbDstLength;
1050 
1051  if (adsh->fdwConvert &
1055  {
1056  FIXME("Unsupported fdwConvert (%08x), ignoring it\n", adsh->fdwConvert);
1057  }
1058  /* ACM_STREAMCONVERTF_BLOCKALIGN
1059  * currently all conversions are block aligned, so do nothing for this flag
1060  * ACM_STREAMCONVERTF_END
1061  * no pending data, so do nothing for this flag
1062  */
1063  if ((adsh->fdwConvert & ACM_STREAMCONVERTF_START))
1064  {
1065  G711_Reset(adsi, aad);
1066  }
1067 
1068  aad->convert(adsi, adsh->pbSrc, &nsrc, adsh->pbDst, &ndst);
1069  adsh->cbSrcLengthUsed = nsrc;
1070  adsh->cbDstLengthUsed = ndst;
1071 
1072  return MMSYSERR_NOERROR;
1073 }
#define ACM_STREAMCONVERTF_BLOCKALIGN
Definition: msacm.h:205
#define ACM_STREAMCONVERTF_END
Definition: msacm.h:207
static void G711_Reset(PACMDRVSTREAMINSTANCE adsi, AcmG711Data *aad)
Definition: msg711.c:850
#define FIXME(fmt,...)
Definition: debug.h:110
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
if(!(yy_init))
Definition: macro.lex.yy.c:714
unsigned long DWORD
Definition: ntddk_ex.h:95
#define ACM_STREAMCONVERTF_START
Definition: msacm.h:206
DWORD_PTR dwDriver
Definition: msacmdrv.h:107
void(* convert)(PACMDRVSTREAMINSTANCE adsi, const unsigned char *, LPDWORD, unsigned char *, LPDWORD)
Definition: msg711.c:56

Referenced by G711_DriverProc().

◆ G711_StreamOpen()

static LRESULT G711_StreamOpen ( PACMDRVSTREAMINSTANCE  adsi)
static

Definition at line 858 of file msg711.c.

859 {
860  AcmG711Data* aad;
861 
863 
864  if (G711_GetFormatIndex(adsi->pwfxSrc) == 0xFFFFFFFF ||
865  G711_GetFormatIndex(adsi->pwfxDst) == 0xFFFFFFFF)
866  return ACMERR_NOTPOSSIBLE;
867 
868  aad = HeapAlloc(GetProcessHeap(), 0, sizeof(AcmG711Data));
869  if (aad == 0) return MMSYSERR_NOMEM;
870 
871  adsi->dwDriver = (DWORD_PTR)aad;
872 
873  if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
875  {
876  goto theEnd;
877  }
878  else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ALAW &&
880  {
881  /* resampling or mono <=> stereo not available
882  * G711 algo only define 16 bit per sample output
883  */
884  if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
885  adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||
886  adsi->pwfxDst->wBitsPerSample != 16)
887  goto theEnd;
888 
889  /* g711 A-Law decoding... */
890  if (adsi->pwfxDst->wBitsPerSample == 16)
891  aad->convert = cvtXXalaw16K;
892  }
893  else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
895  {
896  if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
897  adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||
898  adsi->pwfxSrc->wBitsPerSample != 16)
899  goto theEnd;
900 
901  /* g711 coding... */
902  if (adsi->pwfxSrc->wBitsPerSample == 16)
903  aad->convert = cvtXX16alawK;
904  }
905  else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MULAW &&
907  {
908  /* resampling or mono <=> stereo not available
909  * G711 algo only define 16 bit per sample output
910  */
911  if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
912  adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||
913  adsi->pwfxDst->wBitsPerSample != 16)
914  goto theEnd;
915 
916  /* g711 MU-Law decoding... */
917  if (adsi->pwfxDst->wBitsPerSample == 16)
918  aad->convert = cvtXXulaw16K;
919  }
920  else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
922  {
923  if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
924  adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||
925  adsi->pwfxSrc->wBitsPerSample != 16)
926  goto theEnd;
927 
928  /* g711 coding... */
929  if (adsi->pwfxSrc->wBitsPerSample == 16)
930  aad->convert = cvtXX16ulawK;
931  }
932  else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MULAW &&
934  {
935  if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
936  adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels)
937  goto theEnd;
938 
939  /* MU-Law => A-Law... */
940  aad->convert = cvtXXulawalawK;
941  }
942  else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ALAW &&
944  {
945  if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
946  adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels)
947  goto theEnd;
948 
949  /* A-Law => MU-Law... */
950  aad->convert = cvtXXalawulawK;
951  }
952  else goto theEnd;
953 
954  G711_Reset(adsi, aad);
955 
956  return MMSYSERR_NOERROR;
957 
958  theEnd:
959  HeapFree(GetProcessHeap(), 0, aad);
960  adsi->dwDriver = 0L;
961  return MMSYSERR_NOTSUPPORTED;
962 }
static void cvtXXalaw16K(PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
Definition: msg711.c:550
#define DWORD_PTR
Definition: treelist.c:76
WORD nChannels
Definition: mmreg.h:79
#define assert(x)
Definition: debug.h:53
static DWORD G711_GetFormatIndex(const WAVEFORMATEX *wfx)
Definition: msg711.c:93
static void G711_Reset(PACMDRVSTREAMINSTANCE adsi, AcmG711Data *aad)
Definition: msg711.c:850
#define MMSYSERR_NOMEM
Definition: mmsystem.h:103
#define WAVE_FORMAT_PCM
Definition: constants.h:425
#define WAVE_FORMAT_MULAW
Definition: constants.h:428
static void cvtXXulawalawK(PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
Definition: msg711.c:629
PWAVEFORMATEX pwfxDst
Definition: msacmdrv.h:101
static void cvtXX16ulawK(PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
Definition: msg711.c:599
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static void cvtXX16alawK(PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
Definition: msg711.c:567
#define ACM_STREAMOPENF_ASYNC
Definition: msacm.h:214
static void cvtXXulaw16K(PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
Definition: msg711.c:582
#define MMSYSERR_NOTSUPPORTED
Definition: mmsystem.h:104
WORD wFormatTag
Definition: mmreg.h:78
static const WCHAR L[]
Definition: oid.c:1250
#define ACMERR_NOTPOSSIBLE
Definition: msacm.h:36
DWORD_PTR dwDriver
Definition: msacmdrv.h:107
#define WAVE_FORMAT_ALAW
Definition: constants.h:427
DWORD nSamplesPerSec
Definition: mmreg.h:80
WORD wBitsPerSample
Definition: mmreg.h:83
PWAVEFORMATEX pwfxSrc
Definition: msacmdrv.h:100
static void cvtXXalawulawK(PACMDRVSTREAMINSTANCE adsi, const unsigned char *src, LPDWORD srcsize, unsigned char *dst, LPDWORD dstsize)
Definition: msg711.c:614
void(* convert)(PACMDRVSTREAMINSTANCE adsi, const unsigned char *, LPDWORD, unsigned char *, LPDWORD)
Definition: msg711.c:56
#define HeapFree(x, y, z)
Definition: compat.h:402

Referenced by G711_DriverProc().

◆ G711_StreamSize()

static LRESULT G711_StreamSize ( const ACMDRVSTREAMINSTANCE adsi,
PACMDRVSTREAMSIZE  adss 
)
static

Definition at line 978 of file msg711.c.

979 {
980  switch (adss->fdwSize)
981  {
983  /* cbDstLength => cbSrcLength */
984  if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
985  (adsi->pwfxDst->wFormatTag == WAVE_FORMAT_ALAW ||
987  {
988  adss->cbSrcLength = adss->cbDstLength * 2;
989  }
990  else if ((adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ALAW ||
991  adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MULAW) &&
993  {
994  adss->cbSrcLength = adss->cbDstLength / 2;
995  }
996  else if ((adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ALAW ||
997  adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MULAW) &&
998  (adsi->pwfxDst->wFormatTag == WAVE_FORMAT_ALAW ||
1000  {
1001  adss->cbSrcLength = adss->cbDstLength;
1002  }
1003  else
1004  {
1005  return MMSYSERR_NOTSUPPORTED;
1006  }
1007  break;
1009  /* cbSrcLength => cbDstLength */
1010  if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
1011  (adsi->pwfxDst->wFormatTag == WAVE_FORMAT_ALAW ||
1013  {
1014  adss->cbDstLength = adss->cbSrcLength / 2;
1015  }
1016  else if ((adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ALAW ||
1017  adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MULAW) &&
1019  {
1020  adss->cbDstLength = adss->cbSrcLength * 2;
1021  }
1022  else if ((adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ALAW ||
1023  adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MULAW) &&
1024  (adsi->pwfxDst->wFormatTag == WAVE_FORMAT_ALAW ||
1026  {
1027  adss->cbDstLength = adss->cbSrcLength;
1028  }
1029  else
1030  {
1031  return MMSYSERR_NOTSUPPORTED;
1032  }
1033  break;
1034  default:
1035  WARN("Unsupported query %08x\n", adss->fdwSize);
1036  return MMSYSERR_NOTSUPPORTED;
1037  }
1038  return MMSYSERR_NOERROR;
1039 }
#define ACM_STREAMSIZEF_DESTINATION
Definition: msacm.h:218
#define WARN(fmt,...)
Definition: debug.h:111
#define WAVE_FORMAT_PCM
Definition: constants.h:425
#define WAVE_FORMAT_MULAW
Definition: constants.h:428
PWAVEFORMATEX pwfxDst
Definition: msacmdrv.h:101
#define MMSYSERR_NOERROR
Definition: mmsystem.h:96
#define ACM_STREAMSIZEF_SOURCE
Definition: msacm.h:217
#define MMSYSERR_NOTSUPPORTED
Definition: mmsystem.h:104
WORD wFormatTag
Definition: mmreg.h:78
#define WAVE_FORMAT_ALAW
Definition: constants.h:427
PWAVEFORMATEX pwfxSrc
Definition: msacmdrv.h:100

Referenced by G711_DriverProc().

◆ linear2alaw()

static unsigned char linear2alaw ( int  pcm_val)
inlinestatic

Definition at line 289 of file msg711.c.

291 {
292  int mask; /* changed from "short" *drago* */
293  int seg; /* changed from "short" *drago* */
294  unsigned char aval;
295 
296  pcm_val = pcm_val >> 3;
297 
298  if (pcm_val >= 0) {
299  mask = 0xD5; /* sign (7th) bit = 1 */
300  } else {
301  mask = 0x55; /* sign bit = 0 */
302  pcm_val = -pcm_val - 1;
303  }
304 
305  /* Convert the scaled magnitude to segment number. */
306  seg = search(pcm_val, seg_aend, 8);
307 
308  /* Combine the sign, segment, and quantization bits. */
309 
310  if (seg >= 8) /* out of range, return maximum value. */
311  return (unsigned char) (0x7F ^ mask);
312  else {
313  aval = (unsigned char) seg << SEG_SHIFT;
314  if (seg < 2)
315  aval |= (pcm_val >> 1) & QUANT_MASK;
316  else
317  aval |= (pcm_val >> seg) & QUANT_MASK;
318  return (aval ^ mask);
319  }
320 }
static short search(int val, const short *table, int size)
Definition: msg711.c:255
#define QUANT_MASK
Definition: msg711.c:202
#define SEG_SHIFT
Definition: msg711.c:204
GLenum GLint GLuint mask
Definition: glext.h:6028
unsigned char
Definition: typeof.h:29
seg
Definition: i386-dis.c:3857
static const short seg_aend[8]
Definition: msg711.c:207

Referenced by cvtXX16alawK().

◆ linear2ulaw()

static unsigned char linear2ulaw ( short  pcm_val)
inlinestatic

Definition at line 428 of file msg711.c.

429 {
430  short mask;
431  short seg;
432  unsigned char uval;
433 
434  /* Get the sign and the magnitude of the value. */
435  pcm_val = pcm_val >> 2;
436  if (pcm_val < 0) {
437  pcm_val = -pcm_val;
438  mask = 0x7F;
439  } else {
440  mask = 0xFF;
441  }
442  if ( pcm_val > CLIP ) pcm_val = CLIP; /* clip the magnitude */
443  pcm_val += (BIAS >> 2);
444 
445  /* Convert the scaled magnitude to segment number. */
446  seg = search(pcm_val, seg_uend, 8);
447 
448  /*
449  * Combine the sign, segment, quantization bits;
450  * and complement the code word.
451  */
452  if (seg >= 8) /* out of range, return maximum value. */
453  return (unsigned char) (0x7F ^ mask);
454  else {
455  uval = (unsigned char) (seg << 4) | ((pcm_val >> (seg + 1)) & 0xF);
456  return (uval ^ mask);
457  }
458 }
static short search(int val, const short *table, int size)
Definition: msg711.c:255
#define BIAS
Definition: msg711.c:395
GLenum GLint GLuint mask
Definition: glext.h:6028
Definition: clipboard.h:3
unsigned char
Definition: typeof.h:29
seg
Definition: i386-dis.c:3857
static const short seg_uend[8]
Definition: msg711.c:208
#define CLIP
Definition: msg711.c:396

Referenced by cvtXX16ulawK().

◆ R16()

static short R16 ( const unsigned char src)
inlinestatic

Definition at line 132 of file msg711.c.

133 {
134  return (short)((unsigned short)src[0] | ((unsigned short)src[1] << 8));
135 }
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
Definition: typeof.h:93
GLenum src
Definition: glext.h:6340

Referenced by cvtXX16alawK(), and cvtXX16ulawK().

◆ search()

static short search ( int  val,
const short table,
int  size 
)
static

Definition at line 255 of file msg711.c.

259 {
260  int i; /* changed from "short" *drago* */
261 
262  for (i = 0; i < size; i++) {
263  if (val <= *table++)
264  return (i);
265  }
266  return (size);
267 }
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLuint GLfloat * val
Definition: glext.h:7180
GLsizeiptr size
Definition: glext.h:5919

Referenced by _test_anchor_put_search(), _test_anchor_search(), add_favs_to_menu(), adns__consistency(), alloc_inf_info(), Array_indexOf(), computeIsolatingRunsSet(), CredReadW(), FileQueryFiles(), basic_string< char, char_traits< char >, allocator< char > >::find(), rope< _CharT, _Alloc >::find(), ldap_get_next_page(), ldap_get_next_page_s(), ldap_get_paged_count(), ldap_search_abandon_page(), linear2alaw(), linear2ulaw(), main(), MSVCRT_locale_to_LCID(), MyFileExists(), BtrfsContextMenu::reflink_copy(), SearchTest::search0(), SearchTest::search1(), SearchTest::search2(), test_EnumContexts(), test_EnumDocumentMgr(), test_StrStrA(), test_StrStrIA(), test_StrStrIW(), test_StrStrNIW(), test_StrStrNW(), and test_StrStrW().

◆ ulaw2alaw()

static unsigned char ulaw2alaw ( unsigned char  uval)
inlinestatic

Definition at line 542 of file msg711.c.

543 {
544  uval &= 0xff;
545  return (uval & 0x80) ? (0xD5 ^ (_u2a[0xFF ^ uval] - 1)) : (0x55 ^ (_u2a[0x7F ^ uval] - 1));
546 }
static const unsigned char _u2a[128]
Definition: msg711.c:211

Referenced by cvtXXulawalawK().

◆ ulaw2linear()

static short ulaw2linear ( unsigned char  u_val)
inlinestatic

Definition at line 525 of file msg711.c.

526 {
527  return (short)_u2l[u_val];
528 }
static const unsigned short _u2l[]
Definition: msg711.c:491

Referenced by cvtXXulaw16K().

◆ W16()

static void W16 ( unsigned char dst,
short  s 
)
inlinestatic

Definition at line 142 of file msg711.c.

143 {
144  dst[0] = LOBYTE(s);
145  dst[1] = HIBYTE(s);
146 }
#define LOBYTE(W)
Definition: jmemdos.c:487
#define HIBYTE(W)
Definition: jmemdos.c:486
GLdouble s
Definition: gl.h:2039
GLenum GLenum dst
Definition: glext.h:6340

Referenced by cvtXXalaw16K(), and cvtXXulaw16K().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( g711  )

Variable Documentation

◆ _a2l

const unsigned short _a2l[]
static

Definition at line 354 of file msg711.c.

Referenced by alaw2linear().

◆ _a2u

const unsigned char _a2u[128]
static
Initial value:
= {
1, 3, 5, 7, 9, 11, 13, 15,
16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31,
32, 32, 33, 33, 34, 34, 35, 35,
36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48, 48, 49, 49,
50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 64,
65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80,
80, 81, 82, 83, 84, 85, 86, 87,
88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119,
120, 121, 122, 123, 124, 125, 126, 127}

Definition at line 232 of file msg711.c.

Referenced by alaw2ulaw().

◆ _u2a

const unsigned char _u2a[128]
static
Initial value:
= {
1, 1, 2, 2, 3, 3, 4, 4,
5, 5, 6, 6, 7, 7, 8, 8,
9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24,
25, 27, 29, 31, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44,
46, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62,
64, 65, 66, 67, 68, 69, 70, 71,
72, 73, 74, 75, 76, 77, 78, 79,
80, 82, 83, 84, 85, 86, 87, 88,
89, 90, 91, 92, 93, 94, 95, 96,
97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112,
113, 114, 115, 116, 117, 118, 119, 120,
121, 122, 123, 124, 125, 126, 127, 128}

Definition at line 211 of file msg711.c.

Referenced by ulaw2alaw().

◆ _u2l

const unsigned short _u2l[]
static

Definition at line 491 of file msg711.c.

Referenced by ulaw2linear().

◆ ALaw_Formats

const Format ALaw_Formats[]
static
Initial value:
=
{
{1, 8, 8000}, {2, 8, 8000}, {1, 8, 11025}, {2, 8, 11025},
{1, 8, 22050}, {2, 8, 22050}, {1, 8, 44100}, {2, 8, 44100},
}

Definition at line 78 of file msg711.c.

Referenced by G711_FormatDetails(), G711_FormatTagDetails(), and G711_GetFormatIndex().

◆ PCM_Formats

const Format PCM_Formats[]
static
Initial value:
=
{
{1, 16, 8000}, {2, 16, 8000},
{1, 16, 11025}, {2, 16, 11025},
{1, 16, 22050}, {2, 16, 22050},
{1, 16, 44100}, {2, 16, 44100},
}

Definition at line 70 of file msg711.c.

Referenced by G711_FormatDetails(), G711_FormatTagDetails(), and G711_GetFormatIndex().

◆ seg_aend

const short seg_aend[8] = {0x1F, 0x3F, 0x7F, 0x0FF, 0x1FF, 0x3FF, 0x7FF, 0x0FFF}
static

Definition at line 207 of file msg711.c.

Referenced by linear2alaw().

◆ seg_uend

const short seg_uend[8] = {0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF}
static

Definition at line 208 of file msg711.c.

Referenced by linear2ulaw().

◆ ULaw_Formats

const Format ULaw_Formats[]
static
Initial value:
=
{
{1, 8, 8000}, {2, 8, 8000}, {1, 8, 11025}, {2, 8, 11025},
{1, 8, 22050}, {2, 8, 22050}, {1, 8, 44100}, {2, 8, 44100},
}

Definition at line 84 of file msg711.c.

Referenced by G711_FormatDetails(), G711_FormatTagDetails(), and G711_GetFormatIndex().