diff options
Diffstat (limited to 'libmpcodecs/vd_qtrle.c')
-rw-r--r-- | libmpcodecs/vd_qtrle.c | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/libmpcodecs/vd_qtrle.c b/libmpcodecs/vd_qtrle.c deleted file mode 100644 index 5f43257327..0000000000 --- a/libmpcodecs/vd_qtrle.c +++ /dev/null @@ -1,128 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -#include "config.h" -#include "mp_msg.h" - -#include "vd_internal.h" - -static vd_info_t info = { - "Quicktime Animation (RLE) decoder", - "qtrle", - "A'rpi", - "Mike Melanson", - "native codec" -}; - -LIBVD_EXTERN(qtrle) - -typedef struct { - int depth; - void *palette; -} vd_qtrle_ctx; - -// to set/get/query special features/parameters -static int control(sh_video_t *sh,int cmd,void* arg,...){ - vd_qtrle_ctx *ctx = sh->context; - switch(cmd) - { - case VDCTRL_QUERY_FORMAT: - { - int req_format = *((int*)arg); - - /* qtrle24 supports 32bit output too */ - if ((req_format == (IMGFMT_BGR|ctx->depth)) || - ((IMGFMT_BGR_DEPTH(req_format) == 32) && (ctx->depth == 24)) || - ((IMGFMT_BGR_DEPTH(req_format) == 24) && (ctx->depth == 32))) - return(CONTROL_TRUE); - else - return(CONTROL_FALSE); - } - } - return CONTROL_UNKNOWN; -} - -// init driver -static int init(sh_video_t *sh){ - vd_qtrle_ctx *ctx; - - ctx = sh->context = malloc(sizeof(vd_qtrle_ctx)); - if (!ctx) - return(0); - memset(ctx, 0, sizeof(vd_qtrle_ctx)); - - if (!sh->bih) - return(0); - ctx->depth = sh->bih->biBitCount; - - switch(ctx->depth) - { - case 2: - case 4: - case 8: - if (sh->bih->biSize > 40) - { - ctx->palette = malloc(sh->bih->biSize-40); - memcpy(ctx->palette, sh->bih+40, sh->bih->biSize-40); - } - break; - case 16: - ctx->depth--; /* this is the trick ;) */ - break; - case 32: - mp_msg(MSGT_DECVIDEO,MSGL_INFO,"[qtrle] 32 bpp file, alpha channel will be ignored.\n"); - case 24: - break; - default: - mp_msg(MSGT_DECVIDEO,MSGL_ERR, - "*** FYI: This Quicktime file is using %d-bit RLE Animation\n" \ - "encoding, which is not yet supported by MPlayer. But if you upload\n" \ - "this Quicktime file to the MPlayer FTP, the team could look at it.\n", - ctx->depth); - return(0); - } - - return mpcodecs_config_vo(sh,sh->disp_w,sh->disp_h,IMGFMT_BGR|ctx->depth); -} - -// uninit driver -static void uninit(sh_video_t *sh){ - vd_qtrle_ctx *ctx = sh->context; - - if (ctx->palette) - free(ctx->palette); - free(ctx); -} - -//mp_image_t* mpcodecs_get_image(sh_video_t *sh, int mp_imgtype, int mp_imgflag, int w, int h); - -void qt_decode_rle( - unsigned char *encoded, - int encoded_size, - unsigned char *decoded, - int width, - int height, - int encoded_bpp, - int bytes_per_pixel); - -// decode a frame -static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){ - vd_qtrle_ctx *ctx = sh->context; - mp_image_t* mpi; - if(len<=0) return NULL; // skipped frame - - mpi=mpcodecs_get_image(sh, MP_IMGTYPE_STATIC, MP_IMGFLAG_PRESERVE, - sh->disp_w, sh->disp_h); - if(!mpi) return NULL; - - qt_decode_rle( - data,len, mpi->planes[0], - sh->disp_w, sh->disp_h, - sh->bih->biBitCount, - mpi->bpp/8); - - if (ctx->palette) - mpi->planes[1] = ctx->palette; - - return mpi; -} |