1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Use of this source code is governed by a BSD-style license
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  that can be found in the LICENSE file in the root of the source
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  tree. An additional intellectual property rights grant can be found
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  in the file PATENTS.  All contributing project authors may
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_PCM16B_MAIN_INTERFACE_PCM16B_H_
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_MODULES_AUDIO_CODING_CODECS_PCM16B_MAIN_INTERFACE_PCM16B_H_
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Define the fixpoint numeric formats
15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
17a11402cdbf99a12d58421d5b446982e8d30c40caandresp@webrtc.org#include "webrtc/typedefs.h"
18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef __cplusplus
20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgextern "C" {
21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/****************************************************************************
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * WebRtcPcm16b_EncodeW16(...)
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * "Encode" a sample vector to 16 bit linear (Encoded standard is big endian)
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Input:
2962772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org *    - speechIn16b    : Input speech vector
3062772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org *    - length_samples : Number of samples in speech vector
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Output:
3362772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org *    - speechOut16b   : Encoded data vector (big endian 16 bit)
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
3562772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org * Returned value      : Size in bytes of speechOut16b
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3862f3144da522a37040a20503758655db3b3af9e2bjornv@webrtc.orgint16_t WebRtcPcm16b_EncodeW16(const int16_t* speechIn16b,
3962772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org                               int16_t length_samples,
4062f3144da522a37040a20503758655db3b3af9e2bjornv@webrtc.org                               int16_t* speechOut16b);
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/****************************************************************************
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * WebRtcPcm16b_Encode(...)
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * "Encode" a sample vector to 16 bit linear (Encoded standard is big endian)
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Input:
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *		- speech16b		: Input speech vector
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *		- len			: Number of samples in speech vector
50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Output:
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *		- speech8b		: Encoded data vector (big endian 16 bit)
53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Returned value		: Size in bytes of speech8b
55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
57fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint16_t WebRtcPcm16b_Encode(int16_t *speech16b,
58fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org                            int16_t len,
59fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org                            unsigned char *speech8b);
60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/****************************************************************************
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * WebRtcPcm16b_DecodeW16(...)
63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * "Decode" a vector to 16 bit linear (Encoded standard is big endian)
65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Input:
6762772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org *    - speechIn16b  : Encoded data vector (big endian 16 bit)
6862772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org *    - length_bytes : Number of bytes in speechIn16b
69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Output:
7162772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org *    - speechOut16b : Decoded speech vector
72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
7362772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org * Returned value    : Samples in speechOut16b
74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
76fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint16_t WebRtcPcm16b_DecodeW16(void *inst,
77fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org                               int16_t *speechIn16b,
7862772e9d8c7b2992ed981e3505726b119c0fe356bjornv@webrtc.org                               int16_t length_bytes,
79fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org                               int16_t *speechOut16b,
80fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org                               int16_t* speechType);
81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/****************************************************************************
83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * WebRtcPcm16b_Decode(...)
84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * "Decode" a vector to 16 bit linear (Encoded standard is big endian)
86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Input:
88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *		- speech8b		: Encoded data vector (big endian 16 bit)
89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *		- len			: Number of bytes in speech8b
90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Output:
92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *		- speech16b		: Decoded speech vector
93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Returned value		: Samples in speech16b
95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
98fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint16_t WebRtcPcm16b_Decode(unsigned char *speech8b,
99fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org                            int16_t len,
100fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org                            int16_t *speech16b);
101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef __cplusplus
103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif /* PCM16B */
107