]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/rangecoder.c
h264: reset ref count if decoding the slice header fails
[ffmpeg] / libavcodec / rangecoder.c
index 147e58de409a3ae66e5ebb4e014b09a6d8e41e49..af0a8c009eee9dc613b53c81c9c8a68d24a90075 100644 (file)
 
 #include <string.h>
 
+#include "libavutil/attributes.h"
 #include "avcodec.h"
 #include "rangecoder.h"
 #include "bytestream.h"
 
-void ff_init_range_encoder(RangeCoder *c, uint8_t *buf, int buf_size)
+av_cold void ff_init_range_encoder(RangeCoder *c, uint8_t *buf, int buf_size)
 {
     c->bytestream_start  =
     c->bytestream        = buf;
@@ -48,7 +49,8 @@ void ff_init_range_encoder(RangeCoder *c, uint8_t *buf, int buf_size)
     c->outstanding_byte  = -1;
 }
 
-void ff_init_range_decoder(RangeCoder *c, const uint8_t *buf, int buf_size)
+av_cold void ff_init_range_decoder(RangeCoder *c, const uint8_t *buf,
+                                   int buf_size)
 {
     /* cast to avoid compiler warning */
     ff_init_range_encoder(c, (uint8_t *)buf, buf_size);
@@ -136,11 +138,8 @@ int main(void)
     for (i = 0; i < SIZE; i++)
         r[i] = av_lfg_get(&prng) % 7;
 
-    for (i = 0; i < SIZE; i++) {
-START_TIMER
+    for (i = 0; i < SIZE; i++)
         put_rac(&c, state, r[i] & 1);
-STOP_TIMER("put_rac")
-    }
 
     ff_rac_terminate(&c);
 
@@ -148,12 +147,11 @@ STOP_TIMER("put_rac")
 
     memset(state, 128, sizeof(state));
 
-    for (i = 0; i < SIZE; i++) {
-START_TIMER
-        if ((r[i] & 1) != get_rac(&c, state))
+    for (i = 0; i < SIZE; i++)
+        if ((r[i] & 1) != get_rac(&c, state)) {
             av_log(NULL, AV_LOG_ERROR, "rac failure at %d\n", i);
-STOP_TIMER("get_rac")
-    }
+            return 1;
+        }
 
     return 0;
 }