/* Set self.samplenum to 0. */
PyObject_SetAttrString(di->py_inst, "samplenum", PyLong_FromLong(0));
/* Set self.samplenum to 0. */
PyObject_SetAttrString(di->py_inst, "samplenum", PyLong_FromLong(0));
- /* Set self.matches to None. */
- PyObject_SetAttrString(di->py_inst, "matches", Py_None);
+ /* Set self.matched to None. */
+ PyObject_SetAttrString(di->py_inst, "matched", Py_None);
- * srd_inst_decode(di, 0, 1023, inbuf, 1024, 1);
- * srd_inst_decode(di, 1024, 2047, inbuf, 1024, 1);
- * srd_inst_decode(di, 2048, 3071, inbuf, 1024, 1);
- * srd_inst_decode(di, 3072, 4095, inbuf, 1024, 1);
+ * srd_inst_decode(di, 0, 1024, inbuf, 1024, 1);
+ * srd_inst_decode(di, 1024, 2048, inbuf, 1024, 1);
+ * srd_inst_decode(di, 2048, 3072, inbuf, 1024, 1);
+ * srd_inst_decode(di, 3072, 4096, inbuf, 1024, 1);
- * srd_inst_decode(di, 0, 1023, inbuf, 1024, 1);
- * srd_inst_decode(di, 1024, 1123, inbuf, 100, 1);
- * srd_inst_decode(di, 1124, 1423, inbuf, 300, 1);
- * srd_inst_decode(di, 1424, 1642, inbuf, 219, 1);
- * srd_inst_decode(di, 1643, 2047, inbuf, 405, 1);
- * srd_inst_decode(di, 2048, 3071, inbuf, 1024, 1);
- * srd_inst_decode(di, 3072, 4095, inbuf, 1024, 1);
+ * srd_inst_decode(di, 0, 1024, inbuf, 1024, 1);
+ * srd_inst_decode(di, 1024, 1124, inbuf, 100, 1);
+ * srd_inst_decode(di, 1124, 1424, inbuf, 300, 1);
+ * srd_inst_decode(di, 1424, 1643, inbuf, 219, 1);
+ * srd_inst_decode(di, 1643, 2048, inbuf, 405, 1);
+ * srd_inst_decode(di, 2048, 3072, inbuf, 1024, 1);
+ * srd_inst_decode(di, 3072, 4096, inbuf, 1024, 1);
*
* INCORRECT example (4096 samples total, 4 chunks @ 1024 samples each, but
* the start- and end-samplenumbers are not absolute):
*
* INCORRECT example (4096 samples total, 4 chunks @ 1024 samples each, but
* the start- and end-samplenumbers are not absolute):
- * srd_inst_decode(di, 0, 1023, inbuf, 1024, 1);
- * srd_inst_decode(di, 0, 1023, inbuf, 1024, 1);
- * srd_inst_decode(di, 0, 1023, inbuf, 1024, 1);
- * srd_inst_decode(di, 0, 1023, inbuf, 1024, 1);
+ * srd_inst_decode(di, 0, 1024, inbuf, 1024, 1);
+ * srd_inst_decode(di, 0, 1024, inbuf, 1024, 1);
+ * srd_inst_decode(di, 0, 1024, inbuf, 1024, 1);
+ * srd_inst_decode(di, 0, 1024, inbuf, 1024, 1);
+ if (abs_start_samplenum != di->abs_cur_samplenum ||
+ abs_end_samplenum < abs_start_samplenum) {
+ srd_dbg("Incorrect sample numbers: start=%" PRIu64 ", cur=%"
+ PRIu64 ", end=%" PRIu64 ".", abs_start_samplenum,
+ di->abs_cur_samplenum, abs_end_samplenum);
+ return SRD_ERR_ARG;
+ }
+
- if (!di->thread_handle)
- di->thread_handle = g_thread_new("di_thread",
+ if (!di->thread_handle) {
+ srd_dbg("No worker thread for this decoder stack "
+ "exists yet, creating one: %s.", di->inst_id);
+ di->thread_handle = g_thread_new(di->inst_id,