}
}
+int16_t *filter_buffer_dup(context_t *ctx, int32_t start, int32_t end)
+{
+ filter_buf_t *filtbuf;
+ int16_t *dup;
+ size_t len;
+
+ if (!ctx || !(filtbuf = ctx->filtbuf))
+ return NULL;
+
+ if (start < 0 || end < 0 || start >= end || start >= filtbuf->len)
+ return NULL;
+
+ len = (end - start) * sizeof(int16_t);
+
+ if ((dup = mrp_alloc(len)))
+ memcpy(dup, filtbuf + start, len);
+
+ return dup;
+}
int16_t *buf;
int32_t max; /* maximum buffer size of filtered data (in samples) */
int32_t hwm; /* high-water mark (in samples) */
- int32_t len; /* length of data in filter buffer (inn samples) */
+ int32_t len; /* length of data in filter buffer (in samples) */
int32_t frlen; /* frame length in samples */
int32_t silen; /* minimum samples to declare silence */
int32_t ts; /* time stamp (in samples actually) */
void filter_buffer_process_data(context_t *ctx);
void filter_buffer_utter(context_t *ctx, bool full_utterance);
+int16_t *filter_buffer_dup(context_t *ctx, int32_t start, int32_t end);
+
#endif /* __SRS_POCKET_SPHINX_FILTER_BUFFER_H__ */
/*