mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-01 10:13:58 +08:00
[media] coda: copy headers in front of every I-frame
That way we don't have to rely on userspace to inject the headers on IDR requests, and there is always enough information to start decoding at an I-frame. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
7e68c53387
commit
f903ebf751
@ -1270,10 +1270,10 @@ static int coda_prepare_encode(struct coda_ctx *ctx)
|
||||
coda_set_gdi_regs(ctx);
|
||||
|
||||
/*
|
||||
* Copy headers at the beginning of the first frame for H.264 only.
|
||||
* In MPEG4 they are already copied by the coda.
|
||||
* Copy headers in front of the first frame and forced I frames for
|
||||
* H.264 only. In MPEG4 they are already copied by the CODA.
|
||||
*/
|
||||
if (src_buf->sequence == 0) {
|
||||
if (src_buf->sequence == 0 || force_ipicture) {
|
||||
pic_stream_buffer_addr =
|
||||
vb2_dma_contig_plane_dma_addr(&dst_buf->vb2_buf, 0) +
|
||||
ctx->vpu_header_size[0] +
|
||||
@ -1386,7 +1386,8 @@ static void coda_finish_encode(struct coda_ctx *ctx)
|
||||
wr_ptr = coda_read(dev, CODA_REG_BIT_WR_PTR(ctx->reg_idx));
|
||||
|
||||
/* Calculate bytesused field */
|
||||
if (dst_buf->sequence == 0) {
|
||||
if (dst_buf->sequence == 0 ||
|
||||
src_buf->flags & V4L2_BUF_FLAG_KEYFRAME) {
|
||||
vb2_set_plane_payload(&dst_buf->vb2_buf, 0, wr_ptr - start_ptr +
|
||||
ctx->vpu_header_size[0] +
|
||||
ctx->vpu_header_size[1] +
|
||||
|
Loading…
Reference in New Issue
Block a user