Commit 5ff895d3 authored by Tim-Philipp Müller's avatar Tim-Philipp Müller 🐠
Browse files

openh264enc: fix broken sps/pps header generation

This was putting a truncated SPS into the initial header instead
of the PPS because it was always reading from the beginning of the
bitstream buffer (pBsBuf) and not from the offset where the current
NAL is at in the bitstream buffer (psBsBuf + nal_offset).

This was broken in commit 17113695.

Fixes gstreamer/gst-plugins-bad#1576

Part-of: <gstreamer/gst-plugins-bad!2478>
parent 9337fc2d
......@@ -995,8 +995,13 @@ gst_openh264enc_handle_frame (GstVideoEncoder * encoder,
if (j > 0)
nal_offset = nal_offset + frame_info.sLayerInfo[i].pNalLengthInByte[j-1];
nal_type = ((* (frame_info.sLayerInfo[i].pBsBuf + nal_offset + 4)) & 0x1f);
if (nal_type == NAL_SPS || nal_type == NAL_PPS)
gst_buffer_fill (hdr, nal_offset, frame_info.sLayerInfo[i].pBsBuf, frame_info.sLayerInfo[i].pNalLengthInByte[j]);
/* Note: This only works if SPS/PPS are the first two NALs in which case
* nal_offset is the same for both the output and the bitstream buffer */
if (nal_type == NAL_SPS || nal_type == NAL_PPS) {
gst_buffer_fill (hdr, nal_offset,
frame_info.sLayerInfo[i].pBsBuf + nal_offset,
frame_info.sLayerInfo[i].pNalLengthInByte[j]);
}
}
headers = g_list_append (headers, gst_buffer_ref (hdr));
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment