summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-02-29 12:00:46 +0000
committerBenny Prijono <bennylp@teluu.com>2008-02-29 12:00:46 +0000
commit81939c7e67c14187179b938c46e53b462ef37373 (patch)
tree18f8613185f961eb898c8d98f2ae59ff0da9e0e0
parente421f89fe30b9fb93f336c8324547443542715b6 (diff)
Added pjmedia_wsola_reset()
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1831 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/include/pjmedia/wsola.h12
-rw-r--r--pjmedia/src/pjmedia/wsola.c14
2 files changed, 26 insertions, 0 deletions
diff --git a/pjmedia/include/pjmedia/wsola.h b/pjmedia/include/pjmedia/wsola.h
index 9592db38..dbeab186 100644
--- a/pjmedia/include/pjmedia/wsola.h
+++ b/pjmedia/include/pjmedia/wsola.h
@@ -99,6 +99,18 @@ PJ_DECL(pj_status_t) pjmedia_wsola_destroy(pjmedia_wsola *wsola);
/**
+ * Reset the buffer contents of WSOLA.
+ *
+ * @param wsola WSOLA session.
+ * @param options Reset options, must be zero for now.
+ *
+ * @return PJ_SUCCESS normally.
+ */
+PJ_DECL(pj_status_t) pjmedia_wsola_reset(pjmedia_wsola *wsola,
+ unsigned options);
+
+
+/**
* Give one good frame to WSOLA to be kept as reference. Application
* must continuously give WSOLA good frames to keep its session up to
* date with current playback. Depending on the WSOLA implementation,
diff --git a/pjmedia/src/pjmedia/wsola.c b/pjmedia/src/pjmedia/wsola.c
index b0be6aba..23e73cf0 100644
--- a/pjmedia/src/pjmedia/wsola.c
+++ b/pjmedia/src/pjmedia/wsola.c
@@ -352,6 +352,20 @@ PJ_DEF(pj_status_t) pjmedia_wsola_destroy(pjmedia_wsola *wsola)
return PJ_SUCCESS;
}
+
+PJ_DEF(pj_status_t) pjmedia_wsola_reset( pjmedia_wsola *wsola,
+ unsigned options)
+{
+ PJ_ASSERT_RETURN(wsola && options==0, PJ_EINVAL);
+ PJ_UNUSED_ARG(options);
+
+ pjmedia_zero_samples(wsola->buf, wsola->cur_cnt);
+ wsola->cur_cnt = (pj_uint16_t)(wsola->hist_cnt +
+ wsola->samples_per_frame);
+ return PJ_SUCCESS;
+}
+
+
static void expand(pjmedia_wsola *wsola, unsigned needed)
{
unsigned generated = 0;