summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/ad_faad.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-02-07 21:04:35 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-02-07 21:04:35 +0000
commitaf229ffaea5c8134b0351841418fdbeb79954f70 (patch)
tree0ea3501a7822698292e1daf0661cd0fe28eda06d /libmpcodecs/ad_faad.c
parentd08be7cba9f842673f15069ae9c446c5418f2f0a (diff)
downloadmpv-af229ffaea5c8134b0351841418fdbeb79954f70.tar.bz2
mpv-af229ffaea5c8134b0351841418fdbeb79954f70.tar.xz
libfaad2 v1.0, v1.1, v1.2 detection, and API change workaround in ad_faad.c
based on patch by Andre Schulz <andre@0wnage.de> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9322 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/ad_faad.c')
-rw-r--r--libmpcodecs/ad_faad.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libmpcodecs/ad_faad.c b/libmpcodecs/ad_faad.c
index 9fd5720381..02f9bccd51 100644
--- a/libmpcodecs/ad_faad.c
+++ b/libmpcodecs/ad_faad.c
@@ -85,8 +85,13 @@ static int init(sh_audio_t *sh)
sh->a_in_buffer_len = demux_read_data(sh->ds, sh->a_in_buffer, sh->a_in_buffer_size);
/* init the codec */
+#if (FAADVERSION <= 11)
faac_init = faacDecInit(faac_hdec, sh->a_in_buffer,
&faac_samplerate, &faac_channels);
+#else
+ faac_init = faacDecInit(faac_hdec, sh->a_in_buffer,
+ sh->a_in_buffer_len, &faac_samplerate, &faac_channels);
+#endif
sh->a_in_buffer_len -= (faac_init > 0)?faac_init:0; // how many bytes init consumed
// XXX FIXME: shouldn't we memcpy() here in a_in_buffer ?? --A'rpi
@@ -164,7 +169,12 @@ static int decode_audio(sh_audio_t *sh,unsigned char *buf,int minlen,int maxlen)
if(!sh->codecdata_len){
// raw aac stream:
do {
+#if (FAADVERSION <= 11)
faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, sh->a_in_buffer+j);
+#else
+ faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, sh->a_in_buffer+j, sh->a_in_buffer_len);
+#endif
+
/* update buffer index after faacDecDecode */
if(faac_finfo.bytesconsumed >= sh->a_in_buffer_len) {
sh->a_in_buffer_len=0;
@@ -184,7 +194,11 @@ static int decode_audio(sh_audio_t *sh,unsigned char *buf,int minlen,int maxlen)
unsigned char* bufptr=NULL;
int buflen=ds_get_packet(sh->ds, &bufptr);
if(buflen<=0) break;
+#if (FAADVERSION <= 11)
faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, bufptr);
+#else
+ faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, bufptr, buflen);
+#endif
// printf("FAAC decoded %d of %d (err: %d) \n",faac_finfo.bytesconsumed,buflen,faac_finfo.error);
}