diff options
-rw-r--r-- | multimedia/vlc/Makefile | 18 | ||||
-rw-r--r-- | multimedia/vlc/files/patch-modules_codec_x264.c | 187 |
2 files changed, 186 insertions, 19 deletions
diff --git a/multimedia/vlc/Makefile b/multimedia/vlc/Makefile index 45fdc7597e80..743d1d65e3cf 100644 --- a/multimedia/vlc/Makefile +++ b/multimedia/vlc/Makefile @@ -707,8 +707,8 @@ pre-install: ${MKDIR} ${FAKEDIR} ${TOUCH} -f ${PLIST} .if !defined(WITHOUT_WXGTK) - ${ECHO_CMD} "share/gnome/applications/vlc.desktop" >> ${PLIST} - ${ECHO_CMD} "share/gnome/pixmaps/vlc.png" >> ${PLIST} + ${ECHO_CMD} "share/applications/vlc.desktop" >> ${PLIST} + ${ECHO_CMD} "share/pixmaps/vlc.png" >> ${PLIST} .endif cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \ ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET} prefix=${FAKEDIR} @@ -743,17 +743,19 @@ pre-install: cd ${FAKEDIR}/mozilla && ${FIND} -s * | \ ${SED} -e 's|^|lib/browser_plugins/|' >> ${PLIST} .endif + ${ECHO_CMD} "@unexec ${RMDIR} %D/share/applications 2>/dev/null || ${TRUE}" >> ${PLIST} + ${ECHO_CMD} "@unexec ${RMDIR} %D/share/pixmaps 2>/dev/null || ${TRUE}" >> ${PLIST} do-install: .if !defined(WITHOUT_WXGTK) - if [ ! -d ${PREFIX}/share/gnome/applications ]; then \ - ${MKDIR} ${PREFIX}/share/gnome/applications ; \ + if [ ! -d ${PREFIX}/share/applications ]; then \ + ${MKDIR} ${PREFIX}/share/applications ; \ fi - ${INSTALL_DATA} ${FILESDIR}/vlc.desktop ${PREFIX}/share/gnome/applications - if [ ! -d ${PREFIX}/share/gnome/pixmaps ]; then \ - ${MKDIR} ${PREFIX}/share/gnome/pixmaps ; \ + ${INSTALL_DATA} ${FILESDIR}/vlc.desktop ${PREFIX}/share/applications + if [ ! -d ${PREFIX}/share/pixmaps ]; then \ + ${MKDIR} ${PREFIX}/share/pixmaps ; \ fi - ${INSTALL_DATA} ${FAKEDIR}/share/vlc/vlc48x48.png ${PREFIX}/share/gnome/pixmaps/vlc.png + ${INSTALL_DATA} ${FAKEDIR}/share/vlc/vlc48x48.png ${PREFIX}/share/pixmaps/vlc.png .endif @${REINPLACE_CMD} -e 's|${FAKEDIR}|${PREFIX}|' \ ${FAKEDIR}/bin/vlc-config diff --git a/multimedia/vlc/files/patch-modules_codec_x264.c b/multimedia/vlc/files/patch-modules_codec_x264.c index bcc5caf376b7..07697fce1a2a 100644 --- a/multimedia/vlc/files/patch-modules_codec_x264.c +++ b/multimedia/vlc/files/patch-modules_codec_x264.c @@ -1,19 +1,34 @@ --- modules/codec/x264.c.orig Thu Nov 11 13:50:16 2004 -+++ modules/codec/x264.c Thu Apr 21 08:45:37 2005 ++++ modules/codec/x264.c Sat May 21 16:14:56 2005 @@ -2,7 +2,7 @@ * x264.c: h264 video encoder ***************************************************************************** * Copyright (C) 2004 VideoLAN - * $Id: x264.c 9280 2004-11-11 12:31:27Z zorglub $ -+ * $Id: x264.c 10206 2005-03-08 13:15:56Z gbazin $ ++ * $Id: x264.c 10990 2005-05-13 11:13:05Z gbazin $ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> * -@@ -62,17 +62,19 @@ +@@ -62,22 +62,43 @@ #define ANALYSE_TEXT N_("Analyse mode") #define ANALYSE_LONGTEXT N_( "This selects the analysing mode.") -#define KEYINT_TEXT N_("Sets maximum interval between I frames") ++#define TOLERANCE_TEXT N_("Bitrate tolerance") ++#define TOLERANCE_LONGTEXT N_( "Sets the allowed variance in average " \ ++ "bitrate.") ++ ++#define VBV_MAXRATE_TEXT N_("Maximum local bitrate") ++#define VBV_MAXRATE_LONGTEXT N_( "Sets a maximum local bitrate in kbits/s.") ++ ++#define VBV_BUFSIZE_TEXT N_("Averaging period for the maximum local bitrate") ++#define VBV_BUFSIZE_LONGTEXT N_( "Sets an averaging preiod for the maximum " \ ++ "local bitrate, in kbits/s.") ++ ++#define VBV_INIT_TEXT N_("Initial buffer occupancy") ++#define VBV_INIT_LONGTEXT N_( "Sets the initial buffer occupancy as a " \ ++ "fraction of the buffer size.") ++ +#define KEYINT_TEXT N_("Sets maximum interval between IDR-frames") #define KEYINT_LONGTEXT N_( "Larger values save bits, thus improve quality "\ "for a given bitrate, at the cost of seeking precision." ) @@ -34,7 +49,45 @@ #define BFRAMES_TEXT N_("B frames") #define BFRAMES_LONGTEXT N_( "Number of consecutive B-Frames between I and " \ -@@ -125,8 +129,8 @@ + "P-frames." ) + ++#define BPYRAMID_TEXT N_("B pyramid") ++#define BPYRAMID_LONGTEXT N_( "Allows B-frames to be used as references for " \ ++ "predicting other frames." ) ++ + #define FRAMEREF_TEXT N_("Number of previous frames used as predictors.") + #define FRAMEREF_LONGTEXT N_( "This is effective in Anime, but seems to " \ + "make little difference in live-action source material. Some decoders " \ +@@ -92,6 +113,11 @@ + "-1 disables scene-cut detection, so I-frames are be inserted only every "\ + "other keyint frames, which probably leads to ugly encoding artifacts." ) + ++#define SUBPEL_TEXT N_("Sub-pixel refinement quality.") ++#define SUBPEL_LONGTEXT N_( "This parameter controls quality versus speed " \ ++ "tradeoffs involved in the motion estimation decision process " \ ++ "(lower = quicker and higher = better quality)." ) ++ + static char *enc_analyse_list[] = + { "", "all", "normal", "fast", "none" }; + static char *enc_analyse_list_text[] = +@@ -122,16 +150,33 @@ + ANALYSE_LONGTEXT, VLC_FALSE ); + change_string_list( enc_analyse_list, enc_analyse_list_text, 0 ); + ++ add_float( SOUT_CFG_PREFIX "tolerance", 1.0, NULL, TOLERANCE_TEXT, ++ TOLERANCE_LONGTEXT, VLC_FALSE ); ++ change_float_range( 0, 100 ); ++ ++ add_integer( SOUT_CFG_PREFIX "vbv-maxrate", 0, NULL, VBV_MAXRATE_TEXT, ++ VBV_MAXRATE_LONGTEXT, VLC_FALSE ); ++ ++ add_integer( SOUT_CFG_PREFIX "vbv-bufsize", 0, NULL, VBV_BUFSIZE_TEXT, ++ VBV_BUFSIZE_LONGTEXT, VLC_FALSE ); ++ ++ add_float( SOUT_CFG_PREFIX "vbv-init", 0.9, NULL, VBV_INIT_TEXT, ++ VBV_INIT_LONGTEXT, VLC_FALSE ); ++ change_float_range( 0, 1 ); ++ add_integer( SOUT_CFG_PREFIX "keyint", 250, NULL, KEYINT_TEXT, KEYINT_LONGTEXT, VLC_FALSE ); @@ -45,16 +98,98 @@ add_integer( SOUT_CFG_PREFIX "bframes", 0, NULL, BFRAMES_TEXT, BFRAMES_LONGTEXT, VLC_FALSE ); -@@ -147,7 +151,7 @@ + change_integer_range( 0, 16 ); + ++ add_bool( SOUT_CFG_PREFIX "bpyramid", 0, NULL, BPYRAMID_TEXT, ++ BPYRAMID_LONGTEXT, VLC_FALSE ); ++ + add_integer( SOUT_CFG_PREFIX "frameref", 1, NULL, FRAMEREF_TEXT, + FRAMEREF_LONGTEXT, VLC_FALSE ); + change_integer_range( 1, 15 ); +@@ -140,6 +185,10 @@ + SCENE_LONGTEXT, VLC_FALSE ); + change_integer_range( -1, 100 ); + ++ add_integer( SOUT_CFG_PREFIX "subpel", 5, NULL, SUBPEL_TEXT, ++ SUBPEL_LONGTEXT, VLC_FALSE ); ++ change_integer_range( 1, 5 ); ++ + vlc_module_end(); + + /***************************************************************************** +@@ -147,7 +196,8 @@ *****************************************************************************/ static const char *ppsz_sout_options[] = { "qp", "qp-min", "qp-max", "cabac", "loopfilter", "analyse", - "keyint", "idrint", "bframes", "frameref", "scenecut", NULL -+ "keyint", "keyint-min", "bframes", "frameref", "scenecut", NULL ++ "keyint", "keyint-min", "bframes", "bpyramid", "frameref", "scenecut", ++ "subpel", "tolerance", "vbv-maxrate", "vbv-bufsize", "vbv-init", NULL }; static block_t *Encode( encoder_t *, picture_t * ); -@@ -236,10 +240,19 @@ +@@ -180,10 +230,19 @@ + if( p_enc->fmt_in.video.i_width % 16 != 0 || + p_enc->fmt_in.video.i_height % 16!= 0 ) + { +- msg_Warn( p_enc, "invalid size %ix%i", +- p_enc->fmt_in.video.i_width, +- p_enc->fmt_in.video.i_height ); +- return VLC_EGENERIC; ++ msg_Warn( p_enc, "size is not a multiple of 16 (%ix%i)", ++ p_enc->fmt_in.video.i_width, p_enc->fmt_in.video.i_height ); ++ ++ if( p_enc->fmt_in.video.i_width < 16 || ++ p_enc->fmt_in.video.i_height < 16 ) ++ { ++ msg_Err( p_enc, "video is too small to be cropped" ); ++ return VLC_EGENERIC; ++ } ++ ++ msg_Warn( p_enc, "cropping video to %ix%i", ++ p_enc->fmt_in.video.i_width >> 4 << 4, ++ p_enc->fmt_in.video.i_height >> 4 << 4 ); + } + + sout_CfgParse( p_enc, SOUT_CFG_PREFIX, ppsz_sout_options, p_enc->p_cfg ); +@@ -196,8 +255,8 @@ + p_enc->p_sys = p_sys = malloc( sizeof( encoder_sys_t ) ); + + x264_param_default( &p_sys->param ); +- p_sys->param.i_width = p_enc->fmt_in.video.i_width; +- p_sys->param.i_height = p_enc->fmt_in.video.i_height; ++ p_sys->param.i_width = p_enc->fmt_in.video.i_width >> 4 << 4; ++ p_sys->param.i_height = p_enc->fmt_in.video.i_height >> 4 << 4; + + var_Get( p_enc, SOUT_CFG_PREFIX "qp-min", &val ); + if( val.i_int >= 1 && val.i_int <= 51 ) i_qmin = val.i_int; +@@ -224,9 +283,26 @@ + #if X264_BUILD >= 0x000a + p_sys->param.rc.b_cbr = 1; + p_sys->param.rc.i_bitrate = p_enc->fmt_out.i_bitrate / 1000; ++ ++#if X264_BUILD >= 24 ++ var_Get( p_enc, SOUT_CFG_PREFIX "tolerance", &val ); ++ p_sys->param.rc.f_rate_tolerance = val.f_float; ++ ++ var_Get( p_enc, SOUT_CFG_PREFIX "vbv-maxrate", &val ); ++ p_sys->param.rc.i_vbv_max_bitrate = val.i_int; ++ ++ var_Get( p_enc, SOUT_CFG_PREFIX "vbv-bufsize", &val ); ++ p_sys->param.rc.i_vbv_buffer_size = val.i_int; ++ if( !val.i_int ) ++ p_sys->param.rc.i_vbv_buffer_size = p_sys->param.rc.i_bitrate; ++ ++ var_Get( p_enc, SOUT_CFG_PREFIX "vbv-init", &val ); ++ p_sys->param.rc.f_vbv_buffer_init = val.f_float; ++#else + p_sys->param.rc.i_rc_buffer_size = p_sys->param.rc.i_bitrate; + p_sys->param.rc.i_rc_init_buffer = p_sys->param.rc.i_bitrate / 4; + #endif ++#endif + } + + var_Get( p_enc, SOUT_CFG_PREFIX "cabac", &val ); +@@ -236,14 +312,28 @@ p_sys->param.b_deblocking_filter = val.b_bool; var_Get( p_enc, SOUT_CFG_PREFIX "keyint", &val ); @@ -75,15 +210,45 @@ var_Get( p_enc, SOUT_CFG_PREFIX "bframes", &val ); if( val.i_int >= 0 && val.i_int <= 16 ) p_sys->param.i_bframe = val.i_int; -@@ -273,6 +286,7 @@ + ++#if X264_BUILD >= 22 ++ var_Get( p_enc, SOUT_CFG_PREFIX "bpyramid", &val ); ++ p_sys->param.b_bframe_pyramid = val.b_bool; ++#endif ++ + var_Get( p_enc, SOUT_CFG_PREFIX "frameref", &val ); + if( val.i_int > 0 && val.i_int <= 15 ) + p_sys->param.i_frame_reference = val.i_int; +@@ -254,6 +344,12 @@ + p_sys->param.i_scenecut_threshold = val.i_int; + #endif + ++#if X264_BUILD >= 22 ++ var_Get( p_enc, SOUT_CFG_PREFIX "subpel", &val ); ++ if( val.i_int >= 1 && val.i_int <= 5 ) ++ p_sys->param.analyse.i_subpel_refine = val.i_int; ++#endif ++ + var_Get( p_enc, SOUT_CFG_PREFIX "analyse", &val ); + if( !strcmp( val.psz_string, "none" ) ) + { +@@ -270,9 +366,14 @@ + } + else if( !strcmp( val.psz_string, "all" ) ) + { ++#ifndef X264_ANALYSE_BSUB16x16 ++# define X264_ANALYSE_BSUB16x16 0 ++#endif p_sys->param.analyse.inter = - X264_ANALYSE_I4x4 | X264_ANALYSE_PSUB16x16 | X264_ANALYSE_PSUB8x8; +- X264_ANALYSE_I4x4 | X264_ANALYSE_PSUB16x16 | X264_ANALYSE_PSUB8x8; ++ X264_ANALYSE_I4x4 | X264_ANALYSE_PSUB16x16 | X264_ANALYSE_PSUB8x8 | ++ X264_ANALYSE_BSUB16x16; } + if( val.psz_string ) free( val.psz_string ); if( p_enc->fmt_in.video.i_aspect > 0 ) { -@@ -347,12 +361,10 @@ +@@ -347,12 +448,10 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pict ) { encoder_sys_t *p_sys = p_enc->p_sys; @@ -98,7 +263,7 @@ /* init pic */ memset( &pic, 0, sizeof( x264_picture_t ) ); -@@ -364,7 +376,11 @@ +@@ -364,7 +463,11 @@ pic.img.i_stride[i] = p_pict->p[i].i_pitch; } |