📄 string_generate.c
字号:
//Calulate SubitleCode number
wLangCode = CoreAPI_GetAVISubtitleFeatureCode( wSubtitleNum);
if(ERROR_SUBTITLE_FEATURE_CODE != wLangCode)
{
if(SUB_TYPE_CODE_TABLE_SIZE > wLangCode)
{
while(aDivX6SubtitleCode[wLangCode].aSubtitleFeature[cSubtitleFeatureIndx] && (UNISTR_LENGTH_MAX > cBuffOffset))
szBuffStr[cBuffOffset++] = (UINT16)aDivX6SubtitleCode[wLangCode].aSubtitleFeature[cSubtitleFeatureIndx++];
}
}
}
else//MP4 three characher languages
{
szBuffStr[cBuffOffset++] = szLang[0];
szBuffStr[cBuffOffset++] = szLang[1];
szBuffStr[cBuffOffset++] = szLang[2];
}
}
}
}
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
#ifdef DVD_AUDIO_SUPPORT
UINT8 STR_GenerateDVDAInfo(UINT16 wAudioNum, UINT16 wAudioGroup, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
UINT16 wChAssignment = CoreAPI_GetAudioChannelAssigment(wAudioNum);
G_AUDIO_SAMPLING oFrequency = CoreAPI_GetAudioFS(wAudioGroup);
UINT8 cBits = CoreAPI_GetQuantization(wAudioGroup);
BOOL bResult = FALSE;
ASSERT(NULL != szBuffStr);
if(wAudioNum)
{
switch(wAudioGroup)
{
case 1:
{
if(wChAssignment==0)
{
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MONO, szBuffStr, cBuffOffset, cBuffSize);
}
else if(wChAssignment==1)
{
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LR, szBuffStr, cBuffOffset, cBuffSize);
}
else if(wChAssignment<=12)
{
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LR, szBuffStr, cBuffOffset, cBuffSize);
}
else if(wChAssignment<=17)
{
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LRC, szBuffStr, cBuffOffset, cBuffSize);
}
else if(wChAssignment<=20)
{
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LRLSRS, szBuffStr, cBuffOffset, cBuffSize);
}
break;
}
case 2:
{
switch(wChAssignment)
{
case 0:
case 1:
szBuffStr[cBuffOffset++] = ' ';
break;
case 2:
case 13:
szBuffStr[cBuffOffset++] = 'S';
break;
case 3:
case 14:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LSRS, szBuffStr, cBuffOffset, cBuffSize);
break;
case 4:
case 15:
case 18:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LFE, szBuffStr, cBuffOffset, cBuffSize);
break;
case 5:
case 16:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LFES, szBuffStr, cBuffOffset, cBuffSize);
break;
case 6:
case 17:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LFELSRS, szBuffStr, cBuffOffset, cBuffSize);
break;
case 7:
case 19:
szBuffStr[cBuffOffset++] = 'C';
break;
case 8:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_CS, szBuffStr, cBuffOffset, cBuffSize);
break;
case 9:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_CLSRS, szBuffStr, cBuffOffset, cBuffSize);
break;
case 10:
case 20:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_CLFE, szBuffStr, cBuffOffset, cBuffSize);
break;
case 11:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_CLFES, szBuffStr, cBuffOffset, cBuffSize);
break;
case 12:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_CLFELSRS, szBuffStr, cBuffOffset, cBuffSize);
break;
}
break;
}
}
szBuffStr[cBuffOffset++] = ' ';
switch(oFrequency)
{
case AUDIO_fs_48khz:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_48KHZ, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_fs_96khz:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_96KHZ, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_fs_192khz:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_192KHZ, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_fs_441khz:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_44P1KHZ, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_fs_882khz:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_88P2KHZ, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_fs_1764khz:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_176P4KHZ, szBuffStr, cBuffOffset, cBuffSize);
break;
default:
cBuffOffset = STR_GenerateRepeatChars(' ', 3, szBuffStr, cBuffOffset, cBuffSize);
bResult = TRUE;
break;
}
if(bResult == FALSE)
{
szBuffStr[cBuffOffset++] = '/';
}
else
{
szBuffStr[cBuffOffset++] = ' ';
}
switch(cBits)
{
case 0:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_16BIT, szBuffStr, cBuffOffset, cBuffSize);
break;
case 1:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_20BIT, szBuffStr, cBuffOffset, cBuffSize);
break;
case 2:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_24BIT, szBuffStr, cBuffOffset, cBuffSize);
break;
default:
cBuffOffset = STR_GenerateRepeatChars(' ', 3, szBuffStr, cBuffOffset, cBuffSize);
break;
}
}
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
#endif //DVD_AUDIO_SUPPORT
UINT8 STR_GenerateAudioInfo(UINT16 wAudioNum, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
BYTE cChannels;
ASSERT(NULL != szBuffStr);
if(0==CoreAPI_GetTotalAudioNum())
{
cBuffOffset = STR_GenerateOSDMESSAGEString(S_OFF, szBuffStr, cBuffOffset, cBuffSize);
}
else
{
cBuffOffset = STR_GenerateNumericAndTotalNumeric(wAudioNum, CoreAPI_GetTotalAudioNum(), szBuffStr, cBuffOffset, cBuffSize);
cBuffOffset = STR_GenerateRepeatChars(' ', 1, szBuffStr, cBuffOffset, cBuffSize);
switch(CoreAPI_GetAudioCodingMode(wAudioNum))
{
case AUDIO_STREAM_AC3:
cBuffOffset = STR_GenerateUnicodeChar(PRIVATE_SYMBOL_DOLBY, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_STREAM_DTS:
cBuffOffset = STR_GenerateUnicodeChar(PRIVATE_SYMBOL_DTS, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_STREAM_MPEG:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MPEG, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_STREAM_LPCM:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_LPCM, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_STREAM_MP3:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MP3, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_STREAM_PCM:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_PCM, szBuffStr, cBuffOffset, cBuffSize);
break;
case AUDIO_STREAM_WMA:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_WMA, szBuffStr, cBuffOffset, cBuffSize);
break;
#ifdef D_ENABLE_ADPCM_SUPPORT
case AUDIO_STREAM_ADPCM:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_ADPCM, szBuffStr, cBuffOffset, cBuffSize);
break;
#endif//D_ENABLE_ADPCM_SUPPORT
#ifdef D_ENABLE_AAC_SUPPORT
case AUDIO_STREAM_AAC:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_AAC, szBuffStr, cBuffOffset, cBuffSize);
break;
#endif//D_ENABLE_AAC_SUPPORT
#ifdef DVD_AUDIO_SUPPORT
case AUDIO_STREAM_MLP:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MLP, szBuffStr, cBuffOffset, cBuffSize);
break;
#endif //DVD_AUDIO_SUPPORT
default:
//no private symbol or media type name to display ,to avoid display two ' ' ,we do this
cBuffOffset--;
break;
}
szBuffStr[cBuffOffset++] = ' ';
cChannels = CoreAPI_GetAudioChannelNum(wAudioNum);
if(cChannels != ERROR_AUDIO_CHANNEL_NUM)
{
szBuffStr[cBuffOffset++] = NUM_TO_CHAR(cChannels);
szBuffStr[cBuffOffset++] = ' ';
szBuffStr[cBuffOffset++] = 'C';
szBuffStr[cBuffOffset++] = 'h';
szBuffStr[cBuffOffset++] = UNICODE_SPACE;
{
UINT8 szLang[MAX_LANGUAGE_NAME_ABBR];
UINT8 szLanguageNameFirstTwoChar[2];
UINT16 wLangCode ;
UINT8 cAudioFeatureIndx = 0;
if(CoreAPI_GetAudioLanguage(wAudioNum, szLang,MAX_LANGUAGE_NAME_ABBR))
{
if (_IsCapitialLetter(szLang[0]))
szLanguageNameFirstTwoChar[0] =_LetterCapitalToLower(szLang[0]);
else szLanguageNameFirstTwoChar[0] = szLang[0] ;
if (_IsCapitialLetter(szLang[1]))
szLanguageNameFirstTwoChar[1] = _LetterCapitalToLower(szLang[1]) ;
else szLanguageNameFirstTwoChar[1] = szLang[1] ;
wLangCode = MLC(szLanguageNameFirstTwoChar[0],szLanguageNameFirstTwoChar[1]);
if (eClipType_None == CoreAPI_GetCurrentClipType() )//DVD
{
cBuffOffset = STR_GenerateLanguage(MLC(szLanguageNameFirstTwoChar[1],szLanguageNameFirstTwoChar[0]), szBuffStr, cBuffOffset, cBuffSize);
}
else if (eClipType_AVI == CoreAPI_GetCurrentClipType())//AVI
{
if(EXTENTED_LANGUAGE_CODE != wLangCode)
{
if(!(szLang[2]) )//
{
cBuffOffset = STR_GenerateLanguage(wLangCode, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++] = UNICODE_SPACE;
}
}
else// extent language code
{
cBuffOffset += CoreAPI_GetAVIAudioLanguageExt(wAudioNum, szBuffStr + cBuffOffset,UNISTR_LENGTH_MAX-cBuffOffset);
szBuffStr[cBuffOffset++] = UNICODE_SPACE;
}
wLangCode = ERROR_AUDIO_FEATURE_CODE;
//Calulate AudioCode number
wLangCode = CoreAPI_GetAVIAudioFeatureCode( wAudioNum);
if(ERROR_AUDIO_FEATURE_CODE != wLangCode)
{
if(AUDIO_TYPE_CODE_TABLE_SIZE > wLangCode)
{
while(aDivX6AudioCode[wLangCode].aAudioFeature[cAudioFeatureIndx] && (UNISTR_LENGTH_MAX > cBuffOffset))
szBuffStr[cBuffOffset++] = (UINT16)aDivX6AudioCode[wLangCode].aAudioFeature[cAudioFeatureIndx++];
}
}
}
else//MP4 three characher languages code
{
szBuffStr[cBuffOffset++] = szLang[0];
szBuffStr[cBuffOffset++] = szLang[1];
szBuffStr[cBuffOffset++] = szLang[2];
}
}
}
}
}
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
UINT8 STR_GenerateAngle(INT16 sAngle, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
szBuffStr[cBuffOffset++] = ' ';
cBuffOffset = STR_GenerateNumericAndTotalNumeric(sAngle, CoreAPI_GetTotalAngleNum(), szBuffStr, cBuffOffset, cBuffSize);
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
UINT8 STR_Generate3D(INT16 s3D, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
cBuffOffset = STR_GenerateUnicodeChar(PRIVATE_SYMBOL_3D, szBuffStr, cBuffOffset, cBuffSize);
szBuffStr[cBuffOffset++] = ' ';
switch (s3D) {
case FALSE:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_OFF, szBuffStr, cBuffOffset, cBuffSize);
break;
case TRUE:
cBuffOffset = STR_GenerateOSDMESSAGEString(S_ON, szBuffStr, cBuffOffset, cBuffSize);
break;
}
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
UINT8 STR_GenerateShuffle(INT16 sShuffle, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
switch (sShuffle) {
case FALSE:
cBuffOffset = STR_GenerateItemSpaceValue(S_SHUFFLE, S_OFF, szBuffStr, cBuffOffset, cBuffSize);
break;
case TRUE:
cBuffOffset = STR_GenerateItemSpaceValue(S_SHUFFLE, S_ON, szBuffStr, cBuffOffset, cBuffSize);
break;
}
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
UINT8 STR_GeneratateBitrate(INT16 sBitRate, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
if ( sBitRate >= 10000 )
{
szBuffStr[cBuffOffset++] = NUM_TO_CHAR(sBitRate/10000);
sBitRate = sBitRate%10000;
}
if ( sBitRate >= 1000 )
{
szBuffStr[cBuffOffset++] = NUM_TO_CHAR(sBitRate/1000);
sBitRate = sBitRate%1000;
}
else
szBuffStr[cBuffOffset++] = '0';
if ( 0 == cBuffOffset )
szBuffStr[cBuffOffset++] = '0';
szBuffStr[cBuffOffset++] = '.';
if ( sBitRate >= 100 )
{
szBuffStr[cBuffOffset++] = NUM_TO_CHAR(sBitRate/100);
sBitRate = sBitRate%100;
}
else
szBuffStr[cBuffOffset++] = '0';
if ( sBitRate >= 10 )
{
szBuffStr[cBuffOffset++] = NUM_TO_CHAR(sBitRate/10);
sBitRate = sBitRate%10;
}
else
szBuffStr[cBuffOffset++] = '0';
szBuffStr[cBuffOffset++] = NUM_TO_CHAR(sBitRate);
cBuffOffset = STR_GenerateOSDMESSAGEString(S_MBPS, szBuffStr, cBuffOffset, cBuffSize);
TerminateStringGenerationFunction(szBuffStr, cBuffOffset, cBuffSize);
}
#pragma argsused
UINT8 STR_GenerateRepeatChars(INT16 sChar, INT16 sRepeat, UINT16* szBuffStr, UINT8 cBuffOffset, UINT8 cBuffSize)
{
ASSERT(NULL != szBuffStr);
while(sRepeat-- > 0)
{
szBuffStr[cBuffOffset++] = sChar;
}
szBuffStr[cBuffOffset]= L'\0';
ASSERT(cBuffOffset <= cBuffSize);
return cBuffOffset;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -