]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/svq3.c
avformat/ttmlenc: enable writing out additional header values
[ffmpeg] / libavcodec / svq3.c
index fb7b992496bb31fae898f713877e432c0b787868..edc8aeacc60002d0b99e6d5fe09732f1548c78ff 100644 (file)
@@ -44,6 +44,7 @@
 
 #include "libavutil/attributes.h"
 #include "libavutil/crc.h"
+#include "libavutil/mem_internal.h"
 
 #include "internal.h"
 #include "avcodec.h"
@@ -91,13 +92,11 @@ typedef struct SVQ3Context {
     GetBitContext gb;
     GetBitContext gb_slice;
     uint8_t *slice_buf;
-    int slice_size;
+    unsigned slice_buf_size;
     int halfpel_flag;
     int thirdpel_flag;
     int has_watermark;
     uint32_t watermark_key;
-    uint8_t *buf;
-    int buf_size;
     int adaptive_quant;
     int next_p_frame_damaged;
     int h_edge_pos;
@@ -1034,7 +1033,7 @@ static int svq3_decode_slice_header(AVCodecContext *avctx)
 
         skip_bits(&s->gb, 8);
 
-        av_fast_malloc(&s->slice_buf, &s->slice_size, slice_bytes + AV_INPUT_BUFFER_PADDING_SIZE);
+        av_fast_padded_malloc(&s->slice_buf, &s->slice_buf_size, slice_bytes);
         if (!s->slice_buf)
             return AVERROR(ENOMEM);
 
@@ -1382,7 +1381,6 @@ static int svq3_decode_frame(AVCodecContext *avctx, void *data,
     SVQ3Context *s     = avctx->priv_data;
     int buf_size       = avpkt->size;
     int left;
-    uint8_t *buf;
     int ret, m, i;
 
     /* special case for last picture */
@@ -1399,17 +1397,7 @@ static int svq3_decode_frame(AVCodecContext *avctx, void *data,
 
     s->mb_x = s->mb_y = s->mb_xy = 0;
 
-    if (s->watermark_key) {
-        av_fast_padded_malloc(&s->buf, &s->buf_size, buf_size);
-        if (!s->buf)
-            return AVERROR(ENOMEM);
-        memcpy(s->buf, avpkt->data, buf_size);
-        buf = s->buf;
-    } else {
-        buf = avpkt->data;
-    }
-
-    ret = init_get_bits(&s->gb, buf, 8 * buf_size);
+    ret = init_get_bits8(&s->gb, avpkt->data, avpkt->size);
     if (ret < 0)
         return ret;
 
@@ -1610,10 +1598,6 @@ static av_cold int svq3_decode_end(AVCodecContext *avctx)
     av_freep(&s->edge_emu_buffer);
     av_freep(&s->mb2br_xy);
 
-
-    av_freep(&s->buf);
-    s->buf_size = 0;
-
     return 0;
 }