Unexplained freeze/hang from gst-omx omxh264enc on Raspberry Pi 3
Graham Leggett
minfrin at sharp.fm
Tue Nov 15 01:34:00 UTC 2016
Hi all,
I am having some strange behaviour from gst-omx and the omxh264dec/omxh264enc elements that I am trying to get to the bottom of, the pipeline seems to hang at random points and I am trying to get to the bottom of why.
I have recorded an MPEG transport stream containing h264 video that originates from DVB-T2, and am trying to transcode this with an element that has the effect of “decodebin ! encodebin”. The stream is demuxed and decoded with omxh264dec, and then reencoded with omxh264enc and remuxed before being written to an HLS stream.
My problem is that each time this recorded MPEG transport stream is transcoded, the pipeline freezes/hangs at a different point in time. I would expect the file to freeze/hang in the same place, but it doesn’t do so.
When it freezes the pipeline, omxh264enc says the following and then goes silent:
0:05:26.921029963 2774 0x73101d50 DEBUG omxvideoenc gstomxvideoenc.c:1692:gst_omx_video_enc_drain:<omxh264enc-omxh264enc0> Draining component
0:05:26.921240325 2774 0x73101d50 DEBUG omxvideoenc gstomxvideoenc.c:1738:gst_omx_video_enc_drain:<omxh264enc-omxh264enc0> Waiting until component is drained
0:05:26.922070629 2774 0x75714ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:05:26.924129253 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:753:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Handling buffer: 0x00000480 0
0:05:26.924239825 2774 0x75714ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:05:26.924242950 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:762:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Finished frame: ok
0:05:26.924531385 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:770:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Read frame from component
0:05:26.924573780 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:753:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Handling buffer: 0x00000490 0
0:05:26.924627790 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:762:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Finished frame: ok
0:05:26.924861589 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:770:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Read frame from component
0:05:26.924899402 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:753:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Handling buffer: 0x00000430 1482599921
0:05:26.924961536 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:586:gst_omx_video_enc_handle_output_frame:<omxh264enc-omxh264enc0> Handling output data
0:05:26.925675123 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:762:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Finished frame: ok
0:05:26.926104754 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:770:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Read frame from component
0:05:26.926179857 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:753:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Handling buffer: 0x00000001 1482639921
0:05:26.926242565 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:762:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Finished frame: ok
0:05:26.926448604 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:770:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Read frame from component
0:05:26.926489698 2774 0x73145400 DEBUG omxvideoenc gstomxvideoenc.c:810:gst_omx_video_enc_loop:<omxh264enc-omxh264enc0> Drained
0:05:26.926540010 2774 0x73101d50 DEBUG omxvideoenc gstomxvideoenc.c:1740:gst_omx_video_enc_drain:<omxh264enc-omxh264enc0> Drained component
omxh264dec keeps running, until eventually, sometimes within a second, sometimes many seconds later, omxh264dec also freezes and goes silent as follows:
0:06:05.580576707 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:06:05.583004391 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:06:05.585423220 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:06:05.587669864 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:06:05.591000038 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:06:05.591114776 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2185:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Starting task
0:06:05.591252691 2581 0x74d018f0 DEBUG omxvideodec gstomxvideodec.c:1570:gst_omx_video_dec_loop:<omxh264dec-omxh264dec0> Component signalled EOS
0:06:05.591313316 2581 0x74d018f0 DEBUG omxvideodec gstomxvideodec.c:1590:gst_omx_video_dec_loop:<omxh264dec-omxh264dec0> EOS
0:06:05.605895926 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:06:05.606009936 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2185:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Starting task
0:06:05.606143997 2581 0x74d018f0 DEBUG omxvideodec gstomxvideodec.c:1570:gst_omx_video_dec_loop:<omxh264dec-omxh264dec0> Component signalled EOS
0:06:05.606203319 2581 0x74d018f0 DEBUG omxvideodec gstomxvideodec.c:1590:gst_omx_video_dec_loop:<omxh264dec-omxh264dec0> EOS
0:06:05.606916541 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2178:gst_omx_video_dec_handle_frame:<omxh264dec-omxh264dec0> Handling frame
0:06:05.609172247 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2457:gst_omx_video_dec_drain:<omxh264dec-omxh264dec0> Draining component
0:06:05.609289433 2581 0x75614ac0 DEBUG omxvideodec gstomxvideodec.c:2462:gst_omx_video_dec_drain:<omxh264dec-omxh264dec0> Component not started yet
I have a number of questions:
- Has anyone encountered inconsistent pipeline freezes with omxh264enc?
- What does "Draining component” do? It appears to be called from gst_omx_video_enc_finish(), but I cannot figure out why finish is being called on the encoder or what triggered it.
- Are there any known bugs in omxh264enc that would cause it to stop encoding for any reason (as opposed to being temporarily degraded but still running).
Does anyone have a suggestion on what to try next?
Regards,
Graham
—
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3240 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20161115/da83f4b4/attachment-0001.bin>
More information about the gstreamer-devel
mailing list