@@ -1531,6 +1531,7 @@ CONFIG_EXTRA=" | |||
audio_frame_queue | |||
audiodsp | |||
blockdsp | |||
bswapdsp | |||
cabac | |||
dsputil | |||
gcrypt | |||
@@ -1716,20 +1717,20 @@ mpegvideoenc_select="dsputil mpegvideo qpeldsp" | |||
aac_decoder_select="mdct sinewin" | |||
aac_encoder_select="audio_frame_queue mdct sinewin" | |||
aac_latm_decoder_select="aac_decoder aac_latm_parser" | |||
ac3_decoder_select="mdct ac3dsp ac3_parser dsputil" | |||
ac3_decoder_select="ac3_parser ac3dsp bswapdsp mdct" | |||
ac3_encoder_select="ac3dsp audiodsp dsputil mdct" | |||
ac3_fixed_encoder_select="ac3dsp audiodsp dsputil mdct" | |||
aic_decoder_select="dsputil golomb" | |||
alac_encoder_select="lpc" | |||
als_decoder_select="dsputil" | |||
als_decoder_select="bswapdsp" | |||
amrnb_decoder_select="lsp" | |||
amrwb_decoder_select="lsp" | |||
amv_decoder_select="sp5x_decoder" | |||
ape_decoder_select="dsputil" | |||
asv1_decoder_select="blockdsp dsputil" | |||
asv1_encoder_select="dsputil" | |||
asv2_decoder_select="blockdsp dsputil" | |||
asv2_encoder_select="dsputil" | |||
ape_decoder_select="bswapdsp" | |||
asv1_decoder_select="blockdsp bswapdsp dsputil" | |||
asv1_encoder_select="bswapdsp dsputil" | |||
asv2_decoder_select="blockdsp bswapdsp dsputil" | |||
asv2_encoder_select="bswapdsp dsputil" | |||
atrac1_decoder_select="mdct sinewin" | |||
atrac3_decoder_select="mdct" | |||
atrac3p_decoder_select="mdct sinewin" | |||
@@ -1737,7 +1738,7 @@ bink_decoder_select="blockdsp hpeldsp" | |||
binkaudio_dct_decoder_select="mdct rdft dct sinewin" | |||
binkaudio_rdft_decoder_select="mdct rdft sinewin" | |||
cavs_decoder_select="blockdsp dsputil golomb h264chroma qpeldsp videodsp" | |||
cllc_decoder_select="dsputil" | |||
cllc_decoder_select="bswapdsp" | |||
comfortnoise_encoder_select="lpc" | |||
cook_decoder_select="audiodsp mdct sinewin" | |||
cscd_decoder_select="lzo" | |||
@@ -1750,9 +1751,9 @@ dvvideo_encoder_select="dsputil" | |||
dxa_decoder_deps="zlib" | |||
eac3_decoder_select="ac3_decoder" | |||
eac3_encoder_select="ac3_encoder" | |||
eamad_decoder_select="aandcttables blockdsp dsputil mpegvideo" | |||
eamad_decoder_select="aandcttables blockdsp bswapdsp dsputil mpegvideo" | |||
eatgq_decoder_select="aandcttables dsputil" | |||
eatqi_decoder_select="aandcttables blockdsp dsputil mpeg1video_decoder" | |||
eatqi_decoder_select="aandcttables blockdsp bswapdsp dsputil mpeg1video_decoder" | |||
exr_decoder_deps="zlib" | |||
ffv1_decoder_select="golomb rangecoder" | |||
ffv1_encoder_select="rangecoder" | |||
@@ -1760,14 +1761,14 @@ ffvhuff_decoder_select="huffyuv_decoder" | |||
ffvhuff_encoder_select="huffyuv_encoder" | |||
fic_decoder_select="golomb" | |||
flac_decoder_select="golomb" | |||
flac_encoder_select="dsputil golomb lpc" | |||
flac_encoder_select="bswapdsp golomb lpc" | |||
flashsv_decoder_deps="zlib" | |||
flashsv_encoder_deps="zlib" | |||
flashsv2_decoder_deps="zlib" | |||
flv_decoder_select="h263_decoder" | |||
flv_encoder_select="h263_encoder" | |||
fourxm_decoder_select="blockdsp dsputil" | |||
fraps_decoder_select="dsputil huffman" | |||
fourxm_decoder_select="blockdsp bswapdsp" | |||
fraps_decoder_select="bswapdsp huffman" | |||
g2m_decoder_deps="zlib" | |||
g2m_decoder_select="blockdsp dsputil" | |||
h261_decoder_select="mpeg_er mpegvideo" | |||
@@ -1778,11 +1779,11 @@ h263i_decoder_select="h263_decoder" | |||
h263p_encoder_select="h263_encoder" | |||
h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel videodsp" | |||
h264_decoder_suggest="error_resilience" | |||
hevc_decoder_select="cabac dsputil golomb videodsp" | |||
huffyuv_decoder_select="dsputil huffyuvdsp" | |||
huffyuv_encoder_select="dsputil huffman huffyuvencdsp" | |||
hevc_decoder_select="bswapdsp cabac golomb videodsp" | |||
huffyuv_decoder_select="bswapdsp huffyuvdsp" | |||
huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp" | |||
iac_decoder_select="imc_decoder" | |||
imc_decoder_select="dsputil fft mdct sinewin" | |||
imc_decoder_select="bswapdsp fft mdct sinewin" | |||
indeo3_decoder_select="hpeldsp" | |||
interplay_video_decoder_select="hpeldsp" | |||
jpegls_decoder_select="golomb mjpeg_decoder" | |||
@@ -1793,12 +1794,12 @@ ljpeg_encoder_select="aandcttables mpegvideoenc" | |||
loco_decoder_select="golomb" | |||
mdec_decoder_select="blockdsp dsputil mpegvideo" | |||
metasound_decoder_select="lsp mdct sinewin" | |||
mimic_decoder_select="blockdsp dsputil hpeldsp" | |||
mimic_decoder_select="blockdsp bswapdsp dsputil hpeldsp" | |||
mjpeg_decoder_select="blockdsp dsputil hpeldsp" | |||
mjpeg_encoder_select="aandcttables mpegvideoenc" | |||
mjpegb_decoder_select="mjpeg_decoder" | |||
mlp_decoder_select="mlp_parser" | |||
motionpixels_decoder_select="dsputil" | |||
motionpixels_decoder_select="bswapdsp" | |||
mp1_decoder_select="mpegaudio" | |||
mp1float_decoder_select="mpegaudio" | |||
mp2_decoder_select="mpegaudio" | |||
@@ -1809,7 +1810,7 @@ mp3adufloat_decoder_select="mpegaudio" | |||
mp3float_decoder_select="mpegaudio" | |||
mp3on4_decoder_select="mpegaudio" | |||
mp3on4float_decoder_select="mpegaudio" | |||
mpc7_decoder_select="dsputil mpegaudiodsp" | |||
mpc7_decoder_select="bswapdsp mpegaudiodsp" | |||
mpc8_decoder_select="mpegaudiodsp" | |||
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h" | |||
mpeg_xvmc_decoder_select="mpeg2video_decoder" | |||
@@ -1859,12 +1860,12 @@ thp_decoder_select="mjpeg_decoder" | |||
tiff_decoder_suggest="zlib" | |||
tiff_encoder_suggest="zlib" | |||
truehd_decoder_select="mlp_decoder" | |||
truemotion2_decoder_select="dsputil" | |||
truespeech_decoder_select="dsputil" | |||
truemotion2_decoder_select="bswapdsp" | |||
truespeech_decoder_select="bswapdsp" | |||
tscc_decoder_deps="zlib" | |||
twinvq_decoder_select="mdct lsp sinewin" | |||
utvideo_decoder_select="dsputil" | |||
utvideo_encoder_select="dsputil huffman huffyuvencdsp" | |||
utvideo_decoder_select="bswapdsp" | |||
utvideo_encoder_select="bswapdsp huffman huffyuvencdsp" | |||
vble_decoder_select="huffyuvdsp" | |||
vc1_decoder_select="blockdsp error_resilience h263_decoder h264chroma h264qpel intrax8 mpeg_er qpeldsp" | |||
vc1image_decoder_select="vc1_decoder" | |||
@@ -31,8 +31,8 @@ | |||
#include "libavutil/intreadwrite.h" | |||
#include "avcodec.h" | |||
#include "blockdsp.h" | |||
#include "bswapdsp.h" | |||
#include "bytestream.h" | |||
#include "dsputil.h" | |||
#include "get_bits.h" | |||
#include "internal.h" | |||
@@ -132,8 +132,8 @@ typedef struct CFrameBuffer { | |||
typedef struct FourXContext { | |||
AVCodecContext *avctx; | |||
DSPContext dsp; | |||
BlockDSPContext bdsp; | |||
BswapDSPContext bbdsp; | |||
uint16_t *frame_buffer; | |||
uint16_t *last_frame_buffer; | |||
GetBitContext pre_gb; ///< ac/dc prefix | |||
@@ -442,8 +442,8 @@ static int decode_p_frame(FourXContext *f, const uint8_t *buf, int length) | |||
bitstream_size + FF_INPUT_BUFFER_PADDING_SIZE); | |||
if (!f->bitstream_buffer) | |||
return AVERROR(ENOMEM); | |||
f->dsp.bswap_buf(f->bitstream_buffer, (const uint32_t*)(buf + extra), | |||
bitstream_size / 4); | |||
f->bbdsp.bswap_buf(f->bitstream_buffer, (const uint32_t *) (buf + extra), | |||
bitstream_size / 4); | |||
memset((uint8_t*)f->bitstream_buffer + bitstream_size, | |||
0, FF_INPUT_BUFFER_PADDING_SIZE); | |||
init_get_bits(&f->gb, f->bitstream_buffer, 8 * bitstream_size); | |||
@@ -765,8 +765,8 @@ static int decode_i_frame(FourXContext *f, const uint8_t *buf, int length) | |||
prestream_size + FF_INPUT_BUFFER_PADDING_SIZE); | |||
if (!f->bitstream_buffer) | |||
return AVERROR(ENOMEM); | |||
f->dsp.bswap_buf(f->bitstream_buffer, (const uint32_t*)prestream, | |||
prestream_size / 4); | |||
f->bbdsp.bswap_buf(f->bitstream_buffer, (const uint32_t *) prestream, | |||
prestream_size / 4); | |||
memset((uint8_t*)f->bitstream_buffer + prestream_size, | |||
0, FF_INPUT_BUFFER_PADDING_SIZE); | |||
init_get_bits(&f->pre_gb, f->bitstream_buffer, 8 * prestream_size); | |||
@@ -956,7 +956,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||
f->version = AV_RL32(avctx->extradata) >> 16; | |||
ff_blockdsp_init(&f->bdsp, avctx); | |||
ff_dsputil_init(&f->dsp, avctx); | |||
ff_bswapdsp_init(&f->bbdsp); | |||
f->avctx = avctx; | |||
init_vlcs(f); | |||
@@ -30,6 +30,7 @@ OBJS-$(CONFIG_AC3DSP) += ac3dsp.o | |||
OBJS-$(CONFIG_AUDIO_FRAME_QUEUE) += audio_frame_queue.o | |||
OBJS-$(CONFIG_AUDIODSP) += audiodsp.o | |||
OBJS-$(CONFIG_BLOCKDSP) += blockdsp.o | |||
OBJS-$(CONFIG_BSWAPDSP) += bswapdsp.o | |||
OBJS-$(CONFIG_CABAC) += cabac.o | |||
OBJS-$(CONFIG_DCT) += dct.o dct32_fixed.o dct32_float.o | |||
OBJS-$(CONFIG_DXVA2) += dxva2.o | |||
@@ -33,6 +33,7 @@ | |||
#include "libavutil/crc.h" | |||
#include "libavutil/downmix_info.h" | |||
#include "libavutil/opt.h" | |||
#include "bswapdsp.h" | |||
#include "internal.h" | |||
#include "aac_ac3_parser.h" | |||
#include "ac3_parser.h" | |||
@@ -180,7 +181,7 @@ static av_cold int ac3_decode_init(AVCodecContext *avctx) | |||
ff_mdct_init(&s->imdct_256, 8, 1, 1.0); | |||
ff_mdct_init(&s->imdct_512, 9, 1, 1.0); | |||
ff_kbd_window_init(s->window, 5.0, 256); | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_bswapdsp_init(&s->bdsp); | |||
avpriv_float_dsp_init(&s->fdsp, avctx->flags & CODEC_FLAG_BITEXACT); | |||
ff_ac3dsp_init(&s->ac3dsp, avctx->flags & CODEC_FLAG_BITEXACT); | |||
ff_fmt_convert_init(&s->fmt_conv, avctx); | |||
@@ -1325,7 +1326,8 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data, | |||
if (buf_size >= 2 && AV_RB16(buf) == 0x770B) { | |||
// seems to be byte-swapped AC-3 | |||
int cnt = FFMIN(buf_size, AC3_FRAME_BUFFER_SIZE) >> 1; | |||
s->dsp.bswap16_buf((uint16_t *)s->input_buffer, (const uint16_t *)buf, cnt); | |||
s->bdsp.bswap16_buf((uint16_t *) s->input_buffer, | |||
(const uint16_t *) buf, cnt); | |||
} else | |||
memcpy(s->input_buffer, buf, FFMIN(buf_size, AC3_FRAME_BUFFER_SIZE)); | |||
buf = s->input_buffer; | |||
@@ -54,8 +54,8 @@ | |||
#include "libavutil/lfg.h" | |||
#include "ac3.h" | |||
#include "ac3dsp.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "fft.h" | |||
#include "fmtconvert.h" | |||
@@ -200,7 +200,7 @@ typedef struct AC3DecodeContext { | |||
///@} | |||
///@name Optimization | |||
DSPContext dsp; ///< for optimization | |||
BswapDSPContext bdsp; | |||
AVFloatDSPContext fdsp; | |||
AC3DSPContext ac3dsp; | |||
FmtConvertContext fmt_conv; ///< optimized conversion functions | |||
@@ -33,7 +33,7 @@ | |||
#include "mpeg4audio.h" | |||
#include "bytestream.h" | |||
#include "bgmc.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "internal.h" | |||
#include "libavutil/samplefmt.h" | |||
#include "libavutil/crc.h" | |||
@@ -192,7 +192,7 @@ typedef struct { | |||
AVCodecContext *avctx; | |||
ALSSpecificConfig sconf; | |||
GetBitContext gb; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
const AVCRC *crc_table; | |||
uint32_t crc_org; ///< CRC value of the original input data | |||
uint32_t crc; ///< CRC value calculated from decoded data | |||
@@ -1536,9 +1536,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, | |||
sample++) | |||
*dest++ = av_bswap16(src[sample]); | |||
} else { | |||
ctx->dsp.bswap_buf((uint32_t*)ctx->crc_buffer, | |||
(uint32_t *)frame->data[0], | |||
ctx->cur_frame_length * avctx->channels); | |||
ctx->bdsp.bswap_buf((uint32_t *) ctx->crc_buffer, | |||
(uint32_t *) frame->data[0], | |||
ctx->cur_frame_length * avctx->channels); | |||
} | |||
crc_source = ctx->crc_buffer; | |||
} else { | |||
@@ -1756,7 +1756,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||
} | |||
} | |||
ff_dsputil_init(&ctx->dsp, avctx); | |||
ff_bswapdsp_init(&ctx->bdsp); | |||
return 0; | |||
@@ -27,7 +27,7 @@ | |||
#include "libavutil/opt.h" | |||
#include "apedsp.h" | |||
#include "avcodec.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "bytestream.h" | |||
#include "internal.h" | |||
#include "get_bits.h" | |||
@@ -136,7 +136,7 @@ typedef struct APEPredictor { | |||
typedef struct APEContext { | |||
AVClass *class; ///< class for AVOptions | |||
AVCodecContext *avctx; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
APEDSPContext adsp; | |||
int channels; | |||
int samples; ///< samples left to decode in current frame | |||
@@ -314,7 +314,7 @@ static av_cold int ape_decode_init(AVCodecContext *avctx) | |||
if (ARCH_X86) | |||
ff_apedsp_init_x86(&s->adsp); | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_bswapdsp_init(&s->bdsp); | |||
avctx->channel_layout = (avctx->channels==2) ? AV_CH_LAYOUT_STEREO : AV_CH_LAYOUT_MONO; | |||
return 0; | |||
@@ -1452,7 +1452,8 @@ static int ape_decode_frame(AVCodecContext *avctx, void *data, | |||
av_fast_malloc(&s->data, &s->data_size, buf_size); | |||
if (!s->data) | |||
return AVERROR(ENOMEM); | |||
s->dsp.bswap_buf((uint32_t*)s->data, (const uint32_t*)buf, buf_size >> 2); | |||
s->bdsp.bswap_buf((uint32_t *) s->data, (const uint32_t *) buf, | |||
buf_size >> 2); | |||
memset(s->data + (buf_size & ~3), 0, buf_size & 3); | |||
s->ptr = s->data; | |||
s->data_end = s->data + buf_size; | |||
@@ -27,6 +27,7 @@ | |||
#include "asv.h" | |||
#include "avcodec.h" | |||
#include "bswapdsp.h" | |||
const uint8_t ff_asv_scantab[64] = { | |||
0x00,0x08,0x01,0x09,0x10,0x18,0x11,0x19, | |||
@@ -82,6 +83,7 @@ const uint8_t ff_asv2_level_tab[63][2] = { | |||
av_cold void ff_asv_common_init(AVCodecContext *avctx) { | |||
ASV1Context * const a = avctx->priv_data; | |||
ff_bswapdsp_init(&a->bbdsp); | |||
ff_dsputil_init(&a->dsp, avctx); | |||
a->mb_width = (avctx->width + 15) / 16; | |||
@@ -32,6 +32,7 @@ | |||
#include "avcodec.h" | |||
#include "blockdsp.h" | |||
#include "bswapdsp.h" | |||
#include "dsputil.h" | |||
#include "get_bits.h" | |||
#include "put_bits.h" | |||
@@ -39,6 +40,7 @@ | |||
typedef struct ASV1Context{ | |||
AVCodecContext *avctx; | |||
BlockDSPContext bdsp; | |||
BswapDSPContext bbdsp; | |||
DSPContext dsp; | |||
PutBitContext pb; | |||
GetBitContext gb; | |||
@@ -224,7 +224,8 @@ static int decode_frame(AVCodecContext *avctx, | |||
return AVERROR(ENOMEM); | |||
if (avctx->codec_id == AV_CODEC_ID_ASV1) | |||
a->dsp.bswap_buf((uint32_t*)a->bitstream_buffer, (const uint32_t*)buf, buf_size/4); | |||
a->bbdsp.bswap_buf((uint32_t *) a->bitstream_buffer, | |||
(const uint32_t *) buf, buf_size / 4); | |||
else { | |||
int i; | |||
for (i = 0; i < buf_size; i++) | |||
@@ -220,7 +220,8 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, | |||
size= put_bits_count(&a->pb)/32; | |||
if(avctx->codec_id == AV_CODEC_ID_ASV1) | |||
a->dsp.bswap_buf((uint32_t*)pkt->data, (uint32_t*)pkt->data, size); | |||
a->bbdsp.bswap_buf((uint32_t *) pkt->data, | |||
(uint32_t *) pkt->data, size); | |||
else{ | |||
int i; | |||
for(i=0; i<4*size; i++) | |||
@@ -0,0 +1,56 @@ | |||
/* | |||
* This file is part of Libav. | |||
* | |||
* Libav is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 2.1 of the License, or (at your option) any later version. | |||
* | |||
* Libav is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public | |||
* License along with Libav; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#include <stdint.h> | |||
#include "libavutil/attributes.h" | |||
#include "libavutil/bswap.h" | |||
#include "bswapdsp.h" | |||
static void bswap_buf(uint32_t *dst, const uint32_t *src, int w) | |||
{ | |||
int i; | |||
for (i = 0; i + 8 <= w; i += 8) { | |||
dst[i + 0] = av_bswap32(src[i + 0]); | |||
dst[i + 1] = av_bswap32(src[i + 1]); | |||
dst[i + 2] = av_bswap32(src[i + 2]); | |||
dst[i + 3] = av_bswap32(src[i + 3]); | |||
dst[i + 4] = av_bswap32(src[i + 4]); | |||
dst[i + 5] = av_bswap32(src[i + 5]); | |||
dst[i + 6] = av_bswap32(src[i + 6]); | |||
dst[i + 7] = av_bswap32(src[i + 7]); | |||
} | |||
for (; i < w; i++) | |||
dst[i + 0] = av_bswap32(src[i + 0]); | |||
} | |||
static void bswap16_buf(uint16_t *dst, const uint16_t *src, int len) | |||
{ | |||
while (len--) | |||
*dst++ = av_bswap16(*src++); | |||
} | |||
av_cold void ff_bswapdsp_init(BswapDSPContext *c) | |||
{ | |||
c->bswap_buf = bswap_buf; | |||
c->bswap16_buf = bswap16_buf; | |||
if (ARCH_X86) | |||
ff_bswapdsp_init_x86(c); | |||
} |
@@ -0,0 +1,32 @@ | |||
/* | |||
* This file is part of Libav. | |||
* | |||
* Libav is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 2.1 of the License, or (at your option) any later version. | |||
* | |||
* Libav is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public | |||
* License along with Libav; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#ifndef AVCODEC_BSWAP_BUF_H | |||
#define AVCODEC_BSWAP_BUF_H | |||
#include <stdint.h> | |||
typedef struct BswapDSPContext { | |||
void (*bswap_buf)(uint32_t *dst, const uint32_t *src, int w); | |||
void (*bswap16_buf)(uint16_t *dst, const uint16_t *src, int len); | |||
} BswapDSPContext; | |||
void ff_bswapdsp_init(BswapDSPContext *c); | |||
void ff_bswapdsp_init_x86(BswapDSPContext *c); | |||
#endif /* AVCODEC_BSWAP_BUF_H */ |
@@ -23,14 +23,14 @@ | |||
#include <inttypes.h> | |||
#include "libavutil/intreadwrite.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "avcodec.h" | |||
#include "internal.h" | |||
typedef struct CLLCContext { | |||
DSPContext dsp; | |||
AVCodecContext *avctx; | |||
BswapDSPContext bdsp; | |||
uint8_t *swapped_buf; | |||
int swapped_buf_size; | |||
@@ -391,8 +391,8 @@ static int cllc_decode_frame(AVCodecContext *avctx, void *data, | |||
} | |||
/* bswap16 the buffer since CLLC's bitreader works in 16-bit words */ | |||
ctx->dsp.bswap16_buf((uint16_t *) ctx->swapped_buf, (uint16_t *) src, | |||
data_size / 2); | |||
ctx->bdsp.bswap16_buf((uint16_t *) ctx->swapped_buf, (uint16_t *) src, | |||
data_size / 2); | |||
init_get_bits(&gb, ctx->swapped_buf, data_size * 8); | |||
@@ -485,7 +485,7 @@ static av_cold int cllc_decode_init(AVCodecContext *avctx) | |||
ctx->swapped_buf = NULL; | |||
ctx->swapped_buf_size = 0; | |||
ff_dsputil_init(&ctx->dsp, avctx); | |||
ff_bswapdsp_init(&ctx->bdsp); | |||
return 0; | |||
} | |||
@@ -189,30 +189,6 @@ static int pix_norm1_c(uint8_t *pix, int line_size) | |||
return s; | |||
} | |||
static void bswap_buf(uint32_t *dst, const uint32_t *src, int w) | |||
{ | |||
int i; | |||
for (i = 0; i + 8 <= w; i += 8) { | |||
dst[i + 0] = av_bswap32(src[i + 0]); | |||
dst[i + 1] = av_bswap32(src[i + 1]); | |||
dst[i + 2] = av_bswap32(src[i + 2]); | |||
dst[i + 3] = av_bswap32(src[i + 3]); | |||
dst[i + 4] = av_bswap32(src[i + 4]); | |||
dst[i + 5] = av_bswap32(src[i + 5]); | |||
dst[i + 6] = av_bswap32(src[i + 6]); | |||
dst[i + 7] = av_bswap32(src[i + 7]); | |||
} | |||
for (; i < w; i++) | |||
dst[i + 0] = av_bswap32(src[i + 0]); | |||
} | |||
static void bswap16_buf(uint16_t *dst, const uint16_t *src, int len) | |||
{ | |||
while (len--) | |||
*dst++ = av_bswap16(*src++); | |||
} | |||
static int sse4_c(MpegEncContext *v, uint8_t *pix1, uint8_t *pix2, | |||
int line_size, int h) | |||
{ | |||
@@ -1415,9 +1391,6 @@ av_cold void ff_dsputil_init(DSPContext *c, AVCodecContext *avctx) | |||
c->nsse[0] = nsse16_c; | |||
c->nsse[1] = nsse8_c; | |||
c->bswap_buf = bswap_buf; | |||
c->bswap16_buf = bswap16_buf; | |||
c->try_8x8basis = try_8x8basis_c; | |||
c->add_8x8basis = add_8x8basis_c; | |||
@@ -122,9 +122,6 @@ typedef struct DSPContext { | |||
me_cmp_func pix_abs[2][4]; | |||
void (*bswap_buf)(uint32_t *dst, const uint32_t *src, int w); | |||
void (*bswap16_buf)(uint16_t *dst, const uint16_t *src, int len); | |||
/* (I)DCT */ | |||
void (*fdct)(int16_t *block /* align 16 */); | |||
void (*fdct248)(int16_t *block /* align 16 */); | |||
@@ -29,6 +29,7 @@ | |||
*/ | |||
#include "avcodec.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "aandcttab.h" | |||
#include "eaidct.h" | |||
@@ -45,6 +46,7 @@ | |||
typedef struct MadContext { | |||
AVCodecContext *avctx; | |||
BlockDSPContext bdsp; | |||
BswapDSPContext bbdsp; | |||
DSPContext dsp; | |||
AVFrame *last_frame; | |||
GetBitContext gb; | |||
@@ -63,6 +65,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||
s->avctx = avctx; | |||
avctx->pix_fmt = AV_PIX_FMT_YUV420P; | |||
ff_blockdsp_init(&s->bdsp, avctx); | |||
ff_bswapdsp_init(&s->bbdsp); | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_init_scantable_permutation(s->dsp.idct_permutation, FF_NO_IDCT_PERM); | |||
ff_init_scantable(s->dsp.idct_permutation, &s->scantable, ff_zigzag_direct); | |||
@@ -284,7 +287,8 @@ static int decode_frame(AVCodecContext *avctx, | |||
buf_end - buf); | |||
if (!s->bitstream_buf) | |||
return AVERROR(ENOMEM); | |||
s->dsp.bswap16_buf(s->bitstream_buf, (const uint16_t*)buf, (buf_end-buf)/2); | |||
s->bbdsp.bswap16_buf(s->bitstream_buf, (const uint16_t *) buf, | |||
(buf_end - buf) / 2); | |||
init_get_bits(&s->gb, s->bitstream_buf, 8*(buf_end-buf)); | |||
for (s->mb_y=0; s->mb_y < (avctx->height+15)/16; s->mb_y++) | |||
@@ -28,6 +28,7 @@ | |||
#include "avcodec.h" | |||
#include "blockdsp.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "aandcttab.h" | |||
#include "eaidct.h" | |||
@@ -37,6 +38,7 @@ | |||
typedef struct TqiContext { | |||
MpegEncContext s; | |||
BswapDSPContext bsdsp; | |||
void *bitstream_buf; | |||
unsigned int bitstream_buf_size; | |||
DECLARE_ALIGNED(16, int16_t, block)[6][64]; | |||
@@ -48,6 +50,7 @@ static av_cold int tqi_decode_init(AVCodecContext *avctx) | |||
MpegEncContext *s = &t->s; | |||
s->avctx = avctx; | |||
ff_blockdsp_init(&s->bdsp, avctx); | |||
ff_bswapdsp_init(&t->bsdsp); | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_init_scantable_permutation(s->dsp.idct_permutation, FF_NO_IDCT_PERM); | |||
ff_init_scantable(s->dsp.idct_permutation, &s->intra_scantable, ff_zigzag_direct); | |||
@@ -126,7 +129,8 @@ static int tqi_decode_frame(AVCodecContext *avctx, | |||
buf_end - buf); | |||
if (!t->bitstream_buf) | |||
return AVERROR(ENOMEM); | |||
s->dsp.bswap_buf(t->bitstream_buf, (const uint32_t*)buf, (buf_end-buf)/4); | |||
t->bsdsp.bswap_buf(t->bitstream_buf, (const uint32_t *) buf, | |||
(buf_end - buf) / 4); | |||
init_get_bits(&s->gb, t->bitstream_buf, 8*(buf_end-buf)); | |||
s->last_dc[0] = s->last_dc[1] = s->last_dc[2] = 0; | |||
@@ -24,7 +24,7 @@ | |||
#include "libavutil/md5.h" | |||
#include "libavutil/opt.h" | |||
#include "avcodec.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "golomb.h" | |||
#include "internal.h" | |||
@@ -112,7 +112,7 @@ typedef struct FlacEncodeContext { | |||
struct AVMD5 *md5ctx; | |||
uint8_t *md5_buffer; | |||
unsigned int md5_buffer_size; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
FLACDSPContext flac_dsp; | |||
int flushed; | |||
@@ -400,7 +400,7 @@ static av_cold int flac_encode_init(AVCodecContext *avctx) | |||
ret = ff_lpc_init(&s->lpc_ctx, avctx->frame_size, | |||
s->options.max_prediction_order, FF_LPC_TYPE_LEVINSON); | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_bswapdsp_init(&s->bdsp); | |||
ff_flacdsp_init(&s->flac_dsp, avctx->sample_fmt, | |||
avctx->bits_per_raw_sample); | |||
@@ -1179,8 +1179,8 @@ static int update_md5_sum(FlacEncodeContext *s, const void *samples) | |||
if (s->avctx->bits_per_raw_sample <= 16) { | |||
buf = (const uint8_t *)samples; | |||
#if HAVE_BIGENDIAN | |||
s->dsp.bswap16_buf((uint16_t *)s->md5_buffer, | |||
(const uint16_t *)samples, buf_size / 2); | |||
s->bdsp.bswap16_buf((uint16_t *) s->md5_buffer, | |||
(const uint16_t *) samples, buf_size / 2); | |||
buf = s->md5_buffer; | |||
#endif | |||
} else { | |||
@@ -35,7 +35,7 @@ | |||
#include "get_bits.h" | |||
#include "huffman.h" | |||
#include "bytestream.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "internal.h" | |||
#define FPS_TAG MKTAG('F', 'P', 'S', 'x') | |||
@@ -45,10 +45,10 @@ | |||
*/ | |||
typedef struct FrapsContext { | |||
AVCodecContext *avctx; | |||
BswapDSPContext bdsp; | |||
AVFrame *frame; | |||
uint8_t *tmpbuf; | |||
int tmpbuf_size; | |||
DSPContext dsp; | |||
} FrapsContext; | |||
@@ -70,7 +70,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||
if (!s->frame) | |||
return AVERROR(ENOMEM); | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_bswapdsp_init(&s->bdsp); | |||
return 0; | |||
} | |||
@@ -106,7 +106,8 @@ static int fraps2_decode_plane(FrapsContext *s, uint8_t *dst, int stride, int w, | |||
/* we have built Huffman table and are ready to decode plane */ | |||
/* convert bits so they may be used by standard bitreader */ | |||
s->dsp.bswap_buf((uint32_t *)s->tmpbuf, (const uint32_t *)src, size >> 2); | |||
s->bdsp.bswap_buf((uint32_t *) s->tmpbuf, | |||
(const uint32_t *) src, size >> 2); | |||
init_get_bits(&gb, s->tmpbuf, size * 8); | |||
for (j = 0; j < h; j++) { | |||
@@ -31,9 +31,9 @@ | |||
#include "libavutil/pixdesc.h" | |||
#include "libavutil/stereo3d.h" | |||
#include "bswapdsp.h" | |||
#include "bytestream.h" | |||
#include "cabac_functions.h" | |||
#include "dsputil.h" | |||
#include "golomb.h" | |||
#include "hevc.h" | |||
@@ -2880,8 +2880,8 @@ static int verify_md5(HEVCContext *s, AVFrame *frame) | |||
const uint8_t *src = frame->data[i] + j * frame->linesize[i]; | |||
#if HAVE_BIGENDIAN | |||
if (pixel_shift) { | |||
s->dsp.bswap16_buf((uint16_t*)s->checksum_buf, | |||
(const uint16_t*)src, w); | |||
s->bdsp.bswap16_buf((uint16_t *) s->checksum_buf, | |||
(const uint16_t *) src, w); | |||
src = s->checksum_buf; | |||
} | |||
#endif | |||
@@ -3044,7 +3044,7 @@ static av_cold int hevc_init_context(AVCodecContext *avctx) | |||
if (!s->md5_ctx) | |||
goto fail; | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_bswapdsp_init(&s->bdsp); | |||
s->context_initialized = 1; | |||
@@ -30,8 +30,8 @@ | |||
#include "libavutil/md5.h" | |||
#include "avcodec.h" | |||
#include "bswapdsp.h" | |||
#include "cabac.h" | |||
#include "dsputil.h" | |||
#include "get_bits.h" | |||
#include "hevcdsp.h" | |||
#include "internal.h" | |||
@@ -805,7 +805,7 @@ typedef struct HEVCContext { | |||
HEVCPredContext hpc; | |||
HEVCDSPContext hevcdsp; | |||
VideoDSPContext vdsp; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
int8_t *qp_y_tab; | |||
uint8_t *split_cu_flag; | |||
uint8_t *horizontal_bs; | |||
@@ -33,7 +33,7 @@ | |||
#include "libavutil/mem.h" | |||
#include "avcodec.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "huffyuv.h" | |||
int ff_huffyuv_generate_bits_table(uint32_t *dst, const uint8_t *len_table) | |||
@@ -80,7 +80,7 @@ av_cold void ff_huffyuv_common_init(AVCodecContext *avctx) | |||
s->avctx = avctx; | |||
s->flags = avctx->flags; | |||
ff_dsputil_init(&s->dsp, avctx); | |||
ff_bswapdsp_init(&s->bdsp); | |||
s->width = avctx->width; | |||
s->height = avctx->height; | |||
@@ -32,7 +32,7 @@ | |||
#include <stdint.h> | |||
#include "avcodec.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "huffyuvdsp.h" | |||
#include "huffyuvencdsp.h" | |||
@@ -82,7 +82,7 @@ typedef struct HYuvContext { | |||
VLC vlc[6]; //Y,U,V,YY,YU,YV | |||
uint8_t *bitstream_buffer; | |||
unsigned int bitstream_buffer_size; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
HuffYUVDSPContext hdsp; | |||
HuffYUVEncDSPContext hencdsp; | |||
} HYuvContext; | |||
@@ -493,8 +493,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, | |||
return AVERROR(ENOMEM); | |||
memset(s->bitstream_buffer + buf_size, 0, FF_INPUT_BUFFER_PADDING_SIZE); | |||
s->dsp.bswap_buf((uint32_t*)s->bitstream_buffer, | |||
(const uint32_t*)buf, buf_size / 4); | |||
s->bdsp.bswap_buf((uint32_t *) s->bitstream_buffer, | |||
(const uint32_t *) buf, buf_size / 4); | |||
if (ff_thread_get_buffer(avctx, &frame, 0) < 0) { | |||
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); | |||
@@ -658,7 +658,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, | |||
avctx->stats_out[0] = '\0'; | |||
if (!(s->avctx->flags2 & CODEC_FLAG2_NO_OUTPUT)) { | |||
flush_put_bits(&s->pb); | |||
s->dsp.bswap_buf((uint32_t*)pkt->data, (uint32_t*)pkt->data, size); | |||
s->bdsp.bswap_buf((uint32_t *) pkt->data, (uint32_t *) pkt->data, size); | |||
} | |||
s->picture_number++; | |||
@@ -39,8 +39,8 @@ | |||
#include "libavutil/float_dsp.h" | |||
#include "libavutil/internal.h" | |||
#include "avcodec.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "fft.h" | |||
#include "internal.h" | |||
#include "sinewin.h" | |||
@@ -94,7 +94,7 @@ typedef struct { | |||
float sqrt_tab[30]; | |||
GetBitContext gb; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
AVFloatDSPContext fdsp; | |||
FFTContext fft; | |||
DECLARE_ALIGNED(32, FFTComplex, samples)[COEFFS / 2]; | |||
@@ -246,7 +246,7 @@ static av_cold int imc_decode_init(AVCodecContext *avctx) | |||
av_log(avctx, AV_LOG_INFO, "FFT init failed\n"); | |||
return ret; | |||
} | |||
ff_dsputil_init(&q->dsp, avctx); | |||
ff_bswapdsp_init(&q->bdsp); | |||
avpriv_float_dsp_init(&q->fdsp, avctx->flags & CODEC_FLAG_BITEXACT); | |||
avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; | |||
avctx->channel_layout = avctx->channels == 1 ? AV_CH_LAYOUT_MONO | |||
@@ -1014,7 +1014,7 @@ static int imc_decode_frame(AVCodecContext *avctx, void *data, | |||
for (i = 0; i < avctx->channels; i++) { | |||
q->out_samples = (float *)frame->extended_data[i]; | |||
q->dsp.bswap16_buf(buf16, (const uint16_t*)buf, IMC_BLOCK_SIZE / 2); | |||
q->bdsp.bswap16_buf(buf16, (const uint16_t *) buf, IMC_BLOCK_SIZE / 2); | |||
init_get_bits(&q->gb, (const uint8_t*)buf16, IMC_BLOCK_SIZE * 8); | |||
@@ -28,6 +28,7 @@ | |||
#include "internal.h" | |||
#include "get_bits.h" | |||
#include "bytestream.h" | |||
#include "bswapdsp.h" | |||
#include "dsputil.h" | |||
#include "hpeldsp.h" | |||
#include "thread.h" | |||
@@ -54,6 +55,7 @@ typedef struct { | |||
GetBitContext gb; | |||
ScanTable scantable; | |||
BlockDSPContext bdsp; | |||
BswapDSPContext bbdsp; | |||
DSPContext dsp; | |||
HpelDSPContext hdsp; | |||
VLC vlc; | |||
@@ -148,6 +150,7 @@ static av_cold int mimic_decode_init(AVCodecContext *avctx) | |||
return ret; | |||
} | |||
ff_blockdsp_init(&ctx->bdsp, avctx); | |||
ff_bswapdsp_init(&ctx->bbdsp); | |||
ff_dsputil_init(&ctx->dsp, avctx); | |||
ff_hpeldsp_init(&ctx->hdsp, avctx->flags); | |||
ff_init_scantable(ctx->dsp.idct_permutation, &ctx->scantable, col_zag); | |||
@@ -425,9 +428,9 @@ static int mimic_decode_frame(AVCodecContext *avctx, void *data, | |||
if (!ctx->swap_buf) | |||
return AVERROR(ENOMEM); | |||
ctx->dsp.bswap_buf(ctx->swap_buf, | |||
(const uint32_t*) (buf + MIMIC_HEADER_SIZE), | |||
swap_buf_size >> 2); | |||
ctx->bbdsp.bswap_buf(ctx->swap_buf, | |||
(const uint32_t *) (buf + MIMIC_HEADER_SIZE), | |||
swap_buf_size >> 2); | |||
init_get_bits(&ctx->gb, ctx->swap_buf, swap_buf_size << 3); | |||
res = decode(ctx, quality, num_coeffs, !is_pframe); | |||
@@ -21,7 +21,7 @@ | |||
#include "avcodec.h" | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "internal.h" | |||
#define MAX_HUFF_CODES 16 | |||
@@ -37,7 +37,7 @@ typedef struct HuffCode { | |||
typedef struct MotionPixelsContext { | |||
AVCodecContext *avctx; | |||
AVFrame *frame; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
uint8_t *changes_map; | |||
int offset_bits_len; | |||
int codes_count, current_codes_count; | |||
@@ -71,7 +71,7 @@ static av_cold int mp_decode_init(AVCodecContext *avctx) | |||
motionpixels_tableinit(); | |||
mp->avctx = avctx; | |||
ff_dsputil_init(&mp->dsp, avctx); | |||
ff_bswapdsp_init(&mp->bdsp); | |||
mp->changes_map = av_mallocz(avctx->width * h4); | |||
mp->offset_bits_len = av_log2(avctx->width * avctx->height) + 1; | |||
mp->vpt = av_mallocz(avctx->height * sizeof(YuvPixel)); | |||
@@ -277,7 +277,8 @@ static int mp_decode_frame(AVCodecContext *avctx, | |||
av_fast_malloc(&mp->bswapbuf, &mp->bswapbuf_size, buf_size + FF_INPUT_BUFFER_PADDING_SIZE); | |||
if (!mp->bswapbuf) | |||
return AVERROR(ENOMEM); | |||
mp->dsp.bswap_buf((uint32_t *)mp->bswapbuf, (const uint32_t *)buf, buf_size / 4); | |||
mp->bdsp.bswap_buf((uint32_t *) mp->bswapbuf, (const uint32_t *) buf, | |||
buf_size / 4); | |||
if (buf_size & 3) | |||
memcpy(mp->bswapbuf + (buf_size & ~3), buf + (buf_size & ~3), buf_size & 3); | |||
memset(mp->bswapbuf + buf_size, 0, FF_INPUT_BUFFER_PADDING_SIZE); | |||
@@ -31,8 +31,8 @@ | |||
#include "libavutil/lfg.h" | |||
#include "avcodec.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "mpegaudio.h" | |||
#include "mpegaudiodsp.h" | |||
@@ -50,7 +50,7 @@ typedef struct Band { | |||
}Band; | |||
typedef struct MPCContext { | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
MPADSPContext mpadsp; | |||
GetBitContext gb; | |||
int IS, MSS, gapless; | |||
@@ -30,7 +30,6 @@ | |||
#include "libavutil/lfg.h" | |||
#include "avcodec.h" | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "internal.h" | |||
#include "mpegaudiodsp.h" | |||
@@ -75,9 +74,9 @@ static av_cold int mpc7_decode_init(AVCodecContext * avctx) | |||
} | |||
memset(c->oldDSCF, 0, sizeof(c->oldDSCF)); | |||
av_lfg_init(&c->rnd, 0xDEADBEEF); | |||
ff_dsputil_init(&c->dsp, avctx); | |||
ff_bswapdsp_init(&c->bdsp); | |||
ff_mpadsp_init(&c->mpadsp); | |||
c->dsp.bswap_buf((uint32_t*)buf, (const uint32_t*)avctx->extradata, 4); | |||
c->bdsp.bswap_buf((uint32_t *) buf, (const uint32_t *) avctx->extradata, 4); | |||
ff_mpc_init(); | |||
init_get_bits(&gb, buf, 128); | |||
@@ -236,7 +235,8 @@ static int mpc7_decode_frame(AVCodecContext * avctx, void *data, | |||
av_fast_padded_malloc(&c->bits, &c->buf_size, buf_size); | |||
if (!c->bits) | |||
return AVERROR(ENOMEM); | |||
c->dsp.bswap_buf((uint32_t *)c->bits, (const uint32_t *)buf, buf_size >> 2); | |||
c->bdsp.bswap_buf((uint32_t *) c->bits, (const uint32_t *) buf, | |||
buf_size >> 2); | |||
init_get_bits(&gb, c->bits, buf_size * 8); | |||
skip_bits_long(&gb, skip); | |||
@@ -27,9 +27,9 @@ | |||
#include <inttypes.h> | |||
#include "avcodec.h" | |||
#include "bswapdsp.h" | |||
#include "bytestream.h" | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "internal.h" | |||
#define TM2_ESCAPE 0x80000000 | |||
@@ -63,7 +63,7 @@ typedef struct TM2Context { | |||
AVFrame *pic; | |||
GetBitContext gb; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
/* TM2 streams */ | |||
int *tokens[TM2_NUM_STREAMS]; | |||
@@ -858,7 +858,8 @@ static int decode_frame(AVCodecContext *avctx, | |||
return ret; | |||
} | |||
l->dsp.bswap_buf((uint32_t*)swbuf, (const uint32_t*)buf, buf_size >> 2); | |||
l->bdsp.bswap_buf((uint32_t *) swbuf, (const uint32_t *) buf, | |||
buf_size >> 2); | |||
if ((ret = tm2_read_header(l, swbuf)) < 0) { | |||
av_free(swbuf); | |||
@@ -909,7 +910,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||
if (!l->pic) | |||
return AVERROR(ENOMEM); | |||
ff_dsputil_init(&l->dsp, avctx); | |||
ff_bswapdsp_init(&l->bdsp); | |||
l->last = av_malloc(4 * sizeof(*l->last) * (w >> 2)); | |||
l->clast = av_malloc(4 * sizeof(*l->clast) * (w >> 2)); | |||
@@ -22,7 +22,7 @@ | |||
#include "libavutil/channel_layout.h" | |||
#include "libavutil/intreadwrite.h" | |||
#include "avcodec.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "get_bits.h" | |||
#include "internal.h" | |||
@@ -36,7 +36,7 @@ | |||
* TrueSpeech decoder context | |||
*/ | |||
typedef struct { | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
/* input data */ | |||
DECLARE_ALIGNED(16, uint8_t, buffer)[32]; | |||
int16_t vector[8]; ///< input vector: 5/5/4/4/4/3/3/3 | |||
@@ -70,7 +70,7 @@ static av_cold int truespeech_decode_init(AVCodecContext * avctx) | |||
avctx->channel_layout = AV_CH_LAYOUT_MONO; | |||
avctx->sample_fmt = AV_SAMPLE_FMT_S16; | |||
ff_dsputil_init(&c->dsp, avctx); | |||
ff_bswapdsp_init(&c->bdsp); | |||
return 0; | |||
} | |||
@@ -79,7 +79,7 @@ static void truespeech_read_frame(TSContext *dec, const uint8_t *input) | |||
{ | |||
GetBitContext gb; | |||
dec->dsp.bswap_buf((uint32_t *)dec->buffer, (const uint32_t *)input, 8); | |||
dec->bdsp.bswap_buf((uint32_t *) dec->buffer, (const uint32_t *) input, 8); | |||
init_get_bits(&gb, dec->buffer, 32 * 8); | |||
dec->vector[7] = ts_codebook[7][get_bits(&gb, 3)]; | |||
@@ -29,7 +29,7 @@ | |||
#include "libavutil/common.h" | |||
#include "avcodec.h" | |||
#include "dsputil.h" | |||
#include "bswapdsp.h" | |||
#include "huffyuvencdsp.h" | |||
enum { | |||
@@ -66,7 +66,7 @@ extern const int ff_ut_rgb_order[4]; | |||
typedef struct UtvideoContext { | |||
AVCodecContext *avctx; | |||
DSPContext dsp; | |||
BswapDSPContext bdsp; | |||
HuffYUVEncDSPContext hdsp; | |||
uint32_t frame_info_size, flags, frame_info; | |||
@@ -29,9 +29,9 @@ | |||
#include "libavutil/intreadwrite.h" | |||
#include "avcodec.h" | |||
#include "bswapdsp.h" | |||
#include "bytestream.h" | |||
#include "get_bits.h" | |||
#include "dsputil.h" | |||
#include "thread.h" | |||
#include "utvideo.h" | |||
@@ -143,8 +143,9 @@ static int decode_plane(UtvideoContext *c, int plane_no, | |||
memcpy(c->slice_bits, src + slice_data_start + c->slices * 4, | |||
slice_size); | |||
memset(c->slice_bits + slice_size, 0, FF_INPUT_BUFFER_PADDING_SIZE); | |||
c->dsp.bswap_buf((uint32_t *) c->slice_bits, (uint32_t *) c->slice_bits, | |||
(slice_data_end - slice_data_start + 3) >> 2); | |||
c->bdsp.bswap_buf((uint32_t *) c->slice_bits, | |||
(uint32_t *) c->slice_bits, | |||
(slice_data_end - slice_data_start + 3) >> 2); | |||
init_get_bits(&gb, c->slice_bits, slice_size * 8); | |||
prev = 0x80; | |||
@@ -475,7 +476,7 @@ static av_cold int decode_init(AVCodecContext *avctx) | |||
c->avctx = avctx; | |||
ff_dsputil_init(&c->dsp, avctx); | |||
ff_bswapdsp_init(&c->bdsp); | |||
if (avctx->extradata_size < 16) { | |||
av_log(avctx, AV_LOG_ERROR, | |||
@@ -28,9 +28,9 @@ | |||
#include "libavutil/intreadwrite.h" | |||
#include "avcodec.h" | |||
#include "internal.h" | |||
#include "bswapdsp.h" | |||
#include "bytestream.h" | |||
#include "put_bits.h" | |||
#include "dsputil.h" | |||
#include "huffyuvencdsp.h" | |||
#include "mathops.h" | |||
#include "utvideo.h" | |||
@@ -109,7 +109,7 @@ static av_cold int utvideo_encode_init(AVCodecContext *avctx) | |||
return AVERROR_INVALIDDATA; | |||
} | |||
ff_dsputil_init(&c->dsp, avctx); | |||
ff_bswapdsp_init(&c->bdsp); | |||
ff_huffyuvencdsp_init(&c->hdsp); | |||
/* Check the prediction method, and error out if unsupported */ | |||
@@ -500,9 +500,9 @@ static int encode_plane(AVCodecContext *avctx, uint8_t *src, | |||
slice_len = offset - slice_len; | |||
/* Byteswap the written huffman codes */ | |||
c->dsp.bswap_buf((uint32_t *) c->slice_bits, | |||
(uint32_t *) c->slice_bits, | |||
slice_len >> 2); | |||
c->bdsp.bswap_buf((uint32_t *) c->slice_bits, | |||
(uint32_t *) c->slice_bits, | |||
slice_len >> 2); | |||
/* Write the offset to the stream */ | |||
bytestream2_put_le32(pb, offset); | |||
@@ -3,6 +3,7 @@ OBJS += x86/constants.o \ | |||
OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp_init.o | |||
OBJS-$(CONFIG_AUDIODSP) += x86/audiodsp_init.o | |||
OBJS-$(CONFIG_BSWAPDSP) += x86/bswapdsp_init.o | |||
OBJS-$(CONFIG_DCT) += x86/dct_init.o | |||
OBJS-$(CONFIG_DSPUTIL) += x86/dsputil_init.o | |||
OBJS-$(CONFIG_ENCODERS) += x86/dsputilenc_mmx.o \ | |||
@@ -64,9 +65,9 @@ YASM-OBJS += x86/deinterlace.o \ | |||
YASM-OBJS-$(CONFIG_AC3DSP) += x86/ac3dsp.o | |||
YASM-OBJS-$(CONFIG_AUDIODSP) += x86/audiodsp.o | |||
YASM-OBJS-$(CONFIG_BSWAPDSP) += x86/bswapdsp.o | |||
YASM-OBJS-$(CONFIG_DCT) += x86/dct32.o | |||
YASM-OBJS-$(CONFIG_DNXHD_ENCODER) += x86/dnxhdenc.o | |||
YASM-OBJS-$(CONFIG_DSPUTIL) += x86/dsputil.o | |||
YASM-OBJS-$(CONFIG_ENCODERS) += x86/dsputilenc.o | |||
YASM-OBJS-$(CONFIG_FFT) += x86/fft.o | |||
YASM-OBJS-$(CONFIG_H263DSP) += x86/h263_loopfilter.o | |||
@@ -1,5 +1,5 @@ | |||
;****************************************************************************** | |||
;* MMX optimized DSP utils | |||
;* optimized bswap buffer functions | |||
;* Copyright (c) 2008 Loren Merritt | |||
;* | |||
;* This file is part of Libav. |
@@ -0,0 +1,37 @@ | |||
/* | |||
* This file is part of Libav. | |||
* | |||
* Libav is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU Lesser General Public | |||
* License as published by the Free Software Foundation; either | |||
* version 2.1 of the License, or (at your option) any later version. | |||
* | |||
* Libav is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
* Lesser General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Lesser General Public | |||
* License along with Libav; if not, write to the Free Software | |||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||
*/ | |||
#include <stdint.h> | |||
#include "libavutil/attributes.h" | |||
#include "libavutil/cpu.h" | |||
#include "libavutil/x86/cpu.h" | |||
#include "libavcodec/bswapdsp.h" | |||
void ff_bswap32_buf_sse2(uint32_t *dst, const uint32_t *src, int w); | |||
void ff_bswap32_buf_ssse3(uint32_t *dst, const uint32_t *src, int w); | |||
av_cold void ff_bswapdsp_init_x86(BswapDSPContext *c) | |||
{ | |||
int cpu_flags = av_get_cpu_flags(); | |||
if (EXTERNAL_SSE2(cpu_flags)) | |||
c->bswap_buf = ff_bswap32_buf_sse2; | |||
if (EXTERNAL_SSSE3(cpu_flags)) | |||
c->bswap_buf = ff_bswap32_buf_ssse3; | |||
} |
@@ -26,9 +26,6 @@ | |||
#include "dsputil_x86.h" | |||
#include "idct_xvid.h" | |||
void ff_bswap32_buf_ssse3(uint32_t *dst, const uint32_t *src, int w); | |||
void ff_bswap32_buf_sse2(uint32_t *dst, const uint32_t *src, int w); | |||
static av_cold void dsputil_init_mmx(DSPContext *c, AVCodecContext *avctx, | |||
int cpu_flags, unsigned high_bit_depth) | |||
{ | |||
@@ -83,18 +80,6 @@ static av_cold void dsputil_init_sse2(DSPContext *c, AVCodecContext *avctx, | |||
c->idct_permutation_type = FF_SSE2_IDCT_PERM; | |||
} | |||
#endif /* HAVE_SSE2_INLINE */ | |||
#if HAVE_SSE2_EXTERNAL | |||
c->bswap_buf = ff_bswap32_buf_sse2; | |||
#endif /* HAVE_SSE2_EXTERNAL */ | |||
} | |||
static av_cold void dsputil_init_ssse3(DSPContext *c, AVCodecContext *avctx, | |||
int cpu_flags, unsigned high_bit_depth) | |||
{ | |||
#if HAVE_SSSE3_EXTERNAL | |||
c->bswap_buf = ff_bswap32_buf_ssse3; | |||
#endif /* HAVE_SSSE3_EXTERNAL */ | |||
} | |||
av_cold void ff_dsputil_init_x86(DSPContext *c, AVCodecContext *avctx, | |||
@@ -111,9 +96,6 @@ av_cold void ff_dsputil_init_x86(DSPContext *c, AVCodecContext *avctx, | |||
if (X86_SSE2(cpu_flags)) | |||
dsputil_init_sse2(c, avctx, cpu_flags, high_bit_depth); | |||
if (EXTERNAL_SSSE3(cpu_flags)) | |||
dsputil_init_ssse3(c, avctx, cpu_flags, high_bit_depth); | |||
if (CONFIG_ENCODERS) | |||
ff_dsputilenc_init_mmx(c, avctx, high_bit_depth); | |||
} |