diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index ab7893f560..6942b2c926 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -129,7 +129,7 @@ OBJS-$(CONFIG_QSVENC)                  += qsvenc.o
 OBJS-$(CONFIG_RANGECODER)              += rangecoder.o
 OBJS-$(CONFIG_RDFT)                    += rdft.o
 OBJS-$(CONFIG_RV34DSP)                 += rv34dsp.o
-OBJS-$(CONFIG_SHARED)                  += log2_tab.o reverse.o
+OBJS-$(CONFIG_SHARED)                  += log2_tab.o
 OBJS-$(CONFIG_SINEWIN)                 += sinewin.o sinewin_fixed.o
 OBJS-$(CONFIG_SNAPPY)                  += snappy.o
 OBJS-$(CONFIG_STARTCODE)               += startcode.o
diff --git a/libavcodec/asvdec.c b/libavcodec/asvdec.c
index 9a11446f52..11d1564db3 100644
--- a/libavcodec/asvdec.c
+++ b/libavcodec/asvdec.c
@@ -71,7 +71,7 @@ static av_cold void init_vlcs(ASV1Context *a)
 // FIXME write a reversed bitstream reader to avoid the double reverse
 static inline int asv2_get_bits(GetBitContext *gb, int n)
 {
-    return ff_reverse[get_bits(gb, n) << (8 - n)];
+    return avpriv_reverse[get_bits(gb, n) << (8 - n)];
 }
 
 static inline int asv1_get_level(GetBitContext *gb)
@@ -229,7 +229,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
     } else {
         int i;
         for (i = 0; i < buf_size; i++)
-            a->bitstream_buffer[i] = ff_reverse[buf[i]];
+            a->bitstream_buffer[i] = avpriv_reverse[buf[i]];
     }
 
     init_get_bits(&a->gb, a->bitstream_buffer, buf_size * 8);
diff --git a/libavcodec/asvenc.c b/libavcodec/asvenc.c
index c4eca2a13d..7ed932c934 100644
--- a/libavcodec/asvenc.c
+++ b/libavcodec/asvenc.c
@@ -37,7 +37,7 @@
 
 static inline void asv2_put_bits(PutBitContext *pb, int n, int v)
 {
-    put_bits(pb, n, ff_reverse[v << (8 - n)]);
+    put_bits(pb, n, avpriv_reverse[v << (8 - n)]);
 }
 
 static inline void asv1_put_level(PutBitContext *pb, int level)
@@ -306,7 +306,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
     } else {
         int i;
         for (i = 0; i < 4 * size; i++)
-            pkt->data[i] = ff_reverse[pkt->data[i]];
+            pkt->data[i] = avpriv_reverse[pkt->data[i]];
     }
 
     pkt->size   = size * 4;
