From bf26c5c5946b4e0a9ae91e020cbc33720e545675 Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Sun, 10 Jun 2012 11:25:35 +0200 Subject: [PATCH] qv4l2: add channel detection. Signed-off-by: Hans Verkuil --- utils/qv4l2/general-tab.cpp | 30 ++++++++++++++++++++++++++++++ utils/qv4l2/general-tab.h | 3 +++ 2 files changed, 33 insertions(+) diff --git a/utils/qv4l2/general-tab.cpp b/utils/qv4l2/general-tab.cpp index a68d9aa..784d19c 100644 --- a/utils/qv4l2/general-tab.cpp +++ b/utils/qv4l2/general-tab.cpp @@ -227,6 +227,12 @@ GeneralTab::GeneralTab(const QString &device, v4l2 &fd, int n, QWidget *parent) if (m_audioModes[i] == m_tuner.audmode) m_audioMode->setCurrentIndex(i); connect(m_audioMode, SIGNAL(activated(int)), SLOT(audioModeChanged(int))); + m_subchannels = new QLabel("", parent); + addWidget(m_subchannels, Qt::AlignRight); + m_detectSubchans = new QPushButton("Refresh Tuner Status", parent); + addWidget(m_detectSubchans); + connect(m_detectSubchans, SIGNAL(clicked()), SLOT(detectSubchansClicked())); + detectSubchansClicked(); } if (isRadio()) @@ -416,6 +422,30 @@ void GeneralTab::audioModeChanged(int) s_tuner(m_tuner); } +void GeneralTab::detectSubchansClicked() +{ + QString chans; + + g_tuner(m_tuner); + if (m_tuner.rxsubchans & V4L2_TUNER_SUB_MONO) + chans += "Mono "; + if (m_tuner.rxsubchans & V4L2_TUNER_SUB_STEREO) + chans += "Stereo "; + if (m_tuner.rxsubchans & V4L2_TUNER_SUB_LANG1) + chans += "Lang1 "; + if (m_tuner.rxsubchans & V4L2_TUNER_SUB_LANG2) + chans += "Lang2 "; + if (m_tuner.rxsubchans & V4L2_TUNER_SUB_RDS) + chans += "RDS "; + chans += "(" + QString::number((int)(m_tuner.signal / 655.35 + 0.5)) + "%"; + if (m_tuner.afc < 0) + chans += " too low"; + else if (m_tuner.afc > 0) + chans += " too high"; + chans += ")"; + m_subchannels->setText(chans); +} + void GeneralTab::vidCapFormatChanged(int idx) { v4l2_fmtdesc desc; diff --git a/utils/qv4l2/general-tab.h b/utils/qv4l2/general-tab.h index aa1b8c4..8805ed7 100644 --- a/utils/qv4l2/general-tab.h +++ b/utils/qv4l2/general-tab.h @@ -60,6 +60,7 @@ private slots: void freqChannelChanged(int); void freqChanged(); void audioModeChanged(int); + void detectSubchansClicked(); void vidCapFormatChanged(int); void frameWidthChanged(); void frameHeightChanged(); @@ -126,6 +127,8 @@ private: QComboBox *m_freqTable; QComboBox *m_freqChannel; QComboBox *m_audioMode; + QLabel *m_subchannels; + QPushButton *m_detectSubchans; QComboBox *m_vidCapFormats; QComboBox *m_frameSize; QSpinBox *m_frameWidth; -- 2.7.4