From de16f08e48a2e0dbd7311882d97fe379535c5a48 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 17 Nov 2012 15:39:18 +0100 Subject: [PATCH 1/2] v210x: cosmetics, reformat --- libavcodec/v210x.c | 112 ++++++++++++++++++++++----------------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/libavcodec/v210x.c b/libavcodec/v210x.c index 3f3ffe4f3e..97938b1090 100644 --- a/libavcodec/v210x.c +++ b/libavcodec/v210x.c @@ -26,12 +26,12 @@ static av_cold int decode_init(AVCodecContext *avctx) { - if(avctx->width & 1){ + if (avctx->width & 1) { av_log(avctx, AV_LOG_ERROR, "v210x needs even width\n"); return AVERROR(EINVAL); } - avctx->pix_fmt = AV_PIX_FMT_YUV422P16; - avctx->bits_per_raw_sample= 10; + avctx->pix_fmt = AV_PIX_FMT_YUV422P16; + avctx->bits_per_raw_sample = 10; avctx->coded_frame= avcodec_alloc_frame(); @@ -41,82 +41,82 @@ static av_cold int decode_init(AVCodecContext *avctx) static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt) { - int y=0; - int width= avctx->width; - AVFrame *pic= avctx->coded_frame; - const uint32_t *src= (const uint32_t *)avpkt->data; + const uint32_t *src = (const uint32_t *)avpkt->data; + AVFrame *pic = avctx->coded_frame; + int width = avctx->width; + int y = 0; uint16_t *ydst, *udst, *vdst, *yend; int ret; - if(pic->data[0]) + if (pic->data[0]) avctx->release_buffer(avctx, pic); - if(avpkt->size < avctx->width * avctx->height * 8 / 3){ + if (avpkt->size < avctx->width * avctx->height * 8 / 3) { av_log(avctx, AV_LOG_ERROR, "Packet too small\n"); return AVERROR_INVALIDDATA; } - if(avpkt->size > avctx->width * avctx->height * 8 / 3){ + if (avpkt->size > avctx->width * avctx->height * 8 / 3) { av_log_ask_for_sample(avctx, "Probably padded data\n"); } - pic->reference= 0; + pic->reference = 0; if ((ret = ff_get_buffer(avctx, pic)) < 0) return ret; - ydst= (uint16_t *)pic->data[0]; - udst= (uint16_t *)pic->data[1]; - vdst= (uint16_t *)pic->data[2]; - yend= ydst + width; - pic->pict_type= AV_PICTURE_TYPE_I; - pic->key_frame= 1; - - for(;;){ - uint32_t v= av_be2ne32(*src++); - *udst++= (v>>16) & 0xFFC0; - *ydst++= (v>>6 ) & 0xFFC0; - *vdst++= (v<<4 ) & 0xFFC0; - - v= av_be2ne32(*src++); - *ydst++= (v>>16) & 0xFFC0; - - if(ydst >= yend){ - ydst+= pic->linesize[0]/2 - width; - udst+= pic->linesize[1]/2 - width/2; - vdst+= pic->linesize[2]/2 - width/2; - yend= ydst + width; - if(++y >= avctx->height) + ydst = (uint16_t *)pic->data[0]; + udst = (uint16_t *)pic->data[1]; + vdst = (uint16_t *)pic->data[2]; + yend = ydst + width; + pic->pict_type = AV_PICTURE_TYPE_I; + pic->key_frame = 1; + + for (;;) { + uint32_t v = av_be2ne32(*src++); + *udst++ = (v >> 16) & 0xFFC0; + *ydst++ = (v >> 6 ) & 0xFFC0; + *vdst++ = (v << 4 ) & 0xFFC0; + + v = av_be2ne32(*src++); + *ydst++ = (v >> 16) & 0xFFC0; + + if (ydst >= yend) { + ydst += pic->linesize[0] / 2 - width; + udst += pic->linesize[1] / 2 - width / 2; + vdst += pic->linesize[2] / 2 - width / 2; + yend = ydst + width; + if (++y >= avctx->height) break; } - *udst++= (v>>6 ) & 0xFFC0; - *ydst++= (v<<4 ) & 0xFFC0; + *udst++ = (v >> 6 ) & 0xFFC0; + *ydst++ = (v << 4 ) & 0xFFC0; - v= av_be2ne32(*src++); - *vdst++= (v>>16) & 0xFFC0; - *ydst++= (v>>6 ) & 0xFFC0; + v = av_be2ne32(*src++); + *vdst++ = (v >> 16) & 0xFFC0; + *ydst++ = (v >> 6 ) & 0xFFC0; - if(ydst >= yend){ - ydst+= pic->linesize[0]/2 - width; - udst+= pic->linesize[1]/2 - width/2; - vdst+= pic->linesize[2]/2 - width/2; - yend= ydst + width; - if(++y >= avctx->height) + if (ydst >= yend) { + ydst += pic->linesize[0] / 2 - width; + udst += pic->linesize[1] / 2 - width / 2; + vdst += pic->linesize[2] / 2 - width / 2; + yend = ydst + width; + if (++y >= avctx->height) break; } - *udst++= (v<<4 ) & 0xFFC0; - - v= av_be2ne32(*src++); - *ydst++= (v>>16) & 0xFFC0; - *vdst++= (v>>6 ) & 0xFFC0; - *ydst++= (v<<4 ) & 0xFFC0; - if(ydst >= yend){ - ydst+= pic->linesize[0]/2 - width; - udst+= pic->linesize[1]/2 - width/2; - vdst+= pic->linesize[2]/2 - width/2; - yend= ydst + width; - if(++y >= avctx->height) + *udst++ = (v << 4 ) & 0xFFC0; + + v = av_be2ne32(*src++); + *ydst++ = (v >> 16) & 0xFFC0; + *vdst++ = (v >> 6 ) & 0xFFC0; + *ydst++ = (v << 4 ) & 0xFFC0; + if (ydst >= yend) { + ydst += pic->linesize[0] / 2 - width; + udst += pic->linesize[1] / 2 - width / 2; + vdst += pic->linesize[2] / 2 - width / 2; + yend = ydst + width; + if (++y >= avctx->height) break; } } From 5b4dfbffc258f90a7d2540d21209ac23afcf7cd0 Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sun, 15 Jul 2012 18:11:36 +0200 Subject: [PATCH 2/2] x86: ABS1: port to cpuflags --- libavcodec/x86/dsputilenc.asm | 2 -- libavutil/x86/x86util.asm | 21 +++++++++------------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/libavcodec/x86/dsputilenc.asm b/libavcodec/x86/dsputilenc.asm index 104ec585e8..3bb1f2f4ed 100644 --- a/libavcodec/x86/dsputilenc.asm +++ b/libavcodec/x86/dsputilenc.asm @@ -257,11 +257,9 @@ hadamard8_16_wrapper 0, 14 %endmacro INIT_MMX mmx -%define ABS1 ABS1_MMX HADAMARD8_DIFF INIT_MMX mmxext -%define ABS1 ABS1_MMXEXT HADAMARD8_DIFF INIT_XMM sse2 diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm index 16ee6cfe94..e24acdd940 100644 --- a/libavutil/x86/x86util.asm +++ b/libavutil/x86/x86util.asm @@ -172,11 +172,19 @@ psignw %1, %2 %endmacro -%macro ABS1_MMX 2 ; a, tmp +%macro ABS1 2 +%if cpuflag(ssse3) + pabsw %1, %1 +%elif cpuflag(mmxext) ; a, tmp + pxor %2, %2 + psubw %2, %1 + pmaxsw %1, %2 +%else ; a, tmp pxor %2, %2 pcmpgtw %2, %1 pxor %1, %2 psubw %1, %2 +%endif %endmacro %macro ABS2_MMX 4 ; a, b, tmp0, tmp1 @@ -190,12 +198,6 @@ psubw %2, %4 %endmacro -%macro ABS1_MMXEXT 2 ; a, tmp - pxor %2, %2 - psubw %2, %1 - pmaxsw %1, %2 -%endmacro - %macro ABS2_MMXEXT 4 ; a, b, tmp0, tmp1 pxor %3, %3 pxor %4, %4 @@ -205,10 +207,6 @@ pmaxsw %2, %4 %endmacro -%macro ABS1_SSSE3 2 - pabsw %1, %1 -%endmacro - %macro ABS2_SSSE3 4 pabsw %1, %1 pabsw %2, %2 @@ -254,7 +252,6 @@ ABS2 %3, %4, %5, %6 %endmacro -%define ABS1 ABS1_MMX %define ABS2 ABS2_MMX %define ABSB ABSB_MMX %define ABSB2 ABSB2_MMX