mit "git clone" geholt, kompiliert
auch installiert?
Ich hatte Probleme, weil ich den alten ffmpeg nicht vorher deinstalliert hatte und musste dann mühsam aufräumen.
mit "git clone" geholt, kompiliert
auch installiert?
Ich hatte Probleme, weil ich den alten ffmpeg nicht vorher deinstalliert hatte und musste dann mühsam aufräumen.
Was sagt den: "grep AVCodecParameters /usr/include/libavcodec/*" ?
Ist bei mir in /usr/include/libavcodec/, da lokal kompiliert und installiert. Keine Ausgabe, also nichts gefunden. Wundert mich nicht wirklich, da "grep -r AVCodecParameters rpi-ffmpeg" auch nichts ausgibt.
Habe da wohl die falschen Quellen?!?
auch installiert?
Ich hatte Probleme, weil ich den alten ffmpeg nicht vorher deinstalliert hatte und musste dann mühsam aufräumen.
Ja, auch installiert.
Aber ich hatte vergessen den "git checkout" für den korrekten Branch vergessen Jetzt sind die AVCodecParameters in den Quellen enthalten.
Ich habe mal eine Anleitung gemacht, wie man alles hand-kompiliert unter ArchLinux|ARM zum Laufen bringt.
Vielleicht hilft es ja, mehr Tester zu gewinnen!
## Instructions to make vdr-plugin-softhddevice-drm by Zillebaer work on a Raspberry PI 4 with archlinux|arm
### Kernel
#### Build custom Linux kernel 5.10.y
Sources:
- [Archlinux|ARM Raspberry PI 4](https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4)
- [Raspberry Foundation - Kernel building](https://www.raspberrypi.org/documentation/linux/kernel/building.md)
- [Zillebaer: vdr-plugin-softhddevice-drm](https://github.com/zillevdr/vdr-plugin-softhddevice-drm)
- [Zillebaer: repositories for kernel and ffmpeg](https://www.vdr-portal.de/forum/index.php?thread/132858-raspberry-pi-4b-unterst%C3%BCtzung/&postID=1332025#post1332025)
- [Dr. Seltsam: hdmi_pixel_encoding=2](https://www.vdr-portal.de/forum/index.php?thread/132858-raspberry-pi-4b-unterst%C3%BCtzung/&postID=1331559#post1331559)
- [CvH: /boot/config.txt](https://www.vdr-portal.de/forum/index.php?thread/132858-raspberry-pi-4b-unterst%C3%BCtzung/&postID=1331387#post1331387)
- [jsffm: reduced ffmpeg configuration]()
```
# download, configure, build and install kernel
git clone https://github.com/raspberrypi/linux --branch rpi-5.10.y --single-branch
cd linux
export KERNEL=kernel7l
make bcm2711_defconfig
make -j4 zImage modules dtbs
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
# build initramfs bases on a custom preset
sudo cp /etc/mkinitcpio.d/linux-raspberrypi4.preset /etc/mkinitcpio.d/custom.preset
# change variable ALL_kver to your kernel version
# get kernel version e.g. with ls -l /lib/modules
cat /etc/mkinitcpio.d/custom.preset | grep ALL_kver
sudo mkinitcpio -p custom
# /boot/config.txt
```
# See /boot/overlays/README for all available options
initramfs initramfs-linux.img followkernel
#dtoverlay=lirc-rpi,gpio_in_pin=18
#dtoverlay=gpio-ir,gpio_pin=18,gpio_pull=up,rc-map-name=nec
gpu_mem=320
dtoverlay=vc4-kms-v3d-pi4,cma-384
dtoverlay=rpivid-v4l2
disable_overscan=1
disable_fw_kms_setup=1
dtparam=audio=on
```
# reboot
sudo reboot
```
#### ffmpeg
Sources:
- [jsffm's configure switches](https://www.vdr-portal.de/forum/index.php?thread/132858-raspberry-pi-4b-unterst%C3%BCtzung/&postID=1331851#post1331851)
-
### Install required packages (exemplarirly for my Archlinux|ARM distribution
`sudo pacman -S libfdk-aac kvazaar`
### Get correct branch from git
`git clone https://github.com/jc-kynesim/rpi-ffmpeg --branch dev/4.3.1/drm_prime_1 --single-branch`
Archlinux|ARM has too old libdrm header files, so the following patch (to ffmpeg) is need to make some defines available.
```
cat << 'EOF' >> four.cc
--- libavcodec/v4l2_request.c~ 2020-12-27 08:01:13.000000000 +0000
+++ libavcodec/v4l2_request.c 2020-12-27 08:44:07.830178117 +0000
@@ -53,6 +53,15 @@
#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0')
#endif
+#ifndef V4L2_PIX_FMT_NV12_10_COL128
+#define V4L2_PIX_FMT_NV12_10_COL128 v4l2_fourcc('N', 'C', '3', '0')
+#endif
+
+#ifndef V4L2_PIX_FMT_NV12_COL128
+#define V4L2_PIX_FMT_NV12_COL128 v4l2_fourcc('N', 'C', '1', '2')
+#endif
+
+
uint64_t ff_v4l2_request_get_capture_timestamp(AVFrame *frame)
{
V4L2RequestDescriptor *req = (V4L2RequestDescriptor*)frame->data[0];
EOF
cat four.cc | patch -p0
```
Configure and install a minimal ffmpeg
```
cd rpi-ffmpeg
./configure --enable-sand --enable-v4l2_m2m --enable-v4l2-request --enable-libudev --enable-libdrm --enable-libx265 --disable-rpi --enable-gpl --enable-libx264 --enable-pic --enable-shared --enable-vout-drm --enable-avfilter --enable-nonfree --enable-gpl --enable-iconv --enable-network --enable-pthreads --enable-mmal --disable-vdpau --disable-vaapi --enable-libfdk-aac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libkvazaar
sudo make install
cd ..
```
### Download VDR and plugins
```
wget ftp://ftp.tvdr.de/vdr/vdr-2.4.6.tar.bz2
tar xvf vdr-2.4.6.tar.bz2
git clone https://github.com/zillevdr/vdr-plugin-softhddevice-drm.git
rm -rf vdr-2.4.6/PLUGINS/src/*
ln -rs vdr-plugin-softhddevice-drm vdr-2.4.6/PLUGINS/src/softhddevice
cd vdr-2.4.6
cp Make.config.template Make.config
make -j4 LCLBLD=1 ONEDIR=1 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# configure your /video directory and additional plugins and start vdr
LD_LIBRARY_PATH=/usr/local/lib ./vdr -Psofthddevice-drm
```
Display More
--enable-libfdk-aac und --enable-libkvazaar kann entfallen.
--enable-vout-drm wird nicht gebraucht. Das ist nur für Tests gedacht.
--enable-libx264 Das kan auch abgeschaltet werden. H264 soll ja in HW decodiert werden.
--enable-mmal kann auch abgeschaltet werden. v4l2 bzw. v4l2-request ist die benutzte Schnittstelle.
Wer im Mediaplayer Streams abspielen möchte sollte neben --enable-network noch --enable-openssl oder gnutls einschalten um mit https Adressen umgehen zu können.
Ich habe mal eine Anleitung gemacht, wie man alles hand-kompiliert unter ArchLinux|ARM zum Laufen bringt.
Vielleicht hilft es ja, mehr Tester zu gewinnen!
Danke dafür! Habe auch gerade an meiner Anleitung für raspbian gearbeitet.
Für was wird --enable-libopencore-amrnb --enable-libopencore-amrwbbenötigt?
Gruß
Andreas
Für was wird --enable-libopencore-amrnb --enable-libopencore-amrwbbenötigt?
Keine Ahnung. Hier ist das auch disabled.
Danke für eure Hilfe soweit!
Leider beendet sich der VDR sofort wieder. Hier der Core-dump:
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0xb6a99230 in __GI_abort () at abort.c:79
#2 0xb6495628 in FindDevice (render=<optimized out>) at video_drm.c:490
#3 VideoInit (render=0xb6f95460) at video_drm.c:1776
#4 0xb6491da0 in Start () at softhddev.c:1756
#5 0xb648a0d0 in cPluginSoftHdDevice::Start (this=<optimized out>) at softhddevice-drm.cpp:1194
#6 0x000f15f0 in cPluginManager::StartPlugins (this=this@entry=0x187f48 <Setup>) at plugin.c:388
#7 0x00071b08 in main (argc=<optimized out>, argv=<optimized out>) at vdr.c:876
Ideen, was noch schief läuft?
Im VDR (2.4.6) sind nur das dummydevice (2.0.0) und softhddevice-drm (0.0.1rc1-GIT975d8dc) aktiv.
Linux-Kernel: 5.10.3-v7l+ #1386 SMP Sun Dec 27 14:05:40 GMT 2020 armv7l GNU/Linux
ffmpeg:
ffmpeg version n4.3-dev-3913-gfc9f0ac405-Kodi Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 8 (Raspbian 8.3.0-6+rpi1)
configuration: --enable-sand --enable-v4l2_m2m --enable-v4l2-request --enable-libdrm --enable-libx265 --disable-rpi --enable-gpl --enable-pic --enable-shared --enable-avfilter --enable-nonfree --enable-gpl --enable-iconv --enable-network --enable-pthreads --disable-vdpau --disable-vaapi --enable-version3 --enable-network --enable-openssl --enable-libudev
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Display More
Gruß
Andreas
#2 0xb6495628 in FindDevice (render=<optimized out>) at video_drm.c:490
Das wäre https://github.com/zillevdr/vdr-p…ideo_drm.c#L490
Ideen, was noch schief läuft?
Mit welchen Argumenten startest du softhddevice-drm? Setzt du da die Auflösung auf 720p50 oder 1080p50 (vgl. https://github.com/zillevdr/vdr-p…drm/README#L117) und beherrscht der Monitor, den du angeschlossen hast eine der beiden Auflösungen?
Das wäre https://github.com/zillevdr/vdr-p…ideo_drm.c#L490
Mit welchen Argumenten startest du softhddevice-drm? Setzt du da die Auflösung auf 720p50 oder 1080p50 (vgl. https://github.com/zillevdr/vdr-p…drm/README#L117) und beherrscht der Monitor, den du angeschlossen hast eine der beiden Auflösungen?
Danke für den Hinweis!
Ich hatte keine Argumente angegeben. Der angeschlossene Monitor bietet bei allen Auflösungen 60Hz an. Das mag das Plugin leider nicht. Ändere ich in der Abfrage im Sourcecode die 50 in 60, dann habe ich ein Bild auf meinem PC-Monitor
Muss softhddevice-drm so wählerisch sein?
Was ist der Grund?
UHD wird auch nicht unterstützt?
Ist kein Vorwurf, ich versuche nur mein Wissen zu aktualisieren und würde ggf. auch an meinem UHD-TV testen.
Gruß
Andreas
Muss softhddevice-drm so wählerisch sein?
Nö.
Was ist der Grund?
Bei 60 Hz müssen regelmäßig Bilder doppelt angezeigt werden.
UHD wird auch nicht unterstützt?
Momentan noch nicht. Es gibt bisher nur Testsender kein echtes Videomaterial. Vorher muss mein TV kaputt gehen das ein UHD TV gekauft werden kann.
Die Idee 60Hz Modes einzuführen habe ich schon. Ich will das komplett automatisieren. In der Reihenfolge 1080p50, 720p50, 1080p60, 720p60 soll gesucht werden und danach wird aufgegeben. Steht auf der ToDo.
Die Idee 60Hz Modes einzuführen habe ich schon. Ich will das komplett automatisieren. In der Reihenfolge 1080p50, 720p50, 1080p60, 720p60 soll gesucht werden und danach wird aufgegeben.
Hab das gleich mal umgesetzt und ins git geladen. Ich kann es wegen fehlender HW nicht testen und bitte deshalb um Rückmeldung.
so, hab jetzt in yavdr-ansible Bild auf dem rpi4b, Ton tue ich mich noch schwer.
ich hab schin gelesen das einige unterwegs sind mit
aber gesucht wäre ein funktionierendes hdmi device
root@rpi4b:~# aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: vc4hdmi [vc4-hdmi], Gerät 0: MAI PCM vc4-hdmi-hifi-0 [MAI PCM vc4-hdmi-hifi-0]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: vc4hdmi1 [vc4-hdmi1], Gerät 0: MAI PCM vc4-hdmi-hifi-0 [MAI PCM vc4-hdmi-hifi-0]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: Headphones [bcm2835 Headphones], Gerät 0: bcm2835 Headphones [bcm2835 Headphones]
Sub-Geräte: 8/8
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Sub-Gerät #2: subdevice #2
Sub-Gerät #3: subdevice #3
Sub-Gerät #4: subdevice #4
Sub-Gerät #5: subdevice #5
Sub-Gerät #6: subdevice #6
Sub-Gerät #7: subdevice #7
Display More
root@rpi4b:~# aplay -L
default
Default Audio Device
sysdefault
Default Audio Device
null
Discard all samples (playback) or generate zero samples (capture)
default:CARD=vc4hdmi
vc4-hdmi, MAI PCM vc4-hdmi-hifi-0
Default Audio Device
sysdefault:CARD=vc4hdmi
vc4-hdmi, MAI PCM vc4-hdmi-hifi-0
Default Audio Device
front:CARD=vc4hdmi,DEV=0
vc4-hdmi, MAI PCM vc4-hdmi-hifi-0
Front speakers
iec958:CARD=vc4hdmi,DEV=0
vc4-hdmi, MAI PCM vc4-hdmi-hifi-0
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=vc4hdmi,DEV=0
vc4-hdmi, MAI PCM vc4-hdmi-hifi-0
Direct sample mixing device
dsnoop:CARD=vc4hdmi,DEV=0
vc4-hdmi, MAI PCM vc4-hdmi-hifi-0
Direct sample snooping device
hw:CARD=vc4hdmi,DEV=0
vc4-hdmi, MAI PCM vc4-hdmi-hifi-0
Direct hardware device without any conversions
plughw:CARD=vc4hdmi,DEV=0
vc4-hdmi, MAI PCM vc4-hdmi-hifi-0
Hardware device with all software conversions
default:CARD=vc4hdmi1
vc4-hdmi1, MAI PCM vc4-hdmi-hifi-0
Default Audio Device
sysdefault:CARD=vc4hdmi1
vc4-hdmi1, MAI PCM vc4-hdmi-hifi-0
Default Audio Device
front:CARD=vc4hdmi1,DEV=0
vc4-hdmi1, MAI PCM vc4-hdmi-hifi-0
Front speakers
iec958:CARD=vc4hdmi1,DEV=0
vc4-hdmi1, MAI PCM vc4-hdmi-hifi-0
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=vc4hdmi1,DEV=0
vc4-hdmi1, MAI PCM vc4-hdmi-hifi-0
Direct sample mixing device
dsnoop:CARD=vc4hdmi1,DEV=0
vc4-hdmi1, MAI PCM vc4-hdmi-hifi-0
Direct sample snooping device
hw:CARD=vc4hdmi1,DEV=0
vc4-hdmi1, MAI PCM vc4-hdmi-hifi-0
Direct hardware device without any conversions
plughw:CARD=vc4hdmi1,DEV=0
vc4-hdmi1, MAI PCM vc4-hdmi-hifi-0
Hardware device with all software conversions
default:CARD=Headphones
bcm2835 Headphones, bcm2835 Headphones
Default Audio Device
sysdefault:CARD=Headphones
bcm2835 Headphones, bcm2835 Headphones
Default Audio Device
dmix:CARD=Headphones,DEV=0
bcm2835 Headphones, bcm2835 Headphones
Direct sample mixing device
dsnoop:CARD=Headphones,DEV=0
bcm2835 Headphones, bcm2835 Headphones
Direct sample snooping device
hw:CARD=Headphones,DEV=0
bcm2835 Headphones, bcm2835 Headphones
Direct hardware device without any conversions
plughw:CARD=Headphones,DEV=0
bcm2835 Headphones, bcm2835 Headphones
Hardware device with all software conversions
Display More
ich habe analog
versucht aber das hilft hier nicht
jemand eine Idee?
Den Kernel kann man per rpi-update installieren.
Wichtig sind die Header-Files!
Ich habe mir den Source heruntergeladen und daraus die Header-Files erstellt. Eine einfachere Möglichkeit habe ich nicht gefunden.
Ich kann mich erinnern, dass es analog zu rpi-update auch noch ein rpi-source zum Update der Kernel-Sourcen gab. Allerdings habe ich das schon lange nicht mehr benutzt.
Hallo zille,
Danke für de schnellen Anpassungen!
Funktionieren fast ganz gut. Beim Wechsel auf 60Hz sollte man hdr wieder auf 0 setzen, sonst bekommt man bei 60Hz nie FullHD:
diff --git a/video_drm.c b/video_drm.c
index ffdcba8..d9d4943 100644
--- a/video_drm.c
+++ b/video_drm.c
@@ -498,6 +498,7 @@ search_mode:
}
if (render->vrefresh == 50) {
render->vrefresh = 60;
+ render->hdr = 0;
fprintf(stderr, "FindDevice: No Monitor Mode found! Set 60Hz Mode\n");
goto search_mode;
}
@@ -505,6 +506,7 @@ search_mode:
drmModeFreeConnector(connector);
if (!render->mode.hdisplay || !render->mode.vdisplay)
Fatal(_("FindDevice: No Monitor Mode found! Give up!\n"));
+ fprintf(stderr, "FindDevice: Found Monitor Mode %dx%d@%dHz hdr=%d\n", render->mode.hdisplay, render->mode.vdisplay, render->vrefresh, render->hdr);
}
// find first plane
Display More
Außerdem wäre eine Meldung nicht schlecht, welcher Modus verwendet wird, siehe obigen Patch.
Wäre es evtl. sinnvoller, zuerst nach FullHD 60Hz zu schauen und dann erst nach HDready 50Hz?
Gruß
Andreas
50Hz ist vdr-Standard, sollte bevorzugt verwendet werden.
Hallo!
Was mir bei den ersten Tests aufgefallen:
1) Der linke und rechte Rand ist ein Pixel breit grün.
2) 4:3 wird auf 16:9 skaliert. Lässt sich das abschalten?
3) Audio Passthrough geht laut README nicht. Ich habe es noch nicht getestet (Raspi4 steht noch beim PC, nicht im Wohnzimmer beim Yamaha AV-Receiver). Kann/soll ich was testen, wenn ich den Raspi4 am AV-Receiver anstecke?
Gruß
Andreas
Don’t have an account yet? Register yourself now and be a part of our community!