]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/rle.c
lavc: document that avcodec_close() should not be used
[ffmpeg] / libavcodec / rle.c
index 8a009e72bc709cff52c6487b8b34f2aeccec1a3c..8a2d922ab651c683552bcea61ed8586d33d4f6ff 100644 (file)
  */
 #include "avcodec.h"
 #include "rle.h"
+#include "libavutil/common.h"
 
-/**
- * Count up to 127 consecutive pixels which are either all the same or
- * all differ from the previous and next pixels.
- * @param start Pointer to the first pixel
- * @param len Maximum number of pixels
- * @param bpp Bytes per pixel
- * @param same 1 if searching for identical pixel values.  0 for differing
- * @return Number of matching consecutive pixels found
- */
-static int count_pixels(const uint8_t *start, int len, int bpp, int same)
+int ff_rle_count_pixels(const uint8_t *start, int len, int bpp, int same)
 {
     const uint8_t *pos;
     int count = 1;
@@ -62,14 +54,14 @@ int ff_rle_encode(uint8_t *outbuf, int out_size, const uint8_t *ptr , int bpp, i
 
     for(x = 0; x < w; x += count) {
         /* see if we can encode the next set of pixels with RLE */
-        if((count = count_pixels(ptr, w-x, bpp, 1)) > 1) {
+        if ((count = ff_rle_count_pixels(ptr, w - x, bpp, 1)) > 1) {
             if(out + bpp + 1 > outbuf + out_size) return -1;
             *out++ = (count ^ xor_rep) + add_rep;
             memcpy(out, ptr, bpp);
             out += bpp;
         } else {
             /* fall back on uncompressed */
-            count = count_pixels(ptr, w-x, bpp, 0);
+            count = ff_rle_count_pixels(ptr, w - x, bpp, 0);
             if(out + bpp*count >= outbuf + out_size) return -1;
             *out++ = (count ^ xor_raw) + add_raw;