mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 06:58:56 +00:00
tsmux: Fix error handling in pad_stream
Don't leak the map or the buffer if we encounter an error. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5513>
This commit is contained in:
parent
5e78ef7a10
commit
61c62919a7
1 changed files with 15 additions and 6 deletions
|
@ -1539,18 +1539,25 @@ pad_stream (TsMux * mux, TsMuxStream * stream, gint64 cur_ts)
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
gst_buffer_map (buf, &map, GST_MAP_WRITE);
|
if (!gst_buffer_map (buf, &map, GST_MAP_WRITE)) {
|
||||||
|
gst_buffer_unref (buf);
|
||||||
|
ret = FALSE;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
memset (map.data, 0xFF, map.size);
|
memset (map.data, 0xFF, map.size);
|
||||||
|
|
||||||
if ((new_pcr =
|
new_pcr = write_new_pcr (mux, stream, get_current_pcr (mux, cur_ts),
|
||||||
write_new_pcr (mux, stream, get_current_pcr (mux,
|
get_next_pcr (mux, cur_ts));
|
||||||
cur_ts), get_next_pcr (mux, cur_ts)) != -1)) {
|
if (new_pcr != -1) {
|
||||||
GST_LOG ("Writing PCR-only packet on PID 0x%04x", stream->pi.pid);
|
GST_LOG ("Writing PCR-only packet on PID 0x%04x", stream->pi.pid);
|
||||||
tsmux_write_ts_header (mux, map.data, &stream->pi, &payload_len,
|
tsmux_write_ts_header (mux, map.data, &stream->pi, &payload_len,
|
||||||
&payload_offs, 0);
|
&payload_offs, 0);
|
||||||
} else {
|
} else {
|
||||||
GST_LOG ("Writing null stuffing packet");
|
GST_LOG ("Writing null stuffing packet");
|
||||||
if (!rewrite_si (mux, cur_ts)) {
|
if (!rewrite_si (mux, cur_ts)) {
|
||||||
|
gst_buffer_unmap (buf, &map);
|
||||||
|
gst_buffer_unref (buf);
|
||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
@ -1560,9 +1567,11 @@ pad_stream (TsMux * mux, TsMuxStream * stream, gint64 cur_ts)
|
||||||
gst_buffer_unmap (buf, &map);
|
gst_buffer_unmap (buf, &map);
|
||||||
|
|
||||||
stream->pi.flags &= TSMUX_PACKET_FLAG_PES_FULL_HEADER;
|
stream->pi.flags &= TSMUX_PACKET_FLAG_PES_FULL_HEADER;
|
||||||
|
ret = tsmux_packet_out (mux, buf, new_pcr);
|
||||||
if (!(ret = tsmux_packet_out (mux, buf, new_pcr)))
|
if (!ret) {
|
||||||
|
gst_buffer_unref (buf);
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} while (bitrate < mux->bitrate);
|
} while (bitrate < mux->bitrate);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue