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 "config.h"
30 
31 #include "libavutil/pixdesc.h"
32 
33 #include "dirac.h"
34 #include "get_bits.h"
35 #include "golomb.h"
36 #include "mpeg12data.h"
37 
38 #if CONFIG_DIRAC_PARSE
39 
40 typedef struct dirac_source_params {
41  unsigned width;
42  unsigned height;
43  uint8_t chroma_format; ///< 0: 444 1: 422 2: 420
44 
45  uint8_t interlaced;
46  uint8_t top_field_first;
47 
48  uint8_t frame_rate_index; ///< index into dirac_frame_rate[]
49  uint8_t aspect_ratio_index; ///< index into dirac_aspect_ratio[]
50 
51  uint16_t clean_width;
52  uint16_t clean_height;
53  uint16_t clean_left_offset;
54  uint16_t clean_right_offset;
55 
56  uint8_t pixel_range_index; ///< index into dirac_pixel_range_presets[]
57  uint8_t color_spec_index; ///< index into dirac_color_spec_presets[]
58 } dirac_source_params;
59 
60 /* defaults for source parameters */
61 static const dirac_source_params dirac_source_parameters_defaults[] = {
62  { 640, 480, 2, 0, 0, 1, 1, 640, 480, 0, 0, 1, 0 },
63  { 176, 120, 2, 0, 0, 9, 2, 176, 120, 0, 0, 1, 1 },
64  { 176, 144, 2, 0, 1, 10, 3, 176, 144, 0, 0, 1, 2 },
65  { 352, 240, 2, 0, 0, 9, 2, 352, 240, 0, 0, 1, 1 },
66  { 352, 288, 2, 0, 1, 10, 3, 352, 288, 0, 0, 1, 2 },
67  { 704, 480, 2, 0, 0, 9, 2, 704, 480, 0, 0, 1, 1 },
68  { 704, 576, 2, 0, 1, 10, 3, 704, 576, 0, 0, 1, 2 },
69  { 720, 480, 1, 1, 0, 4, 2, 704, 480, 8, 0, 3, 1 },
70  { 720, 576, 1, 1, 1, 3, 3, 704, 576, 8, 0, 3, 2 },
71 
72  { 1280, 720, 1, 0, 1, 7, 1, 1280, 720, 0, 0, 3, 3 },
73  { 1280, 720, 1, 0, 1, 6, 1, 1280, 720, 0, 0, 3, 3 },
74  { 1920, 1080, 1, 1, 1, 4, 1, 1920, 1080, 0, 0, 3, 3 },
75  { 1920, 1080, 1, 1, 1, 3, 1, 1920, 1080, 0, 0, 3, 3 },
76  { 1920, 1080, 1, 0, 1, 7, 1, 1920, 1080, 0, 0, 3, 3 },
77  { 1920, 1080, 1, 0, 1, 6, 1, 1920, 1080, 0, 0, 3, 3 },
78  { 2048, 1080, 0, 0, 1, 2, 1, 2048, 1080, 0, 0, 4, 4 },
79  { 4096, 2160, 0, 0, 1, 2, 1, 4096, 2160, 0, 0, 4, 4 },
80 
81  { 3840, 2160, 1, 0, 1, 7, 1, 3840, 2160, 0, 0, 3, 3 },
82  { 3840, 2160, 1, 0, 1, 6, 1, 3840, 2160, 0, 0, 3, 3 },
83  { 7680, 4320, 1, 0, 1, 7, 1, 3840, 2160, 0, 0, 3, 3 },
84  { 7680, 4320, 1, 0, 1, 6, 1, 3840, 2160, 0, 0, 3, 3 },
85 };
86 
87 /* [DIRAC_STD] Table 10.4 - Available preset pixel aspect ratio values */
88 static const AVRational dirac_preset_aspect_ratios[] = {
89  { 1, 1 },
90  { 10, 11 },
91  { 12, 11 },
92  { 40, 33 },
93  { 16, 11 },
94  { 4, 3 },
95 };
96 
97 /* [DIRAC_STD] Values 9,10 of 10.3.5 Frame Rate.
98  * Table 10.3 Available preset frame rate values
99  */
100 static const AVRational dirac_frame_rate[] = {
101  { 15000, 1001 },
102  { 25, 2 },
103 };
104 
105 /* [DIRAC_STD] This should be equivalent to Table 10.5 Available signal
106  * range presets */
107 static const struct {
108  uint8_t bitdepth;
110 } pixel_range_presets[] = {
111  { 8, AVCOL_RANGE_JPEG },
112  { 8, AVCOL_RANGE_MPEG },
113  { 10, AVCOL_RANGE_MPEG },
114  { 12, AVCOL_RANGE_MPEG },
115 };
116 
117 static const enum AVColorPrimaries dirac_primaries[] = {
121 };
122 
123 static const struct {
125  enum AVColorSpace colorspace;
126  enum AVColorTransferCharacteristic color_trc;
127 } dirac_color_presets[] = {
133 };
134 
135 /* [DIRAC_STD] Table 10.2 Supported chroma sampling formats */
136 static const enum AVPixelFormat dirac_pix_fmt[][3] = {
140 };
141 
142 /* [DIRAC_STD] 10.3 Parse Source Parameters.
143  * source_parameters(base_video_format) */
144 static int parse_source_parameters(AVDiracSeqHeader *dsh, GetBitContext *gb,
145  void *log_ctx)
146 {
147  AVRational frame_rate = { 0, 0 };
148  unsigned luma_depth = 8, luma_offset = 16;
149  int idx;
150  int chroma_x_shift, chroma_y_shift;
151  int ret;
152 
153  /* [DIRAC_STD] 10.3.2 Frame size. frame_size(video_params) */
154  /* [DIRAC_STD] custom_dimensions_flag */
155  if (get_bits1(gb)) {
156  dsh->width = get_interleaved_ue_golomb(gb); /* [DIRAC_STD] FRAME_WIDTH */
157  dsh->height = get_interleaved_ue_golomb(gb); /* [DIRAC_STD] FRAME_HEIGHT */
158  }
159 
160  /* [DIRAC_STD] 10.3.3 Chroma Sampling Format.
161  * chroma_sampling_format(video_params) */
162  /* [DIRAC_STD] custom_chroma_format_flag */
163  if (get_bits1(gb))
164  /* [DIRAC_STD] CHROMA_FORMAT_INDEX */
166  if (dsh->chroma_format > 2U) {
167  if (log_ctx)
168  av_log(log_ctx, AV_LOG_ERROR, "Unknown chroma format %d\n",
169  dsh->chroma_format);
170  return AVERROR_INVALIDDATA;
171  }
172 
173  /* [DIRAC_STD] 10.3.4 Scan Format. scan_format(video_params) */
174  /* [DIRAC_STD] custom_scan_format_flag */
175  if (get_bits1(gb))
176  /* [DIRAC_STD] SOURCE_SAMPLING */
178  if (dsh->interlaced > 1U)
179  return AVERROR_INVALIDDATA;
180 
181  /* [DIRAC_STD] 10.3.5 Frame Rate. frame_rate(video_params) */
182  if (get_bits1(gb)) { /* [DIRAC_STD] custom_frame_rate_flag */
184 
185  if (dsh->frame_rate_index > 10U)
186  return AVERROR_INVALIDDATA;
187 
188  if (!dsh->frame_rate_index) {
189  /* [DIRAC_STD] FRAME_RATE_NUMER */
190  frame_rate.num = get_interleaved_ue_golomb(gb);
191  /* [DIRAC_STD] FRAME_RATE_DENOM */
192  frame_rate.den = get_interleaved_ue_golomb(gb);
193  }
194  }
195  /* [DIRAC_STD] preset_frame_rate(video_params, index) */
196  if (dsh->frame_rate_index > 0) {
197  if (dsh->frame_rate_index <= 8)
198  frame_rate = ff_mpeg12_frame_rate_tab[dsh->frame_rate_index];
199  else
200  /* [DIRAC_STD] Table 10.3 values 9-10 */
201  frame_rate = dirac_frame_rate[dsh->frame_rate_index - 9];
202  }
203  dsh->framerate = frame_rate;
204 
205  /* [DIRAC_STD] 10.3.6 Pixel Aspect Ratio.
206  * pixel_aspect_ratio(video_params) */
207  if (get_bits1(gb)) { /* [DIRAC_STD] custom_pixel_aspect_ratio_flag */
208  /* [DIRAC_STD] index */
210 
211  if (dsh->aspect_ratio_index > 6U)
212  return AVERROR_INVALIDDATA;
213 
214  if (!dsh->aspect_ratio_index) {
217  }
218  }
219  /* [DIRAC_STD] Take value from Table 10.4 Available preset pixel
220  * aspect ratio values */
221  if (dsh->aspect_ratio_index > 0)
222  dsh->sample_aspect_ratio =
223  dirac_preset_aspect_ratios[dsh->aspect_ratio_index - 1];
224 
225  /* [DIRAC_STD] 10.3.7 Clean area. clean_area(video_params) */
226  if (get_bits1(gb)) { /* [DIRAC_STD] custom_clean_area_flag */
227  /* [DIRAC_STD] CLEAN_WIDTH */
229  /* [DIRAC_STD] CLEAN_HEIGHT */
231  /* [DIRAC_STD] CLEAN_LEFT_OFFSET */
233  /* [DIRAC_STD] CLEAN_RIGHT_OFFSET */
235  }
236 
237  /* [DIRAC_STD] 10.3.8 Signal range. signal_range(video_params)
238  * WARNING: Some adaptation seems to be done using the
239  * AVCOL_RANGE_MPEG/JPEG values */
240  if (get_bits1(gb)) { /* [DIRAC_STD] custom_signal_range_flag */
241  /* [DIRAC_STD] index */
243 
244  if (dsh->pixel_range_index > 4U)
245  return AVERROR_INVALIDDATA;
246 
247  /* This assumes either fullrange or MPEG levels only */
248  if (!dsh->pixel_range_index) {
249  luma_offset = get_interleaved_ue_golomb(gb);
250  luma_depth = av_log2(get_interleaved_ue_golomb(gb)) + 1;
251  get_interleaved_ue_golomb(gb); /* chroma offset */
252  get_interleaved_ue_golomb(gb); /* chroma excursion */
253  dsh->color_range = luma_offset ? AVCOL_RANGE_MPEG
255  }
256  }
257  /* [DIRAC_STD] Table 10.5
258  * Available signal range presets <--> pixel_range_presets */
259  if (dsh->pixel_range_index > 0) {
260  idx = dsh->pixel_range_index - 1;
261  luma_depth = pixel_range_presets[idx].bitdepth;
262  dsh->color_range = pixel_range_presets[idx].color_range;
263  }
264 
265  dsh->bit_depth = luma_depth;
266 
267  /* Full range 8 bts uses the same pix_fmts as limited range 8 bits */
268  dsh->pixel_range_index += dsh->pixel_range_index == 1;
269 
270  if (dsh->pixel_range_index < 2U)
271  return AVERROR_INVALIDDATA;
272 
273  dsh->pix_fmt = dirac_pix_fmt[dsh->chroma_format][dsh->pixel_range_index-2];
274  ret = av_pix_fmt_get_chroma_sub_sample(dsh->pix_fmt, &chroma_x_shift, &chroma_y_shift);
275  if (ret)
276  return ret;
277 
278  if ((dsh->width % (1<<chroma_x_shift)) || (dsh->height % (1<<chroma_y_shift))) {
279  if (log_ctx)
280  av_log(log_ctx, AV_LOG_ERROR, "Dimensions must be an integer multiple of the chroma subsampling\n");
281  return AVERROR_INVALIDDATA;
282  }
283 
284  /* [DIRAC_STD] 10.3.9 Colour specification. colour_spec(video_params) */
285  if (get_bits1(gb)) { /* [DIRAC_STD] custom_colour_spec_flag */
286  /* [DIRAC_STD] index */
288 
289  if (dsh->color_spec_index > 4U)
290  return AVERROR_INVALIDDATA;
291 
292  dsh->color_primaries = dirac_color_presets[idx].color_primaries;
293  dsh->colorspace = dirac_color_presets[idx].colorspace;
294  dsh->color_trc = dirac_color_presets[idx].color_trc;
295 
296  if (!dsh->color_spec_index) {
297  /* [DIRAC_STD] 10.3.9.1 Colour primaries */
298  if (get_bits1(gb)) {
299  idx = get_interleaved_ue_golomb(gb);
300  if (idx < 3U)
301  dsh->color_primaries = dirac_primaries[idx];
302  }
303  /* [DIRAC_STD] 10.3.9.2 Colour matrix */
304  if (get_bits1(gb)) {
305  idx = get_interleaved_ue_golomb(gb);
306  if (!idx)
308  else if (idx == 1)
310  }
311  /* [DIRAC_STD] 10.3.9.3 Transfer function */
312  if (get_bits1(gb) && !get_interleaved_ue_golomb(gb))
313  dsh->color_trc = AVCOL_TRC_BT709;
314  }
315  } else {
316  idx = dsh->color_spec_index;
317  dsh->color_primaries = dirac_color_presets[idx].color_primaries;
318  dsh->colorspace = dirac_color_presets[idx].colorspace;
319  dsh->color_trc = dirac_color_presets[idx].color_trc;
320  }
321 
322  return 0;
323 }
324 
325 /* [DIRAC_STD] 10. Sequence Header. sequence_header() */
327  const uint8_t *buf, size_t buf_size,
328  void *log_ctx)
329 {
330  AVDiracSeqHeader *dsh;
331  GetBitContext gb;
332  unsigned video_format, picture_coding_mode;
333  int ret;
334 
335  dsh = av_mallocz(sizeof(*dsh));
336  if (!dsh)
337  return AVERROR(ENOMEM);
338 
339  ret = init_get_bits8(&gb, buf, buf_size);
340  if (ret < 0)
341  goto fail;
342 
343  /* [DIRAC_SPEC] 10.1 Parse Parameters. parse_parameters() */
347  dsh->level = get_interleaved_ue_golomb(&gb);
348  /* [DIRAC_SPEC] sequence_header() -> base_video_format as defined in
349  * 10.2 Base Video Format, table 10.1 Dirac predefined video formats */
350  video_format = get_interleaved_ue_golomb(&gb);
351 
352  if (dsh->version.major < 2 && log_ctx)
353  av_log(log_ctx, AV_LOG_WARNING, "Stream is old and may not work\n");
354  else if (dsh->version.major > 2 && log_ctx)
355  av_log(log_ctx, AV_LOG_WARNING, "Stream may have unhandled features\n");
356 
357  if (video_format > 20U) {
359  goto fail;
360  }
361 
362  /* Fill in defaults for the source parameters. */
363  dsh->width = dirac_source_parameters_defaults[video_format].width;
364  dsh->height = dirac_source_parameters_defaults[video_format].height;
365  dsh->chroma_format = dirac_source_parameters_defaults[video_format].chroma_format;
366  dsh->interlaced = dirac_source_parameters_defaults[video_format].interlaced;
367  dsh->top_field_first = dirac_source_parameters_defaults[video_format].top_field_first;
368  dsh->frame_rate_index = dirac_source_parameters_defaults[video_format].frame_rate_index;
369  dsh->aspect_ratio_index = dirac_source_parameters_defaults[video_format].aspect_ratio_index;
370  dsh->clean_width = dirac_source_parameters_defaults[video_format].clean_width;
371  dsh->clean_height = dirac_source_parameters_defaults[video_format].clean_height;
372  dsh->clean_left_offset = dirac_source_parameters_defaults[video_format].clean_left_offset;
373  dsh->clean_right_offset = dirac_source_parameters_defaults[video_format].clean_right_offset;
374  dsh->pixel_range_index = dirac_source_parameters_defaults[video_format].pixel_range_index;
375  dsh->color_spec_index = dirac_source_parameters_defaults[video_format].color_spec_index;
376 
377  /* [DIRAC_STD] 10.3 Source Parameters
378  * Override the defaults. */
379  ret = parse_source_parameters(dsh, &gb, log_ctx);
380  if (ret < 0)
381  goto fail;
382 
383  /* [DIRAC_STD] picture_coding_mode shall be 0 for fields and 1 for frames
384  * currently only used to signal field coding */
385  picture_coding_mode = get_interleaved_ue_golomb(&gb);
386  if (picture_coding_mode != 0) {
387  if (log_ctx) {
388  av_log(log_ctx, AV_LOG_ERROR, "Unsupported picture coding mode %d",
389  picture_coding_mode);
390  }
392  goto fail;
393  }
394 
395  *pdsh = dsh;
396  return 0;
397 fail:
398  av_freep(&dsh);
399  *pdsh = NULL;
400  return ret;
401 }
402 #else
404  const uint8_t *buf, size_t buf_size,
405  void *log_ctx)
406 {
407  return AVERROR(ENOSYS);
408 }
409 #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:403
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:186
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:71
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:584
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:113
DiracVersionInfo::major
int major
Definition: dirac.h:81
pixdesc.h
AVCOL_RANGE_JPEG
@ AVCOL_RANGE_JPEG
Full range content.
Definition: pixfmt.h:687
AVCOL_TRC_UNSPECIFIED
@ AVCOL_TRC_UNSPECIFIED
Definition: pixfmt.h:587
AV_PIX_FMT_YUV420P10
#define AV_PIX_FMT_YUV420P10
Definition: pixfmt.h:482
AVDiracSeqHeader::top_field_first
uint8_t top_field_first
Definition: dirac.h:91
AVDiracSeqHeader::pixel_range_index
uint8_t pixel_range_index
index into dirac_pixel_range_presets[]
Definition: dirac.h:101
AVColorPrimaries
AVColorPrimaries
Chromaticity coordinates of the source primaries.
Definition: pixfmt.h:559
AVDiracSeqHeader::interlaced
uint8_t interlaced
Definition: dirac.h:90
AVDiracSeqHeader::color_range
enum AVColorRange color_range
Definition: dirac.h:111
AVDiracSeqHeader::sample_aspect_ratio
AVRational sample_aspect_ratio
Definition: dirac.h:108
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:619
AVDiracSeqHeader::level
int level
Definition: dirac.h:105
AVDiracSeqHeader::version
DiracVersionInfo version
Definition: dirac.h:116
fail
#define fail()
Definition: checkasm.h:179
GetBitContext
Definition: get_bits.h:108
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:2996
AVRational::num
int num
Numerator.
Definition: rational.h:59
dirac.h
AV_PIX_FMT_YUV444P10
#define AV_PIX_FMT_YUV444P10
Definition: pixfmt.h:485
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:180
AVDiracSeqHeader::bit_depth
int bit_depth
Definition: dirac.h:117
init_get_bits8
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext.
Definition: get_bits.h:545
width
#define width
AVDiracSeqHeader::profile
int profile
Definition: dirac.h:104
get_bits.h
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:73
color_range
color_range
Definition: vf_selectivecolor.c:43
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:566
AVDiracSeqHeader::chroma_format
uint8_t chroma_format
0: 444 1: 422 2: 420
Definition: dirac.h:88
AVCOL_PRI_SMPTE170M
@ AVCOL_PRI_SMPTE170M
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
Definition: pixfmt.h:567
AVDiracSeqHeader::framerate
AVRational framerate
Definition: dirac.h:107
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:114
AVCOL_PRI_BT709
@ AVCOL_PRI_BT709
also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP 177 Annex B
Definition: pixfmt.h:561
get_bits1
static unsigned int get_bits1(GetBitContext *s)
Definition: get_bits.h:388
AVDiracSeqHeader::clean_height
uint16_t clean_height
Definition: dirac.h:97
AVDiracSeqHeader::clean_width
uint16_t clean_width
Definition: dirac.h:96
AV_PIX_FMT_YUV422P10
#define AV_PIX_FMT_YUV422P10
Definition: pixfmt.h:483
AVDiracSeqHeader::clean_right_offset
uint16_t clean_right_offset
Definition: dirac.h:99
AVDiracSeqHeader::color_spec_index
uint8_t color_spec_index
index into dirac_color_spec_presets[]
Definition: dirac.h:102
color_primaries
static const AVColorPrimariesDesc color_primaries[AVCOL_PRI_NB]
Definition: csp.c:76
AVDiracSeqHeader::frame_rate_index
uint8_t frame_rate_index
index into dirac_frame_rate[]
Definition: dirac.h:93
AV_PIX_FMT_YUV422P12
#define AV_PIX_FMT_YUV422P12
Definition: pixfmt.h:487
AV_PIX_FMT_YUV444P12
#define AV_PIX_FMT_YUV444P12
Definition: pixfmt.h:489
height
#define height
AVCOL_TRC_BT709
@ AVCOL_TRC_BT709
also ITU-R BT1361
Definition: pixfmt.h:586
interlaced
uint8_t interlaced
Definition: mxfenc.c:2263
AVColorSpace
AVColorSpace
YUV colorspace type.
Definition: pixfmt.h:613
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:254
AVCOL_RANGE_MPEG
@ AVCOL_RANGE_MPEG
Narrow or limited range content.
Definition: pixfmt.h:670
DiracVersionInfo::minor
int minor
Definition: dirac.h:82
ff_mpeg12_frame_rate_tab
const AVRational ff_mpeg12_frame_rate_tab[]
Definition: mpeg12framerate.c:24
AVDiracSeqHeader
Definition: dirac.h:85
ret
ret
Definition: filter_design.txt:187
AVDiracSeqHeader::clean_left_offset
uint16_t clean_left_offset
Definition: dirac.h:98
AV_PIX_FMT_YUV420P12
#define AV_PIX_FMT_YUV420P12
Definition: pixfmt.h:486
U
#define U(x)
Definition: vpx_arith.h:37
mpeg12data.h
AVDiracSeqHeader::pix_fmt
enum AVPixelFormat pix_fmt
Definition: dirac.h:110
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:78
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:77
AVDiracSeqHeader::aspect_ratio_index
uint8_t aspect_ratio_index
index into dirac_aspect_ratio[]
Definition: dirac.h:94
AVDiracSeqHeader::width
unsigned width
Definition: dirac.h:86
av_freep
#define av_freep(p)
Definition: tableprint_vlc.h:34
AVDiracSeqHeader::height
unsigned height
Definition: dirac.h:87
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
AVERROR_INVALIDDATA
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:61
AVCOL_SPC_BT709
@ AVCOL_SPC_BT709
also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / derived in SMPTE RP 177 Annex B
Definition: pixfmt.h:615
AVColorRange
AVColorRange
Visual content value range.
Definition: pixfmt.h:652
AVDiracSeqHeader::color_primaries
enum AVColorPrimaries color_primaries
Definition: dirac.h:112
av_log2
int av_log2(unsigned v)
Definition: intmath.c:26