#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "avcodec.h"
#include "dsputil.h"
#include "libavutil/imgutils.h"
#include "libavutil/internal.h"
#include "libavutil/mem.h"
#include "truemotion1data.h"
Go to the source code of this file.
The TrueMotion v1 decoder presently only decodes 16-bit TM1 data and outputs RGB555 (or RGB565) data. 24-bit TM1 data is not supported yet.
Definition in file truemotion1.c.
#define ALGO_NOP 0 |
#define ALGO_RGB16H 2 |
Definition at line 106 of file truemotion1.c.
#define ALGO_RGB16V 1 |
Definition at line 105 of file truemotion1.c.
#define ALGO_RGB24H 3 |
Definition at line 107 of file truemotion1.c.
Referenced by truemotion1_decode_frame(), and truemotion1_decode_header().
#define APPLY_C_PREDICTOR | ( | ) |
Value:
if(index > 1023){\ av_log(s->avctx, AV_LOG_ERROR, " index %d went out of bounds\n", index); \ return; \ }\ predictor_pair = s->c_predictor_table[index]; \ horiz_pred += (predictor_pair >> 1); \ if (predictor_pair & 1) { \ GET_NEXT_INDEX() \ if (!index) { \ GET_NEXT_INDEX() \ predictor_pair = s->c_predictor_table[index]; \ horiz_pred += ((predictor_pair >> 1) * 5); \ if (predictor_pair & 1) \ GET_NEXT_INDEX() \ else \ index++; \ } \ } else \ index++;
Definition at line 516 of file truemotion1.c.
Referenced by truemotion1_decode_16bit().
#define APPLY_C_PREDICTOR_24 | ( | ) |
Value:
if(index > 1023){\ av_log(s->avctx, AV_LOG_ERROR, " index %d went out of bounds\n", index); \ return; \ }\ predictor_pair = s->c_predictor_table[index]; \ horiz_pred += (predictor_pair >> 1); \ if (predictor_pair & 1) { \ GET_NEXT_INDEX() \ if (!index) { \ GET_NEXT_INDEX() \ predictor_pair = s->fat_c_predictor_table[index]; \ horiz_pred += (predictor_pair >> 1); \ if (predictor_pair & 1) \ GET_NEXT_INDEX() \ else \ index++; \ } \ } else \ index++;
Definition at line 537 of file truemotion1.c.
Referenced by truemotion1_decode_24bit().
#define APPLY_Y_PREDICTOR | ( | ) |
Value:
if(index > 1023){\ av_log(s->avctx, AV_LOG_ERROR, " index %d went out of bounds\n", index); \ return; \ }\ predictor_pair = s->y_predictor_table[index]; \ horiz_pred += (predictor_pair >> 1); \ if (predictor_pair & 1) { \ GET_NEXT_INDEX() \ if (!index) { \ GET_NEXT_INDEX() \ predictor_pair = s->y_predictor_table[index]; \ horiz_pred += ((predictor_pair >> 1) * 5); \ if (predictor_pair & 1) \ GET_NEXT_INDEX() \ else \ index++; \ } \ } else \ index++;
Definition at line 559 of file truemotion1.c.
Referenced by truemotion1_decode_16bit().
#define APPLY_Y_PREDICTOR_24 | ( | ) |
Value:
if(index > 1023){\ av_log(s->avctx, AV_LOG_ERROR, " index %d went out of bounds\n", index); \ return; \ }\ predictor_pair = s->y_predictor_table[index]; \ horiz_pred += (predictor_pair >> 1); \ if (predictor_pair & 1) { \ GET_NEXT_INDEX() \ if (!index) { \ GET_NEXT_INDEX() \ predictor_pair = s->fat_y_predictor_table[index]; \ horiz_pred += (predictor_pair >> 1); \ if (predictor_pair & 1) \ GET_NEXT_INDEX() \ else \ index++; \ } \ } else \ index++;
Definition at line 580 of file truemotion1.c.
Referenced by truemotion1_decode_24bit().
#define BLOCK_2x2 0 |
Definition at line 110 of file truemotion1.c.
Referenced by truemotion1_decode_16bit(), and truemotion1_decode_24bit().
#define BLOCK_2x4 1 |
Definition at line 111 of file truemotion1.c.
#define BLOCK_4x2 2 |
Definition at line 112 of file truemotion1.c.
Referenced by truemotion1_decode_16bit(), and truemotion1_decode_24bit().
#define BLOCK_4x4 3 |
Definition at line 113 of file truemotion1.c.
#define FLAG_INTERFRAME 8 |
#define FLAG_INTERPOLATED 4 |
#define FLAG_KEYFRAME 16 |
Definition at line 82 of file truemotion1.c.
Referenced by truemotion1_decode_16bit(), truemotion1_decode_24bit(), and truemotion1_decode_header().
#define FLAG_SPRITE 32 |
#define GET_NEXT_INDEX | ( | ) |
Value:
{\ if (index_stream_index >= s->index_stream_size) { \ av_log(s->avctx, AV_LOG_INFO, " help! truemotion1 decoder went out of bounds\n"); \ return; \ } \ index = s->index_stream[index_stream_index++] * 4; \ }
Definition at line 507 of file truemotion1.c.
Referenced by truemotion1_decode_16bit(), and truemotion1_decode_24bit().
#define OUTPUT_PIXEL_PAIR | ( | ) |
Value:
*current_pixel_pair = *vert_pred + horiz_pred; \ *vert_pred++ = *current_pixel_pair++;
Definition at line 601 of file truemotion1.c.
Referenced by truemotion1_decode_16bit(), and truemotion1_decode_24bit().
static void gen_vector_table15 | ( | TrueMotion1Context * | s, | |
const uint8_t * | sel_vector_table | |||
) | [static] |
static void gen_vector_table16 | ( | TrueMotion1Context * | s, | |
const uint8_t * | sel_vector_table | |||
) | [static] |
static void gen_vector_table24 | ( | TrueMotion1Context * | s, | |
const uint8_t * | sel_vector_table | |||
) | [static] |
static void select_delta_tables | ( | TrueMotion1Context * | s, | |
int | delta_table_index | |||
) | [static] |
static void truemotion1_decode_16bit | ( | TrueMotion1Context * | s | ) | [static] |
static void truemotion1_decode_24bit | ( | TrueMotion1Context * | s | ) | [static] |
static av_cold int truemotion1_decode_end | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 893 of file truemotion1.c.
static int truemotion1_decode_frame | ( | AVCodecContext * | avctx, | |
void * | data, | |||
int * | data_size, | |||
AVPacket * | avpkt | |||
) | [static] |
Definition at line 858 of file truemotion1.c.
static int truemotion1_decode_header | ( | TrueMotion1Context * | s | ) | [static] |
static av_cold int truemotion1_decode_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 459 of file truemotion1.c.
const comp_types compression_types[17] [static] |
Initial value:
{ { ALGO_NOP, 0, 0, 0 }, { ALGO_RGB16V, 4, 4, BLOCK_4x4 }, { ALGO_RGB16H, 4, 4, BLOCK_4x4 }, { ALGO_RGB16V, 4, 2, BLOCK_4x2 }, { ALGO_RGB16H, 4, 2, BLOCK_4x2 }, { ALGO_RGB16V, 2, 4, BLOCK_2x4 }, { ALGO_RGB16H, 2, 4, BLOCK_2x4 }, { ALGO_RGB16V, 2, 2, BLOCK_2x2 }, { ALGO_RGB16H, 2, 2, BLOCK_2x2 }, { ALGO_NOP, 4, 4, BLOCK_4x4 }, { ALGO_RGB24H, 4, 4, BLOCK_4x4 }, { ALGO_NOP, 4, 2, BLOCK_4x2 }, { ALGO_RGB24H, 4, 2, BLOCK_4x2 }, { ALGO_NOP, 2, 4, BLOCK_2x4 }, { ALGO_RGB24H, 2, 4, BLOCK_2x4 }, { ALGO_NOP, 2, 2, BLOCK_2x2 }, { ALGO_RGB24H, 2, 2, BLOCK_2x2 } }
Definition at line 123 of file truemotion1.c.
Initial value:
{ .name = "truemotion1", .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_TRUEMOTION1, .priv_data_size = sizeof(TrueMotion1Context), .init = truemotion1_decode_init, .close = truemotion1_decode_end, .decode = truemotion1_decode_frame, .capabilities = CODEC_CAP_DR1, .long_name = NULL_IF_CONFIG_SMALL("Duck TrueMotion 1.0"), }
Definition at line 905 of file truemotion1.c.