Commit 14aa358c authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit '098eed95'

* commit '098eed95':
  mdec: merge mdec_common_init() into decode_init().
  eatgv: use fixed-width types where appropriate.
  x86: Simplify some arch conditionals
  bfin: Separate VP3 initialization code
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 8265c0f4 098eed95
...@@ -2,7 +2,7 @@ OBJS += bfin/dsputil_bfin.o \ ...@@ -2,7 +2,7 @@ OBJS += bfin/dsputil_bfin.o \
bfin/fdct_bfin.o \ bfin/fdct_bfin.o \
bfin/idct_bfin.o \ bfin/idct_bfin.o \
bfin/pixels_bfin.o \ bfin/pixels_bfin.o \
bfin/vp3_bfin.o \
bfin/vp3_idct_bfin.o \
OBJS-$(CONFIG_MPEGVIDEOENC) += bfin/mpegvideo_bfin.o OBJS-$(CONFIG_MPEGVIDEOENC) += bfin/mpegvideo_bfin.o
OBJS-$(CONFIG_VP3DSP) += bfin/vp3_bfin.o \
bfin/vp3_idct_bfin.o
...@@ -257,13 +257,7 @@ void ff_dsputil_init_bfin( DSPContext* c, AVCodecContext *avctx ) ...@@ -257,13 +257,7 @@ void ff_dsputil_init_bfin( DSPContext* c, AVCodecContext *avctx )
if (avctx->dct_algo == FF_DCT_AUTO) if (avctx->dct_algo == FF_DCT_AUTO)
c->fdct = ff_bfin_fdct; c->fdct = ff_bfin_fdct;
// FIXME convert to VP3DSPContext if (avctx->idct_algo == FF_IDCT_AUTO) {
if (0) { // avctx->idct_algo == FF_IDCT_VP3) {
c->idct_permutation_type = FF_NO_IDCT_PERM;
c->idct = ff_bfin_vp3_idct;
c->idct_add = ff_bfin_vp3_idct_add;
c->idct_put = ff_bfin_vp3_idct_put;
} else if (avctx->idct_algo == FF_IDCT_AUTO) {
c->idct_permutation_type = FF_NO_IDCT_PERM; c->idct_permutation_type = FF_NO_IDCT_PERM;
c->idct = ff_bfin_idct; c->idct = ff_bfin_idct;
c->idct_add = bfin_idct_add; c->idct_add = bfin_idct_add;
......
...@@ -38,9 +38,6 @@ ...@@ -38,9 +38,6 @@
void ff_bfin_idct (int16_t *block) attribute_l1_text; void ff_bfin_idct (int16_t *block) attribute_l1_text;
void ff_bfin_fdct (int16_t *block) attribute_l1_text; void ff_bfin_fdct (int16_t *block) attribute_l1_text;
void ff_bfin_vp3_idct (int16_t *block);
void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, int16_t *block);
void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, int16_t *block);
void ff_bfin_add_pixels_clamped (const int16_t *block, uint8_t *dest, int line_size) attribute_l1_text; void ff_bfin_add_pixels_clamped (const int16_t *block, uint8_t *dest, int line_size) attribute_l1_text;
void ff_bfin_put_pixels_clamped (const int16_t *block, uint8_t *dest, int line_size) attribute_l1_text; void ff_bfin_put_pixels_clamped (const int16_t *block, uint8_t *dest, int line_size) attribute_l1_text;
void ff_bfin_diff_pixels (int16_t *block, const uint8_t *s1, const uint8_t *s2, int stride) attribute_l1_text; void ff_bfin_diff_pixels (int16_t *block, const uint8_t *s1, const uint8_t *s2, int stride) attribute_l1_text;
......
...@@ -21,8 +21,9 @@ ...@@ -21,8 +21,9 @@
#include <string.h> #include <string.h>
#include "libavcodec/avcodec.h" #include "libavcodec/avcodec.h"
#include "libavcodec/dsputil.h" #include "libavcodec/vp3dsp.h"
#include "dsputil_bfin.h" #include "dsputil_bfin.h"
#include "vp3_bfin.h"
/* Intra iDCT offset 128 */ /* Intra iDCT offset 128 */
void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, int16_t *block) void ff_bfin_vp3_idct_put (uint8_t *dest, int line_size, int16_t *block)
...@@ -47,3 +48,9 @@ void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, int16_t *block) ...@@ -47,3 +48,9 @@ void ff_bfin_vp3_idct_add (uint8_t *dest, int line_size, int16_t *block)
memset(block, 0, 128); memset(block, 0, 128);
} }
void ff_vp3dsp_init_bfin(VP3DSPContext *c, int flags)
{
c->idct_add = ff_bfin_vp3_idct_add;
c->idct_put = ff_bfin_vp3_idct_put;
}
...@@ -42,10 +42,10 @@ typedef struct TgvContext { ...@@ -42,10 +42,10 @@ typedef struct TgvContext {
AVFrame frame; AVFrame frame;
AVFrame last_frame; AVFrame last_frame;
int width,height; int width,height;
unsigned int palette[AVPALETTE_COUNT]; uint32_t palette[AVPALETTE_COUNT];
int (*mv_codebook)[2]; int (*mv_codebook)[2];
unsigned char (*block_codebook)[16]; uint8_t (*block_codebook)[16];
int num_mvs; ///< current length of mv_codebook int num_mvs; ///< current length of mv_codebook
int num_blocks_packed; ///< current length of block_codebook int num_blocks_packed; ///< current length of block_codebook
} TgvContext; } TgvContext;
...@@ -66,11 +66,11 @@ static av_cold int tgv_decode_init(AVCodecContext *avctx) ...@@ -66,11 +66,11 @@ static av_cold int tgv_decode_init(AVCodecContext *avctx)
* @return 0 on success, -1 on critical buffer underflow * @return 0 on success, -1 on critical buffer underflow
*/ */
static int unpack(const uint8_t *src, const uint8_t *src_end, static int unpack(const uint8_t *src, const uint8_t *src_end,
unsigned char *dst, int width, int height) uint8_t *dst, int width, int height)
{ {
unsigned char *dst_end = dst + width*height; uint8_t *dst_end = dst + width*height;
int size, size1, size2, offset, run; int size, size1, size2, offset, run;
unsigned char *dst_start = dst; uint8_t *dst_start = dst;
if (src[0] & 0x01) if (src[0] & 0x01)
src += 5; src += 5;
...@@ -150,7 +150,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf, ...@@ -150,7 +150,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf,
int i,j,x,y; int i,j,x,y;
GetBitContext gb; GetBitContext gb;
int mvbits; int mvbits;
const unsigned char *blocks_raw; const uint8_t *blocks_raw;
if(buf_end - buf < 12) if(buf_end - buf < 12)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
...@@ -174,7 +174,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf, ...@@ -174,7 +174,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf,
} }
if (num_blocks_packed > s->num_blocks_packed) { if (num_blocks_packed > s->num_blocks_packed) {
s->block_codebook = av_realloc(s->block_codebook, num_blocks_packed*16*sizeof(unsigned char)); s->block_codebook = av_realloc(s->block_codebook, num_blocks_packed*16);
s->num_blocks_packed = num_blocks_packed; s->num_blocks_packed = num_blocks_packed;
} }
...@@ -213,7 +213,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf, ...@@ -213,7 +213,7 @@ static int tgv_decode_inter(TgvContext *s, const uint8_t *buf,
for (y = 0; y < s->avctx->height / 4; y++) for (y = 0; y < s->avctx->height / 4; y++)
for (x = 0; x < s->avctx->width / 4; x++) { for (x = 0; x < s->avctx->width / 4; x++) {
unsigned int vector = get_bits(&gb, vector_bits); unsigned int vector = get_bits(&gb, vector_bits);
const unsigned char *src; const uint8_t *src;
int src_stride; int src_stride;
if (vector < num_mvs) { if (vector < num_mvs) {
......
...@@ -211,10 +211,9 @@ static int decode_frame(AVCodecContext *avctx, ...@@ -211,10 +211,9 @@ static int decode_frame(AVCodecContext *avctx,
return (get_bits_count(&a->gb)+31)/32*4; return (get_bits_count(&a->gb)+31)/32*4;
} }
static av_cold void mdec_common_init(AVCodecContext *avctx){ static av_cold int decode_init(AVCodecContext *avctx){
MDECContext * const a = avctx->priv_data; MDECContext * const a = avctx->priv_data;
AVFrame *p= &a->picture;
ff_dsputil_init(&a->dsp, avctx);
a->mb_width = (avctx->coded_width + 15) / 16; a->mb_width = (avctx->coded_width + 15) / 16;
a->mb_height = (avctx->coded_height + 15) / 16; a->mb_height = (avctx->coded_height + 15) / 16;
...@@ -222,13 +221,8 @@ static av_cold void mdec_common_init(AVCodecContext *avctx){ ...@@ -222,13 +221,8 @@ static av_cold void mdec_common_init(AVCodecContext *avctx){
avcodec_get_frame_defaults(&a->picture); avcodec_get_frame_defaults(&a->picture);
avctx->coded_frame= &a->picture; avctx->coded_frame= &a->picture;
a->avctx= avctx; a->avctx= avctx;
}
static av_cold int decode_init(AVCodecContext *avctx){ ff_dsputil_init(&a->dsp, avctx);
MDECContext * const a = avctx->priv_data;
AVFrame *p= &a->picture;
mdec_common_init(avctx);
ff_mpeg12_init_vlcs(); ff_mpeg12_init_vlcs();
ff_init_scantable(a->dsp.idct_permutation, &a->scantable, ff_zigzag_direct); ff_init_scantable(a->dsp.idct_permutation, &a->scantable, ff_zigzag_direct);
......
...@@ -310,6 +310,8 @@ av_cold void ff_vp3dsp_init(VP3DSPContext *c, int flags) ...@@ -310,6 +310,8 @@ av_cold void ff_vp3dsp_init(VP3DSPContext *c, int flags)
if (ARCH_ARM) if (ARCH_ARM)
ff_vp3dsp_init_arm(c, flags); ff_vp3dsp_init_arm(c, flags);
if (ARCH_BFIN)
ff_vp3dsp_init_bfin(c, flags);
if (ARCH_PPC) if (ARCH_PPC)
ff_vp3dsp_init_ppc(c, flags); ff_vp3dsp_init_ppc(c, flags);
if (ARCH_X86) if (ARCH_X86)
......
...@@ -49,6 +49,7 @@ typedef struct VP3DSPContext { ...@@ -49,6 +49,7 @@ typedef struct VP3DSPContext {
void ff_vp3dsp_init(VP3DSPContext *c, int flags); void ff_vp3dsp_init(VP3DSPContext *c, int flags);
void ff_vp3dsp_init_arm(VP3DSPContext *c, int flags); void ff_vp3dsp_init_arm(VP3DSPContext *c, int flags);
void ff_vp3dsp_init_bfin(VP3DSPContext *c, int flags);
void ff_vp3dsp_init_ppc(VP3DSPContext *c, int flags); void ff_vp3dsp_init_ppc(VP3DSPContext *c, int flags);
void ff_vp3dsp_init_x86(VP3DSPContext *c, int flags); void ff_vp3dsp_init_x86(VP3DSPContext *c, int flags);
......
...@@ -544,7 +544,7 @@ void ff_h264qpel_init_x86(H264QpelContext *c, int bit_depth) ...@@ -544,7 +544,7 @@ void ff_h264qpel_init_x86(H264QpelContext *c, int bit_depth)
SET_QPEL_FUNCS(avg_h264_qpel, 1, 8, mmxext, ); SET_QPEL_FUNCS(avg_h264_qpel, 1, 8, mmxext, );
SET_QPEL_FUNCS(avg_h264_qpel, 2, 4, mmxext, ); SET_QPEL_FUNCS(avg_h264_qpel, 2, 4, mmxext, );
} else if (bit_depth == 10) { } else if (bit_depth == 10) {
#if !ARCH_X86_64 #if ARCH_X86_32
SET_QPEL_FUNCS(avg_h264_qpel, 0, 16, 10_mmxext, ff_); SET_QPEL_FUNCS(avg_h264_qpel, 0, 16, 10_mmxext, ff_);
SET_QPEL_FUNCS(put_h264_qpel, 0, 16, 10_mmxext, ff_); SET_QPEL_FUNCS(put_h264_qpel, 0, 16, 10_mmxext, ff_);
SET_QPEL_FUNCS(put_h264_qpel, 1, 8, 10_mmxext, ff_); SET_QPEL_FUNCS(put_h264_qpel, 1, 8, 10_mmxext, ff_);
......
...@@ -376,7 +376,7 @@ inline void ff_idct_xvid_sse2(short *block) ...@@ -376,7 +376,7 @@ inline void ff_idct_xvid_sse2(short *block)
JZ("%%esi", "1f") JZ("%%esi", "1f")
"5: \n\t" "5: \n\t"
iMTX_MULT("7*16(%0)", MANGLE(iTab2), ROUND(walkenIdctRounders+5*16), PUT_ODD(ROW7)) iMTX_MULT("7*16(%0)", MANGLE(iTab2), ROUND(walkenIdctRounders+5*16), PUT_ODD(ROW7))
#if !ARCH_X86_64 #if ARCH_X86_32
iLLM_HEAD iLLM_HEAD
#endif #endif
iLLM_PASS("%0") iLLM_PASS("%0")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment