aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppRtpChannel.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-07-26 08:52:00 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-07-26 08:52:00 +0000
commit3865d6087639e60a8bef07bf7dd88971744bacc8 (patch)
treec3b27bb9996e75106eb85c5a4405ad18e3056080 /src/QXmppRtpChannel.cpp
parent413651e1a8f7886a2c053141be33fe9c1361ede9 (diff)
downloadqxmpp-3865d6087639e60a8bef07bf7dd88971744bacc8.tar.gz
add support for vp8 video codec
Diffstat (limited to 'src/QXmppRtpChannel.cpp')
-rw-r--r--src/QXmppRtpChannel.cpp40
1 files changed, 34 insertions, 6 deletions
diff --git a/src/QXmppRtpChannel.cpp b/src/QXmppRtpChannel.cpp
index 732246eb..df26bc30 100644
--- a/src/QXmppRtpChannel.cpp
+++ b/src/QXmppRtpChannel.cpp
@@ -863,11 +863,26 @@ QXmppRtpVideoChannel::QXmppRtpVideoChannel(QObject *parent)
d->outgoingFormat.setPixelFormat(QXmppVideoFrame::Format_YUYV);
// set supported codecs
-#ifdef QXMPP_USE_THEORA
- QXmppVideoEncoder *encoder = new QXmppTheoraEncoder;
- encoder->setFormat(d->outgoingFormat);
+ QXmppVideoEncoder *encoder;
QXmppJinglePayloadType payload;
+ Q_UNUSED(encoder);
+ Q_UNUSED(payload);
+
+#ifdef QXMPP_USE_VPX
+ encoder = new QXmppVpxEncoder;
+ encoder->setFormat(d->outgoingFormat);
payload.setId(96);
+ payload.setName("vp8");
+ payload.setClockrate(90000);
+ payload.setParameters(encoder->parameters());
+ m_outgoingPayloadTypes << payload;
+ delete encoder;
+#endif
+
+#ifdef QXMPP_USE_THEORA
+ encoder = new QXmppTheoraEncoder;
+ encoder->setFormat(d->outgoingFormat);
+ payload.setId(97);
payload.setName("theora");
payload.setClockrate(90000);
payload.setParameters(encoder->parameters());
@@ -910,7 +925,7 @@ void QXmppRtpVideoChannel::datagramReceived(const QByteArray &ba)
QXmppVideoDecoder *decoder = d->decoders.value(packet.type);
if (!decoder)
return;
- d->frames << decoder->handlePacket(packet.payload);
+ d->frames << decoder->handlePacket(packet);
}
QXmppVideoFormat QXmppRtpVideoChannel::decoderFormat() const
@@ -951,10 +966,16 @@ void QXmppRtpVideoChannel::payloadTypesChanged()
d->decoders.clear();
foreach (const QXmppJinglePayloadType &payload, m_incomingPayloadTypes) {
QXmppVideoDecoder *decoder = 0;
+ if (false)
+ {}
#ifdef QXMPP_USE_THEORA
- if (payload.name().toLower() == "theora")
+ else if (payload.name().toLower() == "theora")
decoder = new QXmppTheoraDecoder;
#endif
+#ifdef QXMPP_USE_VPX
+ else if (payload.name().toLower() == "vp8")
+ decoder = new QXmppVpxDecoder;
+#endif
if (decoder) {
decoder->setParameters(payload.parameters());
d->decoders.insert(payload.id(), decoder);
@@ -968,10 +989,17 @@ void QXmppRtpVideoChannel::payloadTypesChanged()
}
foreach (const QXmppJinglePayloadType &payload, m_outgoingPayloadTypes) {
QXmppVideoEncoder *encoder = 0;
+ if (false)
+ {}
#ifdef QXMPP_USE_THEORA
- if (payload.name().toLower() == "theora")
+ else if (payload.name().toLower() == "theora")
encoder = new QXmppTheoraEncoder;
#endif
+#ifdef QXMPP_USE_VPX
+ else if (payload.name().toLower() == "vp8") {
+ encoder = new QXmppVpxEncoder;
+ }
+#endif
if (encoder) {
encoder->setFormat(d->outgoingFormat);
d->encoder = encoder;