NRCHKB / nrchkb-ffmpeg-build

A fully updatable FFmpeg build script for multiple Pi versions and OS's
https://nrchkb.github.io/nrchkb-ffmpeg-build
MIT License
19 stars 3 forks source link

ERROR: OpenMAX IL headers from raspberrypi/firmware not found #10

Closed gaamaaresosa closed 1 year ago

gaamaaresosa commented 1 year ago

I tried this is Raspberry Pi OS Bullseye (32bit) Lite I said YES to h264_OMX. I get the below error and stoped.

I tried few other script on the internet to build ffmpeg on Raspberry Pi OS Bullseye (32bit) Lite. Nothing works a on todays date. Most on the Mirror sites fails with Hash validation. "May be that's Linux" Repository path changes after some period of time and we face such issues.

2023-02-13 17:29:40 (5.34 MB/s) - ‘ffmpeg-snapshot.tar.bz2’ saved [12352077/12352077]

Extracting source code... ERROR: OpenMAX IL headers from raspberrypi/firmware not found

marcus-j-davies commented 1 year ago

Hi @gaamaaresosa

Providing your absolutely sure your using 32Bit and not 64Bit, you can try installing 'libomxil-bellagio-dev' before running the script - it's normally included with Raspberry pi OS, so maybe that's now changed.

The OMX library is an extremely old implementation, and it's been replaced with 'h264_v4l2m2m' that gets compiled.

gaamaaresosa commented 1 year ago

Hi @gaamaaresosa

Providing your absolutely sure your using 32Bit and not 64Bit, you can try installing 'libomxil-bellagio-dev' before running the script.

The OMX library is an extremely old implementation, and it's been replaced with 'h264_v4l2m2m' that get compiled.

Thanks for your swift responce. I have tried 'h264_v4l2m2m', but it uses only one cpu core and that too 100% Where as h264_OMX uses all 4 cores and all are <60% I am not sure which is safe as far as CPU temperature is concern.

I will try 'libomxil-bellagio-dev' immediately. Can you please help me to build ffmpeg for Bullseys 32bit with h264_OMX and h264_v4l2m2m options ?

marcus-j-davies commented 1 year ago

libomxil-bellagio-dev is the OMX Development files/headers, so proving you install them first - the build should succeed.

gaamaaresosa commented 1 year ago

libomxil-bellagio-dev is the OMX Development files/headers, so proving you install them first - the build should succeed.

Thanks again, I have just started building after instaling "libomxil-bellagio-dev" Btw, why can't you install it on your *.sh script itself ?

marcus-j-davies commented 1 year ago

These headers file are usually available on the OS, I'm a little surprised they weren't found to be honest.

gaamaaresosa commented 1 year ago

First I tried in Buster 32bit and below error:

In file included from ./libavutil/libm.h:29, from libavcodec/aacps_tablegen.h:35, from libavcodec/aacps_tablegen_template.c:39, from libavcodec/aacps_tablegen.c:24: ./config.h:594: warning: "CONFIG_HARDCODED_TABLES" redefined

define CONFIG_HARDCODED_TABLES 1

In file included from libavcodec/aacps_tablegen.c:24: libavcodec/aacps_tablegen_template.c:25: note: this is the location of the previous definition

define CONFIG_HARDCODED_TABLES 0

