diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-03-06 00:35:08 +0100 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-03-06 00:35:08 +0100 |
commit | 96d2e4d61a51e4d0c7cc9e78b95d49c833b0459f (patch) | |
tree | 059e9af83c3b61f8514c64134d7df5b476f7e8e0 /libavcodec | |
parent | 940b06aeb8927ca78239007b7b19f2f160055d0c (diff) | |
download | ffmpeg-96d2e4d61a51e4d0c7cc9e78b95d49c833b0459f.tar.gz |
Use uint8_t instead of uint16_t pointer in kega decoder.
This change allows to remove a few casts and avoids
a potential pointer aliasing violation.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/kgv1dec.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libavcodec/kgv1dec.c b/libavcodec/kgv1dec.c index 6687e6bc0c..6b81095af9 100644 --- a/libavcodec/kgv1dec.c +++ b/libavcodec/kgv1dec.c @@ -50,7 +50,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, const uint8_t *buf_end = buf + avpkt->size; KgvContext * const c = avctx->priv_data; int offsets[8]; - uint16_t *out, *prev; + uint8_t *out, *prev; int outcnt = 0, maxcnt; int w, h, i, res; @@ -75,9 +75,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, c->cur.reference = 3; if ((res = ff_get_buffer(avctx, &c->cur)) < 0) return res; - out = (uint16_t *) c->cur.data[0]; + out = c->cur.data[0]; if (c->prev.data[0]) { - prev = (uint16_t *) c->prev.data[0]; + prev = c->prev.data[0]; } else { prev = NULL; } @@ -90,7 +90,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, buf += 2; if (!(code & 0x8000)) { - out[outcnt++] = code; // rgb555 pixel coded directly + AV_WN16A(&out[2 * outcnt], code); // rgb555 pixel coded directly + outcnt++; } else { int count; @@ -119,7 +120,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, break; } - memcpy(out + outcnt, prev + start, 2 * count); + memcpy(out + 2 * outcnt, prev + 2 * start, 2 * count); } else { // copy from earlier in this frame int offset = (code & 0x1FFF) + 1; @@ -137,7 +138,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, if (outcnt < offset || maxcnt - outcnt < count) break; - av_memcpy_backptr((uint8_t *)out + 2 * outcnt, 2 * offset, 2 * count); + av_memcpy_backptr(out + 2 * outcnt, 2 * offset, 2 * count); } outcnt += count; } |