break;
                case PIXEL_ENCODING_YCBCR420:
                        pipes[pipe_cnt].dout.output_format = dm_420;
-                       pipes[pipe_cnt].dout.output_bpp = (output_bpc * 3) / 2;
+                       pipes[pipe_cnt].dout.output_bpp = (output_bpc * 3.0) / 2;
                        break;
                case PIXEL_ENCODING_YCBCR422:
                        if (true) /* todo */
                        pipes[pipe_cnt].dout.output_bpp = output_bpc * 3;
                }
 
+               if (res_ctx->pipe_ctx[i].stream->timing.flags.DSC)
+                       pipes[pipe_cnt].dout.output_bpp = res_ctx->pipe_ctx[i].stream->timing.dsc_cfg.bits_per_pixel / 16.0;
+
                /* todo: default max for now, until there is logic reflecting this in dc*/
                pipes[pipe_cnt].dout.output_bpc = 12;
                /*
 
                                dst->odm_combine;
                mode_lib->vba.OutputFormat[mode_lib->vba.NumberOfActivePlanes] =
                                (enum output_format_class) (dout->output_format);
+               mode_lib->vba.OutputBpp[mode_lib->vba.NumberOfActivePlanes] =
+                               dout->output_bpp;
                mode_lib->vba.Output[mode_lib->vba.NumberOfActivePlanes] =
                                (enum output_encoder_class) (dout->output_type);