Mercurial > mplayer.hg
comparison libmpcodecs/ad_faad.c @ 9321:6fa743f3094b
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>
author | arpi |
---|---|
date | Fri, 07 Feb 2003 21:04:35 +0000 |
parents | 7ee8239bfcc0 |
children | bae3e8c81ada |
comparison
equal
deleted
inserted
replaced
9320:c5bb811fa7fc | 9321:6fa743f3094b |
---|---|
83 #endif | 83 #endif |
84 | 84 |
85 sh->a_in_buffer_len = demux_read_data(sh->ds, sh->a_in_buffer, sh->a_in_buffer_size); | 85 sh->a_in_buffer_len = demux_read_data(sh->ds, sh->a_in_buffer, sh->a_in_buffer_size); |
86 | 86 |
87 /* init the codec */ | 87 /* init the codec */ |
88 #if (FAADVERSION <= 11) | |
88 faac_init = faacDecInit(faac_hdec, sh->a_in_buffer, | 89 faac_init = faacDecInit(faac_hdec, sh->a_in_buffer, |
89 &faac_samplerate, &faac_channels); | 90 &faac_samplerate, &faac_channels); |
91 #else | |
92 faac_init = faacDecInit(faac_hdec, sh->a_in_buffer, | |
93 sh->a_in_buffer_len, &faac_samplerate, &faac_channels); | |
94 #endif | |
90 | 95 |
91 sh->a_in_buffer_len -= (faac_init > 0)?faac_init:0; // how many bytes init consumed | 96 sh->a_in_buffer_len -= (faac_init > 0)?faac_init:0; // how many bytes init consumed |
92 // XXX FIXME: shouldn't we memcpy() here in a_in_buffer ?? --A'rpi | 97 // XXX FIXME: shouldn't we memcpy() here in a_in_buffer ?? --A'rpi |
93 | 98 |
94 } else { // We have ES DS in codecdata | 99 } else { // We have ES DS in codecdata |
162 #endif | 167 #endif |
163 | 168 |
164 if(!sh->codecdata_len){ | 169 if(!sh->codecdata_len){ |
165 // raw aac stream: | 170 // raw aac stream: |
166 do { | 171 do { |
172 #if (FAADVERSION <= 11) | |
167 faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, sh->a_in_buffer+j); | 173 faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, sh->a_in_buffer+j); |
174 #else | |
175 faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, sh->a_in_buffer+j, sh->a_in_buffer_len); | |
176 #endif | |
177 | |
168 /* update buffer index after faacDecDecode */ | 178 /* update buffer index after faacDecDecode */ |
169 if(faac_finfo.bytesconsumed >= sh->a_in_buffer_len) { | 179 if(faac_finfo.bytesconsumed >= sh->a_in_buffer_len) { |
170 sh->a_in_buffer_len=0; | 180 sh->a_in_buffer_len=0; |
171 } else { | 181 } else { |
172 sh->a_in_buffer_len-=faac_finfo.bytesconsumed; | 182 sh->a_in_buffer_len-=faac_finfo.bytesconsumed; |
182 } else { | 192 } else { |
183 // packetized (.mp4) aac stream: | 193 // packetized (.mp4) aac stream: |
184 unsigned char* bufptr=NULL; | 194 unsigned char* bufptr=NULL; |
185 int buflen=ds_get_packet(sh->ds, &bufptr); | 195 int buflen=ds_get_packet(sh->ds, &bufptr); |
186 if(buflen<=0) break; | 196 if(buflen<=0) break; |
197 #if (FAADVERSION <= 11) | |
187 faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, bufptr); | 198 faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, bufptr); |
199 #else | |
200 faac_sample_buffer = faacDecDecode(faac_hdec, &faac_finfo, bufptr, buflen); | |
201 #endif | |
188 // printf("FAAC decoded %d of %d (err: %d) \n",faac_finfo.bytesconsumed,buflen,faac_finfo.error); | 202 // printf("FAAC decoded %d of %d (err: %d) \n",faac_finfo.bytesconsumed,buflen,faac_finfo.error); |
189 } | 203 } |
190 | 204 |
191 if(faac_finfo.error > 0) { | 205 if(faac_finfo.error > 0) { |
192 mp_msg(MSGT_DECAUDIO,MSGL_WARN,"FAAD: Failed to decode frame: %s \n", | 206 mp_msg(MSGT_DECAUDIO,MSGL_WARN,"FAAD: Failed to decode frame: %s \n", |