SourceCodeSky QQ客服 SourceCodeSky 400电话 客服电话 暂无

pred.cpp ( 文件浏览 )

  • keepall 发布于 2016-08-23 22:16
  • 浏览次数:404
  • 下载次数: 0
  • 下载需 20 积分
  • 侵权举报
////////////////////////////////////////////////////////////////////////////
//
//
//    Project     : VideoNet version 1.1.
//    Description : Peer to Peer Video Conferencing over the LAN.
//      Author      :    Nagareshwar Y Talekar ( nsry2002@yahoo.co.in)
//    Date        : 15-6-2004.
//
//    I have converted origional fast h.263 encoder library from C to C++ 
//      so that it can be integrated into any windows application easily.
//      I have removed some of unnecessary codes/files from the
//      fast h263 library.Also moved definitions and declarations
//      in their proper .h and .cpp files.
//
//    File description : 
//    Name    : pred.cpp
//
//
/////////////////////////////////////////////////////////////////////////////

/*************************************************
 * libr263: fast H.263 encoder library
 *
 * Copyright (C) 1996, Roalt Aalmoes, Twente University
 * SPA multimedia group
 *
 * Based on Telenor TMN 1.6 encoder (Copyright (C) 1995, Telenor R&D)
 * created by Karl Lillevold 
 *
 * Author encoder: Roalt Aalmoes, <aalmoes@huygens.nl>
 * 
 * Date: 31-07-96
 **************************************************/

#include "pred.h"
#include "mot_est.h"

MB_Structure *Predict_P(unsigned int *curr_image, unsigned int *prev_image,
            unsigned int *prev_ipol, int x, int y, 
            MotionVector *MV_ptr)
{
  int m,n;
  unsigned int curr[16][16];
  int pred[16][16];
  MotionVector *fr0;
  int dx, dy;
  int xmb, ymb;
  MB_Structure *pred_error;

  pred_error = (MB_Structure *)malloc(sizeof(MB_Structure));
    
  xmb = x/MB_SIZE;
  ymb = y/MB_SIZE;

  fr0 = MV_ptr + ymb*Global::mbc + xmb;

  /* Find MB in current image */
#ifdef PRINT_DEBUG
  fprintf(debugf,"FindMB(%d,%d,%p,%p)\n",x,y,curr_image->Y,curr);
#endif
  
  FindMB(x, y, curr_image,curr);

  /* Find prediction based on half pel MV */

  FindPred(x, y, fr0, prev_ipol, &pred[0][0]);

  /* Do the actual prediction */
  if (fr0->Mode == MODE_INTER) {
    for (n = 0; n < MB_SIZE; n++)
      for (m = 0; m < MB_SIZE; m++) 
    pred_error->lum[n][m] = (int)(curr[n][m] - pred[n][m]);

    dx = 2*fr0->x + fr0->x_half;
    dy = 2*fr0->y + fr0->y_half;
    dx = ( dx % 4 == 0 ? dx >> 1 : (dx>>1)|1 );
    dy = ( dy % 4 == 0 ? dy >> 1 : (dy>>1)|1 );
#ifdef PRINTDEBUG
    fprintf(debugf,"DoPredChrom_P(%d,%d,%d,%d,%p,%p,%p)\n",x, y, dx, dy, curr_image, prev_image, pred_error);
#endif 
    DoPredChrom_P(x, y, dx, dy, curr_image, prev_image, pred_error);
  }
  else
    fprintf(stderr,"Illegal Mode in Predict_P (pred.c)\n");

  return pred_error;
}

