# HG changeset patch # User rfelker # Date 1133552616 0 # Node ID c3893e949327ec21b1d0755312de658cb0e81f83 # Parent 9c94272f5eb7b91dd9dff80484ebf29bb5b939ea muxer_lavf MUST be disabled by default until someone adds AVParser support to it. Otherwise users will generate files with totally nonsensical pts if they use B frames! (And they are already doing so -- see mplayer-users list!) If anyone wants to volunteer to add AVParser support, go right ahead! But until then, do not remove this check. :) diff -r 9c94272f5eb7 -r c3893e949327 libmpdemux/muxer_lavf.c --- a/libmpdemux/muxer_lavf.c Fri Dec 02 19:41:25 2005 +0000 +++ b/libmpdemux/muxer_lavf.c Fri Dec 02 19:43:36 2005 +0000 @@ -38,9 +38,11 @@ } muxer_stream_priv_t; static char *conf_format = NULL; +static int conf_allow_lavf = 0; m_option_t lavfopts_conf[] = { {"format", &(conf_format), CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"i_certify_that_my_video_stream_does_not_use_b_frames", &conf_allow_lavf, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {NULL, NULL, 0, 0, 0, 0, NULL} }; @@ -296,6 +298,24 @@ muxer_priv_t *priv; AVOutputFormat *fmt = NULL; char mp_filename[256] = "menc://stream.dummy"; + + mp_msg(MSGT_MUXER, MSGL_WARN, "** MUXER_LAVF *****************************************************************\n"); + if (!conf_allow_lavf) { + mp_msg(MSGT_MUXER, MSGL_FATAL, +"If you wish to use libavformat muxing, you must ensure that your video stream\n" +"does not contain B frames (out of order decoding) and specify:\n" +" -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames\n" +"on the command line.\n"); + } else { + mp_msg(MSGT_MUXER, MSGL_WARN, +"You have certified that your video stream does not contain B frames.\n"); + } + mp_msg(MSGT_MUXER, MSGL_WARN, +"REMEMBER: MEncoder's libavformat muxing is presently broken and will generate\n" +"INCORRECT files in the presence of B frames. Moreover, due to bugs MPlayer\n" +"will play these INCORRECT files as if nothing were wrong!\n" +"*******************************************************************************\n"); + if (!conf_allow_lavf) return 0; priv = (muxer_priv_t *) calloc(1, sizeof(muxer_priv_t)); if(priv == NULL)