]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/asv1.c
fix linking on systems with a function name prefix (10l in r20287)
[ffmpeg] / libavcodec / asv1.c
index 81dc18daccf218df5e1e8e4b2f40b033e6124890..7a385e47a15acef8d1e7d499942412f2cb5951b1 100644 (file)
@@ -25,7 +25,8 @@
  */
 
 #include "avcodec.h"
-#include "bitstream.h"
+#include "get_bits.h"
+#include "put_bits.h"
 #include "dsputil.h"
 #include "mpeg12data.h"
 
@@ -48,8 +49,8 @@ typedef struct ASV1Context{
     int mb_width2;
     int mb_height2;
     DECLARE_ALIGNED_16(DCTELEM, block[6][64]);
-    DECLARE_ALIGNED_8(uint16_t, intra_matrix[64]);
-    DECLARE_ALIGNED_8(int, q_intra_matrix[64]);
+    uint16_t intra_matrix[64];
+    int q_intra_matrix[64];
     uint8_t *bitstream_buffer;
     unsigned int bitstream_buffer_size;
 } ASV1Context;
@@ -119,21 +120,21 @@ static av_cold void init_vlcs(ASV1Context *a){
     if (!done) {
         done = 1;
 
-        init_vlc(&ccp_vlc, VLC_BITS, 17,
+        INIT_VLC_STATIC(&ccp_vlc, VLC_BITS, 17,
                  &ccp_tab[0][1], 2, 1,
-                 &ccp_tab[0][0], 2, 1, 1);
-        init_vlc(&dc_ccp_vlc, VLC_BITS, 8,
+                 &ccp_tab[0][0], 2, 1, 64);
+        INIT_VLC_STATIC(&dc_ccp_vlc, VLC_BITS, 8,
                  &dc_ccp_tab[0][1], 2, 1,
-                 &dc_ccp_tab[0][0], 2, 1, 1);
-        init_vlc(&ac_ccp_vlc, VLC_BITS, 16,
+                 &dc_ccp_tab[0][0], 2, 1, 64);
+        INIT_VLC_STATIC(&ac_ccp_vlc, VLC_BITS, 16,
                  &ac_ccp_tab[0][1], 2, 1,
-                 &ac_ccp_tab[0][0], 2, 1, 1);
-        init_vlc(&level_vlc,  VLC_BITS, 7,
+                 &ac_ccp_tab[0][0], 2, 1, 64);
+        INIT_VLC_STATIC(&level_vlc,  VLC_BITS, 7,
                  &level_tab[0][1], 2, 1,
-                 &level_tab[0][0], 2, 1, 1);
-        init_vlc(&asv2_level_vlc, ASV2_LEVEL_VLC_BITS, 63,
+                 &level_tab[0][0], 2, 1, 64);
+        INIT_VLC_STATIC(&asv2_level_vlc, ASV2_LEVEL_VLC_BITS, 63,
                  &asv2_level_tab[0][1], 2, 1,
-                 &asv2_level_tab[0][0], 2, 1, 1);
+                 &asv2_level_tab[0][0], 2, 1, 1024);
     }
 }
 
@@ -393,7 +394,7 @@ static int decode_frame(AVCodecContext *avctx,
     int buf_size = avpkt->size;
     ASV1Context * const a = avctx->priv_data;
     AVFrame *picture = data;
-    AVFrame * const p= (AVFrame*)&a->picture;
+    AVFrame * const p= &a->picture;
     int mb_x, mb_y;
 
     if(p->data[0])
@@ -407,7 +408,9 @@ static int decode_frame(AVCodecContext *avctx,
     p->pict_type= FF_I_TYPE;
     p->key_frame= 1;
 
-    a->bitstream_buffer= av_fast_realloc(a->bitstream_buffer, &a->bitstream_buffer_size, buf_size + FF_INPUT_BUFFER_PADDING_SIZE);
+    av_fast_malloc(&a->bitstream_buffer, &a->bitstream_buffer_size, buf_size + FF_INPUT_BUFFER_PADDING_SIZE);
+    if (!a->bitstream_buffer)
+        return AVERROR(ENOMEM);
 
     if(avctx->codec_id == CODEC_ID_ASV1)
         a->dsp.bswap_buf((uint32_t*)a->bitstream_buffer, (const uint32_t*)buf, buf_size/4);
@@ -471,7 +474,7 @@ for(i=0; i<s->avctx->extradata_size; i++){
 static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data){
     ASV1Context * const a = avctx->priv_data;
     AVFrame *pict = data;
-    AVFrame * const p= (AVFrame*)&a->picture;
+    AVFrame * const p= &a->picture;
     int size;
     int mb_x, mb_y;
 
@@ -533,13 +536,13 @@ static av_cold void common_init(AVCodecContext *avctx){
     a->mb_width2  = (avctx->width  + 0) / 16;
     a->mb_height2 = (avctx->height + 0) / 16;
 
-    avctx->coded_frame= (AVFrame*)&a->picture;
+    avctx->coded_frame= &a->picture;
     a->avctx= avctx;
 }
 
 static av_cold int decode_init(AVCodecContext *avctx){
     ASV1Context * const a = avctx->priv_data;
-    AVFrame *p= (AVFrame*)&a->picture;
+    AVFrame *p= &a->picture;
     int i;
     const int scale= avctx->codec_id == CODEC_ID_ASV1 ? 1 : 2;
 
@@ -548,7 +551,7 @@ static av_cold int decode_init(AVCodecContext *avctx){
     ff_init_scantable(a->dsp.idct_permutation, &a->scantable, scantab);
     avctx->pix_fmt= PIX_FMT_YUV420P;
 
-    a->inv_qscale= ((uint8_t*)avctx->extradata)[0];
+    a->inv_qscale= avctx->extradata[0];
     if(a->inv_qscale == 0){
         av_log(avctx, AV_LOG_ERROR, "illegal qscale 0\n");
         if(avctx->codec_id == CODEC_ID_ASV1)
@@ -604,6 +607,9 @@ static av_cold int decode_end(AVCodecContext *avctx){
     av_freep(&a->picture.qscale_table);
     a->bitstream_buffer_size=0;
 
+    if(a->picture.data[0])
+        avctx->release_buffer(avctx, &a->picture);
+
     return 0;
 }
 
@@ -642,7 +648,7 @@ AVCodec asv1_encoder = {
     encode_init,
     encode_frame,
     //encode_end,
-    .pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
+    .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
     .long_name= NULL_IF_CONFIG_SMALL("ASUS V1"),
 };
 #endif
@@ -656,7 +662,7 @@ AVCodec asv2_encoder = {
     encode_init,
     encode_frame,
     //encode_end,
-    .pix_fmts= (enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
+    .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
     .long_name= NULL_IF_CONFIG_SMALL("ASUS V2"),
 };
 #endif