bugDECORE.rar

  • color_X
    了解作者
  • Visual C++
    开发工具
  • 126KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 18
    下载次数
  • 2005-08-26 16:05
    上传日期
MPEG的编码程序,修正了几个错误,欢迎指正
bugDECORE.rar
内容介绍
**/ #include "basic_prediction.h" void CopyBlock(unsigned char * Src, unsigned char * Dst, int Stride) { int dy; long *lpSrc = (long *) Src; long *lpDst = (long *) Dst; int lpStride = Stride >> 2; for (dy = 0; dy < 8; dy++) { lpDst[0] = lpSrc[0]; lpDst[1] = lpSrc[1]; lpSrc += lpStride; lpDst += lpStride; } } /**/ void CopyBlockHor(unsigned char * Src, unsigned char * Dst, int Stride) { _asm { xor eax, eax mov ebx, Stride sub ebx, 7 xor ecx, ecx mov edx, 8 mov esi, dword ptr [Src] mov edi, dword ptr [Dst] start_again10: // 0 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 1 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 2 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 3 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 4 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 5 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 6 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 7 mov al, [esi] mov cl, [esi+1] add eax, ecx inc eax shr eax, 1 mov [edi], al add esi, ebx add edi, ebx dec edx jnz start_again10 } } /**/ void CopyBlockVer(unsigned char * Src, unsigned char * Dst, int Stride) { _asm { xor eax, eax mov ebx, Stride xor ecx, ecx mov edx, 8 mov esi, dword ptr [Src] mov edi, dword ptr [Dst] start_again10: // 0 mov al, [esi] mov cl, [esi+ebx] add eax, ecx inc eax shr eax, 1 mov [edi], al inc esi inc edi // 1 mov al, [esi] mov cl, [esi+ebx] add eax, ecx inc eax shr eax, 1 mov [edi], al inc esi inc edi // 2 //xor eax, eax mov al, [esi] mov cl, [esi+ebx] add eax, ecx inc eax shr eax, 1 mov [edi], al inc esi inc edi // 3 //xor eax, eax mov al, [esi] mov cl, [esi+ebx] add eax, ecx inc eax shr eax, 1 mov [edi], al inc esi inc edi // 4 mov al, [esi] mov cl, [esi+ebx] add eax, ecx inc eax shr eax, 1 mov [edi], al inc esi inc edi // 5 mov al, [esi] mov cl, [esi+ebx] add eax, ecx inc eax shr eax, 1 mov [edi], al inc esi inc edi // 6 mov al, [esi] mov cl, [esi+ebx] add eax, ecx inc eax shr eax, 1 mov [edi], al inc esi inc edi // 7 mov al, [esi] mov cl, [esi+ebx] add eax, ecx inc eax shr eax, 1 mov [edi], al add esi, ebx sub esi, 7 add edi, ebx sub edi, 7 dec edx jnz start_again10 } } /**/ void CopyBlockHorVer(unsigned char * Src, unsigned char * Dst, int Stride) { int dy, dx; for (dy = 0; dy < 8; dy++) { for (dx = 0; dx < 8; dx++) { Dst[dx] = (Src[dx] + Src[dx+1] + Src[dx+Stride] + Src[dx+Stride+1] +2) >> 2; // horver interpolation with rounding } Src += Stride; Dst += Stride; } } /**/ void CopyBlockHorRound(unsigned char * Src, unsigned char * Dst, int Stride) { _asm { xor eax, eax mov ebx, Stride sub ebx, 7 xor ecx, ecx mov edx, 8 mov esi, dword ptr [Src] mov edi, dword ptr [Dst] start_again1: // 0 mov al, [esi] inc esi mov cl, [esi] add eax, ecx shr eax, 1 mov [edi], al inc edi // 1 mov al, [esi] inc esi mov cl, [esi] add eax, ecx shr eax, 1 mov [edi], al inc edi // 2 //xor eax, eax mov al, [esi] inc esi mov cl, [esi] add eax, ecx shr eax, 1 mov [edi], al inc edi // 3 //xor eax, eax mov al, [esi] inc esi mov cl, [esi] add eax, ecx shr eax, 1 mov [edi], al inc edi // 4 mov al, [esi] inc esi mov cl, [esi] add eax, ecx shr eax, 1 mov [edi], al inc edi // 5 mov al, [esi] inc esi mov cl, [esi] add eax, ecx shr eax, 1 mov [edi], al inc edi // 6 mov al, [esi] inc esi mov cl, [esi] add eax, ecx shr eax, 1 mov [edi], al inc edi // 7 mov al, [esi] mov cl, [esi+1] add eax, ecx shr eax, 1 mov [edi], al add esi, ebx add edi, ebx dec edx jnz start_again1 } } /**/ void CopyBlockVerRound(unsigned char * Src, unsigned char * Dst, int Stride) { _asm { xor eax, eax mov ebx, Stride xor ecx, ecx mov edx, 8 mov esi, dword ptr [Src] mov edi, dword ptr [Dst] start_again1: // 0 mov al, [esi] mov cl, [esi+ebx] add eax, ecx shr eax, 1 mov [edi], al inc esi inc edi // 1 mov al, [esi] mov cl, [esi+ebx] add eax, ecx shr eax, 1 mov [edi], al inc esi inc edi // 2 //xor eax, eax mov al, [esi] mov cl, [esi+ebx] add eax, ecx shr eax, 1 mov [edi], al inc esi inc edi // 3 //xor eax, eax mov al, [esi] mov cl, [esi+ebx] add eax, ecx shr eax, 1 mov [edi], al inc esi inc edi // 4 mov al, [esi] mov cl, [esi+ebx] add eax, ecx shr eax, 1 mov [edi], al inc esi inc edi // 5 mov al, [esi] mov cl, [esi+ebx] add eax, ecx shr eax, 1 mov [edi], al inc esi inc edi // 6 mov al, [esi] mov cl, [esi+ebx] add eax, ecx shr eax, 1 mov [edi], al inc esi inc edi // 7 mov al, [esi] mov cl, [esi+ebx] add eax, ecx shr eax, 1 mov [edi], al add esi, ebx sub esi, 7 add edi, ebx sub edi, 7 dec edx jnz start_again1 } } /**/ void CopyBlockHorVerRound(unsigned char * Src, unsigned char * Dst, int Stride) { int dy, dx; for (dy = 0; dy < 8; dy++) { for (dx = 0; dx < 8; dx++) { Dst[dx] = (Src[dx] + Src[dx+1] + Src[dx+Stride] + Src[dx+Stride+1] +1) >> 2; // horver interpolation with rounding } Src += Stride; Dst += Stride; } } /** *** **/ void CopyMBlock(unsigned char * Src, unsigned char * Dst, int Stride) { _asm { mov ebx, Stride sub ebx, 12 mov edx, 16 mov esi, dword ptr [Src] mov edi, dword ptr [Dst] start_again: mov eax, [esi] mov [edi], eax add esi, 4 add edi, 4 mov eax, [esi] mov [edi], eax add esi, 4 add edi, 4 mov eax, [esi] mov [edi], eax add esi, 4 add edi, 4 mov eax, [esi] mov [edi], eax add esi, ebx add edi, ebx dec edx jnz start_again } } /**/ void CopyMBlockHor(unsigned char * Src, unsigned char * Dst, int Stride) { _asm { xor eax, eax mov ebx, Stride sub ebx, 15 xor ecx, ecx mov edx, 16 mov esi, dword ptr [Src] mov edi, dword ptr [Dst] start_again0: // 0 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 1 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 2 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 3 //xor eax, eax mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al inc edi // 4 mov al, [esi] inc esi mov cl, [esi] add eax, ecx inc eax shr eax, 1 mov [edi], al i
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...