FFmpeg
tdrdi.c
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #include <stddef.h>
20 #include <stdint.h>
21 
22 #include "mem.h"
23 #include "tdrdi.h"
24 
25 AV3DReferenceDisplaysInfo *av_tdrdi_alloc(unsigned int nb_displays, size_t *out_size)
26 {
27  struct TestStruct {
30  };
31  const size_t entries_offset = offsetof(struct TestStruct, b);
32  size_t size = entries_offset;
34 
35  if (nb_displays > (SIZE_MAX - size) / sizeof(AV3DReferenceDisplay))
36  return NULL;
37  size += sizeof(AV3DReferenceDisplay) * nb_displays;
38 
39  tdrdi = av_mallocz(size);
40  if (!tdrdi)
41  return NULL;
42 
43  tdrdi->num_ref_displays = nb_displays;
44  tdrdi->entry_size = sizeof(AV3DReferenceDisplay);
45  tdrdi->entries_offset = entries_offset;
46 
47  if (out_size)
48  *out_size = size;
49 
50  return tdrdi;
51 }
out_size
int out_size
Definition: movenc.c:56
AV3DReferenceDisplay
Data structure for single deference display information.
Definition: tdrdi.h:100
b
#define b
Definition: input.c:42
AV3DReferenceDisplaysInfo::entries_offset
size_t entries_offset
Offset in bytes from the beginning of this structure at which the array of reference displays starts.
Definition: tdrdi.h:84
TestStruct
Definition: audio_fifo.c:29
AV3DReferenceDisplaysInfo
This structure describes information about the reference display width(s) and reference viewing dista...
Definition: tdrdi.h:53
NULL
#define NULL
Definition: coverity.c:32
size
int size
Definition: twinvq_data.h:10344
av_mallocz
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
Definition: mem.c:256
av_tdrdi_alloc
AV3DReferenceDisplaysInfo * av_tdrdi_alloc(unsigned int nb_displays, size_t *out_size)
Allocate a AV3DReferenceDisplaysInfo structure and initialize its fields to default values.
Definition: tdrdi.c:25
AV3DReferenceDisplaysInfo::num_ref_displays
uint8_t num_ref_displays
The number of reference displays that are signalled in this struct.
Definition: tdrdi.h:78
mem.h
AV3DReferenceDisplaysInfo::entry_size
size_t entry_size
Size of each entry in bytes.
Definition: tdrdi.h:89
tdrdi.h