void DoPredChrom_P(int x_curr, int y_curr, int dx, int dy,
           unsigned int *curr, unsigned int *prev, 
           MB_Structure *pred_error)
{
  int m,n;

  int x, y, ofx, ofy, pel, lx;
  int xint, yint;
  int xh, yh;

  lx = Global::pels/2;

  x = x_curr>>1;
  y = y_curr>>1;

  xint = dx>>1;
  xh = dx & 1;
  yint = dy>>1;
  yh = dy & 1;

  if (!xh && !yh) {
    for (n = 0; n < 8; n++) {
      for (m = 0; m < 8; m++) {

    ofx = x + xint + m;
    o[!==More==!]			
...
展开> <收缩

下载源码到电脑,阅读使用更方便

1 积分

快速下载
还剩0行未阅读,继续阅读
免费下载源码
Sponsored links

源码文件列表

温馨提示: 点击源码文件名可预览文件内容哦 ^_^
...
名称 大小 修改日期
/res/ 0 Bytes 2002-05-04 09:55:30
/encoder/ 0 Bytes 2002-05-06 16:43:08
/decoder/ 0 Bytes 2002-05-06 16:43:08
/videonet.ico 9.90 KB 2002-05-07 02:29:12
/VideoNet.aps 48.61 KB 2002-05-07 15:47:08
/ConnectDlg.h 1.29 KB 2002-05-07 14:19:06
/DSocket.h 1.74 KB 2002-05-07 16:11:08
/Mixer.h 1.27 KB 2002-05-07 03:26:40
/PlaySound.h 1.86 KB 2002-05-07 04:12:28
/RecordSound.h 1.67 KB 2002-05-08 14:19:28
/RequestDlg.h 1.38 KB 2002-05-07 14:20:42
/resource.h 1.89 KB 2002-05-07 03:11:50
/StdAfx.h 1.02 KB 2002-05-04 09:55:30
/VideoCapture.h 1.94 KB 2002-05-07 01:48:42
/VideoNet.h 1.18 KB 2002-05-04 09:55:30
/VideoNetDlg.h 2.77 KB 2002-05-07 15:47:04
/Volume.h 1.11 KB 2002-05-07 03:31:24
/ConnectDlg.cpp 1.83 KB 2002-05-07 20:46:54
/DSocket.cpp 7.00 KB 2002-05-07 16:11:08
/Mixer.cpp 4.25 KB 2002-05-07 03:24:10
/PlaySound.cpp 5.86 KB 2002-05-08 14:33:12
/RecordSound.cpp 5.94 KB 2002-05-08 14:18:32
/RequestDlg.cpp 2.52 KB 2002-05-07 14:25:18
/StdAfx.cpp 494 Bytes 2002-05-07 13:23:34
/VideoCapture.cpp 5.80 KB 2002-05-07 02:55:28
/VideoNet.cpp 1.75 KB 2002-05-07 13:26:16
/VideoNetDlg.cpp 19.47 KB 2002-05-08 19:40:58
/Volume.cpp 1.78 KB 2002-05-07 03:25:30
/VideoNet.clw 3.09 KB 2002-05-08 19:43:40
/VideoNet.opt 51.50 KB 2002-05-08 19:52:46
/VideoNet.dsp 12.69 KB 2002-05-08 19:52:08
/VideoNet.dsw 539 Bytes 2002-05-04 09:55:32
/VideoNet.rc 9.84 KB 2002-05-07 15:47:08
/decoder/decdef.h 2.70 KB 2002-05-07 03:51:06
/decoder/decstruct.h 1.56 KB 2002-05-07 03:55:10
/decoder/DGlobal.h 3.61 KB 2002-05-07 03:52:28
/decoder/GetBits.h 1.59 KB 2002-05-07 03:55:10
/decoder/GetBlk.h 1.69 KB 2002-05-07 03:55:10
/decoder/GetHdr.h 1.49 KB 2002-05-07 03:55:10
/decoder/GetPic.h 2.21 KB 2002-05-07 03:54:40
/decoder/GetVlc.h 1.66 KB 2002-05-07 03:55:10
/decoder/Idct.h 1.88 KB 2002-05-07 04:03:40
/decoder/Idctref.h 1.40 KB 2002-05-07 04:03:40
/decoder/Indices.h 1.74 KB 2002-05-07 04:03:40
/decoder/Recon.h 2.70 KB 2002-05-07 04:03:40
/decoder/Sac.h 1.50 KB 2002-05-07 04:03:40
/decoder/Sactbls.h 2.04 KB 2002-05-07 04:03:40
/decoder/Tmndec.h 3.94 KB 2002-05-07 04:03:14
/decoder/DGlobal.cpp 7.52 KB 2002-05-07 03:55:08
/decoder/GetBits.cpp 5.88 KB 2002-05-07 03:55:08
/decoder/GetBlk.cpp 10.31 KB 2002-05-07 03:55:10
/decoder/GetHdr.cpp 5.32 KB 2002-05-07 03:55:10
/decoder/GetPic.cpp 31.76 KB 2002-05-07 03:55:10
/decoder/GetVlc.cpp 10.92 KB 2002-05-07 03:55:10
/decoder/Idct.cpp 6.65 KB 2002-05-07 04:03:40
/decoder/Idctref.cpp 4.32 KB 2002-05-07 04:03:40
/decoder/Indices.cpp 4.21 KB 2002-05-07 04:03:40
/decoder/main.cpp 2.11 KB 2002-05-06 00:27:46
/decoder/Recon.cpp 21.69 KB 2002-05-07 04:03:40
/decoder/Sac.cpp 6.86 KB 2002-05-07 04:03:40
/decoder/Sactbls.cpp 12.36 KB 2002-05-07 04:03:40
/decoder/Tmndec.cpp 8.59 KB 2002-05-08 16:28:10
/decoder/YuvToRgb.cpp 5.42 KB 2002-05-06 02:58:48
/decoder/h263 2.08 KB 2002-05-05 14:38:24
/decoder/convert.h 936 Bytes 2002-05-07 03:41:52
/decoder/convert.cpp 5.07 KB 2002-05-07 03:41:34
/encoder/quant.cpp 2.98 KB 2002-05-07 03:38:50
/encoder/config.h 5.60 KB 2002-05-07 03:37:30
/encoder/countbit.h 1.69 KB 2002-05-07 03:34:20
/encoder/ctables.h 3.63 KB 2002-05-07 03:34:32
/encoder/dct.h 929 Bytes 2002-05-07 03:34:56
/encoder/def.h 4.66 KB 2002-05-07 03:37:30
/encoder/Global.h 1.76 KB 2002-05-07 03:37:30
/encoder/huffman.h 1.51 KB 2002-05-07 03:37:30
/encoder/libr263.h 2.27 KB 2002-05-07 03:37:30
/encoder/mot_est.h 1.38 KB 2002-05-07 03:38:00
/encoder/owntypes.h 1.17 KB 2002-05-07 03:38:22
/encoder/pred.h 1.73 KB 2002-05-07 03:38:40
/encoder/quant.h 974 Bytes 2002-05-07 03:38:58
/encoder/rlib.h 1.91 KB 2002-05-07 03:55:08
/encoder/stream.h 890 Bytes 2002-05-07 03:40:02
/encoder/struct.h 5.19 KB 2002-05-07 03:40:12
/encoder/coder.cpp 30.84 KB 2002-05-08 16:28:10
/encoder/countbit.cpp 17.74 KB 2002-05-07 03:34:12
/encoder/dct.cpp 23.50 KB 2002-05-07 03:37:30
/encoder/Global.cpp 1.32 KB 2002-05-07 03:35:20
/encoder/huffman.cpp 6.06 KB 2002-05-07 03:35:56
/encoder/libr263.cpp 8.04 KB 2002-05-08 19:46:38
/encoder/mot_est.cpp 12.30 KB 2002-05-07 03:55:08
/encoder/pred.cpp 12.27 KB 2002-05-07 03:38:32
/encoder/coder.h 1.81 KB 2002-05-07 03:37:30
/encoder/rlib.cpp 3.02 KB 2002-05-07 03:39:34
/encoder/stream.cpp 4.41 KB 2002-05-08 16:28:10
/res/VideoNet.rc2 400 Bytes 2002-05-04 09:55:30
/res/VideoNet.ico 1.05 KB 2002-05-04 09:55:30
Sponsored links
正在加载中……

Switch to the English version?

Yes
SourceCodeSky 英文版
No
SourceCodeSky 中文版

完善个人资料,获价值¥30元积分奖励!