diff options
author | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-05-05 19:11:16 +0000 |
---|---|---|
committer | rtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-05-05 19:11:16 +0000 |
commit | 189922b827b3c3880d3c949c2089e3405e6c91cc (patch) | |
tree | e5aff4a88ccfa34e1780e41458af285e64067daf /libmpcodecs | |
parent | e2a66120575541602bac49f9c50ed23a062a088a (diff) | |
download | mpv-189922b827b3c3880d3c949c2089e3405e6c91cc.tar.bz2 mpv-189922b827b3c3880d3c949c2089e3405e6c91cc.tar.xz |
Qt RLE is now in ffmpeg
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12430 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r-- | libmpcodecs/Makefile | 2 | ||||
-rw-r--r-- | libmpcodecs/native/qtrle.c | 400 |
2 files changed, 1 insertions, 401 deletions
diff --git a/libmpcodecs/Makefile b/libmpcodecs/Makefile index 3a5ba1676c..9a01ca957f 100644 --- a/libmpcodecs/Makefile +++ b/libmpcodecs/Makefile @@ -21,7 +21,7 @@ endif ENCODER_SRCS=ve.c ve_divx4.c ve_lavc.c ve_vfw.c ve_raw.c ve_libdv.c ve_xvid.c ve_xvid4.c ve_qtvideo.c ve_nuv.c -NATIVE_SRCS=native/RTjpegN.c native/cinepak.c native/minilzo.c native/nuppelvideo.c native/qtrle.c native/roqav.c native/xa_gsm.c native/decode144.c native/decode288.c +NATIVE_SRCS=native/RTjpegN.c native/cinepak.c native/minilzo.c native/nuppelvideo.c native/roqav.c native/xa_gsm.c native/decode144.c native/decode288.c ifeq ($(FAME),yes) VFILTER_SRCS += vf_fame.c diff --git a/libmpcodecs/native/qtrle.c b/libmpcodecs/native/qtrle.c deleted file mode 100644 index e6a44f8009..0000000000 --- a/libmpcodecs/native/qtrle.c +++ /dev/null @@ -1,400 +0,0 @@ -/* - Quicktime Animation (RLE) Decoder for MPlayer - - (C) 2001 Mike Melanson - 8 and 16bpp support by Alex Beregszaszi - 32 bpp support by Roberto Togni -*/ - -#include "config.h" -#include "bswap.h" - -#define BE_16(x) (be2me_16(*(unsigned short *)(x))) -#define BE_32(x) (be2me_32(*(unsigned int *)(x))) - -void qt_decode_rle8( - unsigned char *encoded, - int encoded_size, - unsigned char *decoded, - int width, - int height, - int bytes_per_pixel) -{ - int stream_ptr; - int header; - int start_line; - int lines_to_change; - signed char rle_code; - int row_ptr, pixel_ptr; - int row_inc = bytes_per_pixel * width; - unsigned char pixel; - - // check if this frame is even supposed to change - if (encoded_size < 8) - return; - - // start after the chunk size - stream_ptr = 4; - - // fetch the header - header = BE_16(&encoded[stream_ptr]); - stream_ptr += 2; - - // if a header is present, fetch additional decoding parameters - if (header & 0x0008) - { - start_line = BE_16(&encoded[stream_ptr]); - stream_ptr += 4; - lines_to_change = BE_16(&encoded[stream_ptr]); - stream_ptr += 4; - } - else - { - start_line = 0; - lines_to_change = height; - } - - row_ptr = row_inc * start_line; - while (lines_to_change--) - { - pixel_ptr = row_ptr + ((encoded[stream_ptr++] - 1) * bytes_per_pixel); - - while (stream_ptr < encoded_size && - (rle_code = (signed char)encoded[stream_ptr++]) != -1) - { - if (rle_code == 0) - // there's another skip code in the stream - pixel_ptr += ((encoded[stream_ptr++] - 1) * bytes_per_pixel); - else if (rle_code < 0) - { - // decode the run length code - rle_code = -rle_code; - pixel = encoded[stream_ptr++]; - while (rle_code--) - { - decoded[pixel_ptr++] = pixel; - } - } - else - { - // copy pixels directly to output - while (rle_code--) - { - decoded[pixel_ptr++] = encoded[stream_ptr + 0]; - stream_ptr += 1; - } - } - } - - row_ptr += row_inc; - } -} - -void qt_decode_rle16( - unsigned char *encoded, - int encoded_size, - unsigned char *decoded, - int width, - int height, - int bytes_per_pixel) -{ - int stream_ptr; - int header; - int start_line; - int lines_to_change; - signed char rle_code; - int row_ptr, pixel_ptr; - int row_inc = bytes_per_pixel * width; - unsigned char p1, p2; - - // check if this frame is even supposed to change - if (encoded_size < 8) - return; - - // start after the chunk size - stream_ptr = 4; - - // fetch the header - header = BE_16(&encoded[stream_ptr]); - stream_ptr += 2; - - // if a header is present, fetch additional decoding parameters - if (header & 0x0008) - { - start_line = BE_16(&encoded[stream_ptr]); - stream_ptr += 4; - lines_to_change = BE_16(&encoded[stream_ptr]); - stream_ptr += 4; - } - else - { - start_line = 0; - lines_to_change = height; - } - - row_ptr = row_inc * start_line; - while (lines_to_change--) - { - pixel_ptr = row_ptr + ((encoded[stream_ptr++] - 1) * bytes_per_pixel); - - while (stream_ptr < encoded_size && - (rle_code = (signed char)encoded[stream_ptr++]) != -1) - { - if (rle_code == 0) - // there's another skip code in the stream - pixel_ptr += ((encoded[stream_ptr++] - 1) * bytes_per_pixel); - else if (rle_code < 0) - { - // decode the run length code - rle_code = -rle_code; - p1 = encoded[stream_ptr++]; - p2 = encoded[stream_ptr++]; - while (rle_code--) - { - decoded[pixel_ptr++] = p2; - decoded[pixel_ptr++] = p1; - } - } - else - { - // copy pixels directly to output - while (rle_code--) - { - decoded[pixel_ptr++] = encoded[stream_ptr + 1]; - decoded[pixel_ptr++] = encoded[stream_ptr + 0]; - stream_ptr += 2; - } - } - } - - row_ptr += row_inc; - } -} - -void qt_decode_rle24( - unsigned char *encoded, - int encoded_size, - unsigned char *decoded, - int width, - int height, - int bytes_per_pixel) -{ - int stream_ptr; - int header; - int start_line; - int lines_to_change; - signed char rle_code; - int row_ptr, pixel_ptr; - int row_inc = bytes_per_pixel * width; - unsigned char r, g, b; - - // check if this frame is even supposed to change - if (encoded_size < 8) - return; - - // start after the chunk size - stream_ptr = 4; - - // fetch the header - header = BE_16(&encoded[stream_ptr]); - stream_ptr += 2; - - // if a header is present, fetch additional decoding parameters - if (header & 0x0008) - { - start_line = BE_16(&encoded[stream_ptr]); - stream_ptr += 4; - lines_to_change = BE_16(&encoded[stream_ptr]); - stream_ptr += 4; - } - else - { - start_line = 0; - lines_to_change = height; - } - - row_ptr = row_inc * start_line; - while (lines_to_change--) - { - pixel_ptr = row_ptr + ((encoded[stream_ptr++] - 1) * bytes_per_pixel); - - while (stream_ptr < encoded_size && - (rle_code = (signed char)encoded[stream_ptr++]) != -1) - { - if (rle_code == 0) - // there's another skip code in the stream - pixel_ptr += ((encoded[stream_ptr++] - 1) * bytes_per_pixel); - else if (rle_code < 0) - { - // decode the run length code - rle_code = -rle_code; - r = encoded[stream_ptr++]; - g = encoded[stream_ptr++]; - b = encoded[stream_ptr++]; - while (rle_code--) - { - decoded[pixel_ptr++] = b; - decoded[pixel_ptr++] = g; - decoded[pixel_ptr++] = r; - if (bytes_per_pixel == 4) - pixel_ptr++; - } - } - else - { - // copy pixels directly to output - while (rle_code--) - { - decoded[pixel_ptr++] = encoded[stream_ptr + 2]; - decoded[pixel_ptr++] = encoded[stream_ptr + 1]; - decoded[pixel_ptr++] = encoded[stream_ptr + 0]; - stream_ptr += 3; - if (bytes_per_pixel == 4) - pixel_ptr++; - } - } - } - - row_ptr += row_inc; - } -} - -void qt_decode_rle32( - unsigned char *encoded, - int encoded_size, - unsigned char *decoded, - int width, - int height, - int bytes_per_pixel) -{ - int stream_ptr; - int header; - int start_line; - int lines_to_change; - signed char rle_code; - int row_ptr, pixel_ptr; - int row_inc = bytes_per_pixel * width; - unsigned char r, g, b; - - // check if this frame is even supposed to change - if (encoded_size < 8) - return; - - // start after the chunk size - stream_ptr = 4; - - // fetch the header - header = BE_16(&encoded[stream_ptr]); - stream_ptr += 2; - - // if a header is present, fetch additional decoding parameters - if (header & 0x0008) - { - start_line = BE_16(&encoded[stream_ptr]); - stream_ptr += 4; - lines_to_change = BE_16(&encoded[stream_ptr]); - stream_ptr += 4; - } - else - { - start_line = 0; - lines_to_change = height; - } - - row_ptr = row_inc * start_line; - while (lines_to_change--) - { - pixel_ptr = row_ptr + ((encoded[stream_ptr++] - 1) * bytes_per_pixel); - - while (stream_ptr < encoded_size && - (rle_code = (signed char)encoded[stream_ptr++]) != -1) - { - if (rle_code == 0) - // there's another skip code in the stream - pixel_ptr += ((encoded[stream_ptr++] - 1) * bytes_per_pixel); - else if (rle_code < 0) - { - // decode the run length code - rle_code = -rle_code; - stream_ptr++; // Ignore alpha channel - r = encoded[stream_ptr++]; - g = encoded[stream_ptr++]; - b = encoded[stream_ptr++]; - while (rle_code--) - { - decoded[pixel_ptr++] = b; - decoded[pixel_ptr++] = g; - decoded[pixel_ptr++] = r; - if (bytes_per_pixel == 4) - pixel_ptr++; - } - } - else - { - // copy pixels directly to output - while (rle_code--) - { - stream_ptr++; // Ignore alpha channel - decoded[pixel_ptr++] = encoded[stream_ptr + 2]; - decoded[pixel_ptr++] = encoded[stream_ptr + 1]; - decoded[pixel_ptr++] = encoded[stream_ptr + 0]; - stream_ptr += 3; - if (bytes_per_pixel == 4) - pixel_ptr++; - } - } - } - - row_ptr += row_inc; - } -} - -void qt_decode_rle( - unsigned char *encoded, - int encoded_size, - unsigned char *decoded, - int width, - int height, - int encoded_bpp, - int bytes_per_pixel) -{ - switch (encoded_bpp) - { - case 8: - qt_decode_rle8( - encoded, - encoded_size, - decoded, - width, - height, - bytes_per_pixel); - break; - case 16: - qt_decode_rle16( - encoded, - encoded_size, - decoded, - width, - height, - bytes_per_pixel); - break; - case 24: - qt_decode_rle24( - encoded, - encoded_size, - decoded, - width, - height, - bytes_per_pixel); - break; - case 32: - qt_decode_rle32( - encoded, - encoded_size, - decoded, - width, - height, - bytes_per_pixel); - break; - } -} |