diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2012-01-19 23:02:27 +0100 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2012-01-19 23:31:21 +0100 |
commit | b4634a006cbff0408ce6fec0850b325eb9c51986 (patch) | |
tree | ab2f4d0bf7de443dba16560f14e4b0e8e1e51b78 /libavcodec/targa.c | |
parent | 4cf81d9f99aa094d21c8a03ef9c374cdd105052a (diff) | |
download | ffmpeg-b4634a006cbff0408ce6fec0850b325eb9c51986.tar.gz |
Simplify targa decoding on big endian.
Diffstat (limited to 'libavcodec/targa.c')
-rw-r--r-- | libavcodec/targa.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/libavcodec/targa.c b/libavcodec/targa.c index 57a4fee22b..b1bcb97e04 100644 --- a/libavcodec/targa.c +++ b/libavcodec/targa.c @@ -70,7 +70,7 @@ static int targa_decode_rle(AVCodecContext *avctx, TargaContext *s, const uint8_ *dst = *src; break; case 2: - *((uint16_t*)dst) = AV_RL16(src); + AV_WN16A(dst, AV_RN16A(src)); break; case 3: dst[0] = src[0]; @@ -78,7 +78,7 @@ static int targa_decode_rle(AVCodecContext *avctx, TargaContext *s, const uint8_ dst[2] = src[2]; break; case 4: - *((uint32_t*)dst) = AV_RL32(src); + AV_WN32A(dst, AV_RN32A(src)); break; } dst += depth; @@ -142,16 +142,16 @@ static int decode_frame(AVCodecContext *avctx, avctx->pix_fmt = ((compr & (~TGA_RLE)) == TGA_BW) ? PIX_FMT_GRAY8 : PIX_FMT_PAL8; break; case 15: - avctx->pix_fmt = PIX_FMT_RGB555; + avctx->pix_fmt = PIX_FMT_RGB555LE; break; case 16: - avctx->pix_fmt = PIX_FMT_RGB555; + avctx->pix_fmt = PIX_FMT_RGB555LE; break; case 24: avctx->pix_fmt = PIX_FMT_BGR24; break; case 32: - avctx->pix_fmt = PIX_FMT_RGB32; + avctx->pix_fmt = PIX_FMT_BGRA; break; default: av_log(avctx, AV_LOG_ERROR, "Bit depth %i is not supported\n", s->bpp); @@ -233,18 +233,6 @@ static int decode_frame(AVCodecContext *avctx, size_t img_size = s->width * ((s->bpp + 1) >> 3); CHECK_BUFFER_SIZE(buf, buf_end, img_size, "image data"); for(y = 0; y < s->height; y++){ -#if HAVE_BIGENDIAN - int x; - if((s->bpp + 1) >> 3 == 2){ - uint16_t *dst16 = (uint16_t*)dst; - for(x = 0; x < s->width; x++) - dst16[x] = AV_RL16(buf + x * 2); - }else if((s->bpp + 1) >> 3 == 4){ - uint32_t *dst32 = (uint32_t*)dst; - for(x = 0; x < s->width; x++) - dst32[x] = AV_RL32(buf + x * 4); - }else -#endif memcpy(dst, buf, img_size); dst += stride; |