#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.
1.5.8