diff --git a/libavcodec/dcaenc.c b/libavcodec/dcaenc.c
index dd601ffae0..b111fe98ba 100644
--- a/libavcodec/dcaenc.c
+++ b/libavcodec/dcaenc.c
@@ -446,7 +446,7 @@ static void fft(const int32_t in[2 * 256], cplx32 out[256])
     }
     /* post-rotation */
     for (i = 0; i < 256; i++) {
-        int b = ff_reverse[i];
+        int b = avpriv_reverse[i];
         rout[i].re = mul32(buf[b].re, cos_t(4 * i))
                    - mul32(buf[b].im, sin_t(4 * i));
         rout[i].im = mul32(buf[b].im, cos_t(4 * i))
diff --git a/libavcodec/dsd.c b/libavcodec/dsd.c
index 9104f38476..2233adf349 100644
--- a/libavcodec/dsd.c
+++ b/libavcodec/dsd.c
@@ -63,11 +63,11 @@ void ff_dsd2pcm_translate(DSDContext* s, size_t samples, int lsbf,
     pos = s->pos;
 
     while (samples-- > 0) {
-        s->buf[pos] = lsbf ? ff_reverse[*src] : *src;
+        s->buf[pos] = lsbf ? avpriv_reverse[*src] : *src;
         src += src_stride;
 
         p = s->buf + ((pos - CTABLES) & FIFOMASK);
-        *p = ff_reverse[*p];
+        *p = avpriv_reverse[*p];
 
         sum = 0.0;
         for (i = 0; i < CTABLES; i++) {
diff --git a/libavcodec/dsddec.c b/libavcodec/dsddec.c
index 2c5c357acc..3974bdeeb2 100644
--- a/libavcodec/dsddec.c
+++ b/libavcodec/dsddec.c
@@ -50,7 +50,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
     if (!s)
         return AVERROR(ENOMEM);
 
-    silence = avctx->codec_id == AV_CODEC_ID_DSD_LSBF || avctx->codec_id == AV_CODEC_ID_DSD_LSBF_PLANAR ? ff_reverse[DSD_SILENCE] : DSD_SILENCE;
+    silence = avctx->codec_id == AV_CODEC_ID_DSD_LSBF || avctx->codec_id == AV_CODEC_ID_DSD_LSBF_PLANAR ? avpriv_reverse[DSD_SILENCE] : DSD_SILENCE;
     for (i = 0; i < avctx->channels; i++) {
         s[i].pos = 0;
         memset(s[i].buf, silence, sizeof(s[i].buf));
diff --git a/libavcodec/dstdec.c b/libavcodec/dstdec.c
index 368cb64931..d9c4734209 100644
--- a/libavcodec/dstdec.c
+++ b/libavcodec/dstdec.c
@@ -197,7 +197,7 @@ static av_always_inline void ac_get(ArithCoder *ac, GetBitContext *gb, int p, in
 
 static uint8_t prob_dst_x_bit(int c)
 {
-    return (ff_reverse[c & 127] >> 1) + 1;
+    return (avpriv_reverse[c & 127] >> 1) + 1;
 }
 
 static void build_filter(int16_t table[DST_MAX_ELEMENTS][16][256], const Table *fsets)
diff --git a/libavcodec/indeo2.c b/libavcodec/indeo2.c
index 4971b84308..39c2a23279 100644
--- a/libavcodec/indeo2.c
+++ b/libavcodec/indeo2.c
@@ -175,7 +175,7 @@ static int ir2_decode_frame(AVCodecContext *avctx,
     /* decide whether frame uses deltas or not */
 #ifndef BITSTREAM_READER_LE
     for (i = 0; i < buf_size; i++)
-        buf[i] = ff_reverse[buf[i]];
+        buf[i] = avpriv_reverse[buf[i]];
 #endif
 
     if ((ret = init_get_bits8(&s->gb, buf + start, buf_size - start)) < 0)
diff --git a/libavcodec/ivi.c b/libavcodec/ivi.c
index cea40d82ca..76cf04f0a1 100644
--- a/libavcodec/ivi.c
+++ b/libavcodec/ivi.c
@@ -125,10 +125,10 @@ static uint16_t inv_bits(uint16_t val, int nbits)
     uint16_t res;
 
     if (nbits <= 8) {
-        res = ff_reverse[val] >> (8 - nbits);
+        res = avpriv_reverse[val] >> (8 - nbits);
     } else
-        res = ((ff_reverse[val & 0xFF] << 8) +
-               (ff_reverse[val >> 8])) >> (16 - nbits);
+        res = ((avpriv_reverse[val & 0xFF] << 8) +
+               (avpriv_reverse[val >> 8])) >> (16 - nbits);
 
     return res;
 }
diff --git a/libavcodec/mathops.h b/libavcodec/mathops.h
index 1c35664318..c038cb5cd9 100644
--- a/libavcodec/mathops.h
+++ b/libavcodec/mathops.h
@@ -242,10 +242,10 @@ static inline int8_t ff_u8_to_s8(uint8_t a)
 
 static av_always_inline uint32_t bitswap_32(uint32_t x)
 {
-    return (uint32_t)ff_reverse[ x        & 0xFF] << 24 |
-           (uint32_t)ff_reverse[(x >> 8)  & 0xFF] << 16 |
-           (uint32_t)ff_reverse[(x >> 16) & 0xFF] << 8  |
-           (uint32_t)ff_reverse[ x >> 24];
+    return (uint32_t)avpriv_reverse[ x        & 0xFF] << 24 |
+           (uint32_t)avpriv_reverse[(x >> 8)  & 0xFF] << 16 |
+           (uint32_t)avpriv_reverse[(x >> 16) & 0xFF] << 8  |
+           (uint32_t)avpriv_reverse[ x >> 24];
 }
 
 #endif /* AVCODEC_MATHOPS_H */
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
index ac5ac4bca4..eda097cd3d 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
@@ -2282,8 +2282,8 @@ static int mpeg_decode_a53_cc(AVCodecContext *avctx,
                         field = (field == 2 ? 1 : 0);
                         if (!s1->mpeg_enc_ctx.top_field_first) field = !field;
                         cap[0] = 0x04 | field;
-                        cap[1] = ff_reverse[cc1];
-                        cap[2] = ff_reverse[cc2];
+                        cap[1] = avpriv_reverse[cc1];
+                        cap[2] = avpriv_reverse[cc2];
                     }
                     cap += 3;
                 }
diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c
index 8c326c6829..ffb5253e4f 100644
--- a/libavcodec/pcm.c
+++ b/libavcodec/pcm.c
@@ -126,8 +126,8 @@ static int pcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
         break;
     case AV_CODEC_ID_PCM_S24DAUD:
         for (; n > 0; n--) {
-            uint32_t tmp = ff_reverse[(*samples >> 8) & 0xff] +
-                           (ff_reverse[*samples & 0xff] << 8);
+            uint32_t tmp = avpriv_reverse[(*samples >> 8) & 0xff] +
+                           (avpriv_reverse[*samples & 0xff] << 8);
             tmp <<= 4; // sync flags would go here
             bytestream_put_be24(&dst, tmp);
             samples++;
@@ -388,8 +388,8 @@ static int pcm_decode_frame(AVCodecContext *avctx, void *data,
         for (; n > 0; n--) {
             uint32_t v = bytestream_get_be24(&src);
             v >>= 4; // sync flags are here
-            AV_WN16A(samples, ff_reverse[(v >> 8) & 0xff] +
-                             (ff_reverse[v        & 0xff] << 8));
+            AV_WN16A(samples, avpriv_reverse[(v >> 8) & 0xff] +
+                             (avpriv_reverse[v        & 0xff] << 8));
             samples += 2;
         }
         break;
diff --git a/libavcodec/reverse.c b/libavcodec/reverse.c
deleted file mode 100644
index 440badaf34..0000000000
--- a/libavcodec/reverse.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "libavutil/reverse.c"
diff --git a/libavcodec/s302m.c b/libavcodec/s302m.c
index 584b58e28e..d14ee45aa2 100644
--- a/libavcodec/s302m.c
+++ b/libavcodec/s302m.c
@@ -120,13 +120,13 @@ static int s302m_decode_frame(AVCodecContext *avctx, void *data,
     if (avctx->bits_per_raw_sample == 24) {
         uint32_t *o = (uint32_t *)frame->data[0];
         for (; buf_size > 6; buf_size -= 7) {
-            *o++ = ((unsigned)ff_reverse[buf[2]]        << 24) |
-                   (ff_reverse[buf[1]]        << 16) |
-                   (ff_reverse[buf[0]]        <<  8);
-            *o++ = ((unsigned)ff_reverse[buf[6] & 0xf0] << 28) |
-                   (ff_reverse[buf[5]]        << 20) |
-                   (ff_reverse[buf[4]]        << 12) |
-                   (ff_reverse[buf[3] & 0x0f] <<  4);
+            *o++ = ((unsigned)avpriv_reverse[buf[2]]        << 24) |
+                   (avpriv_reverse[buf[1]]        << 16) |
+                   (avpriv_reverse[buf[0]]        <<  8);
+            *o++ = ((unsigned)avpriv_reverse[buf[6] & 0xf0] << 28) |
+                   (avpriv_reverse[buf[5]]        << 20) |
+                   (avpriv_reverse[buf[4]]        << 12) |
+                   (avpriv_reverse[buf[3] & 0x0f] <<  4);
             buf += 7;
         }
         o = (uint32_t *)frame->data[0];
@@ -142,12 +142,12 @@ static int s302m_decode_frame(AVCodecContext *avctx, void *data,
     } else if (avctx->bits_per_raw_sample == 20) {
         uint32_t *o = (uint32_t *)frame->data[0];
         for (; buf_size > 5; buf_size -= 6) {
-            *o++ = ((unsigned)ff_reverse[buf[2] & 0xf0] << 28) |
-                   (ff_reverse[buf[1]]        << 20) |
-                   (ff_reverse[buf[0]]        << 12);
-            *o++ = ((unsigned)ff_reverse[buf[5] & 0xf0] << 28) |
-                   (ff_reverse[buf[4]]        << 20) |
-                   (ff_reverse[buf[3]]        << 12);
+            *o++ = ((unsigned)avpriv_reverse[buf[2] & 0xf0] << 28) |
+                   (avpriv_reverse[buf[1]]        << 20) |
+                   (avpriv_reverse[buf[0]]        << 12);
+            *o++ = ((unsigned)avpriv_reverse[buf[5] & 0xf0] << 28) |
+                   (avpriv_reverse[buf[4]]        << 20) |
+                   (avpriv_reverse[buf[3]]        << 12);
             buf += 6;
         }
         o = (uint32_t *)frame->data[0];
@@ -163,11 +163,11 @@ static int s302m_decode_frame(AVCodecContext *avctx, void *data,
     } else {
         uint16_t *o = (uint16_t *)frame->data[0];
         for (; buf_size > 4; buf_size -= 5) {
-            *o++ = (ff_reverse[buf[1]]        <<  8) |
-                    ff_reverse[buf[0]];
-            *o++ = (ff_reverse[buf[4] & 0xf0] << 12) |
-                   (ff_reverse[buf[3]]        <<  4) |
-                   (ff_reverse[buf[2]]        >>  4);
+            *o++ = (avpriv_reverse[buf[1]]        <<  8) |
+                    avpriv_reverse[buf[0]];
+            *o++ = (avpriv_reverse[buf[4] & 0xf0] << 12) |
+                   (avpriv_reverse[buf[3]]        <<  4) |
+                   (avpriv_reverse[buf[2]]        >>  4);
             buf += 5;
         }
         o = (uint16_t *)frame->data[0];
diff --git a/libavcodec/s302menc.c b/libavcodec/s302menc.c
index b04a54e482..c5634b09bf 100644
--- a/libavcodec/s302menc.c
+++ b/libavcodec/s302menc.c
@@ -103,13 +103,13 @@ static int s302m_encode2_frame(AVCodecContext *avctx, AVPacket *avpkt,
             uint8_t vucf = s->framing_index == 0 ? 0x10: 0;
 
             for (channels = 0; channels < avctx->channels; channels += 2) {
-                o[0] = ff_reverse[(samples[0] & 0x0000FF00) >> 8];
-                o[1] = ff_reverse[(samples[0] & 0x00FF0000) >> 16];
-                o[2] = ff_reverse[(samples[0] & 0xFF000000) >> 24];
-                o[3] = ff_reverse[(samples[1] & 0x00000F00) >> 4] | vucf;
-                o[4] = ff_reverse[(samples[1] & 0x000FF000) >> 12];
-                o[5] = ff_reverse[(samples[1] & 0x0FF00000) >> 20];
-                o[6] = ff_reverse[(samples[1] & 0xF0000000) >> 28];
+                o[0] = avpriv_reverse[(samples[0] & 0x0000FF00) >> 8];
+                o[1] = avpriv_reverse[(samples[0] & 0x00FF0000) >> 16];
+                o[2] = avpriv_reverse[(samples[0] & 0xFF000000) >> 24];
+                o[3] = avpriv_reverse[(samples[1] & 0x00000F00) >> 4] | vucf;
+                o[4] = avpriv_reverse[(samples[1] & 0x000FF000) >> 12];
+                o[5] = avpriv_reverse[(samples[1] & 0x0FF00000) >> 20];
+                o[6] = avpriv_reverse[(samples[1] & 0xF0000000) >> 28];
                 o += 7;
                 samples += 2;
             }
@@ -125,12 +125,12 @@ static int s302m_encode2_frame(AVCodecContext *avctx, AVPacket *avpkt,
             uint8_t vucf = s->framing_index == 0 ? 0x80: 0;
 
             for (channels = 0; channels < avctx->channels; channels += 2) {
-                o[0] = ff_reverse[ (samples[0] & 0x000FF000) >> 12];
-                o[1] = ff_reverse[ (samples[0] & 0x0FF00000) >> 20];
-                o[2] = ff_reverse[((samples[0] & 0xF0000000) >> 28) | vucf];
-                o[3] = ff_reverse[ (samples[1] & 0x000FF000) >> 12];
-                o[4] = ff_reverse[ (samples[1] & 0x0FF00000) >> 20];
-                o[5] = ff_reverse[ (samples[1] & 0xF0000000) >> 28];
+                o[0] = avpriv_reverse[ (samples[0] & 0x000FF000) >> 12];
+                o[1] = avpriv_reverse[ (samples[0] & 0x0FF00000) >> 20];
+                o[2] = avpriv_reverse[((samples[0] & 0xF0000000) >> 28) | vucf];
+                o[3] = avpriv_reverse[ (samples[1] & 0x000FF000) >> 12];
+                o[4] = avpriv_reverse[ (samples[1] & 0x0FF00000) >> 20];
+                o[5] = avpriv_reverse[ (samples[1] & 0xF0000000) >> 28];
                 o += 6;
                 samples += 2;
             }
@@ -146,11 +146,11 @@ static int s302m_encode2_frame(AVCodecContext *avctx, AVPacket *avpkt,
             uint8_t vucf = s->framing_index == 0 ? 0x10 : 0;
 
             for (channels = 0; channels < avctx->channels; channels += 2) {
-                o[0] = ff_reverse[ samples[0] & 0xFF];
-                o[1] = ff_reverse[(samples[0] & 0xFF00) >>  8];
-                o[2] = ff_reverse[(samples[1] & 0x0F)   <<  4] | vucf;
-                o[3] = ff_reverse[(samples[1] & 0x0FF0) >>  4];
-                o[4] = ff_reverse[(samples[1] & 0xF000) >> 12];
+                o[0] = avpriv_reverse[ samples[0] & 0xFF];
+                o[1] = avpriv_reverse[(samples[0] & 0xFF00) >>  8];
+                o[2] = avpriv_reverse[(samples[1] & 0x0F)   <<  4] | vucf;
+                o[3] = avpriv_reverse[(samples[1] & 0x0FF0) >>  4];
+                o[4] = avpriv_reverse[(samples[1] & 0xF000) >> 12];
                 o += 5;
                 samples += 2;
 
diff --git a/libavcodec/tiff.c b/libavcodec/tiff.c
index 1b332a754d..1537dfac97 100644
--- a/libavcodec/tiff.c
+++ b/libavcodec/tiff.c
@@ -284,7 +284,7 @@ static int deinvert_buffer(TiffContext *s, const uint8_t *src, int size)
     if (!s->deinvert_buf)
         return AVERROR(ENOMEM);
     for (i = 0; i < size; i++)
-        s->deinvert_buf[i] = ff_reverse[src[i]];
+        s->deinvert_buf[i] = avpriv_reverse[src[i]];
 
     return 0;
 }
@@ -469,7 +469,7 @@ static int tiff_unpack_fax(TiffContext *s, uint8_t *dst, int stride,
         memcpy(src2, src, size);
     } else {
         for (i = 0; i < size; i++)
-            src2[i] = ff_reverse[src[i]];
+            src2[i] = avpriv_reverse[src[i]];
     }
     memset(src2 + size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
     ret = ff_ccitt_unpack(s->avctx, src2, size, dst, lines, stride,
@@ -600,7 +600,7 @@ static int tiff_unpack_strip(TiffContext *s, AVFrame *p, uint8_t *dst, int strid
             } else {
                 int i;
                 for (i = 0; i < width; i++)
-                    dst[i] = ff_reverse[src[i]];
+                    dst[i] = avpriv_reverse[src[i]];
             }
             src += width;
             break;
@@ -610,7 +610,7 @@ static int tiff_unpack_strip(TiffContext *s, AVFrame *p, uint8_t *dst, int strid
                     av_log(s->avctx, AV_LOG_ERROR, "Read went out of bounds\n");
                     return AVERROR_INVALIDDATA;
                 }
-                code = s->fill_order ? (int8_t) ff_reverse[*src++]: (int8_t) *src++;
+                code = s->fill_order ? (int8_t) avpriv_reverse[*src++]: (int8_t) *src++;
                 if (code >= 0) {
                     code++;
                     if (pixels + code > width ||
@@ -639,7 +639,7 @@ static int tiff_unpack_strip(TiffContext *s, AVFrame *p, uint8_t *dst, int strid
             if (s->fill_order) {
                 int i;
                 for (i = 0; i < width; i++)
-                    dst[i] = ff_reverse[dst[i]];
+                    dst[i] = avpriv_reverse[dst[i]];
             }
             break;
         }
diff --git a/libavcodec/webp.c b/libavcodec/webp.c
index 077bb06f85..c885d48901 100644
--- a/libavcodec/webp.c
+++ b/libavcodec/webp.c
@@ -248,7 +248,7 @@ static av_always_inline int webp_get_vlc(GetBitContext *gb, VLC_TYPE (*table)[2]
     UPDATE_CACHE(re, gb);
 
     index = SHOW_UBITS(re, gb, 8);
-    index = ff_reverse[index];
+    index = avpriv_reverse[index];
     code  = table[index][0];
     n     = table[index][1];
 
@@ -259,7 +259,7 @@ static av_always_inline int webp_get_vlc(GetBitContext *gb, VLC_TYPE (*table)[2]
         nb_bits = -n;
 
         index = SHOW_UBITS(re, gb, nb_bits);
-        index = (ff_reverse[index] >> (8 - nb_bits)) + code;
+        index = (avpriv_reverse[index] >> (8 - nb_bits)) + code;
         code  = table[index][0];
         n     = table[index][1];
     }
diff --git a/libavcodec/wnv1.c b/libavcodec/wnv1.c
index 915e9c7dc9..4ec7b3626e 100644
--- a/libavcodec/wnv1.c
+++ b/libavcodec/wnv1.c
@@ -50,7 +50,7 @@ static inline int wnv1_get_code(WNV1Context *w, int base_value)
     int v = get_vlc2(&w->gb, code_vlc.table, CODE_VLC_BITS, 1);
 
     if (v == 15)
-        return ff_reverse[get_bits(&w->gb, 8 - w->shift)];
+        return avpriv_reverse[get_bits(&w->gb, 8 - w->shift)];
     else
         return base_value + ((v - 7U) << w->shift);
 }
@@ -87,7 +87,7 @@ static int decode_frame(AVCodecContext *avctx,
     p->key_frame = 1;
 
     for (i = 8; i < buf_size; i++)
-        rbuf[i] = ff_reverse[buf[i]];
+        rbuf[i] = avpriv_reverse[buf[i]];
 
     if ((ret = init_get_bits8(&l->gb, rbuf + 8, buf_size - 8)) < 0)
         return ret;
diff --git a/libavcodec/xbmdec.c b/libavcodec/xbmdec.c
index d19bdaee23..28bffa7229 100644
--- a/libavcodec/xbmdec.c
+++ b/libavcodec/xbmdec.c
@@ -103,13 +103,13 @@ static int xbm_decode_frame(AVCodecContext *avctx, void *data,
                 val = convert(*ptr++);
                 if (av_isxdigit(*ptr))
                     val = (val << 4) + convert(*ptr++);
-                *dst++ = ff_reverse[val];
+                *dst++ = avpriv_reverse[val];
                 if (av_isxdigit(*ptr) && j+1 < linesize) {
                     j++;
                     val = convert(*ptr++);
                     if (av_isxdigit(*ptr))
                         val = (val << 4) + convert(*ptr++);
-                    *dst++ = ff_reverse[val];
+                    *dst++ = avpriv_reverse[val];
                 }
             } else {
                 av_log(avctx, AV_LOG_ERROR,
diff --git a/libavcodec/xbmenc.c b/libavcodec/xbmenc.c
index b25615f2a4..6449400456 100644
--- a/libavcodec/xbmenc.c
+++ b/libavcodec/xbmenc.c
@@ -43,7 +43,7 @@ static int xbm_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
     buf += snprintf(buf, 40, "static unsigned char image_bits[] = {\n");
     for (i = 0; i < avctx->height; i++) {
         for (j = 0; j < linesize; j++)
-            buf += snprintf(buf, 7, " 0x%02X,", ff_reverse[*ptr++]);
+            buf += snprintf(buf, 7, " 0x%02X,", avpriv_reverse[*ptr++]);
         ptr += p->linesize[0] - linesize;
         buf += snprintf(buf, 2, "\n");
     }
diff --git a/libavdevice/Makefile b/libavdevice/Makefile
index 8228d62147..53b5f90b29 100644
--- a/libavdevice/Makefile
+++ b/libavdevice/Makefile
@@ -9,7 +9,6 @@ OBJS    = alldevices.o                                                  \
           utils.o                                                       \
 
 OBJS-$(HAVE_LIBC_MSVCRT)                 += file_open.o
-OBJS-$(CONFIG_SHARED)                    += reverse.o
 
 # input/output devices
 OBJS-$(CONFIG_ALSA_INDEV)                += alsa_dec.o alsa.o timefilter.o
diff --git a/libavdevice/decklink_dec.cpp b/libavdevice/decklink_dec.cpp
index 94dae26003..4cf7c654b4 100644
--- a/libavdevice/decklink_dec.cpp
+++ b/libavdevice/decklink_dec.cpp
@@ -213,7 +213,7 @@ static uint8_t* teletext_data_unit_from_op47_vbi_packet(int line, uint16_t *py,
     tgt += 4;
 
     for (i = 0; i < 42; i++)
-       *tgt++ = ff_reverse[py[i] & 255];
+       *tgt++ = avpriv_reverse[py[i] & 255];
 
     return tgt;
 }
diff --git a/libavdevice/reverse.c b/libavdevice/reverse.c
deleted file mode 100644
index 440badaf34..0000000000
--- a/libavdevice/reverse.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "libavutil/reverse.c"
diff --git a/libavutil/eval.c b/libavutil/eval.c
index 5da9a6d83b..95495356f4 100644
--- a/libavutil/eval.c
+++ b/libavutil/eval.c
@@ -265,7 +265,7 @@ static double eval_expr(Parser *p, AVExpr *e)
             double x_max = eval_expr(p, e->param[1]);
             for(i=-1; i<1024; i++) {
                 if(i<255) {
-                    p->var[0] = ff_reverse[i&255]*x_max/255;
+                    p->var[0] = avpriv_reverse[i&255]*x_max/255;
                 } else {
                     p->var[0] = x_max*pow(0.9, i-255);
                     if (i&1) p->var[0] *= -1;
diff --git a/libavutil/reverse.c b/libavutil/reverse.c
index 105eb03dda..1d46940c41 100644
--- a/libavutil/reverse.c
+++ b/libavutil/reverse.c
@@ -19,8 +19,9 @@
  */
 
 #include <stdint.h>
+#include "reverse.h"
 
-const uint8_t ff_reverse[256] = {
+const uint8_t avpriv_reverse[256] = {
 0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0,0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0,
 0x08,0x88,0x48,0xC8,0x28,0xA8,0x68,0xE8,0x18,0x98,0x58,0xD8,0x38,0xB8,0x78,0xF8,
 0x04,0x84,0x44,0xC4,0x24,0xA4,0x64,0xE4,0x14,0x94,0x54,0xD4,0x34,0xB4,0x74,0xF4,
diff --git a/libavutil/reverse.h b/libavutil/reverse.h
index 4eb6123932..7bbaea7673 100644
--- a/libavutil/reverse.h
+++ b/libavutil/reverse.h
@@ -22,7 +22,8 @@
 #define AVUTIL_REVERSE_H
 
 #include <stdint.h>
+#include "internal.h"
 
-extern const uint8_t ff_reverse[256];
+extern av_export_avutil const uint8_t avpriv_reverse[256];
 
 #endif /* AVUTIL_REVERSE_H */
