1 /*
2 * AV1 common parsing code
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21 #include "config.h"
22
24
28
30 {
31 int64_t obu_size;
32 int start_pos,
type, temporal_id, spatial_id;
34
36 &
type, &temporal_id, &spatial_id);
39
43
44 obu->
data = buf + start_pos;
48
50 "obu_type: %d, temporal_id: %d, spatial_id: %d, payload size: %d\n",
52
54 }
55
57 {
60
63
66
67 if (
pkt->obus_allocated <
pkt->nb_obus + 1) {
68 int new_size =
pkt->obus_allocated + 1;
70
71 if (new_size >= INT_MAX /
sizeof(*
tmp))
76
78 memset(
pkt->obus +
pkt->obus_allocated, 0,
sizeof(*
pkt->obus));
79 pkt->obus_allocated = new_size;
80 }
81 obu = &
pkt->obus[
pkt->nb_obus];
82
84 if (consumed < 0)
85 return consumed;
86
88
90
93 continue;
94 }
95
97
101 }
102
103 return 0;
104 }
105
107 {
109 pkt->obus_allocated =
pkt->obus_allocated_size = 0;
110 }