In file included from libavcodec/aacps_tablegen_template.c:39, from libavcodec/aacps_tablegen.c:24: libavcodec/aacps_tablegen.h:46:24: error: expected declaration specifiers or ‘...’ before numeric constant static DECLARE_ALIGNED(16, float, f20_0_8) [ 8][8][2]; ^~ libavcodec/aacps_tablegen.h:46:35: error: unknown type name ‘f20_0_8’ static DECLARE_ALIGNED(16, float, f20_0_8) [ 8][8][2]; ^~~ libavcodec/aacps_tablegen.h:47:24: error: expected declaration specifiers or ‘...’ before numeric constant static DECLARE_ALIGNED(16, float, f34_0_12)[12][8][2]; ^~ libavcodec/aacps_tablegen.h:47:35: error: unknown type name ‘f34_0_12’ static DECLARE_ALIGNED(16, float, f34_0_12)[12][8][2]; ^~~~ libavcodec/aacps_tablegen.h:48:24: error: expected declaration specifiers or ‘...’ before numeric constant static DECLARE_ALIGNED(16, float, f34_1_8) [ 8][8][2]; ^~ libavcodec/aacps_tablegen.h:48:35: error: unknown type name ‘f34_1_8’ static DECLARE_ALIGNED(16, float, f34_1_8) [ 8][8][2]; ^~~ libavcodec/aacps_tablegen.h:49:24: error: expected declaration specifiers or ‘...’ before numeric constant static DECLARE_ALIGNED(16, float, f34_2_4) [ 4][8][2]; ^~ libavcodec/aacps_tablegen.h:49:35: error: unknown type name ‘f34_2_4’ static DECLARE_ALIGNED(16, float, f34_2_4) [ 4][8][2]; ^~~ libavcodec/aacps_tablegen.h:50:36: error: expected declaration specifiers or ‘...’ before numeric constant static TABLE_CONST DECLARE_ALIGNED(16, float, Q_fract_allpass)[2][50][3][2]; ^~ libavcodec/aacps_tablegen.h:50:47: error: unknown type name ‘Q_fract_allpass’ static TABLE_CONST DECLARE_ALIGNED(16, float, Q_fract_allpass)[2][50][3][2]; ^~~~~~~ libavcodec/aacps_tablegen.h:51:24: error: expected declaration specifiers or ‘...’ before numeric constant static DECLARE_ALIGNED(16, float, phi_fract)[2][50][2]; ^~ libavcodec/aacps_tablegen.h:51:35: error: unknown type name ‘phi_fract’ static DECLARE_ALIGNED(16, float, phi_fract)[2][50][2]; ^~~~~ libavcodec/aacps_tablegen.h: In function ‘ps_tableinit’: libavcodec/aacps_tablegen.h:187:13: error: ‘Q_fract_allpass’ undeclared (first use in this function) Q_fract_allpass[0][k][m][0] = cos(theta); ^~~~~~~ libavcodec/aacps_tablegen.h:187:13: note: each undeclared identifier is reported only once for each function it appears in libavcodec/aacps_tablegen.h:191:9: error: ‘phi_fract’ undeclared (first use in this function) phi_fract[0][k][0] = cos(theta); ^~~~~ libavcodec/aacps_tablegen.h:210:29: error: ‘f20_0_8’ undeclared (first use in this function) make_filters_from_proto(f20_0_8, g0_Q8, 8); ^~~ libavcodec/aacps_tablegen.h:211:29: error: ‘f34_0_12’ undeclared (first use in this function) make_filters_from_proto(f34_0_12, g0_Q12, 12); ^~~~ libavcodec/aacps_tablegen.h:212:29: error: ‘f34_1_8’ undeclared (first use in this function) make_filters_from_proto(f34_1_8, g1_Q8, 8); ^~~ libavcodec/aacps_tablegen.h:213:29: error: ‘f34_2_4’ undeclared (first use in this function) make_filters_from_proto(f34_2_4, g2_Q4, 4); ^~~ In file included from libavcodec/aacps_tablegen.c:24: libavcodec/aacps_tablegen_template.c: In function ‘main’: libavcodec/aacps_tablegen_template.c:88:28: error: ‘f20_0_8’ undeclared (first use in this function) ARRAY_RENAME(3d_array)(f20_0_8, 8, 8, 2); ^~~ libavcodec/aacps_tablegen_template.c:91:28: error: ‘f34_0_12’ undeclared (first use in this function) ARRAY_RENAME(3d_array)(f34_0_12, 12, 8, 2); ^~~~ libavcodec/aacps_tablegen_template.c:94:28: error: ‘f34_1_8’ undeclared (first use in this function) ARRAY_RENAME(3d_array)(f34_1_8, 8, 8, 2); ^~~ libavcodec/aacps_tablegen_template.c:97:28: error: ‘f34_2_4’ undeclared (first use in this function) ARRAY_RENAME(3d_array)(f34_2_4, 4, 8, 2); ^~~ libavcodec/aacps_tablegen_template.c:101:28: error: ‘Q_fract_allpass’ undeclared (first use in this function) ARRAY_RENAME(4d_array)(Q_fract_allpass, 2, 50, 3, 2); ^~~~~~~ libavcodec/aacps_tablegen_template.c:104:28: error: ‘phi_fract’ undeclared (first use in this function) ARRAY_RENAME(3d_array)(phi_fract, 2, 50, 2); ^~~~~ make: [ffbuild/common.mak:201: libavcodec/aacps_tablegen.o] Error 1 make: Waiting for unfinished jobs....

Start time: Mon 13 Feb 20:54:35 GMT 2023 End time: Mon 13 Feb 21:05:46 GMT 2023 Duration: 671 seconds Max jobs: 2 Option: 4


Errors occurred Please check the logs and try again

gaamaaresosa commented 1 year ago

Let me install fresh Raspberry Pi Bullseye lite 32bit OS and run your script and send report.

gaamaaresosa commented 1 year ago

These are my steps on fresh SD card: Raspberry Pi Bullseye lite 32bit OS sudo apt-get update sudo apt-get upgrade -y sudo apt-get install git -y sudo apt install libomxil-bellagio-dev bash <(curl -sL https://raw.githubusercontent.com/NRCHKB/nrchkb-ffmpeg-build/main/build-bootstrap.sh)

Seems ok, or should I install any prerequisites packages/libs ?

marcus-j-davies commented 1 year ago

Try without the dev package first.

If that fails, wipe the folders used for building, then install the omx dev package first then run the script again

If it still has issues, then the bullseye OS has changed goal posts - since we last tested

Our script installs needed pre-requisites

gaamaaresosa commented 1 year ago

Try without the dev package first. Ok, I will try this way first.

If it still has issues, then the bullseye OS has changed goal post Always linux is like that only. If we install today and try the same after few months, the repository paths becoming invalid and get HASH mismatch error ! Which I am facing for last few days.

Eg:

FAILED: http://mirror.ossplanet.net/raspbian/raspbian/pool/main/libw/libwww-perl/libwww-perl_6.52-1_all.deb SUCCESS: http://raspbian.raspberrypi.org/raspbian/pool/main/libw/libwww-perl/libwww-perl_6.52-1_all.deb

gaamaaresosa commented 1 year ago

This is just a fresh starting of your script. Without the dev package first

Building/Installing libfdk-aac

N: Unable to locate package libfdk-aac-dev N: Unable to locate package libfdk-aac-dev E: No packages found Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package libfdk-aac-dev Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package libfdk-aac-dev Cloning into 'fdk-aac'... remote: Enumerating objects: 6929, done. remote: Counting objects: 100% (828/828), done. remote: Compressing objects: 100% (373/373), done. remote: Total 6929 (delta 452), reused 776 (delta 445), pack-reused 6101 Receiving objects: 100% (6929/6929), 10.02 MiB | 8.60 MiB/s, done. Resolving deltas: 100% (4083/4083), done. ./autogen.sh: 2: autoreconf: not found /dev/fd/62: line 210: ./configure: No such file or directory

Start time: Mon 13 Feb 21:22:34 GMT 2023 End time: Mon 13 Feb 21:22:53 GMT 2023 Duration: 19 seconds Max jobs: 2 Option: 4


Errors occurred Please check the logs and try again

image

gaamaaresosa commented 1 year ago

If you check the url, this is not present today. http://mirror.ossplanet.net/raspbian/raspbian bullseye

image

After this operation, 10.5 MB of additional disk space will be used. Get:1 http://mirror.ossplanet.net/raspbian/raspbian bullseye/main armhf libsigsegv2 armhf 2.13-1 [34.3 kB] Get:2 http://mirror.ossplanet.net/raspbian/raspbian bullseye/main armhf m4 armhf 1.4.18-5 [186 kB] Err:2 http://mirror.ossplanet.net/raspbian/raspbian bullseye/main armhf m4 armhf 1.4.18-5 Hash Sum mismatch Hashes of expected file:

marcus-j-davies commented 1 year ago

@crxporter

Can you put a dev pi to use? And run the ffmpeg build with omx opt-in clean install of bullseye-32bit ?

This could just be a mirror problem, as I did not have issues with bullseye 32?

gaamaaresosa commented 1 year ago

And run the ffmpeg build with omx opt-in clean install of bullseye-32bit ? Yes that's what I do here. Clean bullseye-32bit and trying your script. Fails... Do you doubt my ISP ? Should there be any way to change Mirror url ?

marcus-j-davies commented 1 year ago

I have no idea yet.

I'm pretty sure it built with OMX on bullseye 32bit. (Pi ZERO W1)

You can change the mirrors via: "sudo nano /etc/apt/sources.list"

And Run the normal update routines after (update, upgrade)

gaamaaresosa commented 1 year ago

You can change the mirrors via: Ok, let me try fiddling that and come back. Thanks again !

gaamaaresosa commented 1 year ago

After changing Mirror, I get this error. So let me install 'libomxil-bellagio-dev' and try again

Extracting source code... ERROR: OpenMAX IL headers from raspberrypi/firmware not found

If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.libera.chat. Include the log file "ffbuild/config.log" produced by configure as this will help solve the problem.

Start time: Mon 13 Feb 22:09:51 GMT 2023 End time: Mon 13 Feb 22:12:55 GMT 2023 Duration: 184 seconds Max jobs: 4 Option: 4


Errors occurred Please check the logs and try again

gaamaaresosa commented 1 year ago

How come I get same error ? After changing Mirror, I have done update/Upgrade. I have installed : sudo apt install libomxil-bellagio-dev -y Then not even single HASH missmatch warning. All went well. Finally I get this error.

Extracting source code... ERROR: OpenMAX IL headers from raspberrypi/firmware not found

If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.libera.chat. Include the log file "ffbuild/config.log" produced by configure as this will help solve the problem.

Start time: Mon 13 Feb 22:22:06 GMT 2023 End time: Mon 13 Feb 22:25:02 GMT 2023 Duration: 176 seconds Max jobs: 4 Option: 4


Errors occurred Please check the logs and try again

marcus-j-davies commented 1 year ago

Ok,

I'm afraid it's likely that bullseye has really made it difficult to use h264_omx in that case, it's possible they have moved files around, that messes up the source code for ffmpeg.

I'm pretty sure it worked (on 32bit) - but I could be mistaken by the looks of it.

Is there a reason you need to use 32bit?

h264_v4l2m2m is enabled in the compile flags, but also some users just use "copy" so no transcoding is needed (therefore omx not being enabled)

OMX and bullseye, has been a source of pain in the last year.

gaamaaresosa commented 1 year ago

config.log file : Last few line:

BEGIN /tmp/ffconf.P0VvnNYQ/test.c 1 #include <interface/mmal/mmal.h> 2 #include 3 long check_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS(void) { return (long) MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS; } 4 int main(void) { int ret = 0; 5 ret |= ((intptr_t)check_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS) & 0xFFFF; 6 return ret; } END /tmp/ffconf.P0VvnNYQ/test.c gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -I/usr/local/include -mfp16-format=ieee -std=c11 -fomit-frame-pointer -marm -pthread -I/usr/local/include -DX264_API_IMPORTS -c -o /tmp/ffconf.P0VvnNYQ/test.o /tmp/ffconf.P0VvnNYQ/test.c gcc -L/usr/local/lib -Wl,--as-needed -Wl,-z,noexecstack -o /tmp/ffconf.P0VvnNYQ/test /tmp/ffconf.P0VvnNYQ/test.o test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoRequestIFrame test_cc BEGIN /tmp/ffconf.P0VvnNYQ/test.c 1 #include 2 int main(void) { OMX_IndexConfigBrcmVideoRequestIFrame; return 0; } END /tmp/ffconf.P0VvnNYQ/test.c gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -I/usr/local/include -mfp16-format=ieee -std=c11 -fomit-frame-pointer -marm -pthread -I/usr/local/include -DX264_API_IMPORTS -c -o /tmp/ffconf.P0VvnNYQ/test.o /tmp/ffconf.P0VvnNYQ/test.c /tmp/ffconf.P0VvnNYQ/test.c: In function 'main': /tmp/ffconf.P0VvnNYQ/test.c:2:18: error: 'OMX_IndexConfigBrcmVideoRequestIFrame' undeclared (first use in this function); did you mean 'OMX_IndexConfigVideoFramerate'? 2 | int main(void) { OMX_IndexConfigBrcmVideoRequestIFrame; return 0; } | ^~~~~~~~~ | OMX_IndexConfigVideoFramerate /tmp/ffconf.P0VvnNYQ/test.c:2:18: note: each undeclared identifier is reported only once for each function it appears in test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoRequestIFrame test_cc BEGIN /tmp/ffconf.P0VvnNYQ/test.c 1 #include 2 int main(void) { OMX_IndexConfigBrcmVideoRequestIFrame; return 0; } END /tmp/ffconf.P0VvnNYQ/test.c gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -I/usr/local/include -mfp16-format=ieee -std=c11 -fomit-frame-pointer -marm -pthread -I/usr/local/include -DX264_API_IMPORTS -isystem/opt/vc/include/IL -c -o /tmp/ffconf.P0VvnNYQ/test.o /tmp/ffconf.P0VvnNYQ/test.c /tmp/ffconf.P0VvnNYQ/test.c: In function 'main': /tmp/ffconf.P0VvnNYQ/test.c:2:18: error: 'OMX_IndexConfigBrcmVideoRequestIFrame' undeclared (first use in this function); did you mean 'OMX_IndexConfigVideoFramerate'? 2 | int main(void) { OMX_IndexConfigBrcmVideoRequestIFrame; return 0; } | ^~~~~~~~~ | OMX_IndexConfigVideoFramerate /tmp/ffconf.P0VvnNYQ/test.c:2:18: note: each undeclared identifier is reported only once for each function it appears in ERROR: OpenMAX IL headers from raspberrypi/firmware not found

gaamaaresosa commented 1 year ago

This time I said NO to OMX/ACC and got this error

In file included from libavcodec/aacps_tablegen.c:24: libavcodec/aacps_tablegen_template.c:25: note: this is the location of the previous definition 25 #define CONFIG_HARDCODED_TABLES 0

In file included from libavcodec/aacps_tablegen_template.c:39, from libavcodec/aacps_tablegen.c:24: libavcodec/aacps_tablegen.h:46:24: error: expected declaration specifiers or ‘...’ before numeric constant 46 | static DECLARE_ALIGNED(16, float, f20_0_8) [ 8][8][2]; | ^~ libavcodec/aacps_tablegen.h:46:35: error: unknown type name ‘f20_0_8’ 46 | static DECLARE_ALIGNED(16, float, f20_0_8) [ 8][8][2]; | ^~~ libavcodec/aacps_tablegen.h:47:24: error: expected declaration specifiers or ‘...’ before numeric constant 47 | static DECLARE_ALIGNED(16, float, f34_0_12)[12][8][2]; | ^~ libavcodec/aacps_tablegen.h:47:35: error: unknown type name ‘f34_0_12’ 47 | static DECLARE_ALIGNED(16, float, f34_0_12)[12][8][2]; | ^~~~ libavcodec/aacps_tablegen.h:48:24: error: expected declaration specifiers or ‘...’ before numeric constant 48 | static DECLARE_ALIGNED(16, float, f34_1_8) [ 8][8][2]; | ^~ libavcodec/aacps_tablegen.h:48:35: error: unknown type name ‘f34_1_8’ 48 | static DECLARE_ALIGNED(16, float, f34_1_8) [ 8][8][2]; | ^~~ libavcodec/aacps_tablegen.h:49:24: error: expected declaration specifiers or ‘...’ before numeric constant 49 | static DECLARE_ALIGNED(16, float, f34_2_4) [ 4][8][2]; | ^~ libavcodec/aacps_tablegen.h:49:35: error: unknown type name ‘f34_2_4’ 49 | static DECLARE_ALIGNED(16, float, f34_2_4) [ 4][8][2]; | ^~~ libavcodec/aacps_tablegen.h:50:36: error: expected declaration specifiers or ‘...’ before numeric constant 50 | static TABLE_CONST DECLARE_ALIGNED(16, float, Q_fract_allpass)[2][50][3][2]; | ^~ libavcodec/aacps_tablegen.h:50:47: error: unknown type name ‘Q_fract_allpass’ 50 | static TABLE_CONST DECLARE_ALIGNED(16, float, Q_fract_allpass)[2][50][3][2]; | ^~~~~~~ libavcodec/aacps_tablegen.h:51:24: error: expected declaration specifiers or ‘...’ before numeric constant 51 | static DECLARE_ALIGNED(16, float, phi_fract)[2][50][2]; | ^~ libavcodec/aacps_tablegen.h:51:35: error: unknown type name ‘phi_fract’ 51 | static DECLARE_ALIGNED(16, float, phi_fract)[2][50][2]; | ^~~~~ libavcodec/aacps_tablegen.h: In function ‘ps_tableinit’: libavcodec/aacps_tablegen.h:187:13: error: ‘Q_fract_allpass’ undeclared (first use in this function) 187 | Q_fract_allpass[0][k][m][0] = cos(theta); | ^~~~~~~ libavcodec/aacps_tablegen.h:187:13: note: each undeclared identifier is reported only once for each function it appears in libavcodec/aacps_tablegen.h:191:9: error: ‘phi_fract’ undeclared (first use in this function) 191 | phi_fract[0][k][0] = cos(theta); | ^~~~~ libavcodec/aacps_tablegen.h:210:29: error: ‘f20_0_8’ undeclared (first use in this function) 210 | make_filters_from_proto(f20_0_8, g0_Q8, 8); | ^~~ libavcodec/aacps_tablegen.h:211:29: error: ‘f34_0_12’ undeclared (first use in this function) 211 | make_filters_from_proto(f34_0_12, g0_Q12, 12); | ^~~~ libavcodec/aacps_tablegen.h:212:29: error: ‘f34_1_8’ undeclared (first use in this function) 212 | make_filters_from_proto(f34_1_8, g1_Q8, 8); | ^~~ libavcodec/aacps_tablegen.h:213:29: error: ‘f34_2_4’ undeclared (first use in this function) 213 | make_filters_from_proto(f34_2_4, g2_Q4, 4); | ^~~ In file included from libavcodec/aacps_tablegen.c:24: libavcodec/aacps_tablegen_template.c: In function ‘main’: libavcodec/aacps_tablegen_template.c:88:28: error: ‘f20_0_8’ undeclared (first use in this function) 88 | ARRAY_RENAME(3d_array)(f20_0_8, 8, 8, 2); | ^~~ libavcodec/aacps_tablegen_template.c:91:28: error: ‘f34_0_12’ undeclared (first use in this function) 91 | ARRAY_RENAME(3d_array)(f34_0_12, 12, 8, 2); | ^~~~ libavcodec/aacps_tablegen_template.c:94:28: error: ‘f34_1_8’ undeclared (first use in this function) 94 | ARRAY_RENAME(3d_array)(f34_1_8, 8, 8, 2); | ^~~ libavcodec/aacps_tablegen_template.c:97:28: error: ‘f34_2_4’ undeclared (first use in this function) 97 | ARRAY_RENAME(3d_array)(f34_2_4, 4, 8, 2); | ^~~ libavcodec/aacps_tablegen_template.c:101:28: error: ‘Q_fract_allpass’ undeclared (first use in this function) 101 | ARRAY_RENAME(4d_array)(Q_fract_allpass, 2, 50, 3, 2); | ^~~~~~~ libavcodec/aacps_tablegen_template.c:104:28: error: ‘phi_fract’ undeclared (first use in this function) 104 | ARRAY_RENAME(3d_array)(phi_fract, 2, 50, 2); | ^~~~~ make: [ffbuild/common.mak:201: libavcodec/aacps_tablegen.o] Error 1 make: Waiting for unfinished jobs....

Start time: Mon 13 Feb 22:31:58 GMT 2023 End time: Mon 13 Feb 22:37:24 GMT 2023 Duration: 326 seconds Max jobs: 3 Option: 4


Errors occurred Please check the logs and try again

gaamaaresosa commented 1 year ago

Is there a reason you need to use 32bit?

I came to know OMX support only 32bit That's why I have chosen 32bit. Do you have any solution for 64bit with OMX ? But OMX works fine in Buster 32bit, and h264_v4l2m2m doesn't h264_v4l2m2m choose /dev/video11 and I see black signal. My hdmi capture device is /dev/video0

marcus-j-davies commented 1 year ago

Try clearing all build folders.

That seems like left overs from the last attempt.

marcus-j-davies commented 1 year ago

h264_v4l2m2m choose /dev/video11 and I see black signal. My hdmi capture device is /dev/video0

I think this script may not be what you hoped it was?

Most users of HomeKit are now using h264_v4l2m2m for their camera streams, that use 64bit os. HDMI ports are nothing todo with it?

gaamaaresosa commented 1 year ago

Try clearing all build folders.

Ok, I will try that too.

gaamaaresosa commented 1 year ago

Most users of HomeKit are now using h264_v4l2m2m for their camera streams,

I do live video streaming with 1280x720 and 4Mbps speed. May be others do lower resolution for which h264_v4l2m2m is ok. In my comparisson h264_v4l2m2m consume more CPU usage than h264_OMX

How ever I will give a try on h264_v4l2m2m again.

gaamaaresosa commented 1 year ago

Again clean installation of Bullseye 32bit. sudo apt install libomxil-bellagio-dev -y No error untill this last one.

Extracting source code... ERROR: OpenMAX IL headers from raspberrypi/firmware not found

If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.libera.chat. Include the log file "ffbuild/config.log" produced by configure as this will help solve the problem.

Start time: Mon 13 Feb 23:24:26 GMT 2023 End time: Mon 13 Feb 23:27:56 GMT 2023 Duration: 210 seconds Max jobs: 3 Option: 4


Errors occurred Please check the logs and try again

crxporter commented 1 year ago

Since I've been called - I'll leave a comment...

Last time I went down this road I learned that OMX is being phased out. It's not recommended for much of anything "new" anymore and files it depends on are bing moved around (first with 64 bit, now with 32 bit) to places where OMX doesn't know where to find them since OMX hasn't been updated in years.

How ever I will give a try on h264_v4l2m2m again

This was going to be my recommendation - try v4l or some other codecs. Surely some Linux wizard could get OMX working again but unfortunately I don't know the trick, I tried for a while before moving to v4l (and now just "copy" codec actually).

Another option... ffmpeg-for-homebridge exists and (last I checked) comes built with OMX support. You could try that or other ffmpeg install options since building omx from source is going poorly.

gaamaaresosa commented 1 year ago

@crxporter thanks. These are my 5 years experiance with omx and raspberry-pi feedback. 1) OmxPlayer and h264_omx are uncomparable and unbeatable. 2) VLC not stable for 24/7 and sucks lot of CPU. 3) h264_v4l2m2m no doubt may be better for encoding. But it can't be used as omxplayer or ffplay can't replace omxplayer. Omxplayer also to be used for previewing input video stream. (ffplay not as easy as Omxplayer) In older Buster 32bit Omx(player) works great, but h264_v4l2m2m failes as encoder. Eg: I set -i /dev/video0 but h264_v4l2m2m using /dev/video11 so no video. [h264_v4l2m2m @ 0x1065bf0] Using device /dev/video11 No solution found so far. Kindly see below result.

Stream mapping: Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (h264_v4l2m2m)) Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native)) Press [q] to stop, [?] for help [swscaler @ 0x1080d10] deprecated pixel format used, make sure you did set range correctly [h264_v4l2m2m @ 0x1065bf0] driver 'uvcvideo' on card 'UVC Camera (534d:2109): FY HD v' Last message repeated 1 times [h264_v4l2m2m @ 0x1065bf0] driver 'bcm2835-codec' on card 'bcm2835-codec-image_fx' [h264_v4l2m2m @ 0x1065bf0] driver 'bcm2835-codec' on card 'bcm2835-codec-isp' [h264_v4l2m2m @ 0x1065bf0] driver 'bcm2835-isp' on card 'bcm2835-isp' Last message repeated 3 times [h264_v4l2m2m @ 0x1065bf0] driver 'bcm2835-codec' on card 'bcm2835-codec-encode' [h264_v4l2m2m @ 0x1065bf0] Using device /dev/video11 [h264_v4l2m2m @ 0x1065bf0] driver 'bcm2835-codec' on card 'bcm2835-codec-encode' [h264_v4l2m2m @ 0x1065bf0] Failed to set number of B-frames

4) All the latest ffmpeg from apt install using only 1 thread inspite of setting -threads 0 Where as my older ffmpeg built 2 years back on Buster works great with 4 threads without stuttering video. With same script if I build today same same Buster, it fails to build with tons of errors.

image

image

5) First of all any one successfull script to build ffmpeg for raspberry pi as on todays' date ?

crxporter commented 1 year ago

Your knowledge of the topic is far more advanced than mine. This particular install script came about to be used mostly with home automation things (adding cameras to homekit). Of course it builds a fully functional ffmpeg - but anything more than basics is beyond my understanding...

That's probably not helpful to you, but I just wanted to add the context and note that you won't find many ffmpeg pros (except marcus and sometimes shaquu) around here.

I'm sure marcus will be back sometime soon with more comments - but I'm thinking you might want to find a more dedicated ffmpeg group to discuss things with?

gaamaaresosa commented 1 year ago

This particular install script came about to be used mostly with home automation things

I don't blame this script. Even my own script also throw error at the same place I see errors on this script too. So the issue is with Linux community, they don't mind about backward compatibility.

1) Before finding better alternative to Omxplayer, which should they stop OMX in latest versions ? Millions of people use omxplayer still. My question is when I myself built ffmpeg successfully 1 year back with Buster 32bit. Why same script fails today. So they fiddled something in the latest update/upgrades. We need more time for the development, not fixing issues on the existing technology.

2) Omxplayer is a real GEM for most of the developers and there is no alternative till today. I use omxplayer for 24/7 365 days TV channel decoders running like charm.