]> git.sesse.net Git - x264/blobdiff - encoder/set.c
lossless mode enabled at qp=0
[x264] / encoder / set.c
index cc61b8b5ceffea5dea358cb1a781ade0380b6636..0471edb7c03add942d80972b87fc9d0bc842e3d0 100644 (file)
@@ -42,7 +42,10 @@ void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param )
 {
     sps->i_id = i_id;
 
-    if( param->analyse.b_transform_8x8 )
+    sps->b_qpprime_y_zero_transform_bypass = !param->rc.b_cbr && param->rc.i_qp_constant == 0;
+    if( sps->b_qpprime_y_zero_transform_bypass )
+        sps->i_profile_idc  = PROFILE_HIGH444;
+    else if( param->analyse.b_transform_8x8 )
         sps->i_profile_idc  = PROFILE_HIGH;
     else if( param->b_cabac || param->i_bframe > 0 )
         sps->i_profile_idc  = PROFILE_MAIN;
@@ -168,7 +171,7 @@ void x264_sps_write( bs_t *s, x264_sps_t *sps )
         bs_write_ue( s, 1 ); // chroma_format_idc = 4:2:0
         bs_write_ue( s, 0 ); // bit_depth_luma_minus8
         bs_write_ue( s, 0 ); // bit_depth_chroma_minus8
-        bs_write( s, 1, 0 ); // qpprime_y_zero_transform_bypass_flag
+        bs_write( s, 1, sps->b_qpprime_y_zero_transform_bypass );
         bs_write( s, 1, 0 ); // seq_scaling_matrix_present_flag
     }