⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fiaud.c

📁 dz3000_51.0.0.4.rar
💻 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 + -