pulse.c

00001 /*
00002 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
00003 ** Copyright (C) 2003-2005 M. Bakker, Ahead Software AG, http://www.nero.com
00004 **  
00005 ** This program is free software; you can redistribute it and/or modify
00006 ** it under the terms of the GNU General Public License as published by
00007 ** the Free Software Foundation; either version 2 of the License, or
00008 ** (at your option) any later version.
00009 ** 
00010 ** This program is distributed in the hope that it will be useful,
00011 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 ** GNU General Public License for more details.
00014 ** 
00015 ** You should have received a copy of the GNU General Public License
00016 ** along with this program; if not, write to the Free Software 
00017 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00018 **
00019 ** Any non-GPL usage of this software or parts of this software is strictly
00020 ** forbidden.
00021 **
00022 ** Software using this code must display the following message visibly in the
00023 ** software:
00024 ** "FAAD2 AAC/HE-AAC/HE-AACv2/DRM decoder (c) Ahead Software, www.nero.com"
00025 ** in, for example, the about-box or help/startup screen.
00026 **
00027 ** Commercial non-GPL licensing of this software is possible.
00028 ** For more info contact Ahead Software through [email protected].
00029 **
00030 ** $Id: pulse.c,v 1.2 2005/11/01 21:41:43 gabest Exp $
00031 **/
00032 #include "common.h"
00033 #include "structs.h"
00034 
00035 #include "syntax.h"
00036 #include "pulse.h"
00037 
00038 uint8_t pulse_decode(ic_stream *ics, int16_t *spec_data, uint16_t framelen)
00039 {
00040     uint8_t i;
00041     uint16_t k;
00042     pulse_info *pul = &(ics->pul);
00043 
00044     k = ics->swb_offset[pul->pulse_start_sfb];
00045 
00046     for (i = 0; i <= pul->number_pulse; i++)
00047     {
00048         k += pul->pulse_offset[i];
00049 
00050         if (k >= framelen)
00051             return 15; /* should not be possible */
00052 
00053         if (spec_data[k] > 0)
00054             spec_data[k] += pul->pulse_amp[i];
00055         else
00056             spec_data[k] -= pul->pulse_amp[i];
00057     }
00058 
00059     return 0;
00060 }

Generated on Tue Dec 13 14:47:43 2005 for guliverkli by  doxygen 1.4.5