* flags: VPDMA flags to configure some descriptor fileds
  */
 void vpdma_add_out_dtd(struct vpdma_desc_list *list, int width,
-               const struct v4l2_rect *c_rect,
+               int stride, const struct v4l2_rect *c_rect,
                const struct vpdma_data_format *fmt, dma_addr_t dma_addr,
                int max_w, int max_h, enum vpdma_channel chan, u32 flags)
 {
-       vpdma_rawchan_add_out_dtd(list, width, c_rect, fmt, dma_addr,
+       vpdma_rawchan_add_out_dtd(list, width, stride, c_rect, fmt, dma_addr,
                                  max_w, max_h, chan_info[chan].num, flags);
 }
 EXPORT_SYMBOL(vpdma_add_out_dtd);
 
 void vpdma_rawchan_add_out_dtd(struct vpdma_desc_list *list, int width,
-               const struct v4l2_rect *c_rect,
+               int stride, const struct v4l2_rect *c_rect,
                const struct vpdma_data_format *fmt, dma_addr_t dma_addr,
                int max_w, int max_h, int raw_vpdma_chan, u32 flags)
 {
        int channel, next_chan;
        struct v4l2_rect rect = *c_rect;
        int depth = fmt->depth;
-       int stride;
        struct vpdma_dtd *dtd;
 
        channel = next_chan = raw_vpdma_chan;
                depth = 8;
        }
 
-       stride = ALIGN((depth * width) >> 3, VPDMA_STRIDE_ALIGN);
-
        dma_addr += rect.top * stride + (rect.left * depth >> 3);
 
        dtd = list->next;
  *                     contribute to the client)
  */
 void vpdma_add_in_dtd(struct vpdma_desc_list *list, int width,
-               const struct v4l2_rect *c_rect,
+               int stride, const struct v4l2_rect *c_rect,
                const struct vpdma_data_format *fmt, dma_addr_t dma_addr,
                enum vpdma_channel chan, int field, u32 flags, int frame_width,
                int frame_height, int start_h, int start_v)
        int depth = fmt->depth;
        int channel, next_chan;
        struct v4l2_rect rect = *c_rect;
-       int stride;
        struct vpdma_dtd *dtd;
 
        channel = next_chan = chan_info[chan].num;
                depth = 8;
        }
 
-       stride = ALIGN((depth * width) >> 3, VPDMA_STRIDE_ALIGN);
-
        dma_addr += rect.top * stride + (rect.left * depth >> 3);
 
        dtd = list->next;
 
 void vpdma_add_abort_channel_ctd(struct vpdma_desc_list *list,
                int chan_num);
 void vpdma_add_out_dtd(struct vpdma_desc_list *list, int width,
-               const struct v4l2_rect *c_rect,
+               int stride, const struct v4l2_rect *c_rect,
                const struct vpdma_data_format *fmt, dma_addr_t dma_addr,
                int max_w, int max_h, enum vpdma_channel chan, u32 flags);
 void vpdma_rawchan_add_out_dtd(struct vpdma_desc_list *list, int width,
-               const struct v4l2_rect *c_rect,
+               int stride, const struct v4l2_rect *c_rect,
                const struct vpdma_data_format *fmt, dma_addr_t dma_addr,
                int max_w, int max_h, int raw_vpdma_chan, u32 flags);
 
 void vpdma_add_in_dtd(struct vpdma_desc_list *list, int width,
-               const struct v4l2_rect *c_rect,
+               int stride, const struct v4l2_rect *c_rect,
                const struct vpdma_data_format *fmt, dma_addr_t dma_addr,
                enum vpdma_channel chan, int field, u32 flags, int frame_width,
                int frame_height, int start_h, int start_v);
 
        vpdma_set_max_size(ctx->dev->vpdma, VPDMA_MAX_SIZE1,
                           MAX_W, MAX_H);
 
-       vpdma_add_out_dtd(&ctx->desc_list, q_data->width, &q_data->c_rect,
+       vpdma_add_out_dtd(&ctx->desc_list, q_data->width,
+                         q_data->bytesperline[VPE_LUMA], &q_data->c_rect,
                          vpdma_fmt, dma_addr, MAX_OUT_WIDTH_REG1,
                          MAX_OUT_HEIGHT_REG1, p_data->channel, flags);
 }
        if (p_data->vb_part && fmt->fourcc == V4L2_PIX_FMT_NV12)
                frame_height /= 2;
 
-       vpdma_add_in_dtd(&ctx->desc_list, q_data->width, &q_data->c_rect,
+       vpdma_add_in_dtd(&ctx->desc_list, q_data->width,
+                        q_data->bytesperline[VPE_LUMA], &q_data->c_rect,
                vpdma_fmt, dma_addr, p_data->channel, field, flags, frame_width,
                frame_height, 0, 0);
 }