qv4l2: add channel detection.
authorHans Verkuil <hans.verkuil@cisco.com>
Sun, 10 Jun 2012 09:25:35 +0000 (11:25 +0200)
committerHans Verkuil <hans.verkuil@cisco.com>
Sun, 10 Jun 2012 09:25:35 +0000 (11:25 +0200)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
utils/qv4l2/general-tab.cpp
utils/qv4l2/general-tab.h

index a68d9aa..784d19c 100644 (file)
@@ -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;
index aa1b8c4..8805ed7 100644 (file)
@@ -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;