mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-18 15:51:11 +00:00
av1parser: Fix array sizes in scalability structure
Since the AV1 specification is not explicitly mentioning about the array size bounds, array sizes in scalability structure should be defined as possible maximum sizes that can have. Also, this commit removes GST_AV1_MAX_SPATIAL_LAYERS define from public header which is API break but the define is misleading and this patch is introducing ABI break already ZDI-CAN-22300 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5823>
This commit is contained in:
parent
b603095ac3
commit
890d59e97e
2 changed files with 6 additions and 7 deletions
|
@ -71,9 +71,8 @@ G_BEGIN_DECLS
|
||||||
#define GST_AV1_MAX_TILE_COUNT 512
|
#define GST_AV1_MAX_TILE_COUNT 512
|
||||||
#define GST_AV1_MAX_OPERATING_POINTS \
|
#define GST_AV1_MAX_OPERATING_POINTS \
|
||||||
(GST_AV1_MAX_NUM_TEMPORAL_LAYERS * GST_AV1_MAX_NUM_SPATIAL_LAYERS)
|
(GST_AV1_MAX_NUM_TEMPORAL_LAYERS * GST_AV1_MAX_NUM_SPATIAL_LAYERS)
|
||||||
#define GST_AV1_MAX_SPATIAL_LAYERS 2 /* correct? */
|
#define GST_AV1_MAX_TEMPORAL_GROUP_SIZE 255
|
||||||
#define GST_AV1_MAX_TEMPORAL_GROUP_SIZE 8 /* correct? */
|
#define GST_AV1_MAX_TEMPORAL_GROUP_REFERENCES 7
|
||||||
#define GST_AV1_MAX_TEMPORAL_GROUP_REFERENCES 8 /* correct? */
|
|
||||||
#define GST_AV1_MAX_NUM_Y_POINTS 16
|
#define GST_AV1_MAX_NUM_Y_POINTS 16
|
||||||
#define GST_AV1_MAX_NUM_CB_POINTS 16
|
#define GST_AV1_MAX_NUM_CB_POINTS 16
|
||||||
#define GST_AV1_MAX_NUM_CR_POINTS 16
|
#define GST_AV1_MAX_NUM_CR_POINTS 16
|
||||||
|
@ -968,9 +967,9 @@ struct _GstAV1MetadataScalability {
|
||||||
gboolean spatial_layer_dimensions_present_flag;
|
gboolean spatial_layer_dimensions_present_flag;
|
||||||
gboolean spatial_layer_description_present_flag;
|
gboolean spatial_layer_description_present_flag;
|
||||||
gboolean temporal_group_description_present_flag;
|
gboolean temporal_group_description_present_flag;
|
||||||
guint16 spatial_layer_max_width[GST_AV1_MAX_SPATIAL_LAYERS];
|
guint16 spatial_layer_max_width[GST_AV1_MAX_NUM_SPATIAL_LAYERS];
|
||||||
guint16 spatial_layer_max_height[GST_AV1_MAX_SPATIAL_LAYERS];
|
guint16 spatial_layer_max_height[GST_AV1_MAX_NUM_SPATIAL_LAYERS];
|
||||||
guint8 spatial_layer_ref_id[GST_AV1_MAX_SPATIAL_LAYERS];
|
guint8 spatial_layer_ref_id[GST_AV1_MAX_NUM_SPATIAL_LAYERS];
|
||||||
guint8 temporal_group_size;
|
guint8 temporal_group_size;
|
||||||
|
|
||||||
guint8 temporal_group_temporal_id[GST_AV1_MAX_TEMPORAL_GROUP_SIZE];
|
guint8 temporal_group_temporal_id[GST_AV1_MAX_TEMPORAL_GROUP_SIZE];
|
||||||
|
|
|
@ -1321,7 +1321,7 @@ gst_av1_parse_handle_sequence_obu (GstAV1Parse * self, GstAV1OBU * obu)
|
||||||
}
|
}
|
||||||
|
|
||||||
val = (self->parser->state.operating_point_idc >> 8) & 0x0f;
|
val = (self->parser->state.operating_point_idc >> 8) & 0x0f;
|
||||||
for (i = 0; i < (1 << GST_AV1_MAX_SPATIAL_LAYERS); i++) {
|
for (i = 0; i < GST_AV1_MAX_NUM_SPATIAL_LAYERS; i++) {
|
||||||
if (val & (1 << i))
|
if (val & (1 << i))
|
||||||
self->highest_spatial_id = i;
|
self->highest_spatial_id = i;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue