|
@@ -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 */
|
|
/* for encoder, treat the repeated buffer as new buffer */
|
|
if (is_encode_session(inst) && vb2->type == INPUT_MPLANE)
|
|
if (is_encode_session(inst) && vb2->type == INPUT_MPLANE)
|
|
found = false;
|
|
found = false;
|
|
- } else {
|
|
|
|
|
|
+ }
|
|
|
|
+ if (!found) {
|
|
buf = kzalloc(sizeof(struct msm_vidc_buffer), GFP_KERNEL);
|
|
buf = kzalloc(sizeof(struct msm_vidc_buffer), GFP_KERNEL);
|
|
if (!buf) {
|
|
if (!buf) {
|
|
i_vpr_e(inst, "%s: alloc failed\n", __func__);
|
|
i_vpr_e(inst, "%s: alloc failed\n", __func__);
|
|
goto error;
|
|
goto error;
|
|
}
|
|
}
|
|
- INIT_LIST_HEAD(&buf->list);
|
|
|
|
buf->dmabuf = dmabuf;
|
|
buf->dmabuf = dmabuf;
|
|
|
|
+ INIT_LIST_HEAD(&buf->list);
|
|
|
|
+ list_add_tail(&buf->list, &buffers->list);
|
|
}
|
|
}
|
|
rc = vb2_buffer_to_driver(vb2, buf);
|
|
rc = vb2_buffer_to_driver(vb2, buf);
|
|
if (rc)
|
|
if (rc)
|
|
goto error;
|
|
goto error;
|
|
|
|
|
|
- if (!found)
|
|
|
|
- list_add_tail(&buf->list, &buffers->list);
|
|
|
|
-
|
|
|
|
rc = msm_vidc_map_driver_buf(inst, buf);
|
|
rc = msm_vidc_map_driver_buf(inst, buf);
|
|
if (rc)
|
|
if (rc)
|
|
goto error;
|
|
goto error;
|