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
