#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "avcodec.h"
#include "bytestream.h"
#include "dsputil.h"
#include "get_bits.h"
Go to the source code of this file.
This decoder presently only supports a PAL8 output colorspace.
An Interplay video frame consists of 2 parts: The decoding map and the video data. A demuxer must load these 2 parts together in a single buffer before sending it through the stream to this decoder.
Definition in file interplayvideo.c.
#define BITSTREAM_READER_LE |
Definition at line 44 of file interplayvideo.c.
#define CHECK_STREAM_PTR | ( | stream_ptr, | |||
stream_end, | |||||
n | ) |
Value:
if (stream_end - stream_ptr < n) { \ av_log(s->avctx, AV_LOG_ERROR, "Interplay video warning: stream_ptr out of bounds (%p >= %p)\n", \ stream_ptr + n, stream_end); \ return -1; \ }
Definition at line 75 of file interplayvideo.c.
Referenced by ipvideo_decode_block_opcode_0x2(), ipvideo_decode_block_opcode_0x3(), ipvideo_decode_block_opcode_0x4(), ipvideo_decode_block_opcode_0x5(), ipvideo_decode_block_opcode_0x6_16(), ipvideo_decode_block_opcode_0x7(), ipvideo_decode_block_opcode_0x7_16(), ipvideo_decode_block_opcode_0x8(), ipvideo_decode_block_opcode_0x8_16(), ipvideo_decode_block_opcode_0x9(), ipvideo_decode_block_opcode_0x9_16(), ipvideo_decode_block_opcode_0xA(), ipvideo_decode_block_opcode_0xA_16(), ipvideo_decode_block_opcode_0xB(), ipvideo_decode_block_opcode_0xB_16(), ipvideo_decode_block_opcode_0xC(), ipvideo_decode_block_opcode_0xC_16(), ipvideo_decode_block_opcode_0xD(), ipvideo_decode_block_opcode_0xD_16(), ipvideo_decode_block_opcode_0xE(), ipvideo_decode_block_opcode_0xE_16(), ipvideo_decode_block_opcode_0xF(), msvideo1_decode_16bit(), msvideo1_decode_8bit(), qtrle_decode_16bpp(), qtrle_decode_1bpp(), qtrle_decode_24bpp(), qtrle_decode_2n4bpp(), qtrle_decode_32bpp(), and qtrle_decode_8bpp().
#define PALETTE_COUNT 256 |
Definition at line 47 of file interplayvideo.c.
static int copy_from | ( | IpvideoContext * | s, | |
AVFrame * | src, | |||
int | delta_x, | |||
int | delta_y | |||
) | [static] |
Definition at line 82 of file interplayvideo.c.
Referenced by decode_frame(), ipvideo_decode_block_opcode_0x0(), ipvideo_decode_block_opcode_0x1(), ipvideo_decode_block_opcode_0x2(), ipvideo_decode_block_opcode_0x3(), ipvideo_decode_block_opcode_0x4(), ipvideo_decode_block_opcode_0x5(), and ipvideo_decode_block_opcode_0x6_16().
static int ipvideo_decode_block_opcode_0x0 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 104 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x1 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 109 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x2 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 114 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x3 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 140 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x4 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 168 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x5 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 191 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x6 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 206 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x6_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 573 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x7 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 215 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x7_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 587 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x8 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 260 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x8_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 630 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x9 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 337 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0x9_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 709 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xA | ( | IpvideoContext * | s | ) | [static] |
Definition at line 411 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xA_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 784 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xB | ( | IpvideoContext * | s | ) | [static] |
Definition at line 473 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xB_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 847 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xC | ( | IpvideoContext * | s | ) | [static] |
Definition at line 490 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xC_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 865 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xD | ( | IpvideoContext * | s | ) | [static] |
Definition at line 511 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xD_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 887 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xE | ( | IpvideoContext * | s | ) | [static] |
Definition at line 533 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xE_16 | ( | IpvideoContext * | s | ) | [static] |
Definition at line 910 of file interplayvideo.c.
static int ipvideo_decode_block_opcode_0xF | ( | IpvideoContext * | s | ) | [static] |
Definition at line 551 of file interplayvideo.c.
static av_cold int ipvideo_decode_end | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 1082 of file interplayvideo.c.
static int ipvideo_decode_frame | ( | AVCodecContext * | avctx, | |
void * | data, | |||
int * | data_size, | |||
AVPacket * | avpkt | |||
) | [static] |
Definition at line 1032 of file interplayvideo.c.
static av_cold int ipvideo_decode_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 1011 of file interplayvideo.c.
static void ipvideo_decode_opcodes | ( | IpvideoContext * | s | ) | [static] |
Initial value:
{ .name = "interplayvideo", .type = AVMEDIA_TYPE_VIDEO, .id = CODEC_ID_INTERPLAY_VIDEO, .priv_data_size = sizeof(IpvideoContext), .init = ipvideo_decode_init, .close = ipvideo_decode_end, .decode = ipvideo_decode_frame, .capabilities = CODEC_CAP_DR1 | CODEC_CAP_PARAM_CHANGE, .long_name = NULL_IF_CONFIG_SMALL("Interplay MVE video"), }
Definition at line 1095 of file interplayvideo.c.
int(* const ipvideo_decode_block[])(IpvideoContext *s) [static] |
Initial value:
{ ipvideo_decode_block_opcode_0x0, ipvideo_decode_block_opcode_0x1, ipvideo_decode_block_opcode_0x2, ipvideo_decode_block_opcode_0x3, ipvideo_decode_block_opcode_0x4, ipvideo_decode_block_opcode_0x5, ipvideo_decode_block_opcode_0x6, ipvideo_decode_block_opcode_0x7, ipvideo_decode_block_opcode_0x8, ipvideo_decode_block_opcode_0x9, ipvideo_decode_block_opcode_0xA, ipvideo_decode_block_opcode_0xB, ipvideo_decode_block_opcode_0xC, ipvideo_decode_block_opcode_0xD, ipvideo_decode_block_opcode_0xE, ipvideo_decode_block_opcode_0xF, }
Referenced by ipvideo_decode_opcodes().
int(* const ipvideo_decode_block16[])(IpvideoContext *s) [static] |
Initial value:
{ ipvideo_decode_block_opcode_0x0, ipvideo_decode_block_opcode_0x1, ipvideo_decode_block_opcode_0x2, ipvideo_decode_block_opcode_0x3, ipvideo_decode_block_opcode_0x4, ipvideo_decode_block_opcode_0x5, ipvideo_decode_block_opcode_0x6_16, ipvideo_decode_block_opcode_0x7_16, ipvideo_decode_block_opcode_0x8_16, ipvideo_decode_block_opcode_0x9_16, ipvideo_decode_block_opcode_0xA_16, ipvideo_decode_block_opcode_0xB_16, ipvideo_decode_block_opcode_0xC_16, ipvideo_decode_block_opcode_0xD_16, ipvideo_decode_block_opcode_0xE_16, ipvideo_decode_block_opcode_0x1, }
Referenced by ipvideo_decode_opcodes().