summaryrefslogtreecommitdiff
path: root/pjmedia/include
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-01-05 15:27:02 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-01-05 15:27:02 +0000
commitf7921690688607ff04f848457891f710935c744b (patch)
treeaa6726f3545e3b83bc7d5d2de740bcf3d456906a /pjmedia/include
parent9c6bb2d5d790f881bfbd4c59e22a70df41e1631b (diff)
Ticket #680:
- Fixed Symbian APS G.711 frame size variation issue. - Fixed APS implementation to regard 'samples_per_frame' setting. - Added APIs for u-law/a-law <-> PCM bulk conversions. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2416 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/include')
-rw-r--r--pjmedia/include/pjmedia/alaw_ulaw.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/pjmedia/include/pjmedia/alaw_ulaw.h b/pjmedia/include/pjmedia/alaw_ulaw.h
index 7f7d80cf..3b97ad3d 100644
--- a/pjmedia/include/pjmedia/alaw_ulaw.h
+++ b/pjmedia/include/pjmedia/alaw_ulaw.h
@@ -139,6 +139,74 @@ PJ_DECL(unsigned char) pjmedia_ulaw2alaw(unsigned char uval);
#endif
+/**
+ * Encode 16-bit linear PCM data to 8-bit U-Law data.
+ *
+ * @param dst Destination buffer for 8-bit U-Law data.
+ * @param src Source, 16-bit linear PCM data.
+ * @param len Number of samples.
+ */
+PJ_INLINE(void) pjmedia_ulaw_encode(pj_uint8_t *dst, const pj_int16_t *src,
+ pj_size_t len)
+{
+ const pj_int16_t *end = src + len;
+
+ while (src < end) {
+ *dst++ = pjmedia_linear2ulaw(*src++);
+ }
+}
+
+/**
+ * Encode 16-bit linear PCM data to 8-bit A-Law data.
+ *
+ * @param dst Destination buffer for 8-bit A-Law data.
+ * @param src Source, 16-bit linear PCM data.
+ * @param len Number of samples.
+ */
+PJ_INLINE(void) pjmedia_alaw_encode(pj_uint8_t *dst, const pj_int16_t *src,
+ pj_size_t len)
+{
+ const pj_int16_t *end = src + len;
+
+ while (src < end) {
+ *dst++ = pjmedia_linear2alaw(*src++);
+ }
+}
+
+/**
+ * Decode 8-bit U-Law data to 16-bit linear PCM data.
+ *
+ * @param dst Destination buffer for 16-bit PCM data.
+ * @param src Source, 8-bit U-Law data.
+ * @param len Number of samples.
+ */
+PJ_INLINE(void) pjmedia_ulaw_decode(pj_int16_t *dst, const pj_uint8_t *src,
+ pj_size_t len)
+{
+ const pj_uint8_t *end = src + len;
+
+ while (src < end) {
+ *dst++ = pjmedia_ulaw2linear(*src++);
+ }
+}
+
+/**
+ * Decode 8-bit A-Law data to 16-bit linear PCM data.
+ *
+ * @param dst Destination buffer for 16-bit PCM data.
+ * @param src Source, 8-bit A-Law data.
+ * @param len Number of samples.
+ */
+PJ_INLINE(void) pjmedia_alaw_decode(pj_int16_t *dst, const pj_uint8_t *src,
+ pj_size_t len)
+{
+ const pj_uint8_t *end = src + len;
+
+ while (src < end) {
+ *dst++ = pjmedia_alaw2linear(*src++);
+ }
+}
+
PJ_END_DECL
#endif /* __PJMEDIA_ALAW_ULAW_H__ */