Browse Source

avutil: Move memcpy_backptr() to mem.c

The function is used elsewhere and does not belong with the LZO code.
tags/n1.1
Diego Biurrun 12 years ago
parent
commit
5bac2d0c30
11 changed files with 57 additions and 63 deletions
  1. +1
    -1
      libavcodec/dfa.c
  2. +1
    -1
      libavcodec/eatgv.c
  3. +1
    -1
      libavcodec/g723_1.c
  4. +1
    -1
      libavcodec/lcldec.c
  5. +1
    -1
      libavcodec/wmavoice.c
  6. +1
    -2
      libavcodec/xan.c
  7. +1
    -2
      libavcodec/xxan.c
  8. +1
    -43
      libavutil/lzo.c
  9. +0
    -11
      libavutil/lzo.h
  10. +37
    -0
      libavutil/mem.c
  11. +12
    -0
      libavutil/mem.h

+ 1
- 1
libavcodec/dfa.c View File

@@ -24,7 +24,7 @@
#include "bytestream.h"

#include "libavutil/imgutils.h"
#include "libavutil/lzo.h" // for av_memcpy_backptr
#include "libavutil/mem.h"

typedef struct DfaContext {
AVFrame pic;


+ 1
- 1
libavcodec/eatgv.c View File

@@ -31,8 +31,8 @@
#include "avcodec.h"
#define BITSTREAM_READER_LE
#include "get_bits.h"
#include "libavutil/lzo.h"
#include "libavutil/imgutils.h"
#include "libavutil/mem.h"

#define EA_PREAMBLE_SIZE 8
#define kVGT_TAG MKTAG('k', 'V', 'G', 'T')


+ 1
- 1
libavcodec/g723_1.c View File

@@ -27,7 +27,7 @@

#define BITSTREAM_READER_LE
#include "libavutil/audioconvert.h"
#include "libavutil/lzo.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "get_bits.h"


+ 1
- 1
libavcodec/lcldec.c View File

@@ -41,10 +41,10 @@
#include <stdio.h>
#include <stdlib.h>

#include "libavutil/mem.h"
#include "avcodec.h"
#include "bytestream.h"
#include "lcl.h"
#include "libavutil/lzo.h"

#if CONFIG_ZLIB_DECODER
#include <zlib.h>


+ 1
- 1
libavcodec/wmavoice.c View File

@@ -29,6 +29,7 @@

#include <math.h>

#include "libavutil/mem.h"
#include "dsputil.h"
#include "avcodec.h"
#include "get_bits.h"
@@ -38,7 +39,6 @@
#include "acelp_vectors.h"
#include "acelp_filters.h"
#include "lsp.h"
#include "libavutil/lzo.h"
#include "dct.h"
#include "rdft.h"
#include "sinewin.h"


+ 1
- 2
libavcodec/xan.c View File

@@ -33,12 +33,11 @@
#include <string.h>

#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "avcodec.h"
#include "bytestream.h"
#define BITSTREAM_READER_LE
#include "get_bits.h"
// for av_memcpy_backptr
#include "libavutil/lzo.h"

#define RUNTIME_GAMMA 0



+ 1
- 2
libavcodec/xxan.c View File

@@ -22,11 +22,10 @@

#include "avcodec.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "bytestream.h"
#define BITSTREAM_READER_LE
#include "get_bits.h"
// for av_memcpy_backptr
#include "libavutil/lzo.h"

typedef struct XanContext {
AVCodecContext *avctx;


+ 1
- 43
libavutil/lzo.c View File

@@ -100,8 +100,6 @@ static inline void copy(LZOContext *c, int cnt)
c->out = dst + cnt;
}

static inline void memcpy_backptr(uint8_t *dst, int back, int cnt);

/**
* @brief Copies previously decoded bytes to current position.
* @param back how many bytes back we start
@@ -122,50 +120,10 @@ static inline void copy_backptr(LZOContext *c, int back, int cnt)
cnt = FFMAX(c->out_end - dst, 0);
c->error |= AV_LZO_OUTPUT_FULL;
}
memcpy_backptr(dst, back, cnt);
av_memcpy_backptr(dst, back, cnt);
c->out = dst + cnt;
}

static inline void memcpy_backptr(uint8_t *dst, int back, int cnt)
{
const uint8_t *src = &dst[-back];
if (back == 1) {
memset(dst, *src, cnt);
} else {
if (cnt >= 4) {
AV_COPY16U(dst, src);
AV_COPY16U(dst + 2, src + 2);
src += 4;
dst += 4;
cnt -= 4;
}
if (cnt >= 8) {
AV_COPY16U(dst, src);
AV_COPY16U(dst + 2, src + 2);
AV_COPY16U(dst + 4, src + 4);
AV_COPY16U(dst + 6, src + 6);
src += 8;
dst += 8;
cnt -= 8;
}
if (cnt > 0) {
int blocklen = back;
while (cnt > blocklen) {
memcpy(dst, src, blocklen);
dst += blocklen;
cnt -= blocklen;
blocklen <<= 1;
}
memcpy(dst, src, cnt);
}
}
}

void av_memcpy_backptr(uint8_t *dst, int back, int cnt)
{
memcpy_backptr(dst, back, cnt);
}

int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen)
{
int state = 0;


+ 0
- 11
libavutil/lzo.h View File

@@ -59,17 +59,6 @@
*/
int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen);

