mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-01 09:21:03 +00:00
h264parse: handle all valid pps_id
... which are in range 0-255.
This commit is contained in:
parent
6a8d66728f
commit
a407d54d9d
2 changed files with 8 additions and 8 deletions
|
@ -148,16 +148,14 @@ gst_nal_bs_read_se (GstNalBs * bs)
|
||||||
/* end parser helper */
|
/* end parser helper */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_h264_params_store_nal (GstH264Params * params, GstBuffer ** store, gint id,
|
gst_h264_params_store_nal (GstH264Params * params, GstBuffer ** store,
|
||||||
GstNalBs * bs)
|
gint store_size, gint id, GstNalBs * bs)
|
||||||
{
|
{
|
||||||
const guint8 *data;
|
const guint8 *data;
|
||||||
GstBuffer *buf;
|
GstBuffer *buf;
|
||||||
guint size;
|
guint size;
|
||||||
|
|
||||||
g_return_if_fail (MAX_SPS_COUNT == MAX_PPS_COUNT);
|
if (id >= store_size) {
|
||||||
|
|
||||||
if (id >= MAX_SPS_COUNT) {
|
|
||||||
GST_DEBUG_OBJECT (params->el,
|
GST_DEBUG_OBJECT (params->el,
|
||||||
"unable to store nal, id out-of-range %d", id);
|
"unable to store nal, id out-of-range %d", id);
|
||||||
return;
|
return;
|
||||||
|
@ -395,7 +393,8 @@ gst_h264_params_decode_sps (GstH264Params * params, GstNalBs * bs)
|
||||||
if (G_UNLIKELY (sps == NULL))
|
if (G_UNLIKELY (sps == NULL))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
gst_h264_params_store_nal (params, params->sps_nals, sps_id, bs);
|
gst_h264_params_store_nal (params, params->sps_nals, MAX_SPS_COUNT, sps_id,
|
||||||
|
bs);
|
||||||
|
|
||||||
/* could be redefined mid stream, arrange for clear state */
|
/* could be redefined mid stream, arrange for clear state */
|
||||||
memset (sps, 0, sizeof (*sps));
|
memset (sps, 0, sizeof (*sps));
|
||||||
|
@ -570,7 +569,8 @@ gst_h264_params_decode_pps (GstH264Params * params, GstNalBs * bs)
|
||||||
pps->valid = TRUE;
|
pps->valid = TRUE;
|
||||||
params->pps = pps;
|
params->pps = pps;
|
||||||
|
|
||||||
gst_h264_params_store_nal (params, params->pps_nals, pps_id, bs);
|
gst_h264_params_store_nal (params, params->pps_nals, MAX_PPS_COUNT, pps_id,
|
||||||
|
bs);
|
||||||
|
|
||||||
pps->sps_id = gst_nal_bs_read_ue (bs);
|
pps->sps_id = gst_nal_bs_read_ue (bs);
|
||||||
GST_LOG_OBJECT (params->el, "pps %d referencing sps %d", pps_id, pps->sps_id);
|
GST_LOG_OBJECT (params->el, "pps %d referencing sps %d", pps_id, pps->sps_id);
|
||||||
|
|
|
@ -74,7 +74,7 @@ typedef struct _GstH264ParamsSPS GstH264ParamsSPS;
|
||||||
typedef struct _GstH264ParamsPPS GstH264ParamsPPS;
|
typedef struct _GstH264ParamsPPS GstH264ParamsPPS;
|
||||||
|
|
||||||
#define MAX_SPS_COUNT 32
|
#define MAX_SPS_COUNT 32
|
||||||
#define MAX_PPS_COUNT 32
|
#define MAX_PPS_COUNT 256
|
||||||
|
|
||||||
/* SPS: sequential parameter sets */
|
/* SPS: sequential parameter sets */
|
||||||
struct _GstH264ParamsSPS
|
struct _GstH264ParamsSPS
|
||||||
|
|
Loading…
Reference in a new issue