{
        struct vb2_buffer *vb = &buf->vb2_buf;
        struct coda_dev *dev = ctx->dev;
+       struct coda_q_data *q_data_src;
+       struct v4l2_rect *r;
        size_t bufsize;
        int ret;
        int i;
        if (dev->devtype->product == CODA_960)
                bufsize /= 1024;
        coda_write(dev, bufsize, CODA_CMD_ENC_HEADER_BB_SIZE);
+       if (dev->devtype->product == CODA_960 &&
+           ctx->codec->dst_fourcc == V4L2_PIX_FMT_H264 &&
+           header_code == CODA_HEADER_H264_SPS) {
+               q_data_src = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
+               r = &q_data_src->rect;
+
+               if (r->width % 16 || r->height % 16) {
+                       u32 crop_right = round_up(r->width, 16) -  r->width;
+                       u32 crop_bottom = round_up(r->height, 16) - r->height;
+
+                       coda_write(dev, crop_right,
+                                  CODA9_CMD_ENC_HEADER_FRAME_CROP_H);
+                       coda_write(dev, crop_bottom,
+                                  CODA9_CMD_ENC_HEADER_FRAME_CROP_V);
+                       header_code |= CODA9_HEADER_FRAME_CROP;
+               }
+       }
        coda_write(dev, header_code, CODA_CMD_ENC_HEADER_CODE);
        ret = coda_command_sync(ctx, CODA_COMMAND_ENCODE_HEADER);
        if (ret < 0) {