diff options
author | Paul B Mahol <onemda@gmail.com> | 2019-08-28 18:28:16 +0300 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2019-08-28 18:28:16 +0300 |
commit | 9606e4b6e68de8c5d9ffe0c829716f0d5dbf1215 (patch) | |
tree | 3434468362e27476e79efad696090abda0614484 /libavcodec/dsd.c | |
parent | 98f5cbcb7db455dac8b4a6cbbe0dd72ec6a892fd (diff) |
avcodec/dsddec: add slice threading support
Diffstat (limited to 'libavcodec/dsd.c')
-rw-r--r-- | libavcodec/dsd.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/libavcodec/dsd.c b/libavcodec/dsd.c index 9104f38476..8a1fc21b0d 100644 --- a/libavcodec/dsd.c +++ b/libavcodec/dsd.c @@ -56,23 +56,26 @@ void ff_dsd2pcm_translate(DSDContext* s, size_t samples, int lsbf, const unsigned char *src, ptrdiff_t src_stride, float *dst, ptrdiff_t dst_stride) { + unsigned char buf[FIFOSIZE]; unsigned pos, i; unsigned char* p; double sum; pos = s->pos; + memcpy(buf, s->buf, sizeof(buf)); + while (samples-- > 0) { - s->buf[pos] = lsbf ? ff_reverse[*src] : *src; + buf[pos] = lsbf ? ff_reverse[*src] : *src; src += src_stride; - p = s->buf + ((pos - CTABLES) & FIFOMASK); + p = buf + ((pos - CTABLES) & FIFOMASK); *p = ff_reverse[*p]; sum = 0.0; for (i = 0; i < CTABLES; i++) { - unsigned char a = s->buf[(pos - i) & FIFOMASK]; - unsigned char b = s->buf[(pos - (CTABLES*2 - 1) + i) & FIFOMASK]; + unsigned char a = buf[(pos - i) & FIFOMASK]; + unsigned char b = buf[(pos - (CTABLES*2 - 1) + i) & FIFOMASK]; sum += ctables[i][a] + ctables[i][b]; } @@ -83,4 +86,5 @@ void ff_dsd2pcm_translate(DSDContext* s, size_t samples, int lsbf, } s->pos = pos; + memcpy(s->buf, buf, sizeof(buf)); } |