각기 다른 출력을 내보낼때, 세팅을 해주어야 할 것들을 정리했다. 언젠가 꼭 도움이 될 것이다. 현재 상용되고 있는 STB 를 보면, 제품 뒷면에 많은 출력포트들이 있는 것을 알 수 있다. 그 수가 많을 수록 좀더 많은 입출력을 지원한다고 보면 된다.
현재 우리가 개발 중인 STB 의 경우, Video 출력으로는 HD(RGB, Y/CB/CR) 과 SD(CVBS) 을 지원한다. 이것은 모두 아날로그 신호들이다. 디지털로는 DVI 가 있다. 아직 현재 구현이 안되었다. -_-;
또한 Audio 출력으로는 SPDIF(디지털) 와 PCM(아날로그)이 있다.

나중에 궁극적인 목표는 어떤 케이블이라도 튜너에 꽂으면, 원하는 출력포트로 나오게 하는 것이다. 하지만, 지금은 S/W 와 H/W 적으로 미흡한 상태다. 그래서 소스 프로그램을 각각의 원하는 출력에 따라 수정을 해주어야 한다.

Video 출력 세팅

현재 RGB, Y/CB/CR, CVBS 출력을 지원한다.

ST_ErrorCode_t VOUT_Inital( void )
{
	VOUTInitParams.CPUPartition_p  = system_partition; 
	VOUTInitParams.MaxOpen         = 3; 
	VOUTInitParams.DeviceType      = STVOUT_DEVICE_TYPE_7020;
	VOUTInitParams.OutputType      = STVOUT_OUTPUT_HD_ANALOG_RGB;
...
...
	//ErrCode = STVOUT_SetOutputParams(VOUTHndl, &VOUTOutputParams);  주석처리
...
}
static ST_ErrorCode_t VTG_SetMode(void)
{
...
	STVTG_TimingMode = STVTG_TIMING_MODE_1080I60000_74250;	
...
	//STVTG_SetOptionalConfiguration(VTG_Handle, &opt);  주석처리
...
}
ST_ErrorCode_t VOUT_Inital( void )
{
	VOUTInitParams.CPUPartition_p  = system_partition; 
	VOUTInitParams.MaxOpen         = 3; 
	VOUTInitParams.DeviceType      = STVOUT_DEVICE_TYPE_7020;
	VOUTInitParams.OutputType      = STVOUT_OUTPUT_HD_ANALOG_YUV;
...
...
	ErrCode = STVOUT_SetOutputParams(VOUTHndl, &VOUTOutputParams);  // 주석제거
...
}
static ST_ErrorCode_t VTG_SetMode(void)
{
...
	STVTG_TimingMode = STVTG_TIMING_MODE_1080I60000_74250;	
...
	STVTG_SetOptionalConfiguration(VTG_Handle, &opt);  // 주석제거
...
}
ST_ErrorCode_t VOUT_Inital( void )
{
	VOUTInitParams.CPUPartition_p  = system_partition; 
	VOUTInitParams.MaxOpen         = 3; 
	VOUTInitParams.DeviceType      = STVOUT_DEVICE_TYPE_7020;
	VOUTInitParams.OutputType      = STVOUT_OUTPUT_ANALOG_CVBS;      // CVBS 로 수정
 
         strcpy( VOUTInitParams.Target.GenericCell.DencName,DENC_DeviceName);  // 주석 제거
	//strcpy(VOUTInitParams.Target.DencName,"");      // CBCR 이나 RGB 일 경우에는 주석을 제거한다
	VOUTInitParams.Target.GenericCell.DeviceBaseAddress_p = (void*)(STI7020_BASE_ADDRESS);
	VOUTInitParams.Target.GenericCell.BaseAddress_p       = (void *)(ST7020_DSPCFG_OFFSET);
 
 
...
...
	//ErrCode = STVOUT_SetOutputParams(VOUTHndl, &VOUTOutputParams);  주석처리
...
}
static ST_ErrorCode_t VTG_SetMode(void)
{
...
	STVTG_TimingMode = STVTG_TIMING_MODE_480I59940_13500;	
...
	//STVTG_SetOptionalConfiguration(VTG_Handle, &opt);  주석처리
...
}
ST_ErrorCode_t VID_Setup(void)
{
...
	STVID_MemoryProfile.MaxWidth         = 720;
...
}
</coded>
====== Audio 출력 세팅 ======
현재 PCM, SPDIF 출력을 지원한다.
===== PCM 모드로 세팅시 수정해야 할 것들 =====
==== system/aud.c ====
<code text>
ST_ErrorCode_t AUD_Initial()
{
...
//ST_ErrorCode = STAUD_DRSetBroadcastProfile(AUD_Handle, STAUD_OBJECT_OUTPUT_SPDIF1, STAUD_BroadcastProfile); 주석처리
ST_ErrorCode = STAUD_DRSetBroadcastProfile(AUD_Handle, STAUD_OBJECT_DECODER_COMPRESSED1, STAUD_BroadcastProfile); // 주석제거
...
//ST_ErrorCode = STAUD_OPSetSpeakerEnable(AUD_Handle, STAUD_OBJECT_OUTPUT_SPDIF1, &STAUD_SpeakerEnable);  주석처리
ST_ErrorCode = STAUD_OPSetSpeakerEnable(AUD_Handle, STAUD_OBJECT_OUTPUT_MULTIPCM1, &STAUD_SpeakerEnable);  // 주석제거
...
}
void UiEvent()
{
...
	STAUD_Mute(AUD_Handle, FALSE, TRUE);
...
}
ST_ErrorCode_t AUD_Initial()
{
...
ST_ErrorCode = STAUD_DRSetBroadcastProfile(AUD_Handle, STAUD_OBJECT_OUTPUT_SPDIF1, STAUD_BroadcastProfile); // 주석제거
//ST_ErrorCode = STAUD_DRSetBroadcastProfile(AUD_Handle, STAUD_OBJECT_DECODER_COMPRESSED1, STAUD_BroadcastProfile);  주석처리
...
ST_ErrorCode = STAUD_OPSetSpeakerEnable(AUD_Handle, STAUD_OBJECT_OUTPUT_SPDIF1, &STAUD_SpeakerEnable); // 주석제거
//ST_ErrorCode = STAUD_OPSetSpeakerEnable(AUD_Handle, STAUD_OBJECT_OUTPUT_MULTIPCM1, &STAUD_SpeakerEnable);   주석처리
...
}
void UiEvent()
{
...
	STAUD_Mute(AUD_Handle, TRUE, FALSE);
...
}
  • computer/digitalarena/출력에_따른_dac5000_세팅법.txt
  • Last modified: 3 years ago
  • by likewind