*/
/**
- * @file ulti.c
+ * @file libavcodec/ulti.c
* IBM Ultimotion Video Decoder.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <unistd.h>
#include "avcodec.h"
#include "bytestream.h"
return 0;
}
-static int block_coords[8] = // 4x4 block coords in 8x8 superblock
+static av_cold int ulti_decode_end(AVCodecContext *avctx){
+ UltimotionDecodeContext *s = avctx->priv_data;
+ AVFrame *pic = &s->frame;
+
+ if (pic->data[0])
+ avctx->release_buffer(avctx, pic);
+
+ return 0;
+}
+
+static const int block_coords[8] = // 4x4 block coords in 8x8 superblock
{ 0, 0, 0, 4, 4, 4, 4, 0};
-static int angle_by_index[4] = { 0, 2, 6, 12};
+static const int angle_by_index[4] = { 0, 2, 6, 12};
/* Lookup tables for luma and chroma - used by ulti_convert_yuv() */
-static uint8_t ulti_lumas[64] =
+static const uint8_t ulti_lumas[64] =
{ 0x10, 0x13, 0x17, 0x1A, 0x1E, 0x21, 0x25, 0x28,
0x2C, 0x2F, 0x33, 0x36, 0x3A, 0x3D, 0x41, 0x44,
0x48, 0x4B, 0x4F, 0x52, 0x56, 0x59, 0x5C, 0x60,
0xB7, 0xBA, 0xBE, 0xC1, 0xC5, 0xC8, 0xCC, 0xCF,
0xD3, 0xD6, 0xDA, 0xDD, 0xE1, 0xE4, 0xE8, 0xEB};
-static uint8_t ulti_chromas[16] =
+static const uint8_t ulti_chromas[16] =
{ 0x60, 0x67, 0x6D, 0x73, 0x7A, 0x80, 0x86, 0x8D,
0x93, 0x99, 0xA0, 0xA6, 0xAC, 0xB3, 0xB9, 0xC0};
static int ulti_decode_frame(AVCodecContext *avctx,
void *data, int *data_size,
- const uint8_t *buf, int buf_size)
+ AVPacket *avpkt)
{
+ const uint8_t *buf = avpkt->data;
+ int buf_size = avpkt->size;
UltimotionDecodeContext *s=avctx->priv_data;
int modifier = 0;
int uniq = 0;
return buf_size;
}
-static av_cold int ulti_decode_end(AVCodecContext *avctx)
-{
-/* UltimotionDecodeContext *s = avctx->priv_data;*/
-
- return 0;
-}
-
AVCodec ulti_decoder = {
"ultimotion",
CODEC_TYPE_VIDEO,