This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/v4l-utils.git tree:

Subject: qv4l2: add audio mode support.
Author:  Hans Verkuil <[email protected]>
Date:    Sun Jun 10 10:51:05 2012 +0200

Signed-off-by: Hans Verkuil <[email protected]>

 utils/qv4l2/general-tab.cpp |   34 ++++++++++++++++++++++++++++++++++
 utils/qv4l2/general-tab.h   |    3 +++
 utils/qv4l2/v4l2-api.cpp    |    5 +++++
 utils/qv4l2/v4l2-api.h      |    1 +
 4 files changed, 43 insertions(+), 0 deletions(-)

---

http://git.linuxtv.org/v4l-utils.git?a=commitdiff;h=1cd688ed5e06e28f9a9bbe49eadbb541a9c0109f

diff --git a/utils/qv4l2/general-tab.cpp b/utils/qv4l2/general-tab.cpp
index 1541be0..a68d9aa 100644
--- a/utils/qv4l2/general-tab.cpp
+++ b/utils/qv4l2/general-tab.cpp
@@ -199,6 +199,34 @@ GeneralTab::GeneralTab(const QString &device, v4l2 &fd, 
int n, QWidget *parent)
                        connect(m_freqChannel, SIGNAL(activated(int)), 
SLOT(freqChannelChanged(int)));
                        updateFreqChannel();
                }
+               addLabel("Audio Mode");
+               m_audioMode = new QComboBox(parent);
+               m_audioMode->setSizeAdjustPolicy(QComboBox::AdjustToContents);
+               m_audioMode->addItem("Mono");
+               int audIdx = 0;
+               m_audioModes[audIdx++] = V4L2_TUNER_MODE_MONO;
+               if (m_tuner.capability & V4L2_TUNER_CAP_STEREO) {
+                       m_audioMode->addItem("Stereo");
+                       m_audioModes[audIdx++] = V4L2_TUNER_MODE_STEREO;
+               }
+               if (m_tuner.capability & V4L2_TUNER_CAP_LANG1) {
+                       m_audioMode->addItem("Language 1");
+                       m_audioModes[audIdx++] = V4L2_TUNER_MODE_LANG1;
+               }
+               if (m_tuner.capability & V4L2_TUNER_CAP_LANG2) {
+                       m_audioMode->addItem("Language 2");
+                       m_audioModes[audIdx++] = V4L2_TUNER_MODE_LANG2;
+               }
+               if ((m_tuner.capability & (V4L2_TUNER_CAP_LANG1 | 
V4L2_TUNER_CAP_LANG2)) ==
+                               (V4L2_TUNER_CAP_LANG1 | V4L2_TUNER_CAP_LANG2)) {
+                       m_audioMode->addItem("Language 1+2");
+                       m_audioModes[audIdx++] = V4L2_TUNER_MODE_LANG1_LANG2;
+               }
+               addWidget(m_audioMode);
+               for (int i = 0; i < audIdx; i++)
+                       if (m_audioModes[i] == m_tuner.audmode)
+                               m_audioMode->setCurrentIndex(i);
+               connect(m_audioMode, SIGNAL(activated(int)), 
SLOT(audioModeChanged(int)));
        }
 
        if (isRadio())
@@ -382,6 +410,12 @@ void GeneralTab::freqChanged()
        s_frequency(f * 16, m_tuner.capability & V4L2_TUNER_CAP_LOW);
 }
 
+void GeneralTab::audioModeChanged(int)
+{
+       m_tuner.audmode = m_audioModes[m_audioMode->currentIndex()];
+       s_tuner(m_tuner);
+}
+
 void GeneralTab::vidCapFormatChanged(int idx)
 {
        v4l2_fmtdesc desc;
diff --git a/utils/qv4l2/general-tab.h b/utils/qv4l2/general-tab.h
index e71c38a..aa1b8c4 100644
--- a/utils/qv4l2/general-tab.h
+++ b/utils/qv4l2/general-tab.h
@@ -59,6 +59,7 @@ private slots:
        void freqTableChanged(int);
        void freqChannelChanged(int);
        void freqChanged();
+       void audioModeChanged(int);
        void vidCapFormatChanged(int);
        void frameWidthChanged();
        void frameHeightChanged();
@@ -102,6 +103,7 @@ private:
        int m_col;
        int m_cols;
        bool m_isRadio;
+       __u32 m_audioModes[5];
        struct v4l2_tuner m_tuner;
        struct v4l2_capability m_querycap;
        __u32 m_pixelformat;
@@ -123,6 +125,7 @@ private:
        QLineEdit *m_freq;
        QComboBox *m_freqTable;
        QComboBox *m_freqChannel;
+       QComboBox *m_audioMode;
        QComboBox *m_vidCapFormats;
        QComboBox *m_frameSize;
        QSpinBox *m_frameWidth;
diff --git a/utils/qv4l2/v4l2-api.cpp b/utils/qv4l2/v4l2-api.cpp
index 04742b4..7df54e8 100644
--- a/utils/qv4l2/v4l2-api.cpp
+++ b/utils/qv4l2/v4l2-api.cpp
@@ -144,6 +144,11 @@ bool v4l2::g_tuner(v4l2_tuner &tuner)
        return true;
 }
 
+bool v4l2::s_tuner(v4l2_tuner &tuner)
+{
+       return ioctl("Set Tuner", VIDIOC_S_TUNER, &tuner);
+}
+
 bool v4l2::g_input(int &input)
 {
        return ioctl(VIDIOC_G_INPUT, &input) >= 0;
diff --git a/utils/qv4l2/v4l2-api.h b/utils/qv4l2/v4l2-api.h
index 5376897..d015909 100644
--- a/utils/qv4l2/v4l2-api.h
+++ b/utils/qv4l2/v4l2-api.h
@@ -59,6 +59,7 @@ public:
        bool queryctrl(v4l2_queryctrl &qc);
        bool querymenu(v4l2_querymenu &qm);
        bool g_tuner(v4l2_tuner &tuner);
+       bool s_tuner(v4l2_tuner &tuner);
        bool g_input(int &input);
        bool s_input(int input);
        bool g_output(int &output);

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to