video: driver: handle encoder repeat buffer scenario
Encoder yuv buffer dma_buffer addr can repeat. So donot attempt to add same buffer node again. Change-Id: Ic43e1704d4e355c5e98ee059e03107087260f202 Signed-off-by: Govindaraj Rajagopal <grajagop@codeaurora.org>
此提交包含在:
@@ -1376,22 +1376,21 @@ struct msm_vidc_buffer *msm_vidc_get_driver_buf(struct msm_vidc_inst *inst,
|
||||
/* for encoder, treat the repeated buffer as new buffer */
|
||||
if (is_encode_session(inst) && vb2->type == INPUT_MPLANE)
|
||||
found = false;
|
||||
} else {
|
||||
}
|
||||
if (!found) {
|
||||
buf = kzalloc(sizeof(struct msm_vidc_buffer), GFP_KERNEL);
|
||||
if (!buf) {
|
||||
i_vpr_e(inst, "%s: alloc failed\n", __func__);
|
||||
goto error;
|
||||
}
|
||||
INIT_LIST_HEAD(&buf->list);
|
||||
buf->dmabuf = dmabuf;
|
||||
INIT_LIST_HEAD(&buf->list);
|
||||
list_add_tail(&buf->list, &buffers->list);
|
||||
}
|
||||
rc = vb2_buffer_to_driver(vb2, buf);
|
||||
if (rc)
|
||||
goto error;
|
||||
|
||||
if (!found)
|
||||
list_add_tail(&buf->list, &buffers->list);
|
||||
|
||||
rc = msm_vidc_map_driver_buf(inst, buf);
|
||||
if (rc)
|
||||
goto error;
|
||||
|
新增問題並參考
封鎖使用者