summaryrefslogtreecommitdiff
path: root/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'setup.c')
-rw-r--r--setup.c37
1 files changed, 32 insertions, 5 deletions
diff --git a/setup.c b/setup.c
index a763ef1..de2a4af 100644
--- a/setup.c
+++ b/setup.c
@@ -113,19 +113,20 @@ bool cRpiSetup::HwInit(void)
bool cRpiSetup::IsAudioFormatSupported(cAudioCodec::eCodec codec,
int channels, int samplingRate)
{
- // AAC and DTS pass-through currently not supported
- if (codec == cAudioCodec::eAAC ||
- codec == cAudioCodec::eADTS)
- return false;
+ // AAC-LATM and AAC pass-through currently not supported
+// if (codec == cAudioCodec::eAAC ||
+// codec == cAudioCodec::eADTS)
+// return false;
if (vc_tv_hdmi_audio_supported(
codec == cAudioCodec::eMPG ? EDID_AudioFormat_eMPEG1 :
codec == cAudioCodec::eAC3 ? EDID_AudioFormat_eAC3 :
codec == cAudioCodec::eEAC3 ? EDID_AudioFormat_eEAC3 :
codec == cAudioCodec::eAAC ? EDID_AudioFormat_eAAC :
+ codec == cAudioCodec::eADTS ? EDID_AudioFormat_eAAC :
EDID_AudioFormat_ePCM, channels,
samplingRate == 32000 ? EDID_AudioSampleRate_e32KHz :
- samplingRate == 44000 ? EDID_AudioSampleRate_e44KHz :
+ samplingRate == 44100 ? EDID_AudioSampleRate_e44KHz :
samplingRate == 88000 ? EDID_AudioSampleRate_e88KHz :
samplingRate == 96000 ? EDID_AudioSampleRate_e96KHz :
samplingRate == 176000 ? EDID_AudioSampleRate_e176KHz :
@@ -134,6 +135,10 @@ bool cRpiSetup::IsAudioFormatSupported(cAudioCodec::eCodec codec,
EDID_AudioSampleSize_16bit) == 0)
return true;
+ dsyslog("rpihddevice: %dch %s, %d.%dkHz not supported by HDMI device",
+ channels, cAudioCodec::Str(codec),
+ samplingRate / 1000, (samplingRate % 1000) / 100);
+
return false;
}
@@ -151,9 +156,31 @@ int cRpiSetup::GetDisplaySize(int &width, int &height, double &aspect)
aspect = 1;
return 0;
}
+
return -1;
}
+bool cRpiSetup::IsDisplayProgressive(void)
+{
+ bool progressive = false;
+
+ TV_DISPLAY_STATE_T tvstate;
+ memset(&tvstate, 0, sizeof(TV_DISPLAY_STATE_T));
+ if (!vc_tv_get_display_state(&tvstate))
+ {
+ // HDMI
+ if ((tvstate.state & (VC_HDMI_HDMI | VC_HDMI_DVI)))
+ progressive = tvstate.display.hdmi.scan_mode == 0;
+ // composite
+ else
+ progressive = false;
+ }
+ else
+ esyslog("rpihddevice: failed to get display state!");
+
+ return progressive;
+}
+
bool cRpiSetup::HasAudioSetupChanged(void)
{
if (!GetInstance()->m_audioSetupChanged)