diff --git a/talk/libjingle.scons b/talk/libjingle.scons
index 6713149..5ad357e 100644
--- a/talk/libjingle.scons
+++ b/talk/libjingle.scons
@@ -119,6 +119,7 @@
                "SRTP_RELATIVE_PATH",
                "XML_STATIC",
                "HAVE_GIPS",
+               "BRUNO",
              ],
              srcs = [
                "base/asyncfile.cc",
diff --git a/talk/session/phone/gips.h b/talk/session/phone/gips.h
index 14589fd..2c02271 100644
--- a/talk/session/phone/gips.h
+++ b/talk/session/phone/gips.h
@@ -5,19 +5,18 @@
 #define TALK_SESSION_PHONE_GIPS_H_
 
 #include "talk/base/common.h"
-#include "talk/third_party/gips/Interface/GIPSVEBase.h"
-#include "talk/third_party/gips/Interface/GIPSVECodec.h"
-#include "talk/third_party/gips/Interface/GIPSVEDTMF.h"
-#include "talk/third_party/gips/Interface/GIPSVEErrors.h"
-#include "talk/third_party/gips/Interface/GIPSVEExternalMedia.h"
-#include "talk/third_party/gips/Interface/GIPSVEFile.h"
-#include "talk/third_party/gips/Interface/GIPSVEHardware.h"
-#include "talk/third_party/gips/Interface/GIPSVENetwork.h"
-#include "talk/third_party/gips/Interface/GIPSVENetEqStats.h"
-#include "talk/third_party/gips/Interface/GIPSVERTP_RTCP.h"
-#include "talk/third_party/gips/Interface/GIPSVEVideoSync.h"
-#include "talk/third_party/gips/Interface/GIPSVEVolumeControl.h"
-#include "talk/third_party/gips/Interface/GIPSVEVQE.h"
+#include "gips/Interface/GIPSVEBase.h"
+#include "gips/Interface/GIPSVECodec.h"
+#include "gips/Interface/GIPSVEDTMF.h"
+#include "gips/Interface/GIPSVEErrors.h"
+#include "gips/Interface/GIPSVEFile.h"
+#include "gips/Interface/GIPSVEHardware.h"
+#include "gips/Interface/GIPSVENetwork.h"
+#include "gips/Interface/GIPSVENetEqStats.h"
+#include "gips/Interface/GIPSVERTP_RTCP.h"
+#include "gips/Interface/GIPSVEVideoSync.h"
+#include "gips/Interface/GIPSVEVolumeControl.h"
+#include "gips/Interface/GIPSVEVQE.h"
 
 // Tracing helpers, for easy logging when GIPS calls fail.
 // Example: "LOG_GIPSERR1(StartSend, channel);" produces the trace
@@ -80,7 +79,6 @@
         dtmf_(engine_),
         file_(engine_),
         hw_(engine_),
-        media_(engine_),
         neteq_(engine_),
         network_(engine_),
         rtp_(engine_),
@@ -89,8 +87,7 @@
         vqe_(engine_) {
   }
   GipsWrapper(GIPSVEBase* base, GIPSVECodec* codec, GIPSVEDTMF* dtmf,
-              GIPSVEFile* file, GIPSVEHardware* hw,
-              GIPSVEExternalMedia* media, GIPSVENetEqStats* neteq,
+              GIPSVEFile* file, GIPSVEHardware* hw, GIPSVENetEqStats* neteq,
               GIPSVENetwork* network, GIPSVERTP_RTCP* rtp,
               GIPSVEVideoSync* sync, GIPSVEVolumeControl* volume,
               GIPSVEVQE* vqe)
@@ -100,7 +97,6 @@
         dtmf_(dtmf),
         file_(file),
         hw_(hw),
-        media_(media),
         neteq_(neteq),
         network_(network),
         rtp_(rtp),
@@ -114,7 +110,6 @@
   GIPSVEDTMF* dtmf() { return dtmf_.get(); }
   GIPSVEFile* file() { return file_.get(); }
   GIPSVEHardware* hw() { return hw_.get(); }
-  GIPSVEExternalMedia* media() { return media_.get(); }
   GIPSVENetEqStats* neteq() { return neteq_.get(); }
   GIPSVENetwork* network() { return network_.get(); }
   GIPSVERTP_RTCP* rtp() { return rtp_.get(); }
@@ -130,7 +125,6 @@
   scoped_gips_ptr<GIPSVEDTMF> dtmf_;
   scoped_gips_ptr<GIPSVEFile> file_;
   scoped_gips_ptr<GIPSVEHardware> hw_;
-  scoped_gips_ptr<GIPSVEExternalMedia> media_;
   scoped_gips_ptr<GIPSVENetEqStats> neteq_;
   scoped_gips_ptr<GIPSVENetwork> network_;
   scoped_gips_ptr<GIPSVERTP_RTCP> rtp_;
diff --git a/talk/session/phone/gipsmediaengine.cc b/talk/session/phone/gipsmediaengine.cc
index 4f8efa2..3cba73e 100644
--- a/talk/session/phone/gipsmediaengine.cc
+++ b/talk/session/phone/gipsmediaengine.cc
@@ -982,20 +982,6 @@
   return true;
 }
 
