]> git.sesse.net Git - x264/commitdiff
set the SPS constraint_set[01]_flag based on the profile in use, just in case some...
authorLoren Merritt <pengvado@videolan.org>
Fri, 12 May 2006 08:17:53 +0000 (08:17 +0000)
committerLoren Merritt <pengvado@videolan.org>
Fri, 12 May 2006 08:17:53 +0000 (08:17 +0000)
git-svn-id: svn://svn.videolan.org/x264/trunk@523 df754926-b1dd-0310-bc7b-ec298dee348c

encoder/encoder.c
encoder/set.c

index 9933266e4684373660a47d861edd233cd6d37f90..cae7fb2a18a02201939a1c1f25df1d6ff183072f 100644 (file)
@@ -376,6 +376,7 @@ static int x264_validate_parameters( x264_t *h )
     h->param.i_bframe_bias = x264_clip3( h->param.i_bframe_bias, -90, 100 );
     h->param.b_bframe_pyramid = h->param.b_bframe_pyramid && h->param.i_bframe > 1;
     h->param.b_bframe_adaptive = h->param.b_bframe_adaptive && h->param.i_bframe > 0;
+    h->param.analyse.b_weighted_bipred = h->param.analyse.b_weighted_bipred && h->param.i_bframe > 0;
     h->mb.b_direct_auto_write = h->param.analyse.i_direct_mv_pred == X264_DIRECT_PRED_AUTO
                                 && h->param.i_bframe
                                 && ( h->param.rc.b_stat_write || !h->param.rc.b_stat_read );
@@ -441,7 +442,6 @@ static int x264_validate_parameters( x264_t *h )
     BOOLIFY( b_cabac );
     BOOLIFY( b_deblocking_filter );
     BOOLIFY( analyse.b_transform_8x8 );
-    BOOLIFY( analyse.b_weighted_bipred );
     BOOLIFY( analyse.b_bidir_me );
     BOOLIFY( analyse.b_chroma_me );
     BOOLIFY( analyse.b_fast_pskip );
index 048e4722701cd37221b0f11302f003c1b7c0b9a5..7a67c5fdaf806dddbe71a1122af135a6a6bb90ec 100644 (file)
@@ -88,8 +88,11 @@ void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param )
         sps->i_profile_idc  = PROFILE_BASELINE;
     sps->i_level_idc = param->i_level_idc;
 
-    sps->b_constraint_set0  = 0;
-    sps->b_constraint_set1  = 0;
+    sps->b_constraint_set0  = sps->i_profile_idc == PROFILE_BASELINE;
+    /* x264 doesn't support the features that are in Baseline and not in Main,
+     * namely arbitrary_slice_order and slice_groups. */
+    sps->b_constraint_set1  = sps->i_profile_idc <= PROFILE_MAIN;
+    /* Never set constraint_set2, it is not necessary and not used in real world. */
     sps->b_constraint_set2  = 0;
 
     sps->i_log2_max_frame_num = 4;  /* at least 4 */