From 8fd2c262e41a39672c4af9c1836d8d1399e072d3 Mon Sep 17 00:00:00 2001 From: arpi Date: Sat, 18 Jan 2003 17:31:22 +0000 Subject: added af_format_encode() to convert sample format from libaf to mplayer (OSS) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8994 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libaf/af_mp.c | 37 +++++++++++++++++++++++++++++++++++++ libaf/af_mp.h | 1 + 2 files changed, 38 insertions(+) (limited to 'libaf') diff --git a/libaf/af_mp.c b/libaf/af_mp.c index 0ad0f6570e..835cba73a8 100644 --- a/libaf/af_mp.c +++ b/libaf/af_mp.c @@ -41,3 +41,40 @@ int af_format_decode(int ifmt) } return ofmt; } + +/* Encodes the format from libaf format to mplayer (OSS) format */ +int af_format_encode(void* fmtp) +{ + af_data_t* fmt=(af_data_t*) fmtp; + switch(fmt->format&AF_FORMAT_SPECIAL_MASK){ + case 0: // PCM: + if((fmt->format&AF_FORMAT_POINT_MASK)==AF_FORMAT_I){ + if((fmt->format&AF_FORMAT_SIGN_MASK)==AF_FORMAT_SI){ + // signed int PCM: + switch(fmt->bps){ + case 1: return AFMT_S8; + case 2: return (fmt->format&AF_FORMAT_LE) ? AFMT_S16_LE : AFMT_S16_BE; + case 4: return (fmt->format&AF_FORMAT_LE) ? AFMT_S32_LE : AFMT_S32_BE; + } + } else { + // unsigned int PCM: + switch(fmt->bps){ + case 1: return AFMT_U8; + case 2: return (fmt->format&AF_FORMAT_LE) ? AFMT_U16_LE : AFMT_U16_BE; +// case 4: return (fmt->format&AF_FORMAT_LE) ? AFMT_U32_LE : AFMT_U32_BE; + } + } + } else { + // float PCM: + return AFMT_FLOAT; // FIXME? + } + break; + case AF_FORMAT_MU_LAW: return AFMT_MU_LAW; + case AF_FORMAT_A_LAW: return AFMT_A_LAW; + case AF_FORMAT_MPEG2: return AFMT_MPEG; + case AF_FORMAT_AC3: return AFMT_AC3; + case AF_FORMAT_IMA_ADPCM: return AFMT_IMA_ADPCM; + } + return AFMT_S16_LE; // shouldn't happen +} + diff --git a/libaf/af_mp.h b/libaf/af_mp.h index 7e27f801e6..7d3918a55a 100644 --- a/libaf/af_mp.h +++ b/libaf/af_mp.h @@ -22,5 +22,6 @@ /* Decodes the format from mplayer format to libaf format */ extern int af_format_decode(int format); +extern int af_format_encode(void* fmt); #endif /* __af_mp_h__ */ -- cgit v1.2.3