-bool GipsVoiceEngine::RegisterProcessor(
-    VoiceProcessor* voice_processor,
-    MediaProcessorDirection direction) {
-  // stubbing out...
-  return true;
-}
-
-bool GipsVoiceEngine::UnregisterProcessor(
-    VoiceProcessor* voice_processor,
-    MediaProcessorDirection direction) {
-  // stubbing out...
-  return true;
-}
-
 // GipsVoiceMediaChannel
 GipsVoiceMediaChannel::GipsVoiceMediaChannel(GipsVoiceEngine *engine)
     : GipsMediaChannel<VoiceMediaChannel, GipsVoiceEngine>(
@@ -1332,11 +1318,14 @@
 
     // Tandberg-bridged conferences have an AGC target that is lower than
     // GTV-only levels.
+    /* :BRUNO: disable this since this is built for tandberg */
+#ifndef BRUNO
     if ((channel_options_ & OPT_AGC_TANDBERG_LEVELS) && !agc_adjusted_) {
       if (engine()->AdjustAgcLevel(kTandbergDbAdjustment)) {
         agc_adjusted_ = true;
       }
     }
+#endif
 
     // GIPS resets sequence number when StopSend is called. This
     // sometimes causes libSRTP to complain about packets being
diff --git a/talk/session/phone/gipsmediaengine.h b/talk/session/phone/gipsmediaengine.h
index 86cc3f5..2796768 100644
--- a/talk/session/phone/gipsmediaengine.h
+++ b/talk/session/phone/gipsmediaengine.h
@@ -39,7 +39,6 @@
 #include "talk/base/scoped_ptr.h"
 #include "talk/base/stream.h"
 #include "talk/session/phone/channel.h"
-#include "talk/session/phone/mediaprocessorinterface.h"
 #include "talk/session/phone/mediaengine.h"
 #include "talk/session/phone/gips.h"
 #include "talk/session/phone/rtputils.h"
@@ -127,11 +126,6 @@
   GipsWrapper* gips_sc() { return gips_sc_.get(); }
   int GetLastGipsError();
 
-  virtual bool RegisterVoiceProcessor(VoiceProcessor* vp_interface,
-                                      MediaProcessorDirection direction);
-  virtual bool UnregisterVoiceProcessor(VoiceProcessor* vp_interface,
-                                        MediaProcessorDirection direction);
-
  private:
   typedef std::vector<GipsSoundclipMedia *> SoundclipList;
   typedef std::vector<GipsVoiceMediaChannel *> ChannelList;
@@ -181,10 +175,6 @@
   GIPS_AGC_config default_agc_config_;
   bool initialized_;
 
-  sigslot::signal2<uint32, AudioFrame*> SignalTxMediaFrame;
-  sigslot::signal2<uint32, bool> SignalTxMute;
-  sigslot::signal2<uint32, AudioFrame*> SignalRxMediaFrame;
-  sigslot::signal2<uint32, bool> SignalRxMute;
   talk_base::CriticalSection signal_media_critical_;
 };
 
diff --git a/talk/session/phone/mediaengine.cc b/talk/session/phone/mediaengine.cc
index 51e3b8b..992fc15 100644
--- a/talk/session/phone/mediaengine.cc
+++ b/talk/session/phone/mediaengine.cc
@@ -36,6 +36,9 @@
 #if defined(HAVE_WEBRTC_VIDEO)
 #include "talk/session/phone/webrtcvideoengine.h"
 #endif  // HAVE_WEBRTC_VIDEO
+#if defined(HAVE_GIPS)
+#include "talk/session/phone/gipsmediaengine.h"
+#endif  // HAVE_GIPS
 #endif  // HAVE_LINPHONE
 
 namespace cricket {
@@ -47,6 +50,11 @@
 #define VIDEO_ENG_NAME WebRtcVideoEngine
 #endif
 
+#if defined(HAVE_GIPS)
+#define AUDIO_ENG_NAME GipsVoiceEngine
+#define VIDEO_ENG_NAME NullVideoEngine
+#endif
+
 MediaEngineInterface* MediaEngineFactory::Create() {
 #if defined(HAVE_LINPHONE)
   return new LinphoneMediaEngine("", "");
