| Index: webrtc/modules/audio_coding/neteq/test/RTPencode.cc
 | 
| diff --git a/webrtc/modules/audio_coding/neteq/test/RTPencode.cc b/webrtc/modules/audio_coding/neteq/test/RTPencode.cc
 | 
| index 5410925e8100071057f3be86caf87f5a86f17fc6..45586ee111c655ae0b6f28ffd339ed74bcfc32fc 100644
 | 
| --- a/webrtc/modules/audio_coding/neteq/test/RTPencode.cc
 | 
| +++ b/webrtc/modules/audio_coding/neteq/test/RTPencode.cc
 | 
| @@ -25,7 +25,9 @@
 | 
|  
 | 
|  #include <algorithm>
 | 
|  
 | 
| +#include "webrtc/base/checks.h"
 | 
|  #include "webrtc/typedefs.h"
 | 
| +
 | 
|  // needed for NetEqDecoder
 | 
|  #include "webrtc/modules/audio_coding/neteq/audio_decoder_impl.h"
 | 
|  #include "webrtc/modules/audio_coding/neteq/include/neteq.h"
 | 
| @@ -36,6 +38,10 @@
 | 
|  
 | 
|  #include "PayloadTypes.h"
 | 
|  
 | 
| +namespace {
 | 
| +const size_t kRtpDataSize = 8000;
 | 
| +}
 | 
| +
 | 
|  /*********************/
 | 
|  /* Misc. definitions */
 | 
|  /*********************/
 | 
| @@ -193,6 +199,9 @@ void stereoInterleave(unsigned char* data, size_t dataLen, size_t stride);
 | 
|  #if ((defined CODEC_SPEEX_8) || (defined CODEC_SPEEX_16))
 | 
|  #include "SpeexInterface.h"
 | 
|  #endif
 | 
| +#ifdef CODEC_OPUS
 | 
| +#include "webrtc/modules/audio_coding/codecs/opus/opus_interface.h"
 | 
| +#endif
 | 
|  
 | 
|  /***********************************/
 | 
|  /* Global codec instance variables */
 | 
| @@ -264,6 +273,9 @@ SPEEX_encinst_t* SPEEX8enc_inst[2];
 | 
|  #ifdef CODEC_SPEEX_16
 | 
|  SPEEX_encinst_t* SPEEX16enc_inst[2];
 | 
|  #endif
 | 
| +#ifdef CODEC_OPUS
 | 
| +OpusEncInst* opus_inst[2];
 | 
| +#endif
 | 
|  
 | 
