Hi,
I came across this post https://devtalk.nvidia.com/default/topic/983587/jetson-tx1/gst-omx-plugin-build-error/post/5136394/ trying to build the “testegl” example under gstomx1_src/gst-omx1/examples/egl.
At first, I had the same problem as zeitgeist, but then I downloaded the gstomx1_src_quick_fix_r24_2_1 zip from post #8, and followed the steps from the README in it. With the modifications in place, ./configure worked for me.
But, when I try to make the library source, I’m getting:
ubuntu@tegra-ubuntu:~/gstomx1_src/gst-omx1$ make
make all-recursive
make[1]: Entering directory `/home/ubuntu/gstomx1_src/gst-omx1'
Making all in common
make[2]: Entering directory `/home/ubuntu/gstomx1_src/gst-omx1/common'
Making all in m4
make[3]: Entering directory `/home/ubuntu/gstomx1_src/gst-omx1/common/m4'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/ubuntu/gstomx1_src/gst-omx1/common/m4'
make[3]: Entering directory `/home/ubuntu/gstomx1_src/gst-omx1/common'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/home/ubuntu/gstomx1_src/gst-omx1/common'
make[2]: Leaving directory `/home/ubuntu/gstomx1_src/gst-omx1/common'
Making all in omx
make[2]: Entering directory `/home/ubuntu/gstomx1_src/gst-omx1/omx'
CC libgstomx_la-gstomxvideodec.lo
gstomxvideodec.c: In function 'gst_omx_video_dec_set_property':
gstomxvideodec.c:831:11: error: 'GstOMXVideoDec' has no member named 'output_buffers'
self->output_buffers = g_value_get_uint (value);
^
gstomxvideodec.c: In function 'gst_omx_video_dec_get_property':
gstomxvideodec.c:864:36: error: 'GstOMXVideoDec' has no member named 'output_buffers'
g_value_set_uint (value, self->output_buffers);
^
gstomxvideodec.c: In function 'gst_omx_video_dec_init':
gstomxvideodec.c:977:7: error: 'GstOMXVideoDec' has no member named 'output_buffers'
self->output_buffers = DEFAULT_OUTPUT_BUFFER;
^
gstomxvideodec.c:979:7: error: 'GstOMXVideoDec' has no member named 'enable_frame_type_reporting'
self->enable_frame_type_reporting = FALSE;
^
gstomxvideodec.c:980:7: error: 'GstOMXVideoDec' has no member named 'cpu_dec_buf'
self->cpu_dec_buf = FALSE;
^
gstomxvideodec.c: In function 'gst_omx_video_dec_open':
gstomxvideodec.c:1049:41: error: 'GstOMXVideoDec' has no member named 'enable_frame_type_reporting'
if (self->enable_error_check || self->enable_frame_type_reporting) {
^
gstomxvideodec.c:1053:13: error: 'GstOMXVideoDec' has no member named 'enable_frame_type_reporting'
self->enable_frame_type_reporting = FALSE;
^
gstomxvideodec.c: In function 'gst_omx_video_dec_loop':
gstomxvideodec.c:2606:9: error: 'NVX_VIDEO_DEC_OUTPUT_PARAMS_FLAG_FRAME_DEC_ERR_REPORT' undeclared (first use in this function)
NVX_VIDEO_DEC_OUTPUT_PARAMS_FLAG_FRAME_DEC_ERR_REPORT)
^
gstomxvideodec.c:2606:9: note: each undeclared identifier is reported only once for each function it appears in
gstomxvideodec.c:2613:40: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
if (pNvxVideoDecOutputExtraData->sDecErrReport.nDecodeError &
^
gstomxvideodec.c:2614:13: error: 'VIDEO_DEC_DECODED_ERROR_FATAL' undeclared (first use in this function)
VIDEO_DEC_DECODED_ERROR_FATAL) {
^
gstomxvideodec.c:2619:40: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
if (pNvxVideoDecOutputExtraData->sDecErrReport.nDecodeError &
^
gstomxvideodec.c:2620:13: error: 'VIDEO_DEC_DECODED_ERROR_MB_SYNTAX' undeclared (first use in this function)
VIDEO_DEC_DECODED_ERROR_MB_SYNTAX) {
^
gstomxvideodec.c:2626:40: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
if (pNvxVideoDecOutputExtraData->sDecErrReport.nDecodeError &
^
gstomxvideodec.c:2627:9: error: 'VIDEO_DEC_DECODED_ERROR_MISSING_SLICE' undeclared (first use in this function)
VIDEO_DEC_DECODED_ERROR_MISSING_SLICE) {
^
gstomxvideodec.c:2632:40: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
if (pNvxVideoDecOutputExtraData->sDecErrReport.nDecodeError &
^
gstomxvideodec.c:2633:13: error: 'VIDEO_DEC_DECODED_ERROR_PREV_FRAME_LOST' undeclared (first use in this function)
VIDEO_DEC_DECODED_ERROR_PREV_FRAME_LOST) {
^
gstomxvideodec.c:2639:40: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
if (pNvxVideoDecOutputExtraData->sDecErrReport.nDecodeError ==
^
gstomxvideodec.c:2640:13: error: 'VIDEO_DEC_DECODED_ERROR_NONE' undeclared (first use in this function)
VIDEO_DEC_DECODED_ERROR_NONE) {
^
gstomxvideodec.c:2647:44: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
pNvxVideoDecOutputExtraData->sDecErrReport.nDecodeError,
^
gstomxvideodec.c:2650:44: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
pNvxVideoDecOutputExtraData->sDecErrReport.nDecodedMBs,
^
gstomxvideodec.c:2652:44: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
pNvxVideoDecOutputExtraData->sDecErrReport.nConcealedMBs,
^
gstomxvideodec.c:2654:44: error: 'NVX_VIDEO_DEC_OUTPUT_EXTRA_DATA' has no member named 'sDecErrReport'
pNvxVideoDecOutputExtraData->sDecErrReport.nFrameDecodeTime, NULL);
^
gstomxvideodec.c:2665:12: error: 'GstOMXVideoDecClass' has no member named 'video_dec_loop'
if (klass->video_dec_loop) {
^
gstomxvideodec.c:2666:10: error: 'GstOMXVideoDecClass' has no member named 'video_dec_loop'
klass->video_dec_loop (buf);
^
gstomxvideodec.c:2715:42: error: 'GstOMXBuffer' has no member named 'Video_Meta'
gst_buffer_add_iva_meta(outbuf, &(buf->Video_Meta.VideoDecMeta));
^
gstomxvideodec.c:2743:58: error: 'GstOMXBuffer' has no member named 'Video_Meta'
gst_buffer_add_iva_meta(frame->output_buffer, &(buf->Video_Meta.VideoDecMeta));
^
gstomxvideodec.c:2765:60: error: 'GstOMXBuffer' has no member named 'Video_Meta'
gst_buffer_add_iva_meta(frame->output_buffer, &(buf->Video_Meta.VideoDecMeta));
^
gstomxvideodec.c: In function 'gst_omx_video_dec_decide_allocation':
gstomxvideodec.c:3890:11: error: 'GstOMXVideoDec' has no member named 'output_buffers'
if (self->output_buffers > min)
^
gstomxvideodec.c:3891:15: error: 'GstOMXVideoDec' has no member named 'output_buffers'
min = self->output_buffers;
^
make[2]: *** [libgstomx_la-gstomxvideodec.lo] Error 1
make[2]: Leaving directory `/home/ubuntu/gstomx1_src/gst-omx1/omx'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/ubuntu/gstomx1_src/gst-omx1'
make: *** [all] Error 2
Anyway, there is a binary of this library already included in the L4T filesystem I’m using:
ubuntu@tegra-ubuntu:~$ ls -l /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/ | grep omx
-rwxrwxr-x 1 root root 256664 Apr 26 10:59 libgstomx.so
However, I would like to be able to build the “testegl” example under gstomx1_src/gst-omx1/examples/egl.
Because ./configure worked, I got a Makefile under gstomx1_src/gst-omx1/examples/egl.
But, when I try to make the example, I’m getting:
ubuntu@tegra-ubuntu:~/gstomx1_src/gst-omx1/examples/egl$ make
CC testegl-testegl.o
testegl.c:57:22: fatal error: bcm_host.h: No such file or directory
#include "bcm_host.h"
^
compilation terminated.
make: *** [testegl-testegl.o] Error 1
I can’t see this file anywhere on the system:
ubuntu@tegra-ubuntu:~$ sudo find / -name bcm_host.h
ubuntu@tegra-ubuntu:~$
I’m using a Jetson TK1 with L4T release 21 revision 5, and I downloaded the source packages from here: https://developer.nvidia.com/linux-tegra-r215.
Please could you help?
Essentially, I’m looking for a way to do a zero copy pass of a decoded video frame from the CPU address space into the GPU address space.
I’m used to doing this on Android where external EGL images are wrapped around ion / dma_buf buffers.