亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? yuv2rgb_altivec.c.svn-base

?? ffmpeg最新源碼
?? SVN-BASE
?? 第 1 頁 / 共 3 頁
字號:
/* * AltiVec acceleration for colorspace conversion * * copyright (C) 2004 Marc Hoffman <marc.hoffman@analog.com> * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * FFmpeg 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *//*Convert I420 YV12 to RGB in various formats,  it rejects images that are not in 420 formats,  it rejects images that don't have widths of multiples of 16,  it rejects images that don't have heights of multiples of 2.Reject defers to C simulation code.Lots of optimizations to be done here.1. Need to fix saturation code. I just couldn't get it to fly with packs   and adds, so we currently use max/min to clip.2. The inefficient use of chroma loading needs a bit of brushing up.3. Analysis of pipeline stalls needs to be done. Use shark to identify   pipeline stalls.MODIFIED to calculate coeffs from currently selected color space.MODIFIED core to be a macro where you specify the output format.ADDED UYVY conversion which is never called due to some thing in swscale.CORRECTED algorithim selection to be strict on input formats.ADDED runtime detection of AltiVec.ADDED altivec_yuv2packedX vertical scl + RGB converterMarch 27,2004PERFORMANCE ANALYSISThe C version uses 25% of the processor or ~250Mips for D1 video rawvideoused as test.The AltiVec version uses 10% of the processor or ~100Mips for D1 videosame sequence.720 * 480 * 30  ~10MPSso we have roughly 10 clocks per pixel. This is too high, something hasto be wrong.OPTIMIZED clip codes to utilize vec_max and vec_packs removing theneed for vec_min.OPTIMIZED DST OUTPUT cache/DMA controls. We are pretty much guaranteed to havethe input video frame, it was just decompressed so it probably resides in L1caches. However, we are creating the output video stream. This needs to use theDSTST instruction to optimize for the cache. We couple this with the fact thatwe are not going to be visiting the input buffer again so we mark it LeastRecently Used. This shaves 25% of the processor cycles off.Now memcpy is the largest mips consumer in the system, probably dueto the inefficient X11 stuff.GL libraries seem to be very slow on this machine 1.33Ghz PB runningJaguar, this is not the case for my 1Ghz PB.  I thought it might bea versioning issue, however I have libGL.1.2.dylib for bothmachines. (We need to figure this out now.)GL2 libraries work now with patch for RGB32.NOTE: quartz vo driver ARGB32_to_RGB24 consumes 30% of the processor.Integrated luma prescaling adjustment for saturation/contrast/brightnessadjustment.*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <inttypes.h>#include <assert.h>#include "config.h"#ifdef HAVE_MALLOC_H#include <malloc.h>#endif#include "rgb2rgb.h"#include "swscale.h"#include "swscale_internal.h"#undef PROFILE_THE_BEAST#undef INC_SCALINGtypedef unsigned char ubyte;typedef signed char   sbyte;/* RGB interleaver, 16 planar pels 8-bit samples per channel in   homogeneous vector registers x0,x1,x2 are interleaved with the   following technique:      o0 = vec_mergeh (x0,x1);      o1 = vec_perm (o0, x2, perm_rgb_0);      o2 = vec_perm (o0, x2, perm_rgb_1);      o3 = vec_mergel (x0,x1);      o4 = vec_perm (o3,o2,perm_rgb_2);      o5 = vec_perm (o3,o2,perm_rgb_3);  perm_rgb_0:   o0(RG).h v1(B) --> o1*              0   1  2   3   4             rgbr|gbrg|brgb|rgbr             0010 0100 1001 0010             0102 3145 2673 894A  perm_rgb_1:   o0(RG).h v1(B) --> o2              0   1  2   3   4             gbrg|brgb|bbbb|bbbb             0100 1001 1111 1111             B5CD 6EF7 89AB CDEF  perm_rgb_2:   o3(RG).l o2(rgbB.l) --> o4*              0   1  2   3   4             gbrg|brgb|rgbr|gbrg             1111 1111 0010 0100             89AB CDEF 0182 3945  perm_rgb_2:   o3(RG).l o2(rgbB.l) ---> o5*              0   1  2   3   4             brgb|rgbr|gbrg|brgb             1001 0010 0100 1001             a67b 89cA BdCD eEFf*/staticconst vector unsigned char  perm_rgb_0 = (const vector unsigned char)AVV(0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05,                                               0x12,0x06,0x07,0x13,0x08,0x09,0x14,0x0a),  perm_rgb_1 = (const vector unsigned char)AVV(0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17,                                               0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f),  perm_rgb_2 = (const vector unsigned char)AVV(0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,                                               0x00,0x01,0x18,0x02,0x03,0x19,0x04,0x05),  perm_rgb_3 = (const vector unsigned char)AVV(0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a,                                               0x0b,0x1d,0x0c,0x0d,0x1e,0x0e,0x0f,0x1f);#define vec_merge3(x2,x1,x0,y0,y1,y2)       \do {                                        \    typeof(x0) o0,o2,o3;                    \        o0 = vec_mergeh (x0,x1);            \        y0 = vec_perm (o0, x2, perm_rgb_0); \        o2 = vec_perm (o0, x2, perm_rgb_1); \        o3 = vec_mergel (x0,x1);            \        y1 = vec_perm (o3,o2,perm_rgb_2);   \        y2 = vec_perm (o3,o2,perm_rgb_3);   \} while(0)#define vec_mstbgr24(x0,x1,x2,ptr)      \do {                                    \    typeof(x0) _0,_1,_2;                \    vec_merge3 (x0,x1,x2,_0,_1,_2);     \    vec_st (_0, 0, ptr++);              \    vec_st (_1, 0, ptr++);              \    vec_st (_2, 0, ptr++);              \}  while (0);#define vec_mstrgb24(x0,x1,x2,ptr)      \do {                                    \    typeof(x0) _0,_1,_2;                \    vec_merge3 (x2,x1,x0,_0,_1,_2);     \    vec_st (_0, 0, ptr++);              \    vec_st (_1, 0, ptr++);              \    vec_st (_2, 0, ptr++);              \}  while (0);/* pack the pixels in rgb0 format   msb R   lsb 0*/#define vec_mstrgb32(T,x0,x1,x2,x3,ptr)                                       \do {                                                                          \    T _0,_1,_2,_3;                                                            \    _0 = vec_mergeh (x0,x1);                                                  \    _1 = vec_mergeh (x2,x3);                                                  \    _2 = (T)vec_mergeh ((vector unsigned short)_0,(vector unsigned short)_1); \    _3 = (T)vec_mergel ((vector unsigned short)_0,(vector unsigned short)_1); \    vec_st (_2, 0*16, (T *)ptr);                                              \    vec_st (_3, 1*16, (T *)ptr);                                              \    _0 = vec_mergel (x0,x1);                                                  \    _1 = vec_mergel (x2,x3);                                                  \    _2 = (T)vec_mergeh ((vector unsigned short)_0,(vector unsigned short)_1); \    _3 = (T)vec_mergel ((vector unsigned short)_0,(vector unsigned short)_1); \    vec_st (_2, 2*16, (T *)ptr);                                              \    vec_st (_3, 3*16, (T *)ptr);                                              \    ptr += 4;                                                                 \}  while (0);/*  | 1     0       1.4021   | | Y |  | 1    -0.3441 -0.7142   |x| Cb|  | 1     1.7718  0        | | Cr|  Y:      [-128 127]  Cb/Cr : [-128 127]  typical yuv conversion work on Y: 0-255 this version has been optimized for jpeg decode.*/#define vec_unh(x) \    (vector signed short) \        vec_perm(x,(typeof(x))AVV(0),\                 (vector unsigned char)AVV(0x10,0x00,0x10,0x01,0x10,0x02,0x10,0x03,\                                           0x10,0x04,0x10,0x05,0x10,0x06,0x10,0x07))#define vec_unl(x) \    (vector signed short) \        vec_perm(x,(typeof(x))AVV(0),\                 (vector unsigned char)AVV(0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\                                           0x10,0x0C,0x10,0x0D,0x10,0x0E,0x10,0x0F))#define vec_clip_s16(x) \    vec_max (vec_min (x, (vector signed short)AVV(235,235,235,235,235,235,235,235)),\                         (vector signed short)AVV( 16, 16, 16, 16, 16, 16, 16, 16))#define vec_packclp(x,y) \    (vector unsigned char)vec_packs \        ((vector unsigned short)vec_max (x,(vector signed short) AVV(0)), \         (vector unsigned short)vec_max (y,(vector signed short) AVV(0)))//#define out_pixels(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))AVV(0)),a,a,a,ptr)static inline void cvtyuvtoRGB (SwsContext *c,                                vector signed short Y, vector signed short U, vector signed short V,                                vector signed short *R, vector signed short *G, vector signed short *B){    vector signed   short vx,ux,uvx;    Y = vec_mradds (Y, c->CY, c->OY);    U  = vec_sub (U,(vector signed short)                    vec_splat((vector signed short)AVV(128),0));    V  = vec_sub (V,(vector signed short)                    vec_splat((vector signed short)AVV(128),0));    //   ux  = (CBU*(u<<c->CSHIFT)+0x4000)>>15;    ux = vec_sl (U, c->CSHIFT);    *B = vec_mradds (ux, c->CBU, Y);    // vx  = (CRV*(v<<c->CSHIFT)+0x4000)>>15;    vx = vec_sl (V, c->CSHIFT);    *R = vec_mradds (vx, c->CRV, Y);    // uvx = ((CGU*u) + (CGV*v))>>15;    uvx = vec_mradds (U, c->CGU, Y);    *G  = vec_mradds (V, c->CGV, uvx);}/*  ------------------------------------------------------------------------------  CS converters  ------------------------------------------------------------------------------*/#define DEFCSP420_CVT(name,out_pixels)                                  \static int altivec_##name (SwsContext *c,                               \                           unsigned char **in, int *instrides,          \                           int srcSliceY,        int srcSliceH,         \                           unsigned char **oplanes, int *outstrides)    \{                                                                       \    int w = c->srcW;                                                    \    int h = srcSliceH;                                                  \    int i,j;                                                            \    int instrides_scl[3];                                               \    vector unsigned char y0,y1;                                         \                                                                        \    vector signed char  u,v;                                            \                                                                        \    vector signed short Y0,Y1,Y2,Y3;                                    \    vector signed short U,V;                                            \    vector signed short vx,ux,uvx;                                      \    vector signed short vx0,ux0,uvx0;                                   \    vector signed short vx1,ux1,uvx1;                                   \    vector signed short R0,G0,B0;                                       \    vector signed short R1,G1,B1;                                       \    vector unsigned char R,G,B;                                         \                                                                        \    vector unsigned char *y1ivP, *y2ivP, *uivP, *vivP;                  \    vector unsigned char align_perm;                                    \                                                                        \    vector signed short                                                 \        lCY  = c->CY,                                                   \        lOY  = c->OY,                                                   \        lCRV = c->CRV,                                                  \        lCBU = c->CBU,                                                  \        lCGU = c->CGU,                                                  \        lCGV = c->CGV;                                                  \                                                                        \    vector unsigned short lCSHIFT = c->CSHIFT;                          \                                                                        \    ubyte *y1i   = in[0];                                               \    ubyte *y2i   = in[0]+instrides[0];                                  \    ubyte *ui    = in[1];                                               \    ubyte *vi    = in[2];                                               \                                                                        \    vector unsigned char *oute                                          \        = (vector unsigned char *)                                      \            (oplanes[0]+srcSliceY*outstrides[0]);                       \

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影一区二区| 国产日韩欧美a| 成人免费高清视频| 视频一区视频二区在线观看| 国产精品国模大尺度视频| 91精品国产aⅴ一区二区| 成人av电影免费观看| 奇米亚洲午夜久久精品| 亚洲精品国产第一综合99久久| 久久亚洲精精品中文字幕早川悠里| 在线精品亚洲一区二区不卡| 国产成人亚洲综合a∨婷婷| 日韩国产精品久久久| 亚洲乱码国产乱码精品精98午夜| 国产午夜亚洲精品羞羞网站| 日韩三级视频中文字幕| 欧美日韩免费高清一区色橹橹| 懂色中文一区二区在线播放| 久久疯狂做爰流白浆xx| 午夜久久电影网| 亚洲午夜影视影院在线观看| 亚洲色图在线视频| 国产精品高潮呻吟久久| 国产免费久久精品| 久久综合久久综合亚洲| 日韩写真欧美这视频| 欧美精品丝袜久久久中文字幕| 91女神在线视频| www.日韩av| 成人高清在线视频| 成人av资源在线| 国产成人av一区| 成人精品国产免费网站| 成人手机在线视频| 99这里只有精品| 色综合 综合色| 色综合视频在线观看| 色噜噜久久综合| 91在线码无精品| 91美女在线观看| 91成人免费电影| 欧美日韩电影一区| 日韩限制级电影在线观看| 日韩欧美一区中文| 欧美成人欧美edvon| 欧美精品一区二区高清在线观看| 2024国产精品| 欧美激情综合五月色丁香小说| 日本一区二区三区四区在线视频| 亚洲国产精品成人综合| 国产精品国产三级国产aⅴ中文| 一区在线中文字幕| 亚洲成人中文在线| 三级在线观看一区二区| 久久成人麻豆午夜电影| 国产原创一区二区三区| 国产91在线看| 在线观看国产91| 欧美一级久久久久久久大片| 久久久一区二区三区| 亚洲天堂精品视频| 亚洲mv在线观看| 久久精品国产亚洲高清剧情介绍| 国产精品自拍一区| 色综合久久天天综合网| 欧美色精品在线视频| 日韩美女视频一区二区在线观看| 日本一区二区视频在线观看| 亚洲影院久久精品| 久久国产精品区| 99re成人在线| 欧美v日韩v国产v| 国产一区二区精品在线观看| 久久国产精品99精品国产| 国产成人精品www牛牛影视| 91在线云播放| 3d动漫精品啪啪1区2区免费| www亚洲一区| 久久奇米777| 久久婷婷成人综合色| av一区二区三区四区| 欧美成人aa大片| 欧美日韩中字一区| 精品国产三级电影在线观看| 国产精品国产自产拍高清av王其 | 9久草视频在线视频精品| 欧美无乱码久久久免费午夜一区| 日韩免费在线观看| 一区二区视频在线看| 韩国成人福利片在线播放| 91网站最新网址| 精品动漫一区二区三区在线观看| 亚洲伦理在线免费看| 国产精品综合久久| 欧美一区二区三区视频免费播放| 国产精品国产三级国产专播品爱网| 日韩精品成人一区二区在线| zzijzzij亚洲日本少妇熟睡| 欧美xxx久久| 艳妇臀荡乳欲伦亚洲一区| 国产精品一区二区久激情瑜伽| 欧美喷潮久久久xxxxx| 中文字幕在线播放不卡一区| 国产做a爰片久久毛片| 7777女厕盗摄久久久| 一区二区在线观看视频 | 色综合色狠狠天天综合色| 欧美精品一区二区三| 丝袜脚交一区二区| 一本到高清视频免费精品| 国产亚洲人成网站| 男人的j进女人的j一区| 欧美日韩精品一区二区三区蜜桃| 国产精品卡一卡二| 国产精品一区二区黑丝| 91精品国产欧美一区二区成人| 亚洲综合免费观看高清完整版| 99久久久免费精品国产一区二区| 久久久综合激的五月天| 久久成人免费网| 日韩精品最新网址| 另类小说色综合网站| 欧美日韩亚洲高清一区二区| 亚洲主播在线播放| 色哟哟国产精品免费观看| 国产精品热久久久久夜色精品三区 | 欧美日韩高清一区二区不卡 | 国产精品白丝av| 精品999久久久| 国产自产2019最新不卡| 日韩欧美一级精品久久| 视频一区二区三区入口| 欧美精品 日韩| 婷婷开心久久网| 欧美一区二区三区小说| 日本欧美在线看| 日韩视频免费观看高清完整版在线观看 | 国产麻豆成人精品| 久久免费偷拍视频| 国产传媒一区在线| 欧美高清在线一区| 不卡的av在线| 中文字幕亚洲综合久久菠萝蜜| av电影在线观看不卡| |精品福利一区二区三区| 91麻豆免费观看| 一区二区国产盗摄色噜噜| 欧美在线观看视频一区二区三区 | 裸体健美xxxx欧美裸体表演| 欧美一二三区在线观看| 久久er99精品| 国产日韩欧美精品一区| www.亚洲在线| 亚洲激情中文1区| 欧美顶级少妇做爰| 极品少妇一区二区| 日本一区二区久久| 色八戒一区二区三区| 婷婷夜色潮精品综合在线| 精品毛片乱码1区2区3区| 处破女av一区二区| 伊人色综合久久天天| 日韩午夜电影在线观看| 成人在线综合网| 亚洲午夜免费电影| 日韩一区二区三区在线视频| 国产白丝网站精品污在线入口| 国产精品传媒视频| 欧美欧美午夜aⅴ在线观看| 久久福利视频一区二区| 日本一区二区电影| 欧美日韩中文字幕精品| 狠狠色狠狠色合久久伊人| 国产精品理伦片| 欧美一区二区三区免费| 福利一区二区在线| 亚洲国产成人高清精品| 2017欧美狠狠色| 欧美性猛交xxxxxx富婆| 国产综合一区二区| 亚洲一区二区三区中文字幕| 日韩免费视频一区二区| 色呦呦国产精品| 日本不卡一区二区三区高清视频| 欧美精彩视频一区二区三区| 欧美乱妇一区二区三区不卡视频| 国产高清视频一区| 日日摸夜夜添夜夜添精品视频| 国产精品视频在线看| 欧美一区三区二区| 91香蕉国产在线观看软件| 精品一区二区三区视频在线观看| 亚洲欧美视频在线观看视频| 久久午夜电影网| 欧美日韩国产综合久久| 成人午夜伦理影院| 美女网站色91| 亚洲一区二区三区不卡国产欧美 | 亚洲最大的成人av| 2021国产精品久久精品|