FFmpeg
dirac.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007 Marco Gerards <marco@gnu.org>
3  * Copyright (C) 2009 David Conrad
4  * Copyright (C) 2011 Jordi Ortiz
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 
23 /**
24  * @file
25  * Dirac Decoder
26  * @author Marco Gerards <marco@gnu.org>, David Conrad, Jordi Ortiz <nenjordi@gmail.com>
27  */
28 
29 #include "libavutil/imgutils.h"
30 
31 #include "avcodec.h"
32 #include "dirac.h"
33 #include "golomb.h"
34 #include "internal.h"
35 #include "mpeg12data.h"
36 
37 #if CONFIG_DIRAC_PARSE
38 
39 typedef struct dirac_source_params {
40  unsigned width;
41  unsigned height;
42  uint8_t chroma_format; ///< 0: 444 1: 422 2: 420
43 
45  uint8_t top_field_first;
46 
47  uint8_t frame_rate_index; ///< index into dirac_frame_rate[]
48  uint8_t aspect_ratio_index; ///< index into dirac_aspect_ratio[]
49 
50  uint16_t clean_width;
51  uint16_t clean_height;
52  uint16_t clean_left_offset;
53  uint16_t clean_right_offset;
54 
55  uint8_t pixel_range_index; ///< index into dirac_pixel_range_presets[]
56  uint8_t color_spec_index; ///< index into dirac_color_spec_presets[]
57 } dirac_source_params;
58 
59 /* defaults for source parameters */
60 static const dirac_source_params dirac_source_parameters_defaults[] = {
61  { 640, 480, 2, 0, 0, 1, 1, 640, 480, 0, 0, 1, 0 },
62  { 176, 120, 2, 0, 0, 9, 2, 176, 120, 0, 0, 1, 1 },
63  { 176, 144, 2, 0, 1, 10, 3, 176, 144, 0, 0, 1, 2 },
64  { 352, 240, 2, 0, 0, 9, 2, 352, 240, 0, 0, 1, 1 },
65  { 352, 288, 2, 0, 1, 10, 3, 352, 288, 0, 0, 1, 2 },
66  { 704, 480, 2, 0, 0, 9, 2, 704, 480, 0, 0, 1, 1 },
67  { 704, 576, 2, 0, 1, 10, 3, 704, 576, 0, 0, 1, 2 },
68  { 720, 480, 1, 1, 0, 4, 2, 704, 480, 8, 0, 3, 1 },
69  { 720, 576, 1, 1, 1, 3, 3, 704, 576, 8, 0, 3, 2 },
70 
71  { 1280, 720, 1, 0, 1, 7, 1, 1280, 720, 0, 0, 3, 3 },
72  { 1280, 720, 1, 0, 1, 6, 1, 1280, 720, 0, 0, 3, 3 },
73  { 1920, 1080, 1, 1, 1, 4, 1, 1920, 1080, 0, 0, 3, 3 },
74  { 1920, 1080, 1, 1, 1, 3, 1, 1920, 1080, 0, 0, 3, 3 },
75  { 1920, 1080, 1, 0, 1, 7, 1, 1920, 1080, 0, 0, 3, 3 },
76  { 1920, 1080, 1, 0, 1, 6, 1, 1920, 1080, 0, 0, 3, 3 },
77  { 2048, 1080, 0, 0, 1, 2, 1, 2048, 1080, 0, 0, 4, 4 },
78  { 4096, 2160, 0, 0, 1, 2, 1, 4096, 2160, 0, 0, 4, 4 },
79 
80  { 3840, 2160, 1, 0, 1, 7, 1, 3840, 2160, 0, 0, 3, 3 },
81  { 3840, 2160, 1, 0, 1, 6, 1, 3840, 2160, 0, 0, 3, 3 },
82  { 7680, 4320, 1, 0, 1, 7, 1, 3840, 2160, 0, 0, 3, 3 },
83  { 7680, 4320, 1, 0, 1, 6, 1, 3840, 2160, 0, 0, 3, 3 },
84 };
85 
86 /* [DIRAC_STD] Table 10.4 - Available preset pixel aspect ratio values */
87 static const AVRational dirac_preset_aspect_ratios[] = {
88  { 1, 1 },
89  { 10, 11 },
90  { 12, 11 },
91  { 40, 33 },
92  { 16, 11 },
93  { 4, 3 },
94 };
95 
96 /* [DIRAC_STD] Values 9,10 of 10.3.5 Frame Rate.
97  * Table 10.3 Available preset frame rate values
98  */
99 static const AVRational dirac_frame_rate[] = {
100  { 15000, 1001 },
101  { 25, 2 },
102 };
103 
104 /* [DIRAC_STD] This should be equivalent to Table 10.5 Available signal
105  * range presets */
106 static const struct {
107  uint8_t bitdepth;
109 } pixel_range_presets[] = {
110  { 8, AVCOL_RANGE_JPEG },
111  { 8, AVCOL_RANGE_MPEG },
112  { 10, AVCOL_RANGE_MPEG },
113  { 12, AVCOL_RANGE_MPEG },
114 };
115 
116 static const enum AVColorPrimaries dirac_primaries[] = {
120 };
121 
122 static const struct {
124  enum AVColorSpace colorspace;
125  enum AVColorTransferCharacteristic color_trc;
126 } dirac_color_presets[] = {
132 };
133 
134 /* [DIRAC_STD] Table 10.2 Supported chroma sampling formats */
135 static const enum AVPixelFormat dirac_pix_fmt[][3] = {
139 };
140 
141 /* [DIRAC_STD] 10.3 Parse Source Parameters.
142  * source_parameters(base_video_format) */
143 static int parse_source_parameters(AVDiracSeqHeader *dsh, GetBitContext *gb,
144  void *log_ctx)
145 {
146  AVRational frame_rate = { 0, 0 };
147  unsigned luma_depth = 8, luma_offset = 16;
148  int idx;
149  int chroma_x_shift, chroma_y_shift;
150  int ret;
151 
152  /* [DIRAC_STD] 10.3.2 Frame size. frame_size(video_params) */
153  /* [DIRAC_STD] custom_dimensions_flag */
154  if (get_bits1(gb)) {
155  dsh->width = get_interleaved_ue_golomb(gb); /* [DIRAC_STD] FRAME_WIDTH */
156  dsh->height = get_interleaved_ue_golomb(gb); /* [DIRAC_STD] FRAME_HEIGHT */
157  }
158 
159  /* [DIRAC_STD] 10.3.3 Chroma Sampling Format.
160  * chroma_sampling_format(video_params) */
161  /* [DIRAC_STD] custom_chroma_format_flag */
162  if (get_bits1(gb))
163  /* [DIRAC_STD] CHROMA_FORMAT_INDEX */
165  if (dsh->chroma_format > 2U) {
166  if (log_ctx)
167  av_log(log_ctx, AV_LOG_ERROR, "Unknown chroma format %d\n",
168  dsh->chroma_format);
169  return AVERROR_INVALIDDATA;
170  }
171 
172  /* [DIRAC_STD] 10.3.4 Scan Format. scan_format(video_params) */
173  /* [DIRAC_STD] custom_scan_format_flag */
174  if (get_bits1(gb))
175  /* [DIRAC_STD] SOURCE_SAMPLING */
177  if (dsh->interlaced > 1U)
178  return AVERROR_INVALIDDATA;
179 
180  /* [DIRAC_STD] 10.3.5 Frame Rate. frame_rate(video_params) */
181  if (get_bits1(gb)) { /* [DIRAC_STD] custom_frame_rate_flag */
183 
184  if (dsh->frame_rate_index > 10U)
185  return AVERROR_INVALIDDATA;
186 
187  if (!dsh->frame_rate_index) {
188  /* [DIRAC_STD] FRAME_RATE_NUMER */
189  frame_rate.num = get_interleaved_ue_golomb(gb);
190  /* [DIRAC_STD] FRAME_RATE_DENOM */
191  frame_rate.den = get_interleaved_ue_golomb(gb);
192  }
193  }
194  /* [DIRAC_STD] preset_frame_rate(video_params, index) */
195  if (dsh->frame_rate_index > 0) {
196  if (dsh->frame_rate_index <= 8)
197  frame_rate = ff_mpeg12_frame_rate_tab[dsh->frame_rate_index];
198  else
199  /* [DIRAC_STD] Table 10.3 values 9-10 */
200  frame_rate = dirac_frame_rate[dsh->frame_rate_index - 9];
201  }
202  dsh->framerate = frame_rate;
203 
204  /* [DIRAC_STD] 10.3.6 Pixel Aspect Ratio.
205  * pixel_aspect_ratio(video_params) */
206  if (get_bits1(gb)) { /* [DIRAC_STD] custom_pixel_aspect_ratio_flag */
207  /* [DIRAC_STD] index */
209 
210  if (dsh->aspect_ratio_index > 6U)
211  return AVERROR_INVALIDDATA;
212 
213  if (!dsh->aspect_ratio_index) {
216  }
217  }
218  /* [DIRAC_STD] Take value from Table 10.4 Available preset pixel
219  * aspect ratio values */
220  if (dsh->aspect_ratio_index > 0)
221  dsh->sample_aspect_ratio =
222  dirac_preset_aspect_ratios[dsh->aspect_ratio_index - 1];
223 
224  /* [DIRAC_STD] 10.3.7 Clean area. clean_area(video_params) */
225  if (get_bits1(gb)) { /* [DIRAC_STD] custom_clean_area_flag */
226  /* [DIRAC_STD] CLEAN_WIDTH */
228  /* [DIRAC_STD] CLEAN_HEIGHT */
230  /* [DIRAC_STD] CLEAN_LEFT_OFFSET */
232  /* [DIRAC_STD] CLEAN_RIGHT_OFFSET */
234  }
235 
236  /* [DIRAC_STD] 10.3.8 Signal range. signal_range(video_params)
237  * WARNING: Some adaptation seems to be done using the
238  * AVCOL_RANGE_MPEG/JPEG values */
239  if (get_bits1(gb)) { /* [DIRAC_STD] custom_signal_range_flag */
240  /* [DIRAC_STD] index */
242 
243  if (dsh->pixel_range_index > 4U)
244  return AVERROR_INVALIDDATA;
245 
246  /* This assumes either fullrange or MPEG levels only */
247  if (!dsh->pixel_range_index) {
248  luma_offset = get_interleaved_ue_golomb(gb);
249  luma_depth = av_log2(get_interleaved_ue_golomb(gb)) + 1;
250  get_interleaved_ue_golomb(gb); /* chroma offset */
251  get_interleaved_ue_golomb(gb); /* chroma excursion */
252  dsh->color_range = luma_offset ? AVCOL_RANGE_MPEG
254  }
255  }
256  /* [DIRAC_STD] Table 10.5
257  * Available signal range presets <--> pixel_range_presets */
258  if (dsh->pixel_range_index > 0) {
259  idx = dsh->pixel_range_index - 1;
260  luma_depth = pixel_range_presets[idx].bitdepth;
261  dsh->color_range = pixel_range_presets[idx].color_range;
262  }
263 
264  dsh->bit_depth = luma_depth;
265 
266  /* Full range 8 bts uses the same pix_fmts as limited range 8 bits */
267  dsh->pixel_range_index += dsh->pixel_range_index == 1;
268 
269  if (dsh->pixel_range_index < 2U)
270  return AVERROR_INVALIDDATA;
271 
272  dsh->pix_fmt = dirac_pix_fmt[dsh->chroma_format][dsh->pixel_range_index-2];
273  ret = av_pix_fmt_get_chroma_sub_sample(dsh->pix_fmt, &chroma_x_shift, &chroma_y_shift);
274  if (ret)
275  return ret;
276 
277  if ((dsh->width % (1<<chroma_x_shift)) || (dsh->height % (1<<chroma_y_shift))) {
278  if (log_ctx)
279  av_log(log_ctx, AV_LOG_ERROR, "Dimensions must be an integer multiple of the chroma subsampling\n");
280  return AVERROR_INVALIDDATA;
281  }
282 
283  /* [DIRAC_STD] 10.3.9 Colour specification. colour_spec(video_params) */
284  if (get_bits1(gb)) { /* [DIRAC_STD] custom_colour_spec_flag */
285  /* [DIRAC_STD] index */
287 
288  if (dsh->color_spec_index > 4U)
289  return AVERROR_INVALIDDATA;
290 
291  dsh->color_primaries = dirac_color_presets[idx].color_primaries;
292  dsh->colorspace = dirac_color_presets[idx].colorspace;
293  dsh->color_trc = dirac_color_presets[idx].color_trc;
294 
295  if (!dsh->color_spec_index) {
296  /* [DIRAC_STD] 10.3.9.1 Colour primaries */
297  if (get_bits1(gb)) {
298  idx = get_interleaved_ue_golomb(gb);
299  if (idx < 3U)
300  dsh->color_primaries = dirac_primaries[idx];
301  }
302  /* [DIRAC_STD] 10.3.9.2 Colour matrix */
303  if (get_bits1(gb)) {
304  idx = get_interleaved_ue_golomb(gb);
305  if (!idx)
307  else if (idx == 1)
309  }
310  /* [DIRAC_STD] 10.3.9.3 Transfer function */
311  if (get_bits1(gb) && !get_interleaved_ue_golomb(gb))
312  dsh->color_trc = AVCOL_TRC_BT709;
313  }
314  } else {
315  idx = dsh->color_spec_index;
316  dsh->color_primaries = dirac_color_presets[idx].color_primaries;
317  dsh->colorspace = dirac_color_presets[idx].colorspace;
318  dsh->color_trc = dirac_color_presets[idx].color_trc;
319  }
320 
321  return 0;
322 }
323 
324 /* [DIRAC_STD] 10. Sequence Header. sequence_header() */
326  const uint8_t *buf, size_t buf_size,
327  void *log_ctx)
328 {
329  AVDiracSeqHeader *dsh;
330  GetBitContext gb;
331  unsigned video_format, picture_coding_mode;
332  int ret;
333 
334  dsh = av_mallocz(sizeof(*dsh));
335  if (!dsh)
336  return AVERROR(ENOMEM);
337 
338  ret = init_get_bits8(&gb, buf, buf_size);
339  if (ret < 0)
340  goto fail;
341 
342  /* [DIRAC_SPEC] 10.1 Parse Parameters. parse_parameters() */
346  dsh->level = get_interleaved_ue_golomb(&gb);
347  /* [DIRAC_SPEC] sequence_header() -> base_video_format as defined in
348  * 10.2 Base Video Format, table 10.1 Dirac predefined video formats */
349  video_format = get_interleaved_ue_golomb(&gb);
350 
351  if (dsh->version.major < 2 && log_ctx)
352  av_log(log_ctx, AV_LOG_WARNING, "Stream is old and may not work\n");
353  else if (dsh->version.major > 2 && log_ctx)
354  av_log(log_ctx, AV_LOG_WARNING, "Stream may have unhandled features\n");
355 
356  if (video_format > 20U) {
358  goto fail;
359  }
360 
361  /* Fill in defaults for the source parameters. */
362  dsh->width = dirac_source_parameters_defaults[video_format].width;
363  dsh->height = dirac_source_parameters_defaults[video_format].height;
364  dsh->chroma_format = dirac_source_parameters_defaults[video_format].chroma_format;
365  dsh->interlaced = dirac_source_parameters_defaults[video_format].interlaced;
366  dsh->top_field_first = dirac_source_parameters_defaults[video_format].top_field_first;
367  dsh->frame_rate_index = dirac_source_parameters_defaults[video_format].frame_rate_index;
368  dsh->aspect_ratio_index = dirac_source_parameters_defaults[video_format].aspect_ratio_index;
369  dsh->clean_width = dirac_source_parameters_defaults[video_format].clean_width;
370  dsh->clean_height = dirac_source_parameters_defaults[video_format].clean_height;
371  dsh->clean_left_offset = dirac_source_parameters_defaults[video_format].clean_left_offset;
372  dsh->clean_right_offset = dirac_source_parameters_defaults[video_format].clean_right_offset;
373  dsh->pixel_range_index = dirac_source_parameters_defaults[video_format].pixel_range_index;
374  dsh->color_spec_index = dirac_source_parameters_defaults[video_format].color_spec_index;
375 
376  /* [DIRAC_STD] 10.3 Source Parameters
377  * Override the defaults. */
378  ret = parse_source_parameters(dsh, &gb, log_ctx);
379  if (ret < 0)
380  goto fail;
381 
382  /* [DIRAC_STD] picture_coding_mode shall be 0 for fields and 1 for frames
383  * currently only used to signal field coding */
384  picture_coding_mode = get_interleaved_ue_golomb(&gb);
385  if (picture_coding_mode != 0) {
386  if (log_ctx) {
387  av_log(log_ctx, AV_LOG_ERROR, "Unsupported picture coding mode %d",
388  picture_coding_mode);
389  }
391  goto fail;
392  }
393 
394  *pdsh = dsh;
395  return 0;
396 fail:
397  av_freep(&dsh);
398  *pdsh = NULL;
399  return ret;
400 }
401 #else
403  const uint8_t *buf, size_t buf_size,
404  void *log_ctx)
405 {
406  return AVERROR(ENOSYS);
407 }
408 #endif
av_dirac_parse_sequence_header
int av_dirac_parse_sequence_header(AVDiracSeqHeader **pdsh, const uint8_t *buf, size_t buf_size, void *log_ctx)
Parse a Dirac sequence header.
Definition: dirac.c:402
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:182
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
AVERROR
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
AVColorTransferCharacteristic
AVColorTransferCharacteristic
Color Transfer Characteristic.
Definition: pixfmt.h:467
get_interleaved_ue_golomb
static unsigned get_interleaved_ue_golomb(GetBitContext *gb)
Definition: golomb.h:143
AVDiracSeqHeader::color_trc
enum AVColorTransferCharacteristic color_trc
Definition: dirac.h:109
DiracVersionInfo::major
int major
Definition: dirac.h:77
AVCOL_RANGE_JPEG
@ AVCOL_RANGE_JPEG
the normal 2^n-1 "JPEG" YUV ranges
Definition: pixfmt.h:522
internal.h
AVCOL_TRC_UNSPECIFIED
@ AVCOL_TRC_UNSPECIFIED
Definition: pixfmt.h:470
AV_PIX_FMT_YUV420P10
#define AV_PIX_FMT_YUV420P10
Definition: pixfmt.h:387
AVDiracSeqHeader::top_field_first
uint8_t top_field_first
Definition: dirac.h:87
AVDiracSeqHeader::pixel_range_index
uint8_t pixel_range_index
index into dirac_pixel_range_presets[]
Definition: dirac.h:97
AVColorPrimaries
AVColorPrimaries
Chromaticity coordinates of the source primaries.
Definition: pixfmt.h:443
AVDiracSeqHeader::interlaced
uint8_t interlaced
Definition: dirac.h:86
AVDiracSeqHeader::color_range
enum AVColorRange color_range
Definition: dirac.h:107
AVDiracSeqHeader::sample_aspect_ratio
AVRational sample_aspect_ratio
Definition: dirac.h:104
golomb.h
exp golomb vlc stuff
AVCOL_SPC_BT470BG
@ AVCOL_SPC_BT470BG
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
Definition: pixfmt.h:502
AVDiracSeqHeader::level
int level
Definition: dirac.h:101
AVDiracSeqHeader::version
DiracVersionInfo version
Definition: dirac.h:112
U
#define U(x)
Definition: vp56_arith.h:37
fail
#define fail()
Definition: checkasm.h:120
GetBitContext
Definition: get_bits.h:61
av_pix_fmt_get_chroma_sub_sample
int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
Utility function to access log2_chroma_w log2_chroma_h from the pixel format AVPixFmtDescriptor.
Definition: pixdesc.c:2550
AVRational::num
int num
Numerator.
Definition: rational.h:59
dirac.h
AV_PIX_FMT_YUV444P10
#define AV_PIX_FMT_YUV444P10
Definition: pixfmt.h:390
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:176
AVDiracSeqHeader::bit_depth
int bit_depth
Definition: dirac.h:113
buf
void * buf
Definition: avisynth_c.h:766
init_get_bits8
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext.
Definition: get_bits.h:677
width
#define width
AVDiracSeqHeader::profile
int profile
Definition: dirac.h:100
AV_PIX_FMT_YUV420P
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:66
color_range
color_range
Definition: vf_selectivecolor.c:44
AVCOL_PRI_BT470BG
@ AVCOL_PRI_BT470BG
also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
Definition: pixfmt.h:450
AVDiracSeqHeader::chroma_format
uint8_t chroma_format
0: 444 1: 422 2: 420
Definition: dirac.h:84
AVCOL_PRI_SMPTE170M
@ AVCOL_PRI_SMPTE170M
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
Definition: pixfmt.h:451
AVDiracSeqHeader::framerate
AVRational framerate
Definition: dirac.h:103
NULL
#define NULL
Definition: coverity.c:32
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
AVDiracSeqHeader::colorspace
enum AVColorSpace colorspace
Definition: dirac.h:110
AVCOL_PRI_BT709
@ AVCOL_PRI_BT709
also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
Definition: pixfmt.h:445
get_bits1
static unsigned int get_bits1(GetBitContext *s)
Definition: get_bits.h:498
AVDiracSeqHeader::clean_height
uint16_t clean_height
Definition: dirac.h:93
AVDiracSeqHeader::clean_width
uint16_t clean_width
Definition: dirac.h:92
AV_PIX_FMT_YUV422P10
#define AV_PIX_FMT_YUV422P10
Definition: pixfmt.h:388
AVDiracSeqHeader::clean_right_offset
uint16_t clean_right_offset
Definition: dirac.h:95
AVDiracSeqHeader::color_spec_index
uint8_t color_spec_index
index into dirac_color_spec_presets[]
Definition: dirac.h:98
AVDiracSeqHeader::frame_rate_index
uint8_t frame_rate_index
index into dirac_frame_rate[]
Definition: dirac.h:89
AV_PIX_FMT_YUV422P12
#define AV_PIX_FMT_YUV422P12
Definition: pixfmt.h:392
AV_PIX_FMT_YUV444P12
#define AV_PIX_FMT_YUV444P12
Definition: pixfmt.h:394
height
#define height
AVCOL_TRC_BT709
@ AVCOL_TRC_BT709
also ITU-R BT1361
Definition: pixfmt.h:469
interlaced
uint8_t interlaced
Definition: mxfenc.c:2217
AVColorSpace
AVColorSpace
YUV colorspace type.
Definition: pixfmt.h:496
uint8_t
uint8_t
Definition: audio_convert.c:194
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:236
AVCOL_RANGE_MPEG
@ AVCOL_RANGE_MPEG
the normal 219*2^(n-8) "MPEG" YUV ranges
Definition: pixfmt.h:521
DiracVersionInfo::minor
int minor
Definition: dirac.h:78
avcodec.h
ff_mpeg12_frame_rate_tab
const AVRational ff_mpeg12_frame_rate_tab[]
Definition: mpeg12framerate.c:24
AVDiracSeqHeader
Definition: dirac.h:81
ret
ret
Definition: filter_design.txt:187
AVDiracSeqHeader::clean_left_offset
uint16_t clean_left_offset
Definition: dirac.h:94
AV_PIX_FMT_YUV420P12
#define AV_PIX_FMT_YUV420P12
Definition: pixfmt.h:391
mpeg12data.h
AVDiracSeqHeader::pix_fmt
enum AVPixelFormat pix_fmt
Definition: dirac.h:106
AVRational::den
int den
Denominator.
Definition: rational.h:60
AV_PIX_FMT_YUV444P
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
Definition: pixfmt.h:71
AV_PIX_FMT_YUV422P
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition: pixfmt.h:70
AVDiracSeqHeader::aspect_ratio_index
uint8_t aspect_ratio_index
index into dirac_aspect_ratio[]
Definition: dirac.h:90
AVDiracSeqHeader::width
unsigned width
Definition: dirac.h:82
av_freep
#define av_freep(p)
Definition: tableprint_vlc.h:35
imgutils.h
AVDiracSeqHeader::height
unsigned height
Definition: dirac.h:83
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:28
AVERROR_INVALIDDATA
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:59
AVCOL_SPC_BT709
@ AVCOL_SPC_BT709
also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
Definition: pixfmt.h:498
AVColorRange
AVColorRange
MPEG vs JPEG YUV range.
Definition: pixfmt.h:519
AVDiracSeqHeader::color_primaries
enum AVColorPrimaries color_primaries
Definition: dirac.h:108
av_log2
int av_log2(unsigned v)
Definition: intmath.c:26
color_primaries
static const struct ColorPrimaries color_primaries[AVCOL_PRI_NB]
Definition: vf_colorspace.c:209