From 972818d5883bd4b447787f11ab9f15d7b7c66067 Mon Sep 17 00:00:00 2001
From: Tristan Matthews <tristan.matthews@savoirfairelinux.com>
Date: Wed, 29 Jun 2011 12:14:33 -0400
Subject: [PATCH] Revert "* #6295: removed unused clone method"

This reverts commit d04bf094628638be579dac768e7343473c800685.
---
 sflphone-common/src/Codec.h                        | 7 +++++++
 sflphone-common/src/audio/codecs/alaw.cpp          | 9 +++++++++
 sflphone-common/src/audio/codecs/audiocodec.h      | 5 +++++
 sflphone-common/src/audio/codecs/celtcodec.cpp     | 8 ++++++++
 sflphone-common/src/audio/codecs/g722.cpp          | 8 ++++++++
 sflphone-common/src/audio/codecs/gsmcodec.cpp      | 8 ++++++++
 sflphone-common/src/audio/codecs/speexcodec_nb.cpp | 8 ++++++++
 sflphone-common/src/audio/codecs/speexcodec_ub.cpp | 8 ++++++++
 sflphone-common/src/audio/codecs/speexcodec_wb.cpp | 7 +++++++
 sflphone-common/src/audio/codecs/ulaw.cpp          | 8 ++++++++
 10 files changed, 76 insertions(+)

diff --git a/sflphone-common/src/Codec.h b/sflphone-common/src/Codec.h
index de1824f84f..b903443fe7 100644
--- a/sflphone-common/src/Codec.h
+++ b/sflphone-common/src/Codec.h
@@ -32,6 +32,8 @@
 
 #include "MimeParameters.h" // TODO Move to some higher directory
 
+#include <tr1/memory>
+
 #include <cc++/digest.h>
 
 /**
@@ -59,6 +61,11 @@ class Codec : public virtual MimeParameters
          */
         virtual std::string getDescription() const = 0;
 
+        /**
+         * @return A copy of the current codec.
+         */
+        virtual Codec* clone() const = 0;
+
         /**
          * Build a unique hash code for identifying the codec uniquely.
          * Note that if multiple implementations of codec are provided,
diff --git a/sflphone-common/src/audio/codecs/alaw.cpp b/sflphone-common/src/audio/codecs/alaw.cpp
index e38931c7a0..f6826269eb 100644
--- a/sflphone-common/src/audio/codecs/alaw.cpp
+++ b/sflphone-common/src/audio/codecs/alaw.cpp
@@ -135,6 +135,15 @@ class Alaw : public sfl::AudioCodec
         std::string getDescription() const {
             return "audio/PCMA 8000 (\"alaw\") codec.";
         }
+
+        /**
+         * @Override
+         */
+        Alaw* clone() const {
+            return new Alaw (*this);
+        }
+
+
 };
 
 // the class factories
diff --git a/sflphone-common/src/audio/codecs/audiocodec.h b/sflphone-common/src/audio/codecs/audiocodec.h
index 1f183b2dfb..20558f0527 100644
--- a/sflphone-common/src/audio/codecs/audiocodec.h
+++ b/sflphone-common/src/audio/codecs/audiocodec.h
@@ -133,6 +133,11 @@ class AudioCodec : public Codec
          */
         unsigned int getFrameSize() const;
 
+        /**
+         * @Override
+         */
+        virtual AudioCodec* clone() const = 0;
+
     protected:
         /** Holds SDP-compliant codec name */
         std::string _codecName; // what we put inside sdp
diff --git a/sflphone-common/src/audio/codecs/celtcodec.cpp b/sflphone-common/src/audio/codecs/celtcodec.cpp
index 69d156e505..4ce2b45f20 100644
--- a/sflphone-common/src/audio/codecs/celtcodec.cpp
+++ b/sflphone-common/src/audio/codecs/celtcodec.cpp
@@ -156,6 +156,14 @@ class Celt : public sfl::AudioCodec
             return "audio/celt 32000 (\"HD\") codec. Based on libcelt, by Jean-Marc Valin.";
         }
 
+        /**
+         * @Override
+         */
+        Celt* clone() const {
+            return new Celt (*this);
+        }
+
+
     private:
 
         CELTMode *_mode;
