kannst du damit erst mal was anfangen
Nö! Welchen Code benutzt Du? In meinem Code steht in der Zeile etwas anderes.
kannst du damit erst mal was anfangen
Nö! Welchen Code benutzt Du? In meinem Code steht in der Zeile etwas anderes.
den von rella da er das Fernsehbild in das OSD zoomt. Da ich das Problem aber auch bei deinem Code habe, werde ich morgen das gleiche nochmals mit deinem Code machen
Aber grundsätzlich kannst du mit der Information was anfangen ?
Aber grundsätzlich kannst du mit der Information was anfangen ?
Ja, es zeigt in welcher Code Zeile das Problem auftritt. Mehr Informationen gibt es wenn in Du in der gdb console noch "bt full" eingibst und das postest.
so jetzt mal mit deinem code
Thread 18 "vdr" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x993fc400 (LWP 2478)]
0xb6448a00 in Frame2Display (render=0x5d8268) at video_drm.c:1192
warning: Source file is more recent than executable.
1192 return;
(gdb) bt full
#0 0xb6448a00 in Frame2Display (render=0x5d8268) at video_drm.c:1192
PicWidth = 1920
PicHeight = 1080
buf = 0x5d9134
frame = 0x152
primedata = 0x0
audio_pts = -5263518000757080064
video_pts = 0
i = -1723874304
diff = -1236885480
ModeReq = 0xacf008e8
flags = 1
#1 0xb6448ff0 in DisplayHandlerThread (arg=0x5d8268) at video_drm.c:1290
render = 0x5d8268
#2 0xb6f3c494 in start_thread (arg=0x993fc400) at pthread_create.c:486
ret = <optimized out>
pd = 0x993fc400
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {-616125396, -192227716, -1224742552, -1723874304, -1224779456, 338, -1090523038, -1723874304, 0, -1723875524, 0 <repeats 54 times>}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
(gdb) Quit
Alles anzeigen
so jetzt mal mit deinem code
Das kann nicht sein!
Frame2Display (render=0x5d8268) at video_drm.c:1192
Die Funktion Frame2Display beginnt in meinem Code in Zeile 773:
https://github.com/zillevdr/vd…blob/drm/video_drm.c#L773
und ein ähnlicher Code steht in Zeile 905:
https://github.com/zillevdr/vd…blob/drm/video_drm.c#L905
Bei Dir wird Zeile 1192 angemeckert.
Das Problem das ich erkenne ist das keine Bilddaten vorliegen:
War wohl doch zu spät und zu schnell
hier jetzt nochmal mit deinem Code
Thread 18 "vdr" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x98ffc400 (LWP 14454)]
0xb644906c in Frame2Display (render=0x5d84d0) at video_drm.c:905
905 PicWidth = render->mode.vdisplay * av_q2d(frame->sample_aspect_ratio) *
(gdb) bt full
#0 0xb644906c in Frame2Display (render=0x5d84d0) at video_drm.c:905
buf = 0x5d92f4
frame = 0x152
primedata = 0x0
audio_pts = -5984391270230709316
video_pts = -4683760715025088174
i = -1393349952
diff = -1393349952
ModeReq = 0x9a905900
flags = 1
PicWidth = 1920
#1 0xb6449384 in DisplayHandlerThread (arg=0x5d84d0) at video_drm.c:952
render = 0x5d84d0
#2 0xb6f3c494 in start_thread (arg=0x98ffc400) at pthread_create.c:486
ret = <optimized out>
pd = 0x98ffc400
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {101357366, 671542630, -1224742552, -1728068608, -1224779456, 338, -1090523022, -1728068608, 0, -1728069828, 0 <repeats 54 times>}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#3 0xb6b9f568 in () at ../sysdeps/unix/sysv/linux/arm/clone.S:73
Alles anzeigen
so jetzt nochmal zur Vervollständigung die Stelle wo ich in rellas code hängenbleibe:
Hier ist es aber nur der Fall beim Umschalten von HD-Kanälen, und wenn ich den debug Modus im Plugin aktiviere ist es ganz weg
Thread 18 "vdr" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x98efc400 (LWP 3515)]
0xb6448a00 in Frame2Display (render=0x5d8670) at video_drm.c:1192
1192 PicWidth = render->mode.vdisplay * av_q2d(frame->sample_aspect_ratio) *
(gdb) bt full
#0 0xb6448a00 in Frame2Display (render=0x5d8670) at video_drm.c:1192
PicWidth = 1920
PicHeight = 1080
buf = 0x5d953c
frame = 0x30
primedata = 0x0
audio_pts = 3201150041437676668
video_pts = -7737567339624791726
i = -1729118716
diff = -1801542784
ModeReq = 0x9aaea278
flags = 1
#1 0xb6448ff0 in DisplayHandlerThread (arg=0x5d8670) at video_drm.c:1290
render = 0x5d8670
#2 0xb6f3c494 in start_thread (arg=0x98efc400) at pthread_create.c:486
ret = <optimized out>
pd = 0x98efc400
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {1723049046, 1219485190, -1224742552, -1729117184, -1224779456, 338, -1090523038, -1729117184, 0, -1729118404, 0 <repeats 54 times>}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#3 0xb6b9f568 in () at ../sysdeps/unix/sysv/linux/arm/clone.S:73
(gdb)
Alles anzeigen
gdb:
CodecVideoReceiveFrame: receive_frame ret: Die Ressource ist zur Zeit nicht verfügbar
CodecVideoReceiveFrame: receive_frame ret: Die Ressource ist zur Zeit nicht verfügbar
CodecVideoReceiveFrame: receive_frame ret: Die Ressource ist zur Zeit nicht verfügbar
VideoFilterInit: filter bwdif=1:-1:0
[New Thread 0x948fc400 (LWP 15747)]
[New Thread 0x940fb400 (LWP 15748)]
[New Thread 0x938fa400 (LWP 15749)]
[New Thread 0x930f9400 (LWP 15750)]
[New Thread 0x928f8400 (LWP 15751)]
Frame2Display: start PTS 8:13:42.771
AudioPlayHandlerThread: nach pthread_cond_wait ----> 454ms start
[softhddev]~cSoftOsd:
[softhddev]CreateOsd:
[softhddev]cSoftOsd:
[softhddev]SetPlayMode: 0
SetPlayMode: play_mode 0
VideoSetClosing: buffers 5 StartCounter 1073
VideoSetClosing: pthread_cond_wait
Frame2Display: set a black FB
Thread 18 "vdr" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x98efc400 (LWP 15737)]
0xb6447c50 in Frame2Display (render=0x5d8610) at video_drm.c:905
905 PicWidth = render->mode.vdisplay * av_q2d(frame->sample_aspect_ratio) *
(gdb) bt full
#0 0xb6447c50 in Frame2Display (render=0x5d8610) at video_drm.c:905
buf = 0x5d9434
frame = 0x152
primedata = 0x0
audio_pts = -7085115178552091348
video_pts = -4683760852464041646
i = -1649632208
diff = -1649632208
ModeReq = 0x5fd208
flags = 1
PicWidth = 1920
#1 0xb6447f70 in DisplayHandlerThread (arg=0x5d8610) at video_drm.c:952
render = 0x5d8610
#2 0xb6f3c494 in start_thread (arg=0x98efc400) at pthread_create.c:486
ret = <optimized out>
pd = 0x98efc400
unwind_buf =
{cancel_jmp_buf = {{jmp_buf = {1486724130, 1988224626, -1224742552, -1729117184, -1224779456, 338, -1090523054, -1729117184, 0, -1729118404, 0 <repeats 54 times>}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
#3 0xb6b9f568 in () at ../sysdeps/unix/sysv/linux/arm/clone.S:73
(gdb)
Alles anzeigen
LOG:
ct 30 10:07:51 raspberrypi vdr: audio: start? in Rb 406ms to skip 0ms
Oct 30 10:07:51 raspberrypi vdr: audio: start? in Rb 430ms to skip 0ms
Oct 30 10:07:51 raspberrypi vdr: audio: start? in Rb 454ms to skip 0ms
Oct 30 10:07:51 raspberrypi vdr: audio: ----> 454ms start
Oct 30 10:08:12 raspberrypi vdr: [15697] [softhddev]SetPlayMode: 0
Oct 30 10:09:05 raspberrypi lircd[647]: lircd-0.10.1[647]: Info: removed client
Oct 30 10:09:05 raspberrypi lircd[647]: lircd-0.10.1[647]: Info: closing '/dev/input/event0'
Anbei das Log
Es wird immer mysteriöser. Erst schreibst Du das das bei HD zu HD umschalten auftritt. Im Log wird aber MPEG erkannt! Im Log kommt es zum SEGV beim Setzen eines schwarzen FB's. Das ergibt keine Logik! Auch das es im DEBUG mode nicht passiert ist nicht nachvollziehbar. Wie hast Du den Code übersetzt? Nutzt Du exotische Optimier Flags? Kannst Du zum alten Stand zurück gehen und dann eine Änderung nach der anderen machen um zu schauen welche Änderung das hervor ruft?
Ich bau meine Wohnung grad um und kann leider nicht selbst testen.
Ok ich fasse noch mal zusammen:
Ziller Code:
Bei jedem Umschalten kommt der Fehler.
rella Code:
Fehler kommt nur beim Umschalten von HD nach HD. Wenn ich den Debug modus im Makefile aktiviere ist das Problem weg.
Raspberry 4: RaspberryOS aktuell
VDR: git clone --branch stable/2.4 git://git.tvdr.de/vdr.git/
Make.config: siehe Anhang Make.txt
DRM Makefile: unverändert
Wenn ich dich unterstützen kann, lass es mich wissen. Ich tu was ich kann
Wenn ich den Debug modus im Makefile aktiviere ist das Problem weg.
Im Make.config von vdr oder im Makefile von softhddevice-drm?
Im Make.config von vdr oder im Makefile von softhddevice-drm?
softhddevice-drm
Ändere mal bitte diese Zeile in
sieht sehr gut
Hallo zillerbaer ,
ich bekomme hier einen SEGV, wenn ich in einer Aufnahme zu den Marken springe und abspiele und pausiere.Kann nicht genau sagen wann, aber es ist reproduzierbar. Irgendwann passierts einfach.
Hier das zugehörige Log https://pastebin.com/raw/U201NELh und der backtrace. Das ganze passiert mit meinem Branch, deinen habe ich nicht getestet. Aber daran sollte es nicht liegen, da ich an Codec/Decoder eigentlich nichts geändert habe.
Was mir auf den ersten Blick auffällt, ist, dass decoder->VideoCtx in CodecVideoOpen neu alloziert wird und ich nicht sicher bin, ob vorher ein free stattfindet oder VideoCtx auf NULL gesetzt wird. An den Logs sehe ich nur, dass der SEGV passiert, weil auf avctx=0x1d10b50zugegriffen werden soll. Zwischenzeitlich hat VideoCtx lt. Logs aber eine andere Adresse VideoCtx 0xa4f247d0weil er vorher geschlossen wurde?
Nov 05 12:43:05 orangepiplus vdr[5170]: CodecVideoFlushBuffers: VideoCtx 0x1d10b50
Nov 05 12:43:05 orangepiplus vdr[5170]: CodecVideoClose: VideoCtx 0x1d10b50
Nov 05 12:43:05 orangepiplus vdr[5170]: ClearVideo()
Nov 05 12:43:05 orangepiplus vdr[5170]: CodecVideoFlushBuffers: VideoCtx (nil)
Irgendeine spontane Idee?
Gruß Andreas
Da kann ich Dir leider nicht helfen. Ich habe momentan keine Entwicklungsumgebung. Bei mir läuft softhddevice-drm auf 5 Devices ohne Probleme. Teste doch mal meinen Code!
Kein Problem, ich gehe selbst auf die Suche. Mit deinem Code kann ich es übrigens auch reproduzieren. Habe zwar keinen BT gemacht, aber ich denke, das ist derselbe SEGV.
Gruß
Andreas
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!