summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/codec_thread.c3
-rw-r--r--lib/rbcodec/codecs/opus.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/apps/codec_thread.c b/apps/codec_thread.c
index 4eb85c8d71..807c0b6e8e 100644
--- a/apps/codec_thread.c
+++ b/apps/codec_thread.c
@@ -92,7 +92,8 @@ static struct event_queue codec_queue SHAREDBSS_ATTR;
static struct queue_sender_list codec_queue_sender_list SHAREDBSS_ATTR;
/* Workaround stack overflow in opus codec on highmem devices (see FS#13060). */
-#if !defined(CPU_COLDFIRE) && (MEMORYSIZE >= 8) && defined(IRAMSIZE) && IRAMSIZE > (32 * 1024)
+/* Fixed 2019-8-14 (see FS#13131) */
+#if 0 /*!defined(CPU_COLDFIRE) && (MEMORYSIZE >= 8) && defined(IRAMSIZE) && IRAMSIZE > (32 * 1024)*/
#define WORKAROUND_FS13060 0x800
#else
#define WORKAROUND_FS13060 0
diff --git a/lib/rbcodec/codecs/opus.c b/lib/rbcodec/codecs/opus.c
index f0ad5e8ba4..c34c0b885b 100644
--- a/lib/rbcodec/codecs/opus.c
+++ b/lib/rbcodec/codecs/opus.c
@@ -413,6 +413,9 @@ enum codec_status codec_run(void)
LOGF("Opus seek page:%lld,%lld,%ld\n",
seek_target, page_granule, (long)param);
opus_seek_page_granule(seek_target, page_granule, &oy, &os);
+ /* reset the state to help ensure that subsequent packets won't
+ use state set by unrelated packets processed before seek */
+ opus_decoder_ctl(st, OPUS_RESET_STATE);
}
ci->set_elapsed(param);