diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-07-26 08:52:00 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-07-26 08:52:00 +0000 |
| commit | 3865d6087639e60a8bef07bf7dd88971744bacc8 (patch) | |
| tree | c3b27bb9996e75106eb85c5a4405ad18e3056080 /src/QXmppRtpChannel.cpp | |
| parent | 413651e1a8f7886a2c053141be33fe9c1361ede9 (diff) | |
| download | qxmpp-3865d6087639e60a8bef07bf7dd88971744bacc8.tar.gz | |
add support for vp8 video codec
Diffstat (limited to 'src/QXmppRtpChannel.cpp')
| -rw-r--r-- | src/QXmppRtpChannel.cpp | 40 |
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; |
