Changeset 647cca0ebb2e897a570018ba80483bb81a7d90c6
- Timestamp:
- 01/18/01 06:13:23 (7 years ago)
- git-parent:
- Files:
-
- INSTALL (modified) (1 diff)
- Makefile.in (modified) (8 diffs)
- configure (modified) (2 diffs)
- configure.in (modified) (2 diffs)
- debian/vlc.1 (modified) (1 diff)
- include/common.h (modified) (2 diffs)
- include/config.h.in (modified) (1 diff)
- include/modules.h (modified) (3 diffs)
- include/vdec_motion.h (added)
- include/vpar_blocks.h (added)
- plugins/idct/idct.c (modified) (2 diffs)
- plugins/idct/idctclassic.c (modified) (2 diffs)
- plugins/idct/idctmmx.c (modified) (2 diffs)
- plugins/motion/motion.c (added)
- plugins/motion/motionmmx.c (added)
- plugins/motion/motionmmxext.c (added)
- plugins/motion/vdec_motion_common.c (added)
- plugins/motion/vdec_motion_inner.c (added)
- plugins/motion/vdec_motion_inner_mmx.c (added)
- plugins/motion/vdec_motion_inner_mmxext.c (added)
- plugins/yuv/video_yuv.c (modified) (1 diff)
- plugins/yuv/yuv.c (modified) (1 diff)
- plugins/yuv/yuvmmx.c (modified) (1 diff)
- src/input/input_programs.c (modified) (2 diffs)
- src/interface/main.c (modified) (5 diffs)
- src/misc/modules.c (modified) (1 diff)
- src/video_decoder/vdec_motion.c (deleted)
- src/video_decoder/vdec_motion.h (deleted)
- src/video_decoder/vdec_motion_inner.c (deleted)
- src/video_decoder/vdec_motion_inner_mmx.c (deleted)
- src/video_decoder/vdec_motion_inner_mmxext.c (deleted)
- src/video_decoder/video_decoder.c (modified) (2 diffs)
- src/video_decoder/video_parser.h (modified) (2 diffs)
- src/video_decoder/vpar_blocks.h (deleted)
- src/video_parser/video_fifo.c (modified) (2 diffs)
- src/video_parser/video_parser.c (modified) (5 diffs)
- src/video_parser/vpar_blocks.c (modified) (6 diffs)
- src/video_parser/vpar_headers.c (modified) (2 diffs)
- src/video_parser/vpar_synchro.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
INSTALL
rffa693e r647cca0 29 29 30 30 31 Here's a shortcut to copy-paste to do a clean build : 32 33 make distclean 2>/dev/null ; ./configure --prefix=/usr --enable-gnome \ 34 --enable-fb --with-glide --with-ggi --with-sdl --enable-esd \ 35 --enable-alsa && make 36 37 31 38 Installing and running VideoLAN 32 39 =============================== Makefile.in
rcf0b7cf r647cca0 226 226 #GEN_DECODER = src/generic_decoder/generic_decoder.o 227 227 228 229 228 VIDEO_PARSER = src/video_parser/video_parser.o \ 230 229 src/video_parser/vpar_headers.o \ … … 233 232 src/video_parser/video_fifo.o 234 233 235 ifneq (,$(findstring mmx,$(ARCH))) 236 vdec_motion_inner = src/video_decoder/vdec_motion_inner_mmx.o 237 else 238 vdec_motion_inner = src/video_decoder/vdec_motion_inner.o 239 endif 240 241 VIDEO_DECODER = src/video_decoder/video_decoder.o \ 242 src/video_decoder/vdec_motion.o \ 243 $(vdec_motion_inner) 234 VIDEO_DECODER = src/video_decoder/video_decoder.o 244 235 245 236 MISC = src/misc/mtime.o \ … … 345 336 plugins/yuv/transforms_yuvmmx.o 346 337 338 PLUGIN_MOTION = plugins/motion/motion.o \ 339 plugins/motion/vdec_motion_common.o \ 340 plugins/motion/vdec_motion_inner.o 341 342 PLUGIN_MOTIONMMX = plugins/motion/motionmmx.o \ 343 plugins/motion/vdec_motion_common.o \ 344 plugins/motion/vdec_motion_inner_mmx.o 345 346 PLUGIN_MOTIONMMXEXT = plugins/motion/motionmmxext.o \ 347 plugins/motion/vdec_motion_common.o \ 348 plugins/motion/vdec_motion_inner_mmxext.o 349 347 350 PLUGIN_IDCT = plugins/idct/idct.o \ 348 351 plugins/idct/idct_common.o … … 370 373 $(PLUGIN_YUV) \ 371 374 $(PLUGIN_YUVMMX) \ 375 $(PLUGIN_MOTION) \ 376 $(PLUGIN_MOTIONMMX) \ 377 $(PLUGIN_MOTIONMMXEXT) \ 372 378 $(PLUGIN_IDCT) \ 373 379 $(PLUGIN_IDCTCLASSIC) \ … … 379 385 380 386 # list duplicates 381 STD_PLUGIN_COMMON = plugins/idct/idct_common.o 387 STD_PLUGIN_COMMON = plugins/idct/idct_common.o \ 388 plugins/motion/vdec_motion_common.o 382 389 383 390 # filter out duplicates from the plugin object lists … … 405 412 clean: 406 413 rm -f $(C_OBJ) $(CPP_OBJ) $(ASM_OBJ) $(STD_PLUGIN_OBJ) 407 rm -f plugins/*/*.o src/*/*.o 408 rm -f vlc @ALIASES@ lib/*.so414 rm -f plugins/*/*.o src/*/*.o lib/*.so 415 rm -f vlc @ALIASES@ 409 416 410 417 distclean: clean … … 559 566 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_ 560 567 568 lib/yuv.so: $(PLUGIN_YUV) 569 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_ 570 571 lib/yuvmmx.so: $(PLUGIN_YUVMMX) 572 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_ 573 574 lib/motion.so: $(PLUGIN_MOTION) 575 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_ 576 577 lib/motionmmx.so: $(PLUGIN_MOTIONMMX) 578 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_ 579 580 lib/motionmmxext.so: $(PLUGIN_MOTIONMMXEXT) 581 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_ 582 561 583 lib/idct.so: $(PLUGIN_IDCT) 562 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_563 564 lib/yuv.so: $(PLUGIN_YUV)565 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_566 567 lib/yuvmmx.so: $(PLUGIN_YUVMMX)568 584 $(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_ 569 585 … … 587 603 588 604 lib/yuvmmx.so: $(PLUGIN_YUVMMX) 605 $(CC) $(PCFLAGS) -shared -o $@ $^ 606 607 lib/motion.so: $(PLUGIN_MOTION) 608 $(CC) $(PCFLAGS) -shared -o $@ $^ 609 610 lib/motionmmx.so: $(PLUGIN_MOTIONMMX) 611 $(CC) $(PCFLAGS) -shared -o $@ $^ 612 613 lib/motionmmxext.so: $(PLUGIN_MOTIONMMXEXT) 589 614 $(CC) $(PCFLAGS) -shared -o $@ $^ 590 615 configure
r3a8481d r647cca0 3297 3297 3298 3298 3299 PLUGINS=${PLUGINS}"yuv idct idctclassic ";3299 PLUGINS=${PLUGINS}"yuv idct idctclassic motion "; 3300 3300 3301 3301 ARCH=${host_cpu} … … 3311 3311 if test "${enable_mmx+set}" = set; then 3312 3312 enableval="$enable_mmx" 3313 if test x$enableval = xyes; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx idctmmx idctmmxext "; fi3314 else 3315 if test x${host_cpu} = xi686 -o x${host_cpu} = xi586; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx idctmmx idctmmxext "; fi3313 if test x$enableval = xyes; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx motionmmx motionmmxext idctmmx idctmmxext "; fi 3314 else 3315 if test x${host_cpu} = xi686 -o x${host_cpu} = xi586; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx motionmmx motionmmxext idctmmx idctmmxext "; fi 3316 3316 fi 3317 3317 configure.in
r3a8481d r647cca0 109 109 110 110 dnl default plugins 111 PLUGINS=${PLUGINS}"yuv idct idctclassic ";111 PLUGINS=${PLUGINS}"yuv idct idctclassic motion "; 112 112 113 113 ARCH=${host_cpu} … … 118 118 AC_ARG_ENABLE(mmx, 119 119 [ --disable-mmx Disable MMX optimizations (default enabled for x86)], 120 [ if test x$enableval = xyes; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx idctmmx idctmmxext "; fi ],121 [ if test x${host_cpu} = xi686 -o x${host_cpu} = xi586; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx idctmmx idctmmxext "; fi ])120 [ if test x$enableval = xyes; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx motionmmx motionmmxext idctmmx idctmmxext "; fi ], 121 [ if test x${host_cpu} = xi686 -o x${host_cpu} = xi586; then ARCH=${ARCH}" mmx"; PLUGINS=${PLUGINS}"yuvmmx motionmmx motionmmxext idctmmx idctmmxext "; fi ]) 122 122 AC_ARG_ENABLE(debug, 123 123 [ --enable-debug Enable debug mode (default disabled)], debian/vlc.1
r619061c r647cca0 47 47 .B \-\-vout <module> 48 48 Specify a video output module: "gnome", "fb", "glide", for instance. 49 .TP 50 .B \-\-motion <module> 51 Specify a module for motion compensation: "motion", "motionmmx", for instance. 49 52 .TP 50 53 .B \-\-idct <module> include/common.h
r26ee312 r647cca0 4 4 ***************************************************************************** 5 5 * Copyright (C) 1998, 1999, 2000 VideoLAN 6 * $Id: common.h,v 1.2 4 2001/01/13 12:57:19sam Exp $6 * $Id: common.h,v 1.25 2001/01/18 05:13:22 sam Exp $ 7 7 * 8 8 * Authors: Samuel Hocevar <sam@via.ecp.fr> … … 129 129 typedef struct video_parser_s * p_video_parser_t; 130 130 131 /* Misc */ 132 struct macroblock_s; 133 131 134 /***************************************************************************** 132 135 * Macros and inline functions include/config.h.in
r619061c r647cca0 279 279 #define VOUT_METHOD_VAR "vlc_vout" 280 280 281 /* Environment variable containing the motion compensation method */ 282 #define MOTION_METHOD_VAR "vlc_motion" 283 281 284 /* Environment variable containing the IDCT method */ 282 285 #define IDCT_METHOD_VAR "vlc_idct" include/modules.h
rcf0b7cf r647cca0 41 41 #define MODULE_CAPABILITY_ADEC 1 << 3 /* Audio decoder */ 42 42 #define MODULE_CAPABILITY_VDEC 1 << 4 /* Video decoder */ 43 #define MODULE_CAPABILITY_IDCT 1 << 5 /* IDCT transformation */ 44 #define MODULE_CAPABILITY_AOUT 1 << 6 /* Audio output */ 45 #define MODULE_CAPABILITY_VOUT 1 << 7 /* Video output */ 46 #define MODULE_CAPABILITY_YUV 1 << 8 /* YUV colorspace conversion */ 47 #define MODULE_CAPABILITY_AFX 1 << 9 /* Audio effects */ 48 #define MODULE_CAPABILITY_VFX 1 << 10 /* Video effects */ 43 #define MODULE_CAPABILITY_MOTION 1 << 5 /* Video decoder */ 44 #define MODULE_CAPABILITY_IDCT 1 << 6 /* IDCT transformation */ 45 #define MODULE_CAPABILITY_AOUT 1 << 7 /* Audio output */ 46 #define MODULE_CAPABILITY_VOUT 1 << 8 /* Video output */ 47 #define MODULE_CAPABILITY_YUV 1 << 9 /* YUV colorspace conversion */ 48 #define MODULE_CAPABILITY_AFX 1 << 10 /* Audio effects */ 49 #define MODULE_CAPABILITY_VFX 1 << 11 /* Video effects */ 49 50 50 51 /* FIXME: not yet used */ … … 74 75 void ( * pf_close ) ( struct aout_thread_s * p_aout ); 75 76 } aout; 77 78 struct 79 { 80 #define motion_functions( yuv ) \ 81 void ( * pf_field_field_##yuv ) ( struct macroblock_s * ); \ 82 void ( * pf_field_16x8_##yuv ) ( struct macroblock_s * ); \ 83 void ( * pf_field_dmv_##yuv ) ( struct macroblock_s * ); \ 84 void ( * pf_frame_field_##yuv ) ( struct macroblock_s * ); \ 85 void ( * pf_frame_frame_##yuv ) ( struct macroblock_s * ); \ 86 void ( * pf_frame_dmv_##yuv ) ( struct macroblock_s * ); 87 motion_functions( 420 ) 88 motion_functions( 422 ) 89 motion_functions( 444 ) 90 #undef motion_functions 91 } motion; 76 92 77 93 struct … … 106 122 function_list_t adec; 107 123 function_list_t vdec; 124 function_list_t motion; 108 125 function_list_t idct; 109 126 function_list_t aout; plugins/idct/idct.c
rcf0b7cf r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: idct.c,v 1. 5 2001/01/17 18:17:30 massiotExp $5 * $Id: idct.c,v 1.6 2001/01/18 05:13:22 sam Exp $ 6 6 * 7 7 * Authors: Ga�Hendryckx <jimmy@via.ecp.fr> … … 74 74 { 75 75 p_module->psz_name = MODULE_STRING; 76 p_module->psz_longname = " CIDCT module";76 p_module->psz_longname = "IDCT module"; 77 77 p_module->psz_version = VERSION; 78 78 plugins/idct/idctclassic.c
rcf0b7cf r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: idctclassic.c,v 1. 5 2001/01/17 18:17:30 massiotExp $5 * $Id: idctclassic.c,v 1.6 2001/01/18 05:13:22 sam Exp $ 6 6 * 7 7 * Authors: Ga�Hendryckx <jimmy@via.ecp.fr> … … 74 74 { 75 75 p_module->psz_name = MODULE_STRING; 76 p_module->psz_longname = "classic CIDCT module";76 p_module->psz_longname = "classic IDCT module"; 77 77 p_module->psz_version = VERSION; 78 78 plugins/idct/idctmmx.c
rcf0b7cf r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: idctmmx.c,v 1. 6 2001/01/17 18:17:30 massiotExp $5 * $Id: idctmmx.c,v 1.7 2001/01/18 05:13:22 sam Exp $ 6 6 * 7 7 * Authors: Aaron Holtzman <aholtzma@ess.engr.uvic.ca> … … 154 154 else 155 155 { 156 return( 1 00 );156 return( 150 ); 157 157 } 158 158 } plugins/yuv/video_yuv.c
r619061c r647cca0 83 83 84 84 /* This module always works */ 85 return( 100 );85 return( 50 ); 86 86 } 87 87 plugins/yuv/yuv.c
rf56c4db r647cca0 65 65 { 66 66 p_module->psz_name = MODULE_STRING; 67 p_module->psz_longname = " C YUVmodule";67 p_module->psz_longname = "YUV transformations module"; 68 68 p_module->psz_version = VERSION; 69 69 plugins/yuv/yuvmmx.c
rf56c4db r647cca0 65 65 { 66 66 p_module->psz_name = MODULE_STRING; 67 p_module->psz_longname = "MMX YUV module";67 p_module->psz_longname = "MMX YUV transformations module"; 68 68 p_module->psz_version = VERSION; 69 69 src/input/input_programs.c
ra558a9b r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: input_programs.c,v 1.2 5 2001/01/12 17:33:18 massiotExp $5 * $Id: input_programs.c,v 1.26 2001/01/18 05:13:22 sam Exp $ 6 6 * 7 7 * Authors: … … 580 580 } 581 581 582 if( p_es->thread_id == 0 ) 583 { 584 return( -1 ); 585 } 586 582 587 if( p_es->p_decoder_fifo != NULL ) 583 588 { src/interface/main.c
rba59eb0 r647cca0 80 80 #define OPT_HEIGHT 164 81 81 #define OPT_COLOR 165 82 #define OPT_IDCT 166 83 #define OPT_YUV 167 82 #define OPT_MOTION 167 83 #define OPT_IDCT 168 84 #define OPT_YUV 169 84 85 85 86 #define OPT_VLANS 170 … … 123 124 { "grayscale", 0, 0, 'g' }, 124 125 { "color", 0, 0, OPT_COLOR }, 126 { "motion", 1, 0, OPT_MOTION }, 125 127 { "idct", 1, 0, OPT_IDCT }, 126 128 { "yuv", 1, 0, OPT_YUV }, … … 570 572 main_PutIntVariable( VOUT_GRAYSCALE_VAR, 0 ); 571 573 break; 574 case OPT_MOTION: /* --motion */ 575 main_PutPszVariable( MOTION_METHOD_VAR, optarg ); 576 break; 572 577 case OPT_IDCT: /* --idct */ 573 578 main_PutPszVariable( IDCT_METHOD_VAR, optarg ); … … 671 676 "\n -g, --grayscale \tgrayscale output" 672 677 "\n --color \tcolor output" 678 "\n --motion <module> \tmotion compensation method" 673 679 "\n --idct <module> \tIDCT method" 674 680 "\n --yuv <module> \tYUV method" … … 715 721 "\n " VOUT_FB_DEV_VAR "=<filename> \tframebuffer device path" 716 722 "\n " VOUT_GRAYSCALE_VAR "={1|0} \tgrayscale or color output" 723 "\n " MOTION_METHOD_VAR "=<method name> \tmotion compensation method" 717 724 "\n " IDCT_METHOD_VAR "=<method name> \tIDCT method" 718 725 "\n " YUV_METHOD_VAR "=<method name> \tYUV method" src/misc/modules.c
rf56c4db r647cca0 452 452 p_bank->first = p_module; 453 453 454 intf_Msg( "module: dynamic module `%s', %s", 455 p_module->psz_name, p_module->psz_longname ); 454 /* Immediate message so that a slow module doesn't make the user wait */ 455 intf_MsgImm( "module: dynamic module `%s', %s", 456 p_module->psz_name, p_module->psz_longname ); 456 457 457 458 return( 0 ); src/video_decoder/video_decoder.c
r454454b r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: video_decoder.c,v 1.4 4 2001/01/05 18:46:44 massiotExp $5 * $Id: video_decoder.c,v 1.45 2001/01/18 05:13:23 sam Exp $ 6 6 * 7 7 * Authors: Christophe Massiot <massiot@via.ecp.fr> … … 46 46 #include "video_output.h" 47 47 48 #include "vdec_motion.h" 48 49 #include "vdec_idct.h" 49 50 #include "video_decoder.h" 50 #include "vdec_motion.h"51 51 52 52 #include "vpar_blocks.h" src/video_decoder/video_parser.h
rcf0b7cf r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: video_parser.h,v 1. 5 2001/01/17 18:17:30 massiotExp $5 * $Id: video_parser.h,v 1.6 2001/01/18 05:13:23 sam Exp $ 6 6 * 7 7 * Authors: Christophe Massiot <massiot@via.ecp.fr> … … 134 134 u8 pi_default_nonintra_quant[64]; 135 135 136 /* Motion compensation plugin used and shortcuts */ 137 struct module_s * p_motion_module; 138 void ( * pppf_motion[4][2][4] ) ( struct macroblock_s * ); 139 void ( * ppf_motion_skipped[4][4] ) ( struct macroblock_s * ); 140 136 141 /* IDCT plugin used and shortcuts to access its capabilities */ 137 struct module_s * p_ module;142 struct module_s * p_idct_module; 138 143 idct_init_t pf_init; 139 144 f_idct_t pf_sparse_idct; src/video_parser/video_fifo.c
r26ee312 r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: video_fifo.c,v 1.2 7 2001/01/13 12:57:21sam Exp $5 * $Id: video_fifo.c,v 1.28 2001/01/18 05:13:23 sam Exp $ 6 6 * 7 7 * Authors: Christophe Massiot <massiot@via.ecp.fr> … … 42 42 43 43 #include "video_decoder.h" 44 #include "vdec_motion.h" 44 45 #include "../video_decoder/vdec_idct.h" 45 #include "../video_decoder/vdec_motion.h"46 46 47 #include " ../video_decoder/vpar_blocks.h"47 #include "vpar_blocks.h" 48 48 #include "../video_decoder/vpar_headers.h" 49 49 #include "../video_decoder/vpar_synchro.h" src/video_parser/video_parser.c
rcf0b7cf r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: video_parser.c,v 1.6 8 2001/01/17 18:17:31 massiotExp $5 * $Id: video_parser.c,v 1.69 2001/01/18 05:13:23 sam Exp $ 6 6 * 7 7 * Authors: Christophe Massiot <massiot@via.ecp.fr> … … 53 53 54 54 #include "video_decoder.h" 55 #include " ../video_decoder/vdec_motion.h"55 #include "vdec_motion.h" 56 56 #include "../video_decoder/vdec_idct.h" 57 57 58 #include " ../video_decoder/vpar_blocks.h"58 #include "vpar_blocks.h" 59 59 #include "../video_decoder/vpar_headers.h" 60 60 #include "../video_decoder/vpar_synchro.h" … … 102 102 p_vpar->p_vout = p_config->p_vout; 103 103 104 /* Choose the best IDCT module */ 105 p_vpar->p_module = module_Need( p_main->p_module_bank, 106 MODULE_CAPABILITY_IDCT, NULL ); 107 108 if( p_vpar->p_module == NULL ) 109 { 110 intf_ErrMsg( "vpar error: no suitable IDCT module" ); 104 /* 105 * Choose the best motion compensation module 106 */ 107 p_vpar->p_motion_module = module_Need( p_main->p_module_bank, 108 MODULE_CAPABILITY_MOTION, NULL ); 109 110 if( p_vpar->p_motion_module == NULL ) 111 { 112 intf_ErrMsg( "vpar error: no suitable motion compensation module" ); 111 113 free( p_vpar ); 112 114 return( 0 ); 113 115 } 114 116 115 #define idct_functions p_vpar->p_module->p_functions->idct.functions.idct 116 p_vpar->pf_init = idct_functions.pf_init; 117 p_vpar->pf_sparse_idct = idct_functions.pf_sparse_idct; 118 p_vpar->pf_idct = idct_functions.pf_idct; 119 p_vpar->pf_norm_scan = idct_functions.pf_norm_scan; 120 #undef idct_functions 117 #define m ( p_vpar->pppf_motion ) 118 #define s ( p_vpar->ppf_motion_skipped ) 119 #define f ( p_vpar->p_motion_module->p_functions->motion.functions.motion ) 120 m[0][0][0] = m[0][0][1] = m[0][0][2] = m[0][0][3] = NULL; 121 m[0][1][0] = m[0][1][1] = m[0][1][2] = m[0][1][3] = NULL; 122 m[1][0][0] = NULL; 123 m[1][1][0] = NULL; 124 m[2][0][0] = NULL; 125 m[2][1][0] = NULL; 126 m[3][0][0] = NULL; 127 m[3][1][0] = NULL; 128 129 m[1][0][1] = f.pf_field_field_420; 130 m[1][1][1] = f.pf_frame_field_420; 131 m[2][0][1] = f.pf_field_field_422; 132 m[2][1][1] = f.pf_frame_field_422; 133 m[3][0][1] = f.pf_field_field_444; 134 m[3][1][1] = f.pf_frame_field_444; 135 136 m[1][0][2] = f.pf_field_16x8_420; 137 m[1][1][2] = f.pf_frame_frame_420; 138 m[2][0][2] = f.pf_field_16x8_422; 139 m[2][1][2] = f.pf_frame_frame_422; 140 m[3][0][2] = f.pf_field_16x8_444; 141 m[3][1][2] = f.pf_frame_frame_444; 142 143 m[1][0][3] = f.pf_field_dmv_420; 144 m[1][1][3] = f.pf_frame_dmv_420; 145 m[2][0][3] = f.pf_field_dmv_422; 146 m[2][1][3] = f.pf_frame_dmv_422; 147 m[3][0][3] = f.pf_field_dmv_444; 148 m[3][1][3] = f.pf_frame_dmv_444; 149 150 s[0][0] = s[0][1] = s[0][2] = s[0][3] = NULL; 151 s[1][0] = NULL; 152 s[2][0] = NULL; 153 s[3][0] = NULL; 154 155 s[1][1] = f.pf_field_field_420; 156 s[2][1] = f.pf_field_field_422; 157 s[3][1] = f.pf_field_field_444; 158 159 s[1][2] = f.pf_field_field_420; 160 s[2][2] = f.pf_field_field_422; 161 s[3][2] = f.pf_field_field_444; 162 163 s[1][3] = f.pf_frame_frame_420; 164 s[2][3] = f.pf_frame_frame_422; 165 s[3][3] = f.pf_frame_frame_444; 166 #undef f 167 #undef s 168 #undef m 169 170 /* 171 * Choose the best IDCT module 172 */ 173 p_vpar->p_idct_module = module_Need( p_main->p_module_bank, 174 MODULE_CAPABILITY_IDCT, NULL ); 175 176 if( p_vpar->p_idct_module == NULL ) 177 { 178 intf_ErrMsg( "vpar error: no suitable IDCT module" ); 179 module_Unneed( p_main->p_module_bank, p_vpar->p_motion_module ); 180 free( p_vpar ); 181 return( 0 ); 182 } 183 184 #define f p_vpar->p_idct_module->p_functions->idct.functions.idct 185 p_vpar->pf_init = f.pf_init; 186 p_vpar->pf_sparse_idct = f.pf_sparse_idct; 187 p_vpar->pf_idct = f.pf_idct; 188 p_vpar->pf_norm_scan = f.pf_norm_scan; 189 #undef f 121 190 122 191 /* Spawn the video parser thread */ … … 125 194 { 126 195 intf_ErrMsg("vpar error: can't spawn video parser thread"); 127 module_Unneed( p_main->p_module_bank, p_vpar->p_module ); 196 module_Unneed( p_main->p_module_bank, p_vpar->p_idct_module ); 197 module_Unneed( p_main->p_module_bank, p_vpar->p_motion_module ); 128 198 free( p_vpar ); 129 199 return( 0 ); … … 435 505 vlc_mutex_destroy( &(p_vpar->synchro.fifo_lock) ); 436 506 437 module_Unneed( p_main->p_module_bank, p_vpar->p_module ); 507 module_Unneed( p_main->p_module_bank, p_vpar->p_idct_module ); 508 module_Unneed( p_main->p_module_bank, p_vpar->p_motion_module ); 438 509 439 510 free( p_vpar ); src/video_parser/vpar_blocks.c
rcf0b7cf r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: vpar_blocks.c,v 1.7 1 2001/01/17 18:17:31 massiotExp $5 * $Id: vpar_blocks.c,v 1.72 2001/01/18 05:13:23 sam Exp $ 6 6 * 7 7 * Authors: Christophe Massiot <massiot@via.ecp.fr> … … 46 46 47 47 #include "video_decoder.h" 48 #include "vdec_motion.h" 48 49 #include "../video_decoder/vdec_idct.h" 49 #include "../video_decoder/vdec_motion.h" 50 51 #include "../video_decoder/vpar_blocks.h" 50 51 #include "vpar_blocks.h" 52 52 #include "../video_decoder/vpar_headers.h" 53 53 #include "../video_decoder/vpar_synchro.h" … … 1586 1586 macroblock_t * p_mb; 1587 1587 1588 static f_motion_t pf_motion_skipped[4][4] =1589 {1590 {NULL, NULL, NULL, NULL},1591 {NULL, vdec_MotionFieldField420, vdec_MotionFieldField420,1592 vdec_MotionFrameFrame420},1593 {NULL, vdec_MotionFieldField422, vdec_MotionFieldField422,1594 vdec_MotionFrameFrame422},1595 {NULL, vdec_MotionFieldField444, vdec_MotionFieldField444,1596 vdec_MotionFrameFrame444},1597 };1598 1599 1588 if( i_coding_type == I_CODING_TYPE ) 1600 1589 { … … 1617 1606 1618 1607 /* Motion type is picture structure. */ 1619 p_mb->pf_motion = p f_motion_skipped[i_chroma_format]1620 [i_structure];1608 p_mb->pf_motion = p_vpar->ppf_motion_skipped[i_chroma_format] 1609 [i_structure]; 1621 1610 p_mb->i_coded_block_pattern = 0; 1622 1611 … … 1821 1810 * field picture */ 1822 1811 { 1823 static f_motion_t pppf_motion[4][2][4] =1824 {1825 { {NULL, NULL, NULL, NULL},1826 {NULL, NULL, NULL, NULL}1827 },1828 { {NULL, vdec_MotionFieldField420, vdec_MotionField16x8420,1829 vdec_MotionFieldDMV420},1830 {NULL, vdec_MotionFrameField420, vdec_MotionFrameFrame420,1831 vdec_MotionFrameDMV420}1832 },1833 { {NULL, vdec_MotionFieldField422, vdec_MotionField16x8422,1834 vdec_MotionFieldDMV422},1835 {NULL, vdec_MotionFrameField422, vdec_MotionFrameFrame422,1836 vdec_MotionFrameDMV422}1837 },1838 { {NULL, vdec_MotionFieldField444, vdec_MotionField16x8444,1839 vdec_MotionFieldDMV444},1840 {NULL, vdec_MotionFrameField444, vdec_MotionFrameFrame444,1841 vdec_MotionFrameDMV444}1842 }1843 };1844 1812 static int pi_x[12] = {0,8,0,8,0,0,0,0,8,8,8,8}; 1845 1813 static int pi_y[2][12] = { {0,0,8,8,0,0,8,8,0,0,8,8}, … … 1944 1912 1945 1913 /* Motion function pointer. */ 1946 p_mb->pf_motion = p ppf_motion[i_chroma_format]1947 [i_structure == FRAME_STRUCTURE]1948 [p_vpar->mb.i_motion_type];1914 p_mb->pf_motion = p_vpar->pppf_motion[i_chroma_format] 1915 [i_structure == FRAME_STRUCTURE] 1916 [p_vpar->mb.i_motion_type]; 1949 1917 1950 1918 if( p_mb->i_mb_type & MB_PATTERN ) src/video_parser/vpar_headers.c
rcf0b7cf r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: vpar_headers.c,v 1.7 3 2001/01/17 18:17:31 massiotExp $5 * $Id: vpar_headers.c,v 1.74 2001/01/18 05:13:23 sam Exp $ 6 6 * 7 7 * Authors: Christophe Massiot <massiot@via.ecp.fr> … … 45 45 46 46 #include "video_decoder.h" 47 #include "vdec_motion.h" 47 48 #include "../video_decoder/vdec_idct.h" 48 #include "../video_decoder/vdec_motion.h" 49 50 #include "../video_decoder/vpar_blocks.h" 49 50 #include "vpar_blocks.h" 51 51 #include "../video_decoder/vpar_headers.h" 52 52 #include "../video_decoder/vpar_synchro.h" src/video_parser/vpar_synchro.c
r3a8481d r647cca0 3 3 ***************************************************************************** 4 4 * Copyright (C) 1999, 2000 VideoLAN 5 * $Id: vpar_synchro.c,v 1.7 7 2001/01/16 18:06:01 massiotExp $5 * $Id: vpar_synchro.c,v 1.78 2001/01/18 05:13:23 sam Exp $ 6 6 * 7 7 * Authors: Christophe Massiot <massiot@via.ecp.fr> … … 114 114 115 115 #include "video_decoder.h" 116 #include "vdec_motion.h" 116 117 #include "../video_decoder/vdec_idct.h" 117 #include "../video_decoder/vdec_motion.h" 118 119 #include "../video_decoder/vpar_blocks.h" 118 119 #include "vpar_blocks.h" 120 120 #include "../video_decoder/vpar_headers.h" 121 121 #include "../video_decoder/vpar_synchro.h"
