📄 fiaud.c
字号:
/*++
Copyright (c) 2001 Sunplus Technology Co., Ltd.
Module Name:
fiaud.c
Abstract:
Module related to hardware access of SmartMedia Card
Environment:
Keil C51 Compiler
Revision History:
10/26/2001 William Yeo created
--*/
//=============================================================================
//Header file
//=============================================================================
// WWW1 start
#include "general.h"
#if ( AUDIO_OPTION )
#include "cardimpt.h"
#include "cardlink.h"
#include "ficon.h"
// WWW1 end
//patch3.2@ada@0401 For Date & Time Update
#include "dosusr.h"
//=============================================================================
//Symbol
//=============================================================================
//-----------------------------------------------------------------------------
//Constant
//-----------------------------------------------------------------------------
#define K_Wave_Header_Size ((WORD)0x2c)
//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------
code BYTE G_WAVE_Header[] =
{
/*0x0000*/ 0x52, 0x49, 0x46, 0x46, // "RIFF"
/*0x0004*/ 0x8C, 0x15, 0x00, 0x00, // riff size
/*0x0008*/ 0x57, 0x41, 0x56, 0x45, // "WAVE"
/*0x000c*/ 0x66, 0x6D, 0x74, 0x20, // "fmt "
/*0x0010*/ 0x10, 0x00, 0x00, 0x00, // fmt size
/*0x0014*/ 0x01, 0x00, // Compression code (see Table Selected WAVE Format Codes)
/*0x0016*/ 0x01, 0x00, // Number of channels, nChannel
/*0x0018*/ 0x11, 0x2B, 0x00, 0x00, // Samples per second, same to sample rate
/*0x001c*/ 0x11, 0x2B, 0x00, 0x00, // Average number of bytes per second, sample rate*nChannel*bits/8
/*0x0020*/ 0x01, 0x00, // Block alignment, nChannel*bits/8
/*0x0022*/ 0x08, 0x00, // Significant bits per sample
/*0x0024*/ 0x64, 0x61, 0x74, 0x61, // "data"
/*0x0028*/ 0x68, 0x15, 0x00, 0x00 // data size
};
//=============================================================================
//Program
//=============================================================================
//-----------------------------------------------------------------------------
//File_RecordWave
//-----------------------------------------------------------------------------
//patch3.2@ada@0401 For Date & Time Update
BYTE File_RecordWave(UCHAR *name, ULONG ramAddr, ULONG ramSize, WORD wFormatTag) USING_0
{
ULONG audioSize;
BYTE sts = FALSE;
ULONG audsValue[6];
WORD k;
SETMODE_ChangeCameraMode(K_MODE_IDLE); //clear post buffer
SETMODE_ChangeCameraMode(K_MODE_PLAYBACK); //set upload mode
L2_DRAMSetStartAddr((ramAddr + (K_Wave_Header_Size>>1)), K_SDRAM_NoPrefetch);
audioSize = File_RecordAudioStream(ramAddr + (K_Wave_Header_Size>>1), ramSize-K_Wave_Header_Size, &audsValue[0]);
if ( audioSize )
{
for ( k = 0; k < K_Wave_Header_Size; k++ )
G_ucStorData[k] = G_WAVE_Header[k];
G_ucStorData[0x0014] = audsValue[K_File_Wave_wFormatTag_Value];
G_ucStorData[0x0015] = audsValue[K_File_Wave_wFormatTag_Value] >> 8;
G_ucStorData[0x0016] = audsValue[K_File_Wave_nChannels_Value];
G_ucStorData[0x0017] = audsValue[K_File_Wave_nChannels_Value] >> 8;
G_ucStorData[0x0018] = audsValue[K_File_Wave_nSamplesPerSec_Value];
G_ucStorData[0x0019] = audsValue[K_File_Wave_nSamplesPerSec_Value] >> 8;
G_ucStorData[0x001a] = audsValue[K_File_Wave_nSamplesPerSec_Value] >> 16;
G_ucStorData[0x001b] = audsValue[K_File_Wave_nSamplesPerSec_Value] >> 24;
G_ucStorData[0x001c] = audsValue[K_File_Wave_nAvgBytesPerSec_Value];
G_ucStorData[0x001d] = audsValue[K_File_Wave_nAvgBytesPerSec_Value] >> 8;
G_ucStorData[0x001e] = audsValue[K_File_Wave_nAvgBytesPerSec_Value] >> 16;
G_ucStorData[0x001f] = audsValue[K_File_Wave_nAvgBytesPerSec_Value] >> 24;
G_ucStorData[0x0020] = audsValue[K_File_Wave_blockAlign_Value];
G_ucStorData[0x0021] = audsValue[K_File_Wave_blockAlign_Value] >> 8;
G_ucStorData[0x0022] = audsValue[K_File_Wave_wBitsPerSample_Value];
G_ucStorData[0x0023] = audsValue[K_File_Wave_wBitsPerSample_Value] >> 8;
G_ucStorData[0x0028] = audioSize;
G_ucStorData[0x0029] = audioSize >> 8;
G_ucStorData[0x002a] = audioSize >> 16;
G_ucStorData[0x002b] = audioSize >> 24;
audioSize += ( K_Wave_Header_Size - 8 );
G_ucStorData[0x0004] = audioSize;
G_ucStorData[0x0005] = audioSize >> 8;
G_ucStorData[0x0006] = audioSize >> 16;
G_ucStorData[0x0007] = audioSize >> 24;
L2_DRAMSetStartAddr(ramAddr, K_SDRAM_NoPrefetch);
SDRAM_Sram2Dram(&G_ucStorData[0], ramAddr, K_Wave_Header_Size);
SETMODE_ChangeCameraMode(K_MODE_IDLE); //clear post buffer
SETMODE_ChangeCameraMode(K_MODE_PLAYBACK); //set upload mode
//ada@0401 For Date & Time Update
USR_UpdateRtcTime();
sts = File_Make(K_File_SrcDataDram2Card, ramAddr, name, audioSize+8);
}
SETMODE_ChangeCameraMode(K_MODE_IDLE);
return sts;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -