Hallo zusammen,
ich spiele gerade mit meiner softhddevice-drm-gles Version herum und stelle fest, dass ich bei amlogic relative viele Framedrops und -dups habe.
Das liegt laut den logs daran, dass die dekodierten frames nicht in der richtigen Reihenfolge, d.h. nach pts geordnet aus dem decoder kommen.
Fehlt ein frame, wird gedupt. 2 frames später kommt es aber und dann wird gedroppt usw...
Das ganze passiert aber nur, wenn mit Hardware, d.h. über ffmpeg/h264_v4lm2m dekodiert wird, und auch nur mit amlogic, soweit ich es bisher feststellen konnte.
Deshalb habe ich mal eine grundsätzliche Verständnisfrage:
Ich glaube verstanden zu haben, dass nicht sichergestellt ist, dass die Pakete im stream in der richtigen Reihenfolge ausgeliefert werden.
Ich meine auch gesehen zu haben, dass der decoder bei den anderen Platformen über avcodec_send_packet und avcodec_receive_frame die richtige Reihenfolge herstellt. Stimmt das?
Wenn das so sein sollte, stimmt wohl was an decoder bzw. ffmpeg nicht.
Wenn dem decoder aber erlaubt ist, die frames einfach nachdem sie dekodiert wurden in den ringbuffer zu legen - egal ob der pts in der richtigen Reihenfolge ist - müsste ich mich ja dann im Ausgabeplugin darum kümmern, dass die frames wieder geordnet werden?
Woher kommt denn der pts bzw. wer legt den fest? Aus den Paketen im Stream schon?
Kann da jemand für mich Licht ins Dunkel bringen? Wie machen das die ganzen softhddevice Varianten?
Am Ende stellt sich trotzdem die Frage, warum das bei amlogic so ist. Ich muss mir noch den Rpi4 bei h264 ansehen, ob das da auch so ist. Auf dem rockchip mit v4l2_request tritt das jedenfalls nicht auf.
Danke für eure Hilfe.
Gruß
Andreas