util.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * FAAD - Freeware Advanced Audio Decoder
  3.  * Copyright (C) 2001 Menno Bakker
  4.  *
  5.  * This library is free software; you can redistribute it and/or
  6.  * modify it under the terms of the GNU Lesser General Public
  7.  * License as published by the Free Software Foundation; either
  8.  * version 2.1 of the License, or (at your option) any later version.
  9.  *
  10.  * This library is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.  * Lesser General Public License for more details.
  14.  * You should have received a copy of the GNU Lesser General Public
  15.  * License along with this library; if not, write to the Free Software
  16.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  *
  18.  * $Id: util.c,v 1.1 2001/06/04 22:33:52 wmay Exp $
  19.  */
  20. #include "all.h"
  21. /*
  22.  * object_type dependent parameters
  23.  */
  24. int tns_max_bands(faacDecHandle hDecoder, int islong)
  25. {
  26.     int i;
  27.     /* construct second index */
  28.     i = islong ? 0 : 1;
  29.     
  30.     return tns_max_bands_tbl[hDecoder->mc_info.sampling_rate_idx][i];
  31. }
  32. int tns_max_order(faacDecHandle hDecoder, int islong)
  33. {
  34. if (hDecoder->isMpeg4) {
  35. switch (hDecoder->mc_info.object_type) {
  36. case AACMAIN:
  37. case AACLC:
  38. case AACLTP:
  39. if (islong) {
  40. if (hDecoder->mc_info.sampling_rate_idx <= 5) /* sr > 32000Hz */
  41. return 12;
  42. else
  43. return 20;
  44. } else
  45. return 7;
  46. case AACSSR:
  47. return 12;
  48. }
  49. } else {
  50. if (islong) {
  51. switch (hDecoder->mc_info.object_type) {
  52. case AACMAIN:
  53. return 20;
  54. case AACLC:
  55. case AACSSR:
  56. return 12;
  57. }
  58. } else { /* MPEG2 short window */
  59. return 7;
  60. }
  61.     }
  62.     return 0;
  63. }
  64. int pred_max_bands(faacDecHandle hDecoder)
  65. {
  66.     return pred_max_bands_tbl[hDecoder->mc_info.sampling_rate_idx];
  67. }
  68. int stringcmp(char const *str1, char const *str2, unsigned long len)
  69. {
  70. signed int c1 = 0, c2 = 0;
  71. while (len--) {
  72. c1 = *str1++;
  73. c2 = *str2++;
  74. if (c1 == 0 || c1 != c2)
  75. break;
  76. }
  77. return c1 - c2;
  78. }