media: venus: Fix NV12 decoder buffer discovery on HFI_VERSION_1XX
HFI_VERSION_1XX uses HFI_BUFFER_OUTPUT not HFI_BUFFER_OUTPUT2 for decoder buffers. venus_helper_check_format() places a constraint on an output buffer to be of type HFI_BUFFER_OUTPUT2. HFI_1XX uses HFI_BUFFER_OUTPUT though. Switching to the logic used in venus_helper_get_out_fmts() first checking for HFI_BUFFER_OUTPUT and then HFI_BUFFER_OUTPUT2 resolves on HFI_1XX. db410c before: root@linaro-alip:~# v4l2-ctl -d /dev/video0 --list-formats ioctl: VIDIOC_ENUM_FMT Type: Video Capture Multiplanar [0]: 'MPG4' (MPEG-4 Part 2 ES, compressed) [1]: 'H263' (H.263, compressed) [2]: 'H264' (H.264, compressed) [3]: 'VP80' (VP8, compressed) root@linaro-alip:~# v4l2-ctl -d /dev/video1 --list-formats ioctl: VIDIOC_ENUM_FMT Type: Video Capture Multiplanar db410c after: root@linaro-alip:~# v4l2-ctl -d /dev/video0 --list-formats ioctl: VIDIOC_ENUM_FMT Type: Video Capture Multiplanar [0]: 'MPG4' (MPEG-4 Part 2 ES, compressed) [1]: 'H263' (H.263, compressed) [2]: 'H264' (H.264, compressed) [3]: 'VP80' (VP8, compressed) root@linaro-alip:~# v4l2-ctl -d /dev/video1 --list-formats ioctl: VIDIOC_ENUM_FMT Type: Video Capture Multiplanar [0]: 'NV12' (Y/CbCr 4:2:0) Validated playback with ffplay on db410c with h264 and vp8 decoding. Fixes: 9593126dae3e ("media: venus: Add a handling of QC08C compressed format") Cc: stable@vger.kernel.org # v5.19 Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
06a2da340f
commit
7f77fa9f37
@ -1800,7 +1800,7 @@ bool venus_helper_check_format(struct venus_inst *inst, u32 v4l2_pixfmt)
|
|||||||
struct venus_core *core = inst->core;
|
struct venus_core *core = inst->core;
|
||||||
u32 fmt = to_hfi_raw_fmt(v4l2_pixfmt);
|
u32 fmt = to_hfi_raw_fmt(v4l2_pixfmt);
|
||||||
struct hfi_plat_caps *caps;
|
struct hfi_plat_caps *caps;
|
||||||
u32 buftype;
|
bool found;
|
||||||
|
|
||||||
if (!fmt)
|
if (!fmt)
|
||||||
return false;
|
return false;
|
||||||
@ -1809,12 +1809,13 @@ bool venus_helper_check_format(struct venus_inst *inst, u32 v4l2_pixfmt)
|
|||||||
if (!caps)
|
if (!caps)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (inst->session_type == VIDC_SESSION_TYPE_DEC)
|
found = find_fmt_from_caps(caps, HFI_BUFFER_OUTPUT, fmt);
|
||||||
buftype = HFI_BUFFER_OUTPUT2;
|
if (found)
|
||||||
else
|
goto done;
|
||||||
buftype = HFI_BUFFER_OUTPUT;
|
|
||||||
|
|
||||||
return find_fmt_from_caps(caps, buftype, fmt);
|
found = find_fmt_from_caps(caps, HFI_BUFFER_OUTPUT2, fmt);
|
||||||
|
done:
|
||||||
|
return found;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(venus_helper_check_format);
|
EXPORT_SYMBOL_GPL(venus_helper_check_format);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user