/[pcsx2_0.9.7]/trunk/pcsx2/IPU/mpeg2lib/Mpeg.cpp
ViewVC logotype

Diff of /trunk/pcsx2/IPU/mpeg2lib/Mpeg.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 273 by william, Fri Nov 12 01:10:22 2010 UTC revision 280 by william, Thu Dec 23 12:02:12 2010 UTC
# Line 33  Line 33 
33  #include "Mpeg.h"  #include "Mpeg.h"
34  #include "Vlc.h"  #include "Vlc.h"
35    
36    #include "Utilities/MemsetFast.inl"
37    
38  const int non_linear_quantizer_scale [] =  const int non_linear_quantizer_scale [] =
39  {  {
40          0,  1,  2,  3,  4,  5,  6,      7,          0,  1,  2,  3,  4,  5,  6,      7,
# Line 133  int get_macroblock_modes() Line 135  int get_macroblock_modes()
135                                  {                                  {
136                                          macroblock_modes |= GETBITS(2) * MOTION_TYPE_BASE;                                          macroblock_modes |= GETBITS(2) * MOTION_TYPE_BASE;
137                                  }                                  }
138                                    return (macroblock_modes | (tab->len << 16));
                                 return macroblock_modes;  
139                          }                          }
140                          else if (decoder.frame_pred_frame_dct)                          else if (decoder.frame_pred_frame_dct)
141                          {                          {
142                                  /* if (! (macroblock_modes & MACROBLOCK_INTRA)) */                                  /* if (! (macroblock_modes & MACROBLOCK_INTRA)) */
143                                  macroblock_modes |= MC_FRAME;                                  macroblock_modes |= MC_FRAME;
144                                  return macroblock_modes;                                  return (macroblock_modes | (tab->len << 16));
145                          }                          }
146                          else                          else
147                          {                          {
# Line 153  int get_macroblock_modes() Line 154  int get_macroblock_modes()
154  intra:  intra:
155                                          macroblock_modes |= GETBITS(1) * DCT_TYPE_INTERLACED;                                          macroblock_modes |= GETBITS(1) * DCT_TYPE_INTERLACED;
156                                  }                                  }
157                                    return (macroblock_modes | (tab->len << 16));
                                 return macroblock_modes;  
158                          }                          }
159    
160                  case D_TYPE:                  case D_TYPE:
161                          macroblock_modes = GETBITS(1);                          macroblock_modes = GETBITS(1);
162                            //I suspect (as this is actually a 2 bit command) that this should be getbits(2)
163                            //additionally, we arent dumping any bits here when i think we should be, need a game to test. (Refraction)
164                            DevCon.Warning(" Rare MPEG command! ");
165                          if (macroblock_modes == 0) return 0;   // error                          if (macroblock_modes == 0) return 0;   // error
166                          return MACROBLOCK_INTRA;                          return (MACROBLOCK_INTRA | (1 << 16));
167    
168                  default:                  default:
169                          return 0;                          return 0;
# Line 220  int __fi get_motion_delta(const int f_co Line 222  int __fi get_motion_delta(const int f_co
222    
223          sign = SBITS(1);          sign = SBITS(1);
224          DUMPBITS(1);          DUMPBITS(1);
225          return (delta ^ sign) - sign;  
226            return (((delta ^ sign) - sign) | (tab->len << 16));
227  }  }
228    
229  int __fi get_dmv()  int __fi get_dmv()
230  {  {
231          const DMVtab* tab = DMV_2 + UBITS(2);          const DMVtab* tab = DMV_2 + UBITS(2);
232          DUMPBITS(tab->len);          DUMPBITS(tab->len);
233          return tab->dmv;          return (tab->dmv | (tab->len << 16));
234  }  }
235    
236  int get_macroblock_address_increment()  int get_macroblock_address_increment()
# Line 244  int get_macroblock_address_increment() Line 247  int get_macroblock_address_increment()
247          {          {
248                  case 8:         /* macroblock_escape */                  case 8:         /* macroblock_escape */
249                          DUMPBITS(11);                          DUMPBITS(11);
250                          return 0x23;                          return 0xb0023;
251    
252                  case 15:        /* macroblock_stuffing (MPEG1 only) */                  case 15:        /* macroblock_stuffing (MPEG1 only) */
253                          if (decoder.mpeg1)                          if (decoder.mpeg1)
254                          {                          {
255                                  DUMPBITS(11);                                  DUMPBITS(11);
256                                  return 0x22;                                  return 0xb0022;
257                          }                          }
258    
259                  default:                  default:
# Line 259  int get_macroblock_address_increment() Line 262  int get_macroblock_address_increment()
262    
263          DUMPBITS(mba->len);          DUMPBITS(mba->len);
264    
265          return mba->mba + 1;          return ((mba->mba + 1) | (mba->len << 16));
266  }  }
267    
268  static __fi int get_luma_dc_dct_diff()  static __fi int get_luma_dc_dct_diff()

Legend:
Removed from v.273  
changed lines
  Added in v.280

  ViewVC Help
Powered by ViewVC 1.1.22