@@ -25,9 +25,15 @@
#include "mastering_display_metadata.h"
#include "mem.h"
-AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc(void)
+static void get_defaults(AVMasteringDisplayMetadata *mastering)
{
- return av_mallocz(sizeof(AVMasteringDisplayMetadata));
+ for (int i = 0; i < 3; i++)
+ for (int j = 0; j < 2; j++)
+ mastering->display_primaries[i][j] = (AVRational) { 0, 1 };
+ mastering->white_point[0] =
+ mastering->white_point[1] =
+ mastering->min_luminance =
+ mastering->max_luminance = (AVRational) { 0, 1 };
}
AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc_size(size_t *size)
@@ -36,12 +42,19 @@ AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc_size(size_t *siz
if (!mastering)
return NULL;
+ get_defaults(mastering);
+
if (size)
*size = sizeof(*mastering);
return mastering;
}
+AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc(void)
+{
+ return av_mastering_display_metadata_alloc_size(NULL);
+}
+
AVMasteringDisplayMetadata *av_mastering_display_metadata_create_side_data(AVFrame *frame)
{
AVFrameSideData *side_data = av_frame_new_side_data(frame,
@@ -51,6 +64,7 @@ AVMasteringDisplayMetadata *av_mastering_display_metadata_create_side_data(AVFra
return NULL;
memset(side_data->data, 0, sizeof(AVMasteringDisplayMetadata));
+ get_defaults((AVMasteringDisplayMetadata *)side_data->data);
return (AVMasteringDisplayMetadata *)side_data->data;
}
Prevent potential divisions by 0 when using them immediately after allocation. Signed-off-by: James Almer <jamrial@gmail.com> --- libavutil/mastering_display_metadata.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-)