⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.cc

📁 ac3的解码程序
💻 CC
📖 第 1 页 / 共 4 页
字号:
                        "movq           %%mm4,                  %%mm5\n"  // lum1                        "paddw          %%mm1,                  %%mm4\n"  // lum1 +red  00 R6 00 R4 00 R2 00 R0                        "paddw          %%mm2,                  %%mm5\n"  // lum1 +green 00 G6 00 G4 00 G2 00 G0                        "psraw          $6,                     %%mm4\n"  // R1 0 .. 64                        "movq           %%mm7,                  %%mm3\n"  // lum2                       00 L7 00 L5 00 L3 00 L1                        "psraw          $6,                     %%mm5\n"  // G1  - .. +                        "paddw          %%mm0,                  %%mm7\n"  // Lum2 +blue 00 B7 00 B5 00 B3 00 B1                        "psraw          $6,                     %%mm6\n"  // B1         0 .. 64                        "packuswb       %%mm4,                  %%mm4\n"  // R1 R1                        "packuswb       %%mm5,                  %%mm5\n"  // G1 G1                        "packuswb       %%mm6,                  %%mm6\n"  // B1 B1                        "punpcklbw      %%mm4,                  %%mm4\n"                        "punpcklbw      %%mm5,                  %%mm5\n"                        "pand           MMX_redmask,            %%mm4\n"                        "psllw          $3,                     %%mm5\n"  // GREEN       1                        "punpcklbw      %%mm6,                  %%mm6\n"                        "pand           MMX_grnmask,            %%mm5\n"                        "pand           MMX_redmask,            %%mm6\n"                        "por            %%mm5,                  %%mm4\n" //                        "psrlw          $11,                    %%mm6\n"                // BLUE        1                        "movq           %%mm3,                  %%mm5\n" // lum2                        "paddw          %%mm1,                  %%mm3\n"        // lum2 +red      00 R7 00 R5 00 R3 00 R1                        "paddw          %%mm2,                  %%mm5\n" // lum2 +green 00 G7 00 G5 00 G3 00 G1                        "psraw          $6,                     %%mm3\n" // R2                        "por            %%mm6,                  %%mm4\n" // MM4                        "psraw          $6,                     %%mm5\n" // G2                        "movq           (%2, %3),               %%mm6\n"  // L3                        "psraw          $6,                     %%mm7\n"                        "packuswb       %%mm3,                  %%mm3\n"                        "packuswb       %%mm5,                  %%mm5\n"                        "packuswb       %%mm7,                  %%mm7\n"                        "pand                   MMX_00FFw,              %%mm6\n"  // L3                        "punpcklbw      %%mm3,                  %%mm3\n"//                              "psubw          MMX_10w,                        %%mm6\n"  // L3                        "punpcklbw      %%mm5,                  %%mm5\n"                        "pmullw         MMX_Ycoeff,             %%mm6\n"  // lum3                        "punpcklbw      %%mm7,                  %%mm7\n"                        "psllw          $3,                             %%mm5\n"  // GREEN 2                        "pand                   MMX_redmask,    %%mm7\n"                        "pand                   MMX_redmask,    %%mm3\n"                        "psrlw          $11,                            %%mm7\n"  // BLUE  2                        "pand                   MMX_grnmask,    %%mm5\n"                        "por                    %%mm7,                  %%mm3\n"                        "movq                   (%2,%3),                        %%mm7\n"  // L4                        "por                    %%mm5,                  %%mm3\n"     //                        "psrlw          $8,                             %%mm7\n"    // L4                        "movq                   %%mm4,                  %%mm5\n"//                              "psubw          MMX_10w,                        %%mm7\n"                // L4                        "punpcklwd      %%mm3,                  %%mm4\n"                        "pmullw         MMX_Ycoeff,             %%mm7\n"    // lum4                        "punpckhwd      %%mm3,                  %%mm5\n"                        "movq                   %%mm4,                  (%4)\n"                        "movq                   %%mm5,                  8(%4)\n"                        "movq                   %%mm6,                  %%mm4\n"        // Lum3                        "paddw          %%mm0,                  %%mm6\n"                // Lum3 +blue                        "movq                   %%mm4,                  %%mm5\n"                        // Lum3                        "paddw          %%mm1,                  %%mm4\n"       // Lum3 +red                        "paddw          %%mm2,                  %%mm5\n"                        // Lum3 +green                        "psraw          $6,                             %%mm4\n"                        "movq                   %%mm7,                  %%mm3\n"                        // Lum4                        "psraw          $6,                             %%mm5\n"                        "paddw          %%mm0,                  %%mm7\n"                   // Lum4 +blue                        "psraw          $6,                             %%mm6\n"                        // Lum3 +blue                        "movq                   %%mm3,                  %%mm0\n"  // Lum4                        "packuswb       %%mm4,                  %%mm4\n"                        "paddw          %%mm1,                  %%mm3\n"  // Lum4 +red                        "packuswb       %%mm5,                  %%mm5\n"                        "paddw          %%mm2,                  %%mm0\n"         // Lum4 +green                        "packuswb       %%mm6,                  %%mm6\n"                        "punpcklbw      %%mm4,                  %%mm4\n"                        "punpcklbw      %%mm5,                  %%mm5\n"                        "punpcklbw      %%mm6,                  %%mm6\n"                        "psllw          $3,                             %%mm5\n" // GREEN 3                        "pand                   MMX_redmask,    %%mm4\n"                        "psraw          $6,                             %%mm3\n" // psr 6                        "psraw          $6,                             %%mm0\n"                        "pand                   MMX_redmask,    %%mm6\n" // BLUE                        "pand                   MMX_grnmask,    %%mm5\n"                        "psrlw          $11,                            %%mm6\n"  // BLUE  3                        "por                    %%mm5,                  %%mm4\n"                        "psraw          $6,                             %%mm7\n"                        "por                    %%mm6,                  %%mm4\n"                        "packuswb       %%mm3,                  %%mm3\n"                        "packuswb       %%mm0,                  %%mm0\n"                        "packuswb       %%mm7,                  %%mm7\n"                        "punpcklbw      %%mm3,                  %%mm3\n"                        "punpcklbw      %%mm0,                  %%mm0\n"                        "punpcklbw      %%mm7,                  %%mm7\n"                        "pand                   MMX_redmask,    %%mm3\n"                        "pand                   MMX_redmask,    %%mm7\n" // BLUE                        "psllw          $3,                             %%mm0\n" // GREEN 4                        "psrlw          $11,                            %%mm7\n"                        "pand                   MMX_grnmask,    %%mm0\n"                        "por                    %%mm7,                  %%mm3\n"                        "addl                   $8,                             %6\n"                        "por                    %%mm0,                  %%mm3\n"                        "movq                   %%mm4,                  %%mm5\n"                        "punpcklwd      %%mm3,                  %%mm4\n"                        "punpckhwd      %%mm3,                  %%mm5\n"                        "movq                   %%mm4,                  (%4,%5,2)\n"                        "movq                   %%mm5,                  8(%4,%5,2)\n"                        "addl                   $8,                             %2\n"                        "addl                   $4,                             %0\n"                        "addl                   $4,                             %1\n"                        "cmpl                   %3,                             %6\n"                        "leal                   16(%4),                 %4\n"                "jl             1b\n"                "addl           %3,     %2\n"                   /* lum += cols */                "addl           %7,     %4\n"                   /* row1 += mod */                "movl           $0,     %6\n"                "cmpl           %8,     %2\n"                "jl             1b\n"                :                : "r" (cr), "r" (cb), "r" (lum), "r" (cols), "r" (row1) ,"r" (col1), "m" (x), "m" (mod)                        , "m" (y)                );        __asm__ __volatile__(                "emms\n"        );}int DisplayX11::dither_image_rgb16(unsigned char* src[], unsigned char* dithered_img){  int height,width,display_width;  height=coded_picture_height;  if (shmem_flag == 2)    display_width = xwidth;  else    display_width=coded_picture_width;  width=coded_picture_width;  if (rgb_mode == 0)    Color16DitherImageMod(src[0], src[2], src[1], dithered_img, height, width,display_width -width);  else    yuv_2_rgb(src[0],src[1],src[2],width,height,width,width/2,0,dithered_img,0,0,display_width*2,rgb_mode);  return 0;}int DisplayX11::dither_image_rgb24(unsigned char* src[], unsigned char* dithered_img){  int height,width,display_width;  height=coded_picture_height;  if (shmem_flag == 2)    display_width = xwidth;  else    display_width=coded_picture_width;  width=coded_picture_width;  if (rgb_mode == 0)    Color16DitherImageMod(src[0], src[2], src[1], dithered_img, height, width,display_width -width);  else    yuv_2_rgb(src[0],src[1],src[2],width,height,width,width/2,0,dithered_img,0,0,display_width*2,rgb_mode);  return 0;}#endifvoid DisplayX11::dither_image(unsigned char *src[]){#ifdef SOLARIS_SDK_XIL  dithered_image=getImage1Data();#endif  if (prog_seq){    if (chroma_format!=CHROMA444){#if defined(LINUX) && defined(MMX)      if (vinfo.c_class==TrueColor && vinfo.depth==24){        dither_image_rgb24(src, dithered_image);        return;      }      if (bpp == 16 ) {        dither_image_rgb16(src, dithered_image);        return;      }#endif      ditherframe(src);    }    else      ditherframe444(src);  }  else {#ifdef SOLARIS_SDK_XIL    dithered_image2=getImage2Data();#endif#if defined(LINUX) && defined(MMX)       if (bpp == 16 ){        dither_image_rgb16(src, dithered_image);        return;      }#endif    if ((pict_struct==FRAME_PICTURE && topfirst) || pict_struct==BOTTOM_FIELD){      /* top field first */      if (chroma_format!=CHROMA444){        dithertop(src,dithered_image);        ditherbot(src,dithered_image2);      }      else {        dithertop444(src,dithered_image);        ditherbot444(src,dithered_image2);      }    }    else {      /* bottom field first */      if (chroma_format!=CHROMA444){        ditherbot(src,dithered_image);        dithertop(src,dithered_image2);      }      else {        ditherbot444(src,dithered_image);        dithertop444(src,dithered_image2);      }    }  }}/* only for 4:2:0 and 4:2:2! */void DisplayX11::ditherframe(unsigned char *src[]){  int i;  register unsigned int uv;  register unsigned char *py,*pu,*pv,*dst;  py = src[0];  pu = src[1];  pv = src[2];  dst = dithered_image;  for (int j=0; j<coded_picture_height; j+=4){    /* line j + 0 */    for (i=0; i<coded_picture_width; i+=8){      uv = uvtab[(*pu++<<8)|*pv++];      *dst++ = ytab[((*py++)<<4)|(uv&15)];      *dst++ = ytab[((*py++ +8)<<4)|(uv>>4)];      uv = uvtab[((*pu++<<8)|*pv++)+1028];      *dst++ = ytab[((*py++ +2)<<4)|(uv&15)];      *dst++ = ytab[((*py++ +10)<<4)|(uv>>4)];      uv = uvtab[(*pu++<<8)|*pv++];      *dst++ = ytab[((*py++)<<4)|(uv&15)];      *dst++ = ytab[((*py++ +8)<<4)|(uv>>4)];      uv = uvtab[((*pu++<<8)|*pv++)+1028];      *dst++ = ytab[((*py++ +2)<<4)|(uv&15)];      *dst++ = ytab[((*py++ +10)<<4)|(uv>>4)];    }    if (chroma_format==CHROMA420){      pu -= chrom_width;      pv -= chrom_width;    }    /* line j + 1 */    for (i=0; i<coded_picture_width; i+=8){      uv = uvtab[((*pu++<<8)|*pv++)+2056];      *dst++ = ytab[((*py++ +12)<<4)|(uv>>4)];      *dst++ = ytab[((*py++ +4)<<4)|(uv&15)];      uv = uvtab[((*pu++<<8)|*pv++)+3084];      *dst++ = ytab[((*py++ +14)<<4)|(uv>>4)];      *dst++ = ytab[((*py++ +6)<<4)|(uv&15)];      uv = uvtab[((*pu++<<8)|*pv++)+2056];      *dst++ = ytab[((*py++ +12)<<4)|(uv>>4)];      *dst++ = ytab[((*py++ +4)<<4)|(uv&15)];      uv = uvtab[((*pu++<<8)|*pv++)+3084];      *dst++ = ytab[((*py++ +14)<<4)|(uv>>4)];      *dst++ = ytab[((*py++ +6)<<4)|(uv&15)];    }    /* line j + 2 */    for (i=0; i<coded_picture_width; i+=8){      uv = uvtab[((*pu++<<8)|*pv++)+1542];      *dst++ = ytab[((*py++ +3)<<4)|(uv&15)];      *dst++ = ytab[((*py++ +11)<<4)|(uv>>4)];      uv = uvtab[((*pu++<<8)|*pv++)+514];      *dst++ = ytab[((*py++ +1)<<4)|(uv&15)];      *dst++ = ytab[((*py++ +9)<<4)|(uv>>4)];      uv = uvtab[((*pu++<<8)|*pv++)+1542];      *dst++ = ytab[((*py++ +3)<<4)|(uv&15)];      *dst++ = ytab[((*py++ +11)<<4)|(uv>>4)];      uv = uvtab[((*pu++<<8)|*pv++)+514];      *dst++ = ytab[((*py++ +1)<<4)|(uv&15)];      *dst++ = ytab[((*py++ +9)<<4)|(uv>>4)];    }    if (chroma_format==CHROMA420){      pu -= chrom_width;      pv -= chrom_width;    }    /* line j + 3 */    for (i=0; i<coded_picture_width; i+=8){      uv = uvtab[((*pu++<<8)|*pv++)+3598];      *dst++ = ytab[((*py++ +15)<<4)|(uv>>4)];      *dst++ = ytab[((*py++ +7)<<4)|(uv&15)];      uv = uvtab[((*pu++<<8)|*pv++)+2570];      *dst++ = ytab[((*py++ +13)<<4)|(uv>>4)];      *dst++ = ytab[((*py++ +5)<<4)|(uv&15)];      uv = uvtab[((*pu++<<8)|*pv++)+3598];      *dst++ = ytab[((*py++ +15)<<4)|(uv>>4)];      *dst++ = ytab[((*py++ +7)<<4)|(uv&15)];      uv = uvtab[((*pu++<<8)|*pv++)+2570];      *dst++ = ytab[((*py++ +13)<<4)|(uv>>4)];      *dst++ = ytab[((*py++ +5)<<4)|(uv&15)];    }  }}void DisplayX11::dithertop(unsigned char *src[], unsigned char *dst){  int i;  unsigned int y,uv1,uv2;  unsigned char *py,*py2,*pu,*pv,*dst2;  py = src[0];  py2 = src[0] + (coded_picture_width<<1);  pu = src[1];  pv = src[2];  dst2 = dst + coded_picture_width;  for (int j=0; j<coded_picture_height; j+=4){    /* line j + 0, j + 1 */    for (i=0; i<coded_picture_width; i+=4){      y = *py++;      uv2 = (*pu++<<8)|*pv++;      uv1 = uvtab[uv2];      uv2 = uvtab[uv2+2056];      *dst++  = ytab[((y)<<4)|(uv1&15)];      *dst2++ = ytab[((((y + *py2++)>>1)+12)<<4)|(uv2>>4)];      y = *py++;      *dst++  = ytab[((y+8)<<4)|(uv1>>4)];      *dst2++ = ytab[((((y + *py2++)>>1)+4)<<4)|(uv2&15)];      y = *py++;      uv2 = (*pu++<<8)|*pv++;      uv1 = uvtab[uv2+1028];      uv2 = uvtab[uv2+3072];      *dst++  = ytab[((y+2)<<4)|(uv1&15)];      *dst2++ = ytab[((((y + *py2++)>>1)+14)<<4)|(uv2>>4)];      y = *py++;      *dst++  = ytab[((y+10)<<4)|(uv1>>4)];      *dst2++ = ytab[((((y + *py2++)>>1)+6)<<4)|(uv2&15)];    }    py += coded_picture_width;    if (j!=(coded_picture_height-4)) py2 += coded_picture_width;    else                             py2 -= coded_picture_width;    dst += coded_picture_width;    dst2 += coded_picture_width;    if (chroma_format==CHROMA420){      pu -= chrom_width;      pv -= chrom_width;    }    else {      pu += chrom_width;      pv += chrom_width;    }    /* line j + 2, j + 3 */    for (i=0; i<coded_picture_width; i+=4){      y = *py++;      uv2 = (*pu++<<8)|*pv++;      uv1 = uvtab[uv2+1542];      uv2 = uvtab[uv2+3598];      *dst++  = ytab[((y+3)<<4)|(uv1&15)];      *dst2++ = ytab[((((y + *py2++)>>1)+15)<<4)|(uv2>>4)];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -