diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2009-01-05 15:27:02 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2009-01-05 15:27:02 +0000 |
commit | f7921690688607ff04f848457891f710935c744b (patch) | |
tree | aa6726f3545e3b83bc7d5d2de740bcf3d456906a /pjmedia/include | |
parent | 9c6bb2d5d790f881bfbd4c59e22a70df41e1631b (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.h | 68 |
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__ */ |