diff --git a/sflphone-common/src/audio/codecs/g722.cpp b/sflphone-common/src/audio/codecs/g722.cpp
index 3390101482..41ec89a9e1 100644
--- a/sflphone-common/src/audio/codecs/g722.cpp
+++ b/sflphone-common/src/audio/codecs/g722.cpp
@@ -829,6 +829,14 @@ class G722 : public sfl::AudioCodec
             return "G722 codec. Most of the code comes from Steve Underwood (<steveu@coppice.org>) for the Asterisk project.";
         }
 
+        /**
+         * @Override
+         */
+        G722* clone() const {
+            return new G722 (*this);
+        }
+
+
     private:
 
         g722_decode_state_t *decode_s;
diff --git a/sflphone-common/src/audio/codecs/gsmcodec.cpp b/sflphone-common/src/audio/codecs/gsmcodec.cpp
index 5c43b39cb8..8be02bc61c 100644
--- a/sflphone-common/src/audio/codecs/gsmcodec.cpp
+++ b/sflphone-common/src/audio/codecs/gsmcodec.cpp
@@ -93,6 +93,14 @@ class Gsm : public sfl::AudioCodec
             return "GSM codec. Based on libgsm, (C) Jutta Degener and Carsten Bormann, Technische Universitaet Berlin.";
         }
 
+        /**
+         * @Override
+         */
+        Gsm* clone() const {
+            return new Gsm (*this);
+        }
+
+
     private:
         gsm _decode_gsmhandle;
         gsm _encode_gsmhandle;
diff --git a/sflphone-common/src/audio/codecs/speexcodec_nb.cpp b/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
index 7c3c076788..e0fcd2a815 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_nb.cpp
@@ -121,6 +121,14 @@ class Speex : public sfl::AudioCodec
             return "audio/speex 8000 (\"narrow band\") codec. Based on libspeex, by Jean-Marc Valin.";
         }
 
+        /**
+         * @Override
+         */
+        Speex* clone() const {
+            return new Speex (*this);
+        }
+
+
     private:
         const SpeexMode* _speexModePtr;
         SpeexBits  _speex_dec_bits;
diff --git a/sflphone-common/src/audio/codecs/speexcodec_ub.cpp b/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
index ebffda8a71..36a8cd1f42 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_ub.cpp
@@ -123,6 +123,14 @@ class Speex : public sfl::AudioCodec
             return "audio/speex 32000 (\"ultra wide band\") codec. Based on libspeex, by Jean-Marc Valin.";
         }
 
+        /**
+         * @Override
+         */
+        Speex* clone() const {
+            return new Speex (*this);
+        }
+
+
     private:
         const SpeexMode* _speexModePtr;
         SpeexBits  _speex_dec_bits;
diff --git a/sflphone-common/src/audio/codecs/speexcodec_wb.cpp b/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
index 6e974e3e77..e4fcd41462 100644
--- a/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
+++ b/sflphone-common/src/audio/codecs/speexcodec_wb.cpp
@@ -122,6 +122,13 @@ class Speex : public sfl::AudioCodec
             return "audio/speex 16000 (\"wide band\") codec. Based on libspeex, by Jean-Marc Valin.";
         }
 
+        /**
+         * @Override
+         */
+        Speex* clone() const {
+            return new Speex (*this);
+        }
+
     private:
         const SpeexMode* _speexModePtr;
         SpeexBits  _speex_dec_bits;
diff --git a/sflphone-common/src/audio/codecs/ulaw.cpp b/sflphone-common/src/audio/codecs/ulaw.cpp
index e3560c0728..56d6571742 100644
--- a/sflphone-common/src/audio/codecs/ulaw.cpp
+++ b/sflphone-common/src/audio/codecs/ulaw.cpp
@@ -130,6 +130,14 @@ class Ulaw : public sfl::AudioCodec
         std::string getDescription() const {
             return "audio/PCMU 8000 (\"ulaw\") codec.";
         }
+
+        /**
+         * @Override
+         */
+        Ulaw* clone() const {
+            return new Ulaw (*this);
+        }
+
 };
 
 // the class factories
-- 
GitLab