frame.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:4k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * FAAC - Freeware Advanced Audio Coder
  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: frame.h,v 1.4 2002/02/25 22:26:43 dmackie Exp $
  19.  */
  20. #ifndef FRAME_H
  21. #define FRAME_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif /* __cplusplus */
  25. #include "coder.h"
  26. #include "channels.h"
  27. #include "psych.h"
  28. #ifdef WIN32
  29.   #pragma pack(push, 8)
  30.   #ifndef FAACAPI
  31.     #define FAACAPI __stdcall
  32.   #endif
  33. #else
  34.   #ifndef FAACAPI
  35.     #define FAACAPI
  36.   #endif
  37. #endif
  38. static SR_INFO srInfo[12+1];
  39. typedef struct faacEncConfiguration
  40. {
  41. /* MPEG version, 2 or 4 */
  42. unsigned int mpegVersion;
  43. /* AAC object type */
  44. unsigned int aacObjectType;
  45. /* Allow mid/side coding */
  46. unsigned int allowMidside;
  47. /* Use one of the channels as LFE channel */
  48. unsigned int useLfe;
  49. /* Use Temporal Noise Shaping */
  50. unsigned int useTns;
  51. /* bitrate / channel of AAC file */
  52. unsigned long bitRate;
  53. /* AAC file frequency bandwidth */
  54. unsigned int bandWidth;
  55. #ifdef MPEG4IP
  56. unsigned int useAdts;
  57. #endif
  58. } faacEncConfiguration, *faacEncConfigurationPtr;
  59. typedef struct {
  60. /* number of channels in AAC file */
  61. unsigned int numChannels;
  62. /* samplerate of AAC file */
  63. unsigned long sampleRate;
  64. unsigned int sampleRateIdx;
  65. unsigned int usedBytes;
  66. /* frame number */
  67. unsigned int frameNum;
  68. unsigned int flushFrame;
  69. /* Scalefactorband data */
  70. SR_INFO *srInfo;
  71. /* sample buffers of current next and next next frame*/
  72. double *sampleBuff[MAX_CHANNELS];
  73. double *nextSampleBuff[MAX_CHANNELS];
  74. double *next2SampleBuff[MAX_CHANNELS];
  75. double *ltpTimeBuff[MAX_CHANNELS];
  76. /* Filterbank buffers */
  77. double *sin_window_long;
  78. double *sin_window_short;
  79. double *kbd_window_long;
  80. double *kbd_window_short;
  81. double *freqBuff[MAX_CHANNELS];
  82. double *overlapBuff[MAX_CHANNELS];
  83. double *msSpectrum[MAX_CHANNELS];
  84. /* Channel and Coder data for all channels */
  85. CoderInfo coderInfo[MAX_CHANNELS];
  86. ChannelInfo channelInfo[MAX_CHANNELS];
  87. /* Psychoacoustics data */
  88. PsyInfo psyInfo[MAX_CHANNELS];
  89. GlobalPsyInfo gpsyInfo;
  90. /* Configuration data */
  91. faacEncConfiguration config;
  92. } faacEncStruct, *faacEncHandle;
  93. faacEncConfigurationPtr FAACAPI faacEncGetCurrentConfiguration(faacEncHandle hEncoder);
  94. int FAACAPI faacEncSetConfiguration (faacEncHandle hEncoder, faacEncConfigurationPtr config);
  95. faacEncHandle FAACAPI faacEncOpen(unsigned long sampleRate,
  96.   unsigned int numChannels,
  97.   unsigned long *inputSamples,
  98.   unsigned long *maxOutputBytes);
  99. int FAACAPI faacEncEncode(faacEncHandle hEncoder,
  100.   short *inputBuffer,
  101.   unsigned int samplesInput,
  102.   unsigned char *outputBuffer,
  103.   unsigned int bufferSize
  104.   );
  105. int FAACAPI faacEncClose(faacEncHandle hEncoder);
  106. #ifdef WIN32
  107.   #pragma pack(pop)
  108. #endif
  109. #ifdef __cplusplus
  110. }
  111. #endif /* __cplusplus */
  112. #endif /* FRAME_H */