FFmpeg
dpxenc.c
Go to the documentation of this file.
1 /*
2  * DPX (.dpx) image encoder
3  * Copyright (c) 2011 Peter Ross <pross@xvid.org>
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21 
22 #include "libavutil/attributes.h"
23 #include "libavutil/common.h"
24 #include "libavutil/intreadwrite.h"
25 #include "libavutil/imgutils.h"
26 #include "avcodec.h"
27 #include "codec_internal.h"
28 #include "encode.h"
29 #include "version.h"
30 #include "dpx.h"
31 
32 typedef struct DPXContext {
37  int planar;
38 } DPXContext;
39 
41 {
42  DPXContext *s = avctx->priv_data;
44 
45  s->big_endian = !!(desc->flags & AV_PIX_FMT_FLAG_BE);
46  s->bits_per_component = desc->comp[0].depth;
47  s->num_components = desc->nb_components;
48  s->descriptor = (desc->flags & AV_PIX_FMT_FLAG_ALPHA) ? 51 : 50;
49  s->planar = !!(desc->flags & AV_PIX_FMT_FLAG_PLANAR);
50 
51  switch (avctx->pix_fmt) {
52  case AV_PIX_FMT_ABGR:
53  s->descriptor = 52;
54  break;
57  case AV_PIX_FMT_GRAY8:
58  s->descriptor = 6;
59  break;
64  case AV_PIX_FMT_RGB24:
67  case AV_PIX_FMT_RGBA:
68  break;
69  case AV_PIX_FMT_RGB48LE:
70  case AV_PIX_FMT_RGB48BE:
71  if (avctx->bits_per_raw_sample)
72  s->bits_per_component = avctx->bits_per_raw_sample;
73  break;
74  }
75 
76  return 0;
77 }
78 
79 static av_always_inline void write16_internal(int big_endian, void *p, int value)
80 {
81  if (big_endian) AV_WB16(p, value);
82  else AV_WL16(p, value);
83 }
84 
85 static av_always_inline void write32_internal(int big_endian, void *p, int value)
86 {
87  if (big_endian) AV_WB32(p, value);
88  else AV_WL32(p, value);
89 }
90 
91 #define write16(p, value) write16_internal(s->big_endian, p, value)
92 #define write32(p, value) write32_internal(s->big_endian, p, value)
93 
94 static void encode_rgb48_10bit(AVCodecContext *avctx, const AVFrame *pic,
95  uint8_t *dst)
96 {
97  DPXContext *s = avctx->priv_data;
98  const uint8_t *src = pic->data[0];
99  int x, y;
100 
101  for (y = 0; y < avctx->height; y++) {
102  for (x = 0; x < avctx->width; x++) {
103  int value;
104  if (s->big_endian) {
105  value = ((AV_RB16(src + 6*x + 4) & 0xFFC0U) >> 4)
106  | ((AV_RB16(src + 6*x + 2) & 0xFFC0U) << 6)
107  | ((AV_RB16(src + 6*x + 0) & 0xFFC0U) << 16);
108  } else {
109  value = ((AV_RL16(src + 6*x + 4) & 0xFFC0U) >> 4)
110  | ((AV_RL16(src + 6*x + 2) & 0xFFC0U) << 6)
111  | ((AV_RL16(src + 6*x + 0) & 0xFFC0U) << 16);
112  }
113  write32(dst, value);
114  dst += 4;
115  }
116  src += pic->linesize[0];
117  }
118 }
119 
120 static void encode_gbrp10(AVCodecContext *avctx, const AVFrame *pic, uint8_t *dst)
121 {
122  DPXContext *s = avctx->priv_data;
123  const uint8_t *src[3] = {pic->data[0], pic->data[1], pic->data[2]};
124  int x, y, i;
125 
126  for (y = 0; y < avctx->height; y++) {
127  for (x = 0; x < avctx->width; x++) {
128  int value;
129  if (s->big_endian) {
130  value = (AV_RB16(src[0] + 2*x) << 12)
131  | (AV_RB16(src[1] + 2*x) << 2)
132  | ((unsigned)AV_RB16(src[2] + 2*x) << 22);
133  } else {
134  value = (AV_RL16(src[0] + 2*x) << 12)
135  | (AV_RL16(src[1] + 2*x) << 2)
136  | ((unsigned)AV_RL16(src[2] + 2*x) << 22);
137  }
138  write32(dst, value);
139  dst += 4;
140  }
141  for (i = 0; i < 3; i++)
142  src[i] += pic->linesize[i];
143  }
144 }
145 
146 static void encode_gbrp12(AVCodecContext *avctx, const AVFrame *pic, uint8_t *dst)
147 {
148  DPXContext *s = avctx->priv_data;
149  const uint16_t *src[3] = {(uint16_t*)pic->data[0],
150  (uint16_t*)pic->data[1],
151  (uint16_t*)pic->data[2]};
152  int x, y, i, pad;
153  pad = avctx->width*6;
154  pad = (FFALIGN(pad, 4) - pad) >> 1;
155  for (y = 0; y < avctx->height; y++) {
156  for (x = 0; x < avctx->width; x++) {
157  uint16_t value[3];
158  if (s->big_endian) {
159  value[1] = AV_RB16(src[0] + x) << 4;
160  value[2] = AV_RB16(src[1] + x) << 4;
161  value[0] = AV_RB16(src[2] + x) << 4;
162  } else {
163  value[1] = AV_RL16(src[0] + x) << 4;
164  value[2] = AV_RL16(src[1] + x) << 4;
165  value[0] = AV_RL16(src[2] + x) << 4;
166  }
167  for (i = 0; i < 3; i++, dst += 2)
168  write16(dst, value[i]);
169  }
170  for (i = 0; i < pad; i++, dst += 2)
171  AV_WN16(dst, 0);
172  for (i = 0; i < 3; i++)
173  src[i] += pic->linesize[i]/2;
174  }
175 }
176 
178  const AVFrame *frame, int *got_packet)
179 {
180  DPXContext *s = avctx->priv_data;
181  int size, ret, need_align, len;
182  uint8_t *buf;
183  int color_trc, color_spec;
184 
185 #define HEADER_SIZE 1664 /* DPX Generic header */
186  if (s->bits_per_component == 10)
187  size = avctx->height * avctx->width * 4;
188  else if (s->bits_per_component == 12) {
189  // 3 components, 12 bits put on 16 bits
190  len = avctx->width*6;
191  size = FFALIGN(len, 4);
192  need_align = size - len;
193  size *= avctx->height;
194  } else {
195  // N components, M bits
196  len = avctx->width * s->num_components * s->bits_per_component >> 3;
197  size = FFALIGN(len, 4);
198  need_align = size - len;
199  size *= avctx->height;
200  }
201  if ((ret = ff_get_encode_buffer(avctx, pkt, size + HEADER_SIZE, 0)) < 0)
202  return ret;
203  buf = pkt->data;
204 
205  memset(buf, 0, HEADER_SIZE);
206 
207  /* File information header */
208  write32(buf, MKBETAG('S','D','P','X'));
209  write32(buf + 4, HEADER_SIZE);
210  memcpy (buf + 8, "V1.0", 4);
211  write32(buf + 20, 1); /* new image */
212  write32(buf + 24, HEADER_SIZE);
213  if (!(avctx->flags & AV_CODEC_FLAG_BITEXACT))
214  memcpy (buf + 160, LIBAVCODEC_IDENT, FFMIN(sizeof(LIBAVCODEC_IDENT), 100));
215  write32(buf + 660, 0xFFFFFFFF); /* unencrypted */
216 
217  /* Image information header */
218  write16(buf + 768, 0); /* orientation; left to right, top to bottom */
219  write16(buf + 770, 1); /* number of elements */
220  write32(buf + 772, avctx->width);
221  write32(buf + 776, avctx->height);
222  buf[800] = s->descriptor;
223 
224  switch (avctx->color_trc) {
225  case AVCOL_TRC_BT709:
226  color_trc = DPX_TRC_ITU_R_709_4;
227  break;
228  default:
229  av_log(avctx, AV_LOG_WARNING, "unsupported color transfer\n");
232  color_trc = DPX_TRC_UNSPECIFIED_VIDEO;
233  break;
234  case AVCOL_TRC_GAMMA28:
235  color_trc = DPX_TRC_ITU_R_624_4_PAL;
236  break;
237  case AVCOL_TRC_SMPTE170M:
238  color_trc = DPX_TRC_SMPTE_170;
239  break;
240  case AVCOL_TRC_LINEAR:
241  color_trc = DPX_TRC_LINEAR;
242  break;
243  }
244  buf[801] = color_trc;
245 
246  switch (avctx->color_primaries) {
247  case AVCOL_PRI_BT709:
248  color_spec = DPX_COL_SPEC_ITU_R_709_4;
249  break;
250  default:
251  av_log(avctx, AV_LOG_WARNING, "unsupported colorimetric specification\n");
254  color_spec = DPX_COL_SPEC_UNSPECIFIED_VIDEO;
255  break;
256  case AVCOL_PRI_BT470BG:
257  color_spec = DPX_COL_SPEC_ITU_R_624_4_PAL;
258  break;
259  case AVCOL_PRI_SMPTE170M:
260  color_spec = DPX_COL_SPEC_SMPTE_170;
261  break;
262  }
263  buf[802] = color_spec;
264 
265  buf[803] = s->bits_per_component;
266  write16(buf + 804, (s->bits_per_component == 10 || s->bits_per_component == 12) ?
267  1 : 0); /* packing method */
268  write32(buf + 808, HEADER_SIZE); /* data offset */
269 
270  /* Image source information header */
271  write32(buf + 1628, avctx->sample_aspect_ratio.num);
272  write32(buf + 1632, avctx->sample_aspect_ratio.den);
273 
274  switch(s->bits_per_component) {
275  case 8:
276  case 16:
277  if (need_align) {
278  int j;
279  const uint8_t *src = frame->data[0];
280  uint8_t *dst = pkt->data + HEADER_SIZE;
281  size = (len + need_align) * avctx->height;
282  for (j=0; j<avctx->height; j++) {
283  memcpy(dst, src, len);
284  memset(dst + len, 0, need_align);
285  dst += len + need_align;
286  src += frame->linesize[0];
287  }
288  } else {
290  (const uint8_t**)frame->data, frame->linesize,
291  avctx->pix_fmt,
292  avctx->width, avctx->height, 1);
293  }
294  if (size < 0)
295  return size;
296  break;
297  case 10:
298  if (s->planar)
299  encode_gbrp10(avctx, frame, buf + HEADER_SIZE);
300  else
301  encode_rgb48_10bit(avctx, frame, buf + HEADER_SIZE);
302  break;
303  case 12:
304  encode_gbrp12(avctx, frame, buf + HEADER_SIZE);
305  break;
306  default:
307  av_log(avctx, AV_LOG_ERROR, "Unsupported bit depth: %d\n", s->bits_per_component);
308  return -1;
309  }
310 
311  size += HEADER_SIZE;
312 
313  write32(buf + 16, size); /* file size */
314 
315  *got_packet = 1;
316 
317  return 0;
318 }
319 
321  .p.name = "dpx",
322  CODEC_LONG_NAME("DPX (Digital Picture Exchange) image"),
323  .p.type = AVMEDIA_TYPE_VIDEO,
324  .p.id = AV_CODEC_ID_DPX,
325  .p.capabilities = AV_CODEC_CAP_DR1,
326  .priv_data_size = sizeof(DPXContext),
327  .init = encode_init,
336 };
DPX_COL_SPEC_ITU_R_624_4_PAL
@ DPX_COL_SPEC_ITU_R_624_4_PAL
Definition: dpx.h:55
CODEC_PIXFMTS
#define CODEC_PIXFMTS(...)
Definition: codec_internal.h:392
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:216
AV_CODEC_ID_DPX
@ AV_CODEC_ID_DPX
Definition: codec_id.h:180
LIBAVCODEC_IDENT
#define LIBAVCODEC_IDENT
Definition: version.h:43
AV_WL32
#define AV_WL32(p, v)
Definition: intreadwrite.h:422
AV_PIX_FMT_GBRP10BE
@ AV_PIX_FMT_GBRP10BE
planar GBR 4:4:4 30bpp, big-endian
Definition: pixfmt.h:169
av_pix_fmt_desc_get
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
Definition: pixdesc.c:3456
DPX_TRC_SMPTE_170
@ DPX_TRC_SMPTE_170
Definition: dpx.h:38
AVCOL_TRC_LINEAR
@ AVCOL_TRC_LINEAR
"Linear transfer characteristics"
Definition: pixfmt.h:675
write16
#define write16(p, value)
Definition: dpxenc.c:91
dpx.h
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:435
AV_PIX_FMT_RGBA64BE
@ AV_PIX_FMT_RGBA64BE
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
Definition: pixfmt.h:202
AVCodecContext::color_trc
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic.
Definition: avcodec.h:660
AVPacket::data
uint8_t * data
Definition: packet.h:595
DPXContext::descriptor
int descriptor
Definition: dpxenc.c:36
encode.h
AVCOL_TRC_UNSPECIFIED
@ AVCOL_TRC_UNSPECIFIED
Definition: pixfmt.h:669
FFCodec
Definition: codec_internal.h:127
version.h
DPX_COL_SPEC_SMPTE_170
@ DPX_COL_SPEC_SMPTE_170
Definition: dpx.h:54
write16_internal
static av_always_inline void write16_internal(int big_endian, void *p, int value)
Definition: dpxenc.c:79
AVFrame::data
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
Definition: frame.h:456
DPXContext::bits_per_component
int bits_per_component
Definition: dpxenc.c:34
encode_frame
static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
Definition: dpxenc.c:177
AV_PIX_FMT_GRAY16BE
@ AV_PIX_FMT_GRAY16BE
Y , 16bpp, big-endian.
Definition: pixfmt.h:104
FFCodec::p
AVCodec p
The public AVCodec.
Definition: codec_internal.h:131
ff_dpx_encoder
const FFCodec ff_dpx_encoder
Definition: dpxenc.c:320
AVCOL_TRC_GAMMA28
@ AVCOL_TRC_GAMMA28
also ITU-R BT470BG
Definition: pixfmt.h:672
AVCodecContext::flags
int flags
AV_CODEC_FLAG_*.
Definition: avcodec.h:496
FF_CODEC_ENCODE_CB
#define FF_CODEC_ENCODE_CB(func)
Definition: codec_internal.h:359
AVRational::num
int num
Numerator.
Definition: rational.h:59
DPX_COL_SPEC_ITU_R_709_4
@ DPX_COL_SPEC_ITU_R_709_4
Definition: dpx.h:51
AVCodecContext::color_primaries
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries.
Definition: avcodec.h:653
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:210
av_cold
#define av_cold
Definition: attributes.h:119
write32_internal
static av_always_inline void write32_internal(int big_endian, void *p, int value)
Definition: dpxenc.c:85
intreadwrite.h
s
#define s(width, name)
Definition: cbs_vp9.c:198
DPX_TRC_ITU_R_709_4
@ DPX_TRC_ITU_R_709_4
Definition: dpx.h:35
AV_PIX_FMT_GBRP12LE
@ AV_PIX_FMT_GBRP12LE
planar GBR 4:4:4 36bpp, little-endian
Definition: pixfmt.h:280
DPX_TRC_ITU_R_624_4_PAL
@ DPX_TRC_ITU_R_624_4_PAL
Definition: dpx.h:39
AVCodecContext::bits_per_raw_sample
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
Definition: avcodec.h:1565
AV_PIX_FMT_FLAG_ALPHA
#define AV_PIX_FMT_FLAG_ALPHA
The pixel format has an alpha channel.
Definition: pixdesc.h:147
AV_RL16
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_RL16
Definition: bytestream.h:94
write32
#define write32(p, value)
Definition: dpxenc.c:92
AV_PIX_FMT_GBRP10LE
@ AV_PIX_FMT_GBRP10LE
planar GBR 4:4:4 30bpp, little-endian
Definition: pixfmt.h:170
AVCOL_PRI_UNSPECIFIED
@ AVCOL_PRI_UNSPECIFIED
Definition: pixfmt.h:639
av_fallthrough
#define av_fallthrough
Definition: attributes.h:67
CODEC_LONG_NAME
#define CODEC_LONG_NAME(str)
Definition: codec_internal.h:332
AV_PIX_FMT_RGBA
@ AV_PIX_FMT_RGBA
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
Definition: pixfmt.h:100
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:643
AVCOL_PRI_SMPTE170M
@ AVCOL_PRI_SMPTE170M
also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
Definition: pixfmt.h:644
AV_WB16
#define AV_WB16(p, v)
Definition: intreadwrite.h:401
DPXContext::planar
int planar
Definition: dpxenc.c:37
AV_PIX_FMT_RGB48LE
@ AV_PIX_FMT_RGB48LE
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as lit...
Definition: pixfmt.h:110
AVCOL_PRI_BT709
@ AVCOL_PRI_BT709
also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP 177 Annex B
Definition: pixfmt.h:638
AV_PIX_FMT_RGBA64LE
@ AV_PIX_FMT_RGBA64LE
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
Definition: pixfmt.h:203
AV_PIX_FMT_GRAY8
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
Definition: pixfmt.h:81
AV_PIX_FMT_ABGR
@ AV_PIX_FMT_ABGR
packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
Definition: pixfmt.h:101
DPXContext::num_components
int num_components
Definition: dpxenc.c:35
AV_WB32
#define AV_WB32(p, v)
Definition: intreadwrite.h:415
DPXContext
Definition: dpxenc.c:32
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts.c:551
AV_PIX_FMT_RGB24
@ AV_PIX_FMT_RGB24
packed RGB 8:8:8, 24bpp, RGBRGB...
Definition: pixfmt.h:75
AV_CODEC_CAP_DR1
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
Definition: codec.h:52
AVPacket::size
int size
Definition: packet.h:596
codec_internal.h
encode_gbrp12
static void encode_gbrp12(AVCodecContext *avctx, const AVFrame *pic, uint8_t *dst)
Definition: dpxenc.c:146
dst
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition: dsp.h:87
i
#define i(width, name, range_min, range_max)
Definition: cbs_h264.c:63
for
for(k=2;k<=8;++k)
Definition: h264pred_template.c:424
size
int size
Definition: twinvq_data.h:10344
MKBETAG
#define MKBETAG(a, b, c, d)
Definition: macros.h:56
DPX_COL_SPEC_UNSPECIFIED_VIDEO
@ DPX_COL_SPEC_UNSPECIFIED_VIDEO
Definition: dpx.h:49
AV_WL16
#define AV_WL16(p, v)
Definition: intreadwrite.h:408
attributes.h
HEADER_SIZE
#define HEADER_SIZE
AVCOL_TRC_BT709
@ AVCOL_TRC_BT709
also ITU-R BT1361
Definition: pixfmt.h:668
AV_PIX_FMT_RGB48BE
@ AV_PIX_FMT_RGB48BE
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big...
Definition: pixfmt.h:109
common.h
av_always_inline
#define av_always_inline
Definition: attributes.h:76
value
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default value
Definition: writing_filters.txt:86
FFMIN
#define FFMIN(a, b)
Definition: macros.h:49
AV_PIX_FMT_FLAG_BE
#define AV_PIX_FMT_FLAG_BE
Pixel format is big-endian.
Definition: pixdesc.h:116
AVCodec::name
const char * name
Name of the codec implementation.
Definition: codec.h:179
len
int len
Definition: vorbis_enc_data.h:426
AVCodecContext::height
int height
Definition: avcodec.h:600
AVCodecContext::pix_fmt
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
Definition: avcodec.h:639
avcodec.h
ret
ret
Definition: filter_design.txt:187
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:265
AV_PIX_FMT_GBRP12BE
@ AV_PIX_FMT_GBRP12BE
planar GBR 4:4:4 36bpp, big-endian
Definition: pixfmt.h:279
DPX_TRC_UNSPECIFIED_VIDEO
@ DPX_TRC_UNSPECIFIED_VIDEO
Definition: dpx.h:33
U
#define U(x)
Definition: vpx_arith.h:37
AVCodecContext
main external API structure.
Definition: avcodec.h:439
encode_gbrp10
static void encode_gbrp10(AVCodecContext *avctx, const AVFrame *pic, uint8_t *dst)
Definition: dpxenc.c:120
encode_rgb48_10bit
static void encode_rgb48_10bit(AVCodecContext *avctx, const AVFrame *pic, uint8_t *dst)
Definition: dpxenc.c:94
ff_get_encode_buffer
int ff_get_encode_buffer(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int flags)
Get a buffer for a packet.
Definition: encode.c:105
AVRational::den
int den
Denominator.
Definition: rational.h:60
AV_PIX_FMT_FLAG_PLANAR
#define AV_PIX_FMT_FLAG_PLANAR
At least one pixel component is not in the first data plane.
Definition: pixdesc.h:132
AVCOL_TRC_SMPTE170M
@ AVCOL_TRC_SMPTE170M
also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
Definition: pixfmt.h:673
Windows::Graphics::DirectX::Direct3D11::p
IDirect3DDxgiInterfaceAccess _COM_Outptr_ void ** p
Definition: vsrc_gfxcapture_winrt.hpp:53
encode_init
static av_cold int encode_init(AVCodecContext *avctx)
Definition: dpxenc.c:40
desc
const char * desc
Definition: libsvtav1.c:83
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:200
AV_PIX_FMT_GRAY16LE
@ AV_PIX_FMT_GRAY16LE
Y , 16bpp, little-endian.
Definition: pixfmt.h:105
AV_CODEC_FLAG_BITEXACT
#define AV_CODEC_FLAG_BITEXACT
Use only bitexact stuff (except (I)DCT).
Definition: avcodec.h:322
AVPixFmtDescriptor
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
Definition: pixdesc.h:69
DPX_TRC_LINEAR
@ DPX_TRC_LINEAR
Definition: dpx.h:31
av_image_copy_to_buffer
int av_image_copy_to_buffer(uint8_t *dst, int dst_size, const uint8_t *const src_data[4], const int src_linesize[4], enum AVPixelFormat pix_fmt, int width, int height, int align)
Copy image data from an image into a buffer.
Definition: imgutils.c:501
FFALIGN
#define FFALIGN(x, a)
Definition: macros.h:78
AVPacket
This structure stores compressed data.
Definition: packet.h:572
AVCodecContext::priv_data
void * priv_data
Definition: avcodec.h:466
AVCodecContext::width
int width
picture width / height.
Definition: avcodec.h:600
imgutils.h
AVFrame::linesize
int linesize[AV_NUM_DATA_POINTERS]
For video, a positive or negative value, which is typically indicating the size in bytes of each pict...
Definition: frame.h:480
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
pkt
static AVPacket * pkt
Definition: demux_decode.c:55
AVCodecContext::sample_aspect_ratio
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel.
Definition: avcodec.h:624
DPXContext::big_endian
int big_endian
Definition: dpxenc.c:33
src
#define src
Definition: vp8dsp.c:248
AV_RB16
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_WB24 unsigned int_TMPL AV_RB16
Definition: bytestream.h:98
AV_WN16
#define AV_WN16(p, v)
Definition: intreadwrite.h:368