Message ID | 20200701215616.30874-3-jonas@kwiboo.se (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: rkvdec: Add H.264 High 10 and 4:2:2 profile support | expand |
On Wed, 2020-07-01 at 21:56 +0000, Jonas Karlman wrote: > When decoding the second field in a complementary field pair the second > field is sharing the same frame_num with the first field. > > Currently the frame_num for the first field is wrapped when it matches the > field being decoded, this cause issues to decode the second field in a > complementary field pair. > > Fix this by using inclusive comparison, less than or equal. > > Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com> Thanks! Ezequiel > --- > drivers/staging/media/rkvdec/rkvdec-h264.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/staging/media/rkvdec/rkvdec-h264.c b/drivers/staging/media/rkvdec/rkvdec-h264.c > index 7b66e2743a4f..f0cfed84d60d 100644 > --- a/drivers/staging/media/rkvdec/rkvdec-h264.c > +++ b/drivers/staging/media/rkvdec/rkvdec-h264.c > @@ -754,7 +754,7 @@ static void assemble_hw_rps(struct rkvdec_ctx *ctx, > continue; > > if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM || > - dpb[i].frame_num < sl_params->frame_num) { > + dpb[i].frame_num <= sl_params->frame_num) { > p[i] = dpb[i].frame_num; > continue; > }
+Boris On Wed, 2020-07-01 at 21:56 +0000, Jonas Karlman wrote: > When decoding the second field in a complementary field pair the second > field is sharing the same frame_num with the first field. > > Currently the frame_num for the first field is wrapped when it matches the > field being decoded, this cause issues to decode the second field in a > complementary field pair. > > Fix this by using inclusive comparison, less than or equal. > > Signed-off-by: Jonas Karlman <jonas@kwiboo.se> > --- > drivers/staging/media/rkvdec/rkvdec-h264.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/staging/media/rkvdec/rkvdec-h264.c b/drivers/staging/media/rkvdec/rkvdec-h264.c > index 7b66e2743a4f..f0cfed84d60d 100644 > --- a/drivers/staging/media/rkvdec/rkvdec-h264.c > +++ b/drivers/staging/media/rkvdec/rkvdec-h264.c > @@ -754,7 +754,7 @@ static void assemble_hw_rps(struct rkvdec_ctx *ctx, > continue; > Taking a closer look here, I see this comment: /* * Assign an invalid pic_num if DPB entry at that position is inactive. * If we assign 0 in that position hardware will treat that as a real * reference picture with pic_num 0, triggering output picture * corruption. */ ChromeOS driver was setting 0xff on a non-active hw_rps table entry, but we are not doing so. Are we missing anything, or is this not really required (and so the comment is outdated)? Thanks, Ezequiel > if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM || > - dpb[i].frame_num < sl_params->frame_num) { > + dpb[i].frame_num <= sl_params->frame_num) { > p[i] = dpb[i].frame_num; > continue; > }
diff --git a/drivers/staging/media/rkvdec/rkvdec-h264.c b/drivers/staging/media/rkvdec/rkvdec-h264.c index 7b66e2743a4f..f0cfed84d60d 100644 --- a/drivers/staging/media/rkvdec/rkvdec-h264.c +++ b/drivers/staging/media/rkvdec/rkvdec-h264.c @@ -754,7 +754,7 @@ static void assemble_hw_rps(struct rkvdec_ctx *ctx, continue; if (dpb[i].flags & V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM || - dpb[i].frame_num < sl_params->frame_num) { + dpb[i].frame_num <= sl_params->frame_num) { p[i] = dpb[i].frame_num; continue; }
When decoding the second field in a complementary field pair the second field is sharing the same frame_num with the first field. Currently the frame_num for the first field is wrapped when it matches the field being decoded, this cause issues to decode the second field in a complementary field pair. Fix this by using inclusive comparison, less than or equal. Signed-off-by: Jonas Karlman <jonas@kwiboo.se> --- drivers/staging/media/rkvdec/rkvdec-h264.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)