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

📄 aavilib.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
字号:
//=============================================================================
//Header file
//=============================================================================

// WWW1 start
#include "general.h"

#if ( K_File_HaveVideo == 1 )
#if ( AUDIO_OPTION == 1 )

#include "cardimpt.h"
#include "cardlink.h"
#include "libfunc.h"
#include "libvar.h"
// WWW1 end

//=============================================================================
//Symbol
//=============================================================================
//-----------------------------------------------------------------------------
//Constant
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------
idata   ULONG   G_File_AudioSize = 0;
xdata	ULONG 	G_File_SDRAM_AudioBufAddr;

//-------------------------------------
//File_AviAudioSetHeader
//-------------------------------------
ULONG File_AviAudioSetHeader(void) USING_0
{
        ULONG size;
        USHORT remSize;
        USHORT jnkSize;

        //total size (BYTE)
        size = G_File_AudioSize << 1;

        //SizeField = audio sample total size
        File_AviAudioSetChunk(size - 0x0008);

        //JUNK size (BYTE)
        remSize = K_Card_PageSize - (WORD) (size % K_Card_PageSize);
        if (remSize < 0x0008)
        {
                jnkSize = remSize + K_Card_PageSize;
                size += jnkSize;
                jnkSize -= 0x0008;
        }
        else
        {
                jnkSize = remSize - 0x0008;
                size += remSize;
        }

        //SizeField = JUNK size
        File_AviAudioSetJunk(jnkSize);

        return (size);
}

//-------------------------------------
//File_AviAudioSetJunk
//-------------------------------------
void File_AviAudioSetJunk(USHORT size) USING_0
{
        //Id = "JUNK"
        G_ucStorData[0] = 'J';
        G_ucStorData[1] = 'U';
        G_ucStorData[2] = 'N';
        G_ucStorData[3] = 'K';

        //Size
        G_ucStorData[4] = size;
        G_ucStorData[5] = size >> 8;
        G_ucStorData[6] = 0x00;
        G_ucStorData[7] = 0x00;

#if 0   //don't care JUNK data
        //Data (0) of junk chunk
        for (i = 0; i < size; i += 1)
        	G_ucStorData[8+i] = 0x00;
#endif
        SDRAM_Sram2Dram(G_ucStorData, G_File_SDRAM_AudioBufAddr + G_File_AudioSize, 8);

}

//-------------------------------------
//File_AviAudioSetChunk
//-------------------------------------
void File_AviAudioSetChunk(ULONG size) USING_0
{
        //Id = "01wb"
        G_ucStorData[0] = '0';
        G_ucStorData[1] = '1';
        G_ucStorData[2] = 'w';
        G_ucStorData[3] = 'b';

        //Size
        G_ucStorData[4] = size;
        G_ucStorData[5] = size >> 8;
        G_ucStorData[6] = size >> 16;
        G_ucStorData[7] = size >> 24;

        SDRAM_Sram2Dram(G_ucStorData, G_File_SDRAM_AudioBufAddr, 8);
}

//-----------------------------------------------------------------------------
//File_AviAudioWriteData
//-----------------------------------------------------------------------------
BYTE File_AviAudioWriteData(ULONG size) USING_0
{
        UCHAR 	sts = TRUE;
	
	size = ( (size+K_Card_PageSize-1) >> K_Card_PageSizeShift ) << K_Card_PageSizeShift;

     L2_DRAMSetStartAddr(G_File_SDRAM_AudioBufAddr, K_SDRAM_Prefetch);

	M_Card_File_Write(1, K_File_SrcDataDram2Card,size,G_File_SDRAM_AudioBufAddr,0);     

        return TRUE;
}

//-------------------------------------
//File_AviAudioSetIndex
//-------------------------------------
void File_AviAudioSetIndex(ULONG size) USING_0
{
	ULONG	ramAddr;
	
        //ckid = "01wb"
        G_ucStorData[0] = '0';
        G_ucStorData[1] = '1';
        G_ucStorData[2] = 'w';
        G_ucStorData[3] = 'b';

        //dwFlags = AVIIF_KEYFRAME
        G_ucStorData[4] = 0x10;
        G_ucStorData[5] = 0x00;
        G_ucStorData[6] = 0x00;
        G_ucStorData[7] = 0x00;

        //dwChunkOffset
        G_ucStorData[8] = G_File_AviTotalSize;
        G_ucStorData[9] = G_File_AviTotalSize >> 8;
        G_ucStorData[10] = G_File_AviTotalSize >> 16;
        G_ucStorData[11] = G_File_AviTotalSize >> 24;

        //dwChunkLength
        G_ucStorData[12] = size;
        G_ucStorData[13] = size >> 8;
        G_ucStorData[14] = size >> 16;
        G_ucStorData[15] = size >> 24;

        ramAddr = G_File_SDRAM_AviIdx1BufAddr+(((8 + G_File_AviVideoChunkCount) * 16) >> 1); // WWWW1
        
        SDRAM_Sram2Dram(G_ucStorData, ramAddr, 16);
}

#endif
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -