FFmpeg: libavcodec/av1_parser.c Source File
Go to the documentation of this file. 1 /*
2 * AV1 parser
3 *
4 * Copyright (C) 2018 James Almer <jamrial@gmail.com>
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
24
29
35
39 };
43 };
47 };
48
51 };
52
55 const uint8_t **out_data,
int *
out_size,
57 {
64
67
71
72 s->cbc->log_ctx = avctx;
73
75 s->parsed_extradata = 1;
76
80 }
81
83 }
84
88 goto end;
89 }
90
93 goto end;
94 }
95
98
99 for (
int i = 0;
i <
td->nb_units;
i++) {
103
108 else
109 continue;
110
112 continue;
113
114 if (!
frame->show_frame && !
frame->show_existing_frame)
115 continue;
116
117 ctx->width =
frame->frame_width_minus_1 + 1;
118 ctx->height =
frame->frame_height_minus_1 + 1;
119
121
122 switch (
frame->frame_type) {
126 break;
129 break;
132 break;
133 }
135 }
136
138 case 8:
141 break;
142 case 10:
145 break;
146 case 12:
149 break;
150 }
152
153 if (!
color->subsampling_x && !
color->subsampling_y &&
158
161
166
171
172 end:
174
175 s->cbc->log_ctx =
NULL;
176
178 }
179
186 };
187
189 {
192
196
199
200 return 0;
201 }
202
204 {
206
209 }
210
217 };
uint32_t num_units_in_display_tick
#define AV_LOG_WARNING
Something somehow does not look correct.
AVPixelFormat
Pixel format.
static enum AVPixelFormat pix_fmts_rgb[3]
enum AVColorSpace colorspace
YUV colorspace type.
AVColorTransferCharacteristic
Color Transfer Characteristic.
av_cold void ff_cbs_fragment_free(CodedBitstreamFragment *frag)
Free the units array of a fragment in addition to what ff_cbs_fragment_reset does.
@ AV_PICTURE_STRUCTURE_UNKNOWN
unknown
static enum AVPixelFormat pix_fmts_8bit[2][2]
void * content
Pointer to the decomposed form of this unit.
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic.
@ AVCOL_RANGE_JPEG
Full range content.
void ff_cbs_fragment_reset(CodedBitstreamFragment *frag)
Free the units contained in a fragment as well as the fragment's own data buffer, but not the units a...
Context structure for coded bitstream operations.
#define AV_PIX_FMT_YUV420P10
@ AVCOL_SPC_RGB
order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB), YZX and ST 428-1
CodedBitstreamUnitType type
Codec-specific type of this unit.
AVColorPrimaries
Chromaticity coordinates of the source primaries.
@ AV1_OBU_TEMPORAL_DELIMITER
static av_cold int av1_parser_init(AVCodecParserContext *ctx)
Coded bitstream unit structure.
av_cold void ff_cbs_close(CodedBitstreamContext **ctx_ptr)
Close a context and free all internal state.
@ AVCOL_TRC_IEC61966_2_1
IEC 61966-2-1 (sRGB or sYCC)
#define AV_PIX_FMT_GBRP10
int ff_cbs_read(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const uint8_t *data, size_t size)
Read a bitstream from a memory region into a fragment, then split into units and decompose.
#define AV_PIX_FMT_YUV444P10
@ AV_PICTURE_STRUCTURE_FRAME
coded as frame
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define FF_ARRAY_ELEMS(a)
Coded bitstream fragment structure, combining one or more units.
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
#define AV_PIX_FMT_GRAY10
enum AVColorRange color_range
MPEG vs JPEG YUV range.
@ AVCOL_PRI_BT709
also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP 177 Annex B
static int av1_parser_parse(AVCodecParserContext *ctx, AVCodecContext *avctx, const uint8_t **out_data, int *out_size, const uint8_t *data, int size)
@ AV_PICTURE_TYPE_I
Intra.
#define AV_PIX_FMT_YUV422P10
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
int level
Encoding level descriptor.
@ AV_PICTURE_TYPE_SP
Switching Predicted.
static void av1_parser_close(AVCodecParserContext *ctx)
uint32_t num_ticks_per_picture_minus_1
#define AV_PIX_FMT_YUV422P12
static const uint32_t color[16+AV_CLASS_CATEGORY_NB]
#define AV_PIX_FMT_YUV444P12
@ AV1_OBU_SEQUENCE_HEADER
@ AV_PICTURE_TYPE_NONE
Undefined.
AVRational ff_av1_framerate(int64_t ticks_per_frame, int64_t units_per_tick, int64_t time_scale)
const AVCodecParser ff_av1_parser
AV1RawFrameHeader frame_header
int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVCodecContext *avctx)
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
static const CodedBitstreamUnitType decompose_unit_types[]
#define i(width, name, range_min, range_max)
static enum AVPixelFormat pix_fmts_12bit[2][2]
CodedBitstreamContext * cbc
#define AV_PIX_FMT_GBRP12
AVColorSpace
YUV colorspace type.
@ AVCOL_RANGE_MPEG
Narrow or limited range content.
#define AV_PIX_FMT_YUV420P12
main external API structure.
AV1RawSequenceHeader * sequence_header
uint32_t CodedBitstreamUnitType
The codec-specific type of a bitstream unit.
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
@ AV_PIX_FMT_GBRP
planar GBR 4:4:4 24bpp
@ AV_PICTURE_TYPE_P
Predicted.
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
static enum AVPixelFormat pix_fmts_10bit[2][2]
av_cold int ff_cbs_init(CodedBitstreamContext **ctx_ptr, enum AVCodecID codec_id, void *log_ctx)
Create and initialise a new context for the given codec.
#define AV_PIX_FMT_GRAY12
CodedBitstreamFragment temporal_unit
void * priv_data
Format private data.
Generated on Thu Sep 26 2024 23:14:50 for FFmpeg by
doxygen
1.8.17