* vpar_blocks.h : video parser blocks management
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
+ * $Id: vpar_blocks.h,v 1.32 2001/01/18 05:13:22 sam Exp $
*
- * Authors:
+ * Authors: Christophe Massiot <massiot@via.ecp.fr>
+ * Jean-Marc Dressler <polux@via.ecp.fr>
+ * Stéphane Borel <stef@via.ecp.fr>
*
* This program 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.
- *
+ *
* This program 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.
+ * 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 this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
/* IDCT information */
dctelem_t ppi_blocks[12][64]; /* blocks */
- f_idct_t pf_idct[12]; /* sparse IDCT or not ? */
+ void ( * pf_idct[12] ) ( struct vdec_thread_s *,
+ dctelem_t*, int ); /* sparse IDCT or not ? */
int pi_sparse_pos[12]; /* position of the
* non-NULL coeff */
* matrices */
int pi_dc_dct_pred[3]; /* ISO/IEC 13818-2 7.2.1 */
int pppi_pmv[2][2][2]; /* Motion vect predictors, 7.6.3 */
+ int i_motion_dir;/* Used for the next skipped macroblock */
/* Context used to optimize block parsing */
int i_motion_type, i_mv_count, i_mv_format;
/*****************************************************************************
* Constants
*****************************************************************************/
-extern int pi_default_intra_quant[];
-extern int pi_default_nonintra_quant[];
+extern u8 pi_default_intra_quant[64];
+extern u8 pi_default_nonintra_quant[64];
extern u8 pi_scan[2][64];
/*****************************************************************************
void vpar_InitBMBType( struct vpar_thread_s * p_vpar );
void vpar_InitCodedPattern( struct vpar_thread_s * p_vpar );
void vpar_InitDCTTables( struct vpar_thread_s * p_vpar );
-void vpar_PictureDataGENERIC( struct vpar_thread_s * p_vpar, int i_mb_base );
-#if (VPAR_OPTIM_LEVEL > 0)
-void vpar_PictureData2I420F0( struct vpar_thread_s * p_vpar, int i_mb_base );
-void vpar_PictureData2P420F0( struct vpar_thread_s * p_vpar, int i_mb_base );
-void vpar_PictureData2B420F0( struct vpar_thread_s * p_vpar, int i_mb_base );
-#endif
-#if (VPAR_OPTIM_LEVEL > 1)
-void vpar_PictureData2I420TZ( struct vpar_thread_s * p_vpar, int i_mb_base );
-void vpar_PictureData2P420TZ( struct vpar_thread_s * p_vpar, int i_mb_base );
-void vpar_PictureData2B420TZ( struct vpar_thread_s * p_vpar, int i_mb_base );
-void vpar_PictureData2I420BZ( struct vpar_thread_s * p_vpar, int i_mb_base );
-void vpar_PictureData2P420BZ( struct vpar_thread_s * p_vpar, int i_mb_base );
-void vpar_PictureData2B420BZ( struct vpar_thread_s * p_vpar, int i_mb_base );
-#endif
+void vpar_InitScanTable( struct vpar_thread_s * p_vpar );
+void vpar_PictureData( struct vpar_thread_s * p_vpar, int i_mb_base );