oggdemux: Fix racy decode error
Sometimes the seek to the end of file to determine the duration would trigger a reset of the source pads, that would confuse the decoder downstream and trigger an error. So the proposed fix is to not reset pads when the segment event being processed is the consequence of a seek performed to determine the duration. Fixes #4212 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/937>
This commit is contained in:
parent
bf98e200b2
commit
5de3cfca31
@ -755,7 +755,6 @@ validate.pushfile.media_check.qtdemux-test-frag-basic_zero_dur_no_mehd_mp4
|
||||
~validate.rtsp2.playback.fast_forward.cm5000_hevc_1080i_colorbars_ts
|
||||
~validate.rtsp2.playback.fast_forward.mp3_h264_0_mp4
|
||||
~validate.rtsp2.playback.fast_forward.mp3_h264_1_mp4
|
||||
~validate.rtsp2.playback.fast_forward.opus_1_ogg
|
||||
~validate.rtsp2.playback.fast_forward.raw_h264_0_mp4
|
||||
~validate.rtsp2.playback.fast_forward.raw_h264_1_mp4
|
||||
~validate.rtsp2.playback.fast_forward.rawaudioS32LE_prores_mov
|
||||
@ -765,8 +764,6 @@ validate.pushfile.media_check.qtdemux-test-frag-basic_zero_dur_no_mehd_mp4
|
||||
~validate.rtsp2.playback.fast_forward.samples_multimedia_cx_testsuite_iv31_avi
|
||||
~validate.rtsp2.playback.fast_forward.test5_mkv
|
||||
~validate.rtsp2.playback.fast_forward.tron_en_ge_aac_h264_ts
|
||||
~validate.rtsp2.playback.fast_forward.vorbis_theora_0_ogg
|
||||
~validate.rtsp2.playback.fast_forward.vorbis_theora_1_ogg
|
||||
~validate.rtsp2.playback.fast_forward.vorbis_vp8_0_webm
|
||||
~validate.rtsp2.playback.fast_forward.vorbis_vp8_1_webm
|
||||
~validate.rtsp2.playback.play_15s.1080p_xavc_audio_conforming_accuracy_mxf
|
||||
@ -810,7 +807,6 @@ validate.pushfile.media_check.qtdemux-test-frag-basic_zero_dur_no_mehd_mp4
|
||||
~validate.rtsp2.playback.reverse_playback.mp3_h264_0_mp4
|
||||
~validate.rtsp2.playback.reverse_playback.mp3_h264_1_mp4
|
||||
~validate.rtsp2.playback.reverse_playback.numerated_frames_blue_ogv
|
||||
~validate.rtsp2.playback.reverse_playback.opus_1_ogg
|
||||
~validate.rtsp2.playback.reverse_playback.raw_h264_0_mp4
|
||||
~validate.rtsp2.playback.reverse_playback.raw_h264_1_mp4
|
||||
~validate.rtsp2.playback.reverse_playback.raw_video_avi
|
||||
@ -818,8 +814,6 @@ validate.pushfile.media_check.qtdemux-test-frag-basic_zero_dur_no_mehd_mp4
|
||||
~validate.rtsp2.playback.reverse_playback.rawaudioS32LE_prores_mov
|
||||
~validate.rtsp2.playback.reverse_playback.samples_multimedia_cx_flac_Yesterday_flac
|
||||
~validate.rtsp2.playback.reverse_playback.samples_multimedia_cx_testsuite_iv31_avi
|
||||
~validate.rtsp2.playback.reverse_playback.vorbis_theora_0_ogg
|
||||
~validate.rtsp2.playback.reverse_playback.vorbis_theora_1_ogg
|
||||
~validate.rtsp2.playback.seek_backward.GH1_00094_1920x1280_MTS
|
||||
~validate.rtsp2.playback.seek_backward.bowlerhatdancer_sleepytom_SGP_mjpeg_avi
|
||||
~validate.rtsp2.playback.seek_backward.cm5000_hevc_1080i_colorbars_ts
|
||||
@ -895,10 +889,8 @@ validate.pushfile.media_check.qtdemux-test-frag-basic_zero_dur_no_mehd_mp4
|
||||
~validate.rtsp2.playback.seek_with_stop.cm5000_hevc_1080i_colorbars_ts
|
||||
~validate.rtsp2.playback.seek_with_stop.mp3_h264_0_mp4
|
||||
~validate.rtsp2.playback.seek_with_stop.mp3_h264_1_mp4
|
||||
~validate.rtsp2.playback.seek_with_stop.numerated_frames_blue_ogv
|
||||
~validate.rtsp2.playback.seek_with_stop.op1a-mpeg2-wave_hd_mxf
|
||||
~validate.rtsp2.playback.seek_with_stop.op2b-mpeg2-wave_hd_mxf
|
||||
~validate.rtsp2.playback.seek_with_stop.opus_1_ogg
|
||||
~validate.rtsp2.playback.seek_with_stop.raw_h264_0_mp4
|
||||
~validate.rtsp2.playback.seek_with_stop.raw_h264_1_mp4
|
||||
~validate.rtsp2.playback.seek_with_stop.raw_video_avi
|
||||
|
@ -49,39 +49,6 @@ KNOWN_ISSUES = {
|
||||
},
|
||||
]
|
||||
},
|
||||
"https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/311": {
|
||||
"tests": [
|
||||
"validate.http.*.ogg$",
|
||||
"validate.http.*.ogv$",
|
||||
"validate.rtsp.*.ogg$",
|
||||
"validate.rtsp.*.ogv$",
|
||||
],
|
||||
"issues": [
|
||||
{
|
||||
"detected-on": "playbin",
|
||||
"summary": "We got an ERROR message on the bus",
|
||||
"details": ".*No valid frames decoded before end of stream.*",
|
||||
"level": "critical",
|
||||
"sometimes": True,
|
||||
},
|
||||
{
|
||||
"level": "critical",
|
||||
"summary": "We got an ERROR message on the bus",
|
||||
"details": ".*Got error: Could not decode stream.*",
|
||||
"sometimes": True,
|
||||
},
|
||||
{
|
||||
"level": "critical",
|
||||
"summary": "The program stopped before some actions were executed",
|
||||
"sometimes": True,
|
||||
},
|
||||
{
|
||||
"summary": "The program stopped before some actions were executed",
|
||||
"issue-id": "scenario::not-ended",
|
||||
"sometimes": True,
|
||||
},
|
||||
]
|
||||
},
|
||||
"https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/563": {
|
||||
"tests": [
|
||||
"validate.rtsp.playback.seek_backward.bowlerhatdancer_sleepytom_SGP_mjpeg_avi",
|
||||
|
@ -2487,7 +2487,7 @@ gst_ogg_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
||||
ogg sync object as we already reset the chain */
|
||||
GST_DEBUG_OBJECT (ogg, "No chain, just resetting ogg sync");
|
||||
ogg_sync_reset (&ogg->sync);
|
||||
} else {
|
||||
} else if (ogg->push_state != PUSH_DURATION) {
|
||||
/* reset pad push mode seeking state */
|
||||
for (i = 0; i < chain->streams->len; i++) {
|
||||
GstOggPad *pad = g_array_index (chain->streams, GstOggPad *, i);
|
||||
|
Loading…
x
Reference in New Issue
Block a user