else
                        coda_write(dev, CODA_STD_H264,
                                   CODA_CMD_ENC_SEQ_COD_STD);
-               if (ctx->params.h264_deblk_enabled) {
-                       value = ((ctx->params.h264_deblk_alpha &
-                                 CODA_264PARAM_DEBLKFILTEROFFSETALPHA_MASK) <<
-                                CODA_264PARAM_DEBLKFILTEROFFSETALPHA_OFFSET) |
-                               ((ctx->params.h264_deblk_beta &
-                                 CODA_264PARAM_DEBLKFILTEROFFSETBETA_MASK) <<
-                                CODA_264PARAM_DEBLKFILTEROFFSETBETA_OFFSET);
-               } else {
-                       value = 1 << CODA_264PARAM_DISABLEDEBLK_OFFSET;
-               }
+               value = ((ctx->params.h264_disable_deblocking_filter_idc &
+                         CODA_264PARAM_DISABLEDEBLK_MASK) <<
+                        CODA_264PARAM_DISABLEDEBLK_OFFSET) |
+                       ((ctx->params.h264_slice_alpha_c0_offset_div2 &
+                         CODA_264PARAM_DEBLKFILTEROFFSETALPHA_MASK) <<
+                        CODA_264PARAM_DEBLKFILTEROFFSETALPHA_OFFSET) |
+                       ((ctx->params.h264_slice_beta_offset_div2 &
+                         CODA_264PARAM_DEBLKFILTEROFFSETBETA_MASK) <<
+                        CODA_264PARAM_DEBLKFILTEROFFSETBETA_OFFSET);
                coda_write(dev, value, CODA_CMD_ENC_SEQ_264_PARA);
                break;
        case V4L2_PIX_FMT_JPEG:
 
                ctx->params.h264_max_qp = ctrl->val;
                break;
        case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA:
-               ctx->params.h264_deblk_alpha = ctrl->val;
+               ctx->params.h264_slice_alpha_c0_offset_div2 = ctrl->val;
                break;
        case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA:
-               ctx->params.h264_deblk_beta = ctrl->val;
+               ctx->params.h264_slice_beta_offset_div2 = ctrl->val;
                break;
        case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE:
-               ctx->params.h264_deblk_enabled = (ctrl->val ==
-                               V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED);
+               ctx->params.h264_disable_deblocking_filter_idc = ctrl->val;
                break;
        case V4L2_CID_MPEG_VIDEO_H264_PROFILE:
                /* TODO: switch between baseline and constrained baseline */
        v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
                V4L2_CID_MPEG_VIDEO_H264_MAX_QP, 0, 51, 1, 51);
        v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
-               V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA, 0, 15, 1, 0);
+               V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA, -6, 6, 1, 0);
        v4l2_ctrl_new_std(&ctx->ctrls, &coda_ctrl_ops,
-               V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA, 0, 15, 1, 0);
+               V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA, -6, 6, 1, 0);
        v4l2_ctrl_new_std_menu(&ctx->ctrls, &coda_ctrl_ops,
                V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE,
-               V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED, 0x0,
-               V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED);
+               V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY,
+               0x0, V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED);
        v4l2_ctrl_new_std_menu(&ctx->ctrls, &coda_ctrl_ops,
                V4L2_CID_MPEG_VIDEO_H264_PROFILE,
                V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, 0x0,