summaryrefslogtreecommitdiffstats
path: root/libfaad2/mp4.c
diff options
context:
space:
mode:
authordiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-09-24 17:31:36 +0000
committerdiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-09-24 17:31:36 +0000
commite1ece5e2eb68c81b1645c9ff989c833c4d67dfd8 (patch)
tree8553b3a4ef8164d14ff1b4a3f67e57cfa1d8908a /libfaad2/mp4.c
parent2887bacbdb6bd320e4840fd230e92a59cc74b9ae (diff)
downloadmpv-e1ece5e2eb68c81b1645c9ff989c833c4d67dfd8.tar.bz2
mpv-e1ece5e2eb68c81b1645c9ff989c833c4d67dfd8.tar.xz
Update FAAD to a 2.1 beta CVS snapshot from 2004.07.12.
patch by adland <adland123 at yahoo dot com> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13454 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libfaad2/mp4.c')
-rw-r--r--libfaad2/mp4.c44
1 files changed, 34 insertions, 10 deletions
diff --git a/libfaad2/mp4.c b/libfaad2/mp4.c
index 875f7a86e0..ad50fef2f9 100644
--- a/libfaad2/mp4.c
+++ b/libfaad2/mp4.c
@@ -23,7 +23,7 @@
** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
**
** Initially modified for use with MPlayer by Arpad Gereöffy on 2003/08/30
-** $Id: mp4.c,v 1.3 2004/06/02 22:59:03 diego Exp $
+** $Id: mp4.c,v 1.4 2004/06/23 13:50:51 diego Exp $
** detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
**/
@@ -121,17 +121,17 @@ static uint8_t ObjectTypesTable[32] = {
};
/* Table 1.6.1 */
-int8_t FAADAPI AudioSpecificConfig(uint8_t *pBuffer,
- uint32_t buffer_size,
- mp4AudioSpecificConfig *mp4ASC)
+int8_t NEAACDECAPI NeAACDecAudioSpecificConfig(uint8_t *pBuffer,
+ uint32_t buffer_size,
+ mp4AudioSpecificConfig *mp4ASC)
{
return AudioSpecificConfig2(pBuffer, buffer_size, mp4ASC, NULL);
}
-int8_t FAADAPI AudioSpecificConfig2(uint8_t *pBuffer,
- uint32_t buffer_size,
- mp4AudioSpecificConfig *mp4ASC,
- program_config *pce)
+int8_t AudioSpecificConfig2(uint8_t *pBuffer,
+ uint32_t buffer_size,
+ mp4AudioSpecificConfig *mp4ASC,
+ program_config *pce)
{
bitfile ld;
int8_t result = 0;
@@ -178,13 +178,28 @@ int8_t FAADAPI AudioSpecificConfig2(uint8_t *pBuffer,
return -3;
}
+#if (defined(PS_DEC) || defined(DRM_PS))
+ /* check if we have a mono file */
+ if (mp4ASC->channelsConfiguration == 1)
+ {
+ /* upMatrix to 2 channels for implicit signalling of PS */
+ mp4ASC->channelsConfiguration = 2;
+ }
+#endif
+
#ifdef SBR_DEC
mp4ASC->sbr_present_flag = -1;
if (mp4ASC->objectTypeIndex == 5)
{
+ uint8_t tmp;
+
mp4ASC->sbr_present_flag = 1;
- mp4ASC->samplingFrequencyIndex = (uint8_t)faad_getbits(&ld, 4
+ tmp = (uint8_t)faad_getbits(&ld, 4
DEBUGVAR(1,5,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex"));
+ /* check for downsampled SBR */
+ if (tmp == mp4ASC->samplingFrequencyIndex)
+ mp4ASC->downSampledSBR = 1;
+ mp4ASC->samplingFrequencyIndex = tmp;
if (mp4ASC->samplingFrequencyIndex == 15)
{
mp4ASC->samplingFrequency = (uint32_t)faad_getbits(&ld, 24
@@ -245,8 +260,15 @@ int8_t FAADAPI AudioSpecificConfig2(uint8_t *pBuffer,
if (mp4ASC->sbr_present_flag)
{
- mp4ASC->samplingFrequencyIndex = (uint8_t)faad_getbits(&ld, 4
+ uint8_t tmp;
+ tmp = (uint8_t)faad_getbits(&ld, 4
DEBUGVAR(1,12,"parse_audio_decoder_specific_info(): extensionSamplingFrequencyIndex"));
+
+ /* check for downsampled SBR */
+ if (tmp == mp4ASC->samplingFrequencyIndex)
+ mp4ASC->downSampledSBR = 1;
+ mp4ASC->samplingFrequencyIndex = tmp;
+
if (mp4ASC->samplingFrequencyIndex == 15)
{
mp4ASC->samplingFrequency = (uint32_t)faad_getbits(&ld, 24
@@ -267,6 +289,8 @@ int8_t FAADAPI AudioSpecificConfig2(uint8_t *pBuffer,
{
mp4ASC->samplingFrequency *= 2;
mp4ASC->forceUpSampling = 1;
+ } else /* > 24000*/ {
+ mp4ASC->downSampledSBR = 1;
}
}
#endif