|  int main(int argc, char* argv[]) {
 | 
|    size_t packet_size;
 | 
| @@ -275,7 +287,7 @@ int main(int argc, char* argv[]) {
 | 
|    int useRed = 0;
 | 
|    size_t len, enc_len;
 | 
|    int16_t org_data[4000];
 | 
| -  unsigned char rtp_data[8000];
 | 
| +  unsigned char rtp_data[kRtpDataSize];
 | 
|    int16_t seqNo = 0xFFF;
 | 
|    uint32_t ssrc = 1235412312;
 | 
|    uint32_t timestamp = 0xAC1245;
 | 
| @@ -286,12 +298,12 @@ int main(int argc, char* argv[]) {
 | 
|    uint32_t red_TS[2] = {0};
 | 
|    uint16_t red_len[2] = {0};
 | 
|    size_t RTPheaderLen = 12;
 | 
| -  uint8_t red_data[8000];
 | 
| +  uint8_t red_data[kRtpDataSize];
 | 
|  #ifdef INSERT_OLD_PACKETS
 | 
|    uint16_t old_length, old_plen;
 | 
|    size_t old_enc_len;
 | 
|    int first_old_packet = 1;
 | 
| -  unsigned char old_rtp_data[8000];
 | 
| +  unsigned char old_rtp_data[kRtpDataSize];
 | 
|    size_t packet_age = 0;
 | 
|  #endif
 | 
|  #ifdef INSERT_DTMF_PACKETS
 | 
| @@ -429,6 +441,10 @@ int main(int argc, char* argv[]) {
 | 
|      printf("             : red_isac     Redundancy RTP packet with 2*iSAC "
 | 
|             "frames\n");
 | 
|  #endif
 | 
| +#endif  // CODEC_RED
 | 
| +#ifdef CODEC_OPUS
 | 
| +    printf("             : opus         Opus codec with FEC (48kHz, 32kbps, FEC"
 | 
| +        " on and tuned for 5%% packet losses)\n");
 | 
|  #endif
 | 
|      printf("\n");
 | 
|  
 | 
| @@ -880,6 +896,10 @@ void NetEQTest_GetCodec_and_PT(char* name,
 | 
|      *PT = NETEQ_CODEC_ISAC_PT; /* this will be the PT for the sub-headers */
 | 
|      *fs = 16000;
 | 
|      *useRed = 1;
 | 
| +  } else if (!strcmp(name, "opus")) {
 | 
| +    *codec = webrtc::NetEqDecoder::kDecoderOpus;
 | 
| +    *PT = NETEQ_CODEC_OPUS_PT; /* this will be the PT for the sub-headers */
 | 
| +    *fs = 48000;
 | 
|    } else {
 | 
|      printf("Error: Not a supported codec (%s)\n", name);
 | 
|      exit(0);
 | 
| @@ -1411,12 +1431,23 @@ int NetEQTest_init_coders(webrtc::NetEqDecoder coder,
 | 
|          }
 | 
|          break;
 | 
|  #endif
 | 
| +#ifdef CODEC_OPUS
 | 
| +      case webrtc::NetEqDecoder::kDecoderOpus:
 | 
| +        ok = WebRtcOpus_EncoderCreate(&opus_inst[k], 1, 0);
 | 
| +        if (ok != 0) {
 | 
| +          printf("Error: Couldn't allocate memory for Opus encoding "
 | 
| +                 "instance\n");
 | 
| +          exit(0);
 | 
| +        }
 | 
| +        WebRtcOpus_EnableFec(opus_inst[k]);
 | 
| +        WebRtcOpus_SetPacketLossRate(opus_inst[k], 5);
 | 
| +        break;
 | 
| +#endif
 | 
|        default:
 | 
|          printf("Error: unknown codec in call to NetEQTest_init_coders.\n");
 | 
|          exit(0);
 | 
|          break;
 | 
|      }
 | 
| -
 | 
|      if (ok != 0) {
 | 
|        return (ok);
 | 
|      }
 | 
| @@ -1543,6 +1574,11 @@ int NetEQTest_free_coders(webrtc::NetEqDecoder coder, size_t numChannels) {
 | 
|          WebRtcGSMFR_FreeEnc(GSMFRenc_inst[k]);
 | 
|          break;
 | 
|  #endif
 | 
| +#ifdef CODEC_OPUS
 | 
| +      case webrtc::NetEqDecoder::kDecoderOpus:
 | 
| +        WebRtcOpus_EncoderFree(opus_inst[k]);
 | 
| +        break;
 | 
| +#endif
 | 
|        default:
 | 
|          printf("Error: unknown codec in call to NetEQTest_init_coders.\n");
 | 
|          exit(0);
 | 
| @@ -1687,6 +1723,11 @@ size_t NetEQTest_encode(webrtc::NetEqDecoder coder,
 | 
|        cdlen = static_cast<size_t>(res);
 | 
|      }
 | 
|  #endif
 | 
| +#ifdef CODEC_OPUS
 | 
| +    cdlen = WebRtcOpus_Encode(opus_inst[k], indata, frameLen, kRtpDataSize - 12,
 | 
| +                              encoded);
 | 
| +    RTC_CHECK_GT(cdlen, 0u);
 | 
| +#endif
 | 
|      indata += frameLen;
 | 
|      encoded += cdlen;
 | 
|      totalLen += cdlen;
 | 
| 
 |