From mboxrd@z Thu Jan 1 00:00:00 1970
From: bugzilla-daemon@freedesktop.org
Subject: [Bug 106625] GPL Request: Where is AMD's patch for libomxil-bellagio
/ gst-plugins-omx to support HEVC decode?
Date: Wed, 23 May 2018 07:53:18 +0000
Message-ID:
Bug ID
106625
Summary
GPL Request: Where is AMD's patch for libomxil-bellagio / gst=
-plugins-omx to support HEVC decode?
Product
Mesa
Version
git
Hardware
x86-64 (AMD64)
OS
All
Status
NEW
Severity
enhancement
Priority
medium
Component
Drivers/Gallium/radeonsi
Assignee
dri-devel@lists.freedesktop.org
Reporter
hojuruku@gmail.com
QA Contact
dri-devel@lists.freedesktop.org
The gallium driver has a h265 decode module for libomxil-bella=
gio, but not for
https://github.co=
m/tizonia/tizonia-openmax-il implementation.
It's in /gallium/state_trackers/omx
https://github.com/freedesktop/mesa=
/blob/master/src/gallium/state_trackers/omx/bellagio/vid_dec_h265.c
tizonia includes EGL support so maybe it would be better to add the H265
encode/decode support to that because libomxil-beligago hasn't been updated
upstream since 2012.
Now I've checked with the official AMD Radeon (amdgpu) drivers 18.10 and th=
eir
bundled /etc/xdg/gstomx.conf doesn't have the hevc video decoder enabled by
default (through the configuration file), though I haven't checked yet if i=
t's
enabled in the code to make this a proper "GPL" source code reque=
st.
The patches are probably already floating AMD, OMX HEVC support has found i=
t's
way into mesa mesa but to the libraries that use it.
Can one use omx HEVC decode in the mesa state tracker without AMD's patch to
libomxil-bellago? Can you please release it?
[omxh264dec]
type-name=3DGstOMXH264Dec
core-name=3D/usr/lib64/libomxil-bellagio.so.0
component-name=3DOMX.mesa.video_decoder.avc
rank=3D258
in-port-index=3D0
out-port-index=3D1
[omxmpeg2dec]
type-name=3DGstOMXMPEG2VideoDec
core-name=3D/usr/lib64/libomxil-bellagio.so.0
component-name=3DOMX.mesa.video_decoder.mpeg2
rank=3D258
in-port-index=3D0
out-port-index=3D1
#[omxh265dec]
#type-name=3DGstOMXH265Dec
#core-name=3D/usr/lib64/libomxil-bellagio.so.0
#component-name=3DOMX.mesa.video_decoder.hevc
#in-port-index=3D0
#out-port-index=3D1
#rank=3D258
[omxh264enc]
type-name=3DGstOMXH264Enc
core-name=3D/usr/lib64/libomxil-bellagio.so.0
component-name=3DOMX.mesa.video_encoder.avc
in-port-index=3D0
out-port-index=3D1
The hevc decode support added a 6 months ago (1.14.0) to gst-plugins-omx is=
for
a different openmax implementation:
https://github.com/GStreamer/gst-omx/commit/5751001dd=
c0ea099d6cdbe817a6882959991a3c9
"Add HEVC decoder for the zynqultrascaleplus platform.
I used the H264 decoder code as a template.
https://bug=
zilla.gnome.org/show_bug.cgi?id=3D785434"
I know you probably implemented it differently but these are some of the th=
ings
missing from OMX_Video.h
typedef enum OMX_VIDEO_CODINGTYPE {
OMX_VIDEO_CodingUnused, /**< Value when coding is N/A */
OMX_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */
OMX_VIDEO_CodingMPEG2, /**< AKA: H.262 */
OMX_VIDEO_CodingH263, /**< H.263 */
OMX_VIDEO_CodingMPEG4, /**< MPEG-4 */
OMX_VIDEO_CodingWMV, /**< all versions of Windows Media Video=
*/
OMX_VIDEO_CodingRV, /**< all versions of Real Video */
OMX_VIDEO_CodingAVC, /**< H.264/AVC */
OMX_VIDEO_CodingMJPEG, /**< Motion JPEG */
OMX_VIDEO_CodingHEVC,
OMX_VIDEO_CodingKhronosExtensions =3D 0x6F000000, /**< Reserved regi=
on for
introducing Khronos Standard Extensions */
OMX_VIDEO_CodingVendorStartUnused =3D 0x7F000000, /**< Reserved regi=
on for
introducing Vendor Extensions */
OMX_VIDEO_CodingMax =3D 0x7FFFFFFF
} OMX_VIDEO_CODINGTYPE;
gstomxh265utils.h:29:1: error: unknown type name =E2=80=98OMX_VIDEO_HEVCPRO=
FILETYPE=E2=80=99;
did you mean =E2=80=98OMX_VIDEO_AVCPROFILETYPE=E2=80=99?
OMX_VIDEO_HEVCPROFILETYPE gst_omx_h265_utils_get_profile_from_str (const
^~~~~~~~~~~~~~~~~~~~~~~~~
OMX_VIDEO_AVCPROFILETYPE
gstomxh265utils.h:31:1: error: unknown type name =E2=80=98OMX_VIDEO_HEVCLEV=
ELTYPE=E2=80=99; did
you mean =E2=80=98OMX_VIDEO_AVCLEVELTYPE=E2=80=99?
OMX_VIDEO_HEVCLEVELTYPE gst_omx_h265_utils_get_level_from_str (const gchar=
*
^~~~~~~~~~~~~~~~~~~~~~~
OMX_VIDEO_AVCLEVELTYPE
gstomxh265utils.h:34:57: error: unknown type name =E2=80=98OMX_VIDEO_HEVCPR=
OFILETYPE=E2=80=99;
did you mean =E2=80=98OMX_VIDEO_AVCPROFILETYPE=E2=80=99?
const gchar * gst_omx_h265_utils_get_profile_from_enum
(OMX_VIDEO_HEVCPROFILETYPE e);
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20
^~~~~~~~~~~~~~~~~~~~~~~~~
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20
OMX_VIDEO_AVCPROFILETYPE
gstomxh265dec.c: In function =E2=80=98set_profile_and_level=E2=80=99:
gstomxh265dec.c:138:25: error: =E2=80=98OMX_VIDEO_HEVCProfileUnknown=E2=80=
=99 undeclared (first
use in this function); did you mean =E2=80=98OMX_VIDEO_AVCProfileMain=E2=80=
=99?
if (param.eProfile =3D=3D OMX_VIDEO_HEVCProfileUnknown)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
OMX_VIDEO_AVCProfileMain
gstomxh265dec.c:138:25: note: each undeclared identifier is reported only o=
nce
for each function it appears in
gstomxh265dec.c:148:23: error: =E2=80=98OMX_VIDEO_HEVCLevelUnknown=E2=80=99=
undeclared (first
use in this function); did you mean =E2=80=98OMX_VIDEO_HEVCProfileUnknown=
=E2=80=99?
if (param.eLevel =3D=3D OMX_VIDEO_HEVCLevelUnknown)
^~~~~~~~~~~~~~~~~~~~~~~~~~
OMX_VIDEO_HEVCProfileUnknown