/**
* @brief deliberately overlapping memcpy implementation
* @param dst destination buffer
* @param back how many bytes back we start (the initial size of the overlapping window)
* @param cnt number of bytes to copy, must be >= 0
*
* cnt > back is valid, this will copy the bytes we just copied,
* thus creating a repeating pattern with a period length of back.
*/
void av_memcpy_backptr(uint8_t *dst, int back, int cnt);

/**
* @}
*/


+ 37
- 0
libavutil/mem.c View File

@@ -27,6 +27,7 @@
#include "config.h"

#include <limits.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#if HAVE_MALLOC_H
@@ -34,6 +35,7 @@
#endif

#include "avutil.h"
#include "intreadwrite.h"
#include "mem.h"

/* here we can use OS-dependent allocation functions */
@@ -177,3 +179,38 @@ char *av_strdup(const char *s)
}
return ptr;
}

void av_memcpy_backptr(uint8_t *dst, int back, int cnt)
{
const uint8_t *src = &dst[-back];
if (back == 1) {
memset(dst, *src, cnt);
} else {
if (cnt >= 4) {
AV_COPY16U(dst, src);
AV_COPY16U(dst + 2, src + 2);
src += 4;
dst += 4;
cnt -= 4;
}
if (cnt >= 8) {
AV_COPY16U(dst, src);
AV_COPY16U(dst + 2, src + 2);
AV_COPY16U(dst + 4, src + 4);
AV_COPY16U(dst + 6, src + 6);
src += 8;
dst += 8;
cnt -= 8;
}
if (cnt > 0) {
int blocklen = back;
while (cnt > blocklen) {
memcpy(dst, src, blocklen);
dst += blocklen;
cnt -= blocklen;
blocklen <<= 1;
}
memcpy(dst, src, cnt);
}
}
}

+ 12
- 0
libavutil/mem.h View File

@@ -27,6 +27,7 @@
#define AVUTIL_MEM_H

#include <limits.h>
#include <stdint.h>

#include "attributes.h"
#include "avutil.h"
@@ -164,6 +165,17 @@ char *av_strdup(const char *s) av_malloc_attrib;
*/
void av_freep(void *ptr);

/**
* @brief deliberately overlapping memcpy implementation
* @param dst destination buffer
* @param back how many bytes back we start (the initial size of the overlapping window)
* @param cnt number of bytes to copy, must be >= 0
*
* cnt > back is valid, this will copy the bytes we just copied,
* thus creating a repeating pattern with a period length of back.
*/
void av_memcpy_backptr(uint8_t *dst, int back, int cnt);

/**
* @}
*/


Loading…
Cancel
Save