VLC tips. ---------------- Building VLC. Use configure this way: $ ./configure --disable-gtk --disable-x11 --disable-xvideo --disable-dsp Then type 'make'. ----------------- Subtitle generation. This seems to be implemented OK. The output is bad sometimes, because the palette that is used is fixed, while it should be taken from a file named *.ifo on the DVD disc. I have experimented somewhat with the palette. I have found that the following proposed settings are 'average' OK for the discs I have tested. In src/video_output/video_spu.c: static int p_palette[4] = { 0x0000, 0xcccc, 0xffff, 0x0000 }; is OK. To get best results per disc (this will render results on some other discs useless), only the second number should be 0xffff while the rest is 0x000, and on some other discs the third number should be 0xffff while the rest is 0x0000. ----------------- turn 'keep aspect ratio' off. This will improve image quality considerably. In src/video_output/video_output.c: Kill the scaling part in routine: static void SetBufferPicture( vout_thread_t *p_vout, picture_t *p_pic ) Find and change this part to how it is here: /* * Computes new picture size */ if( p_pic != NULL ) { //disable aspect ratio scaling: i_pic_height = p_pic->i_height; i_pic_width = p_pic->i_width; /* Try horizontal scaling first - width must be a mutiple of 16 */ /* commented_out for disabled aspect ratio scaling: i_pic_width = (( p_vout->b_scale || (p_pic->i_width > i_vout_width)) ? i_vout_width : p_pic->i_width) & ~0xf; switch( p_pic->i_aspect_ratio ) { case AR_3_4_PICTURE: i_pic_height = i_pic_width * 3 / 4; break; case AR_16_9_PICTURE: i_pic_height = i_pic_width * 9 / 16; break; case AR_221_1_PICTURE: i_pic_height = i_pic_width * 100 / 221; break; case AR_SQUARE_PICTURE: default: i_pic_height = p_pic->i_height * i_pic_width / p_pic->i_width; break; } */ /* If picture dimensions using horizontal scaling are too large, use * vertical scaling. Since width must be a multiple of 16, height is * adjusted again after. */ /* commented_out for disabled aspect ratio scaling: if( i_pic_height > i_vout_height ) { i_pic_height = ( p_vout->b_scale || (p_pic->i_height > i_vout_height)) ? i_vout_height : p_pic->i_height; switch( p_pic->i_aspect_ratio ) { case AR_3_4_PICTURE: i_pic_width = (i_pic_height * 4 / 3) & ~0xf; i_pic_height = i_pic_width * 3 / 4; break; case AR_16_9_PICTURE: i_pic_width = (i_pic_height * 16 / 9) & ~0xf; i_pic_height = i_pic_width * 9 / 16; break; case AR_221_1_PICTURE: i_pic_width = (i_pic_height * 221 / 100) & ~0xf; i_pic_height = i_pic_width * 100 / 221; break; case AR_SQUARE_PICTURE: default: i_pic_width = (p_pic->i_width * i_pic_height / p_pic->i_height) & ~0xf; i_pic_height = p_pic->i_height * i_pic_width / p_pic->i_width; break; } } //end of commented_out parts for disabled aspect ratio scaling. */ /* Set picture position */ i_pic_x = (p_vout->i_width - i_pic_width) / 2; i_pic_y = (p_vout->i_height - i_pic_height) / 2; } .................