38 #define DEFAULT_SLICE_MB_WIDTH 8
40 #define FF_PROFILE_PRORES_PROXY 0
41 #define FF_PROFILE_PRORES_LT 1
42 #define FF_PROFILE_PRORES_STANDARD 2
43 #define FF_PROFILE_PRORES_HQ 3
44 #define FF_PROFILE_PRORES_444 4
61 4, 7, 9, 11, 13, 14, 15, 63,
62 7, 7, 11, 12, 14, 15, 63, 63,
63 9, 11, 13, 14, 15, 63, 63, 63,
64 11, 11, 13, 14, 63, 63, 63, 63,
65 11, 13, 14, 63, 63, 63, 63, 63,
66 13, 14, 63, 63, 63, 63, 63, 63,
67 13, 63, 63, 63, 63, 63, 63, 63,
68 63, 63, 63, 63, 63, 63, 63, 63
70 4, 5, 6, 7, 9, 11, 13, 15,
71 5, 5, 7, 8, 11, 13, 15, 17,
72 6, 7, 9, 11, 13, 15, 15, 17,
73 7, 7, 9, 11, 13, 15, 17, 19,
74 7, 9, 11, 13, 14, 16, 19, 23,
75 9, 11, 13, 14, 16, 19, 23, 29,
76 9, 11, 13, 15, 17, 21, 28, 35,
77 11, 13, 16, 17, 21, 28, 35, 41
79 4, 4, 5, 5, 6, 7, 7, 9,
80 4, 4, 5, 6, 7, 7, 9, 9,
81 5, 5, 6, 7, 7, 9, 9, 10,
82 5, 5, 6, 7, 7, 9, 9, 10,
83 5, 6, 7, 7, 8, 9, 10, 12,
84 6, 7, 7, 8, 9, 10, 12, 15,
85 6, 7, 7, 9, 10, 11, 14, 17,
86 7, 7, 9, 10, 11, 14, 17, 21
88 4, 4, 4, 4, 4, 4, 4, 4,
89 4, 4, 4, 4, 4, 4, 4, 4,
90 4, 4, 4, 4, 4, 4, 4, 4,
91 4, 4, 4, 4, 4, 4, 4, 5,
92 4, 4, 4, 4, 4, 4, 5, 5,
93 4, 4, 4, 4, 4, 5, 5, 6,
94 4, 4, 4, 4, 5, 5, 6, 7,
95 4, 4, 4, 4, 5, 6, 7, 7
97 4, 4, 4, 4, 4, 4, 4, 4,
98 4, 4, 4, 4, 4, 4, 4, 4,
99 4, 4, 4, 4, 4, 4, 4, 4,
100 4, 4, 4, 4, 4, 4, 4, 5,
101 4, 4, 4, 4, 4, 4, 5, 5,
102 4, 4, 4, 4, 4, 5, 5, 6,
103 4, 4, 4, 4, 5, 5, 6, 7,
104 4, 4, 4, 4, 5, 6, 7, 7
110 4, 7, 9, 11, 13, 14, 63, 63,
111 7, 7, 11, 12, 14, 63, 63, 63,
112 9, 11, 13, 14, 63, 63, 63, 63,
113 11, 11, 13, 14, 63, 63, 63, 63,
114 11, 13, 14, 63, 63, 63, 63, 63,
115 13, 14, 63, 63, 63, 63, 63, 63,
116 13, 63, 63, 63, 63, 63, 63, 63,
117 63, 63, 63, 63, 63, 63, 63, 63
119 4, 5, 6, 7, 9, 11, 13, 15,
120 5, 5, 7, 8, 11, 13, 15, 17,
121 6, 7, 9, 11, 13, 15, 15, 17,
122 7, 7, 9, 11, 13, 15, 17, 19,
123 7, 9, 11, 13, 14, 16, 19, 23,
124 9, 11, 13, 14, 16, 19, 23, 29,
125 9, 11, 13, 15, 17, 21, 28, 35,
126 11, 13, 16, 17, 21, 28, 35, 41
128 4, 4, 5, 5, 6, 7, 7, 9,
129 4, 4, 5, 6, 7, 7, 9, 9,
130 5, 5, 6, 7, 7, 9, 9, 10,
131 5, 5, 6, 7, 7, 9, 9, 10,
132 5, 6, 7, 7, 8, 9, 10, 12,
133 6, 7, 7, 8, 9, 10, 12, 15,
134 6, 7, 7, 9, 10, 11, 14, 17,
135 7, 7, 9, 10, 11, 14, 17, 21
137 4, 4, 4, 4, 4, 4, 4, 4,
138 4, 4, 4, 4, 4, 4, 4, 4,
139 4, 4, 4, 4, 4, 4, 4, 4,
140 4, 4, 4, 4, 4, 4, 4, 5,
141 4, 4, 4, 4, 4, 4, 5, 5,
142 4, 4, 4, 4, 4, 5, 5, 6,
143 4, 4, 4, 4, 5, 5, 6, 7,
144 4, 4, 4, 4, 5, 6, 7, 7
146 4, 4, 4, 4, 4, 4, 4, 4,
147 4, 4, 4, 4, 4, 4, 4, 4,
148 4, 4, 4, 4, 4, 4, 4, 4,
149 4, 4, 4, 4, 4, 4, 4, 5,
150 4, 4, 4, 4, 4, 4, 5, 5,
151 4, 4, 4, 4, 4, 5, 5, 6,
152 4, 4, 4, 4, 5, 5, 6, 7,
153 4, 4, 4, 4, 5, 6, 7, 7
164 int qmat_luma[16][64];
165 int qmat_chroma[16][64];
172 unsigned int rice_order, exp_order, switch_bits, first_exp,
exp, zeros;
175 switch_bits = codebook & 3;
176 rice_order = codebook >> 5;
177 exp_order = (codebook >> 2) & 7;
179 first_exp = ((switch_bits + 1) << rice_order);
181 if (val >= first_exp) {
183 val += (1 << exp_order);
185 zeros = exp - exp_order + switch_bits + 1;
188 }
else if (rice_order) {
189 put_bits(pb, (val >> rice_order), 0);
198 #define QSCALE(qmat,ind,val) ((val) / ((qmat)[ind]))
199 #define TO_GOLOMB(val) (((val) << 1) ^ ((val) >> 31))
200 #define DIFF_SIGN(val, sign) (((val) >> 31) ^ (sign))
201 #define IS_NEGATIVE(val) ((((val) >> 31) ^ -1) + 1)
202 #define TO_GOLOMB2(val,sign) ((val)==0 ? 0 : ((val) << 1) + (sign))
206 int sign = (val >> 31);
207 return (val ^ sign) - sign;
210 #define FIRST_DC_CB 0xB8
215 int blocks_per_slice,
int *qmat)
219 int new_dc,
delta, diff_sign, new_code;
221 prev_dc =
QSCALE(qmat, 0, in[0] - 16384);
225 code = 5; sign = 0; idx = 64;
226 for (i = 1; i < blocks_per_slice; i++, idx += 64) {
227 new_dc =
QSCALE(qmat, 0, in[idx] - 16384);
228 delta = new_dc - prev_dc;
241 0x29, 0x29, 0x29, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x4C };
243 0x28, 0x28, 0x28, 0x4C };
246 int16_t *
in,
int blocks_per_slice,
int *qmat)
252 for (i = 1; i < 64; i++) {
254 for (j = 0; j < blocks_per_slice; j++) {
255 int val =
QSCALE(qmat, indp, in[(j << 6) + indp]);
280 for (i = 0; i < 8; i++) {
302 for (i = 0; i < mb_count; i++) {
303 fdct_get(fdsp, src, src_stride, block + (0 << 6));
304 fdct_get(fdsp, src + 16, src_stride, block + (1 << 6));
305 fdct_get(fdsp, src + 8 * src_stride, src_stride, block + (2 << 6));
306 fdct_get(fdsp, src + 16 + 8 * src_stride, src_stride, block + (3 << 6));
311 }
else if (chroma && is_422){
312 for (i = 0; i < mb_count; i++) {
313 fdct_get(fdsp, src, src_stride, block + (0 << 6));
314 fdct_get(fdsp, src + 8 * src_stride, src_stride, block + (1 << 6));
319 for (i = 0; i < mb_count; i++) {
320 fdct_get(fdsp, src, src_stride, block + (0 << 6));
321 fdct_get(fdsp, src + 8 * src_stride, src_stride, block + (1 << 6));
322 fdct_get(fdsp, src + 16, src_stride, block + (2 << 6));
323 fdct_get(fdsp, src + 16 + 8 * src_stride, src_stride, block + (3 << 6));
333 int blocks_per_slice;
336 blocks_per_slice = mb_count << (2 - sub_sample_chroma);
347 int16_t * blocks_y, int16_t * blocks_u, int16_t * blocks_v,
348 unsigned mb_count,
uint8_t *
buf,
unsigned data_size,
349 unsigned* y_data_size,
unsigned* u_data_size,
unsigned* v_data_size,
355 buf, data_size, ctx->
qmat_luma[qp - 1], 0);
358 *u_data_size =
encode_slice_plane(blocks_u, mb_count, buf + *y_data_size, data_size - *y_data_size,
361 *v_data_size =
encode_slice_plane(blocks_v, mb_count, buf + *y_data_size + *u_data_size,
362 data_size - *y_data_size - *u_data_size,
366 return *y_data_size + *u_data_size + *v_data_size;
371 unsigned dst_width,
unsigned dst_height)
374 int box_width =
FFMIN(width - x, dst_width);
375 int box_height =
FFMIN(height - y, dst_height);
376 int i, j, src_stride = stride >> 1;
377 uint16_t last_pix, *last_line;
379 src += y * src_stride + x;
380 for (i = 0; i < box_height; ++i) {
381 for (j = 0; j < box_width; ++j) {
384 last_pix = dst[j - 1];
385 for (; j < dst_width; j++)
390 last_line = dst - dst_width;
391 for (; i < dst_height; i++) {
392 for (j = 0; j < dst_width; ++j) {
393 dst[j] = last_line[j];
400 int mb_y,
unsigned mb_count,
uint8_t *
buf,
unsigned data_size,
403 int luma_stride, chroma_stride;
404 int hdr_size = 6, slice_size;
405 uint8_t *dest_y, *dest_u, *dest_v;
406 unsigned y_data_size = 0, u_data_size = 0, v_data_size = 0;
410 int low_bytes = (tgt_bits - (tgt_bits >> 3)) >> 3;
411 int high_bytes = (tgt_bits + (tgt_bits >> 3)) >> 3;
420 dest_y = pic->
data[0] + (mb_y << 4) * luma_stride + (mb_x << 5);
421 dest_u = pic->
data[1] + (mb_y << 4) * chroma_stride + (mb_x << (5 - ctx->
is_422));
422 dest_v = pic->
data[2] + (mb_y << 4) * chroma_stride + (mb_x << (5 - ctx->
is_422));
427 (uint16_t *) ctx->
fill_y, mb_count << 4, 16);
430 (uint16_t *) ctx->
fill_u, mb_count << (4 - ctx->
is_422), 16);
433 (uint16_t *) ctx->
fill_v, mb_count << (4 - ctx->
is_422), 16);
440 mb_count, buf + hdr_size, data_size - hdr_size,
441 &y_data_size, &u_data_size, &v_data_size,
444 calc_plane_dct(fdsp, dest_y, blocks_y, luma_stride, mb_count, 0, 0);
449 mb_count, buf + hdr_size, data_size - hdr_size,
450 &y_data_size, &u_data_size, &v_data_size,
457 mb_count, buf + hdr_size, data_size - hdr_size,
458 &y_data_size, &u_data_size, &v_data_size,
461 }
else if (slice_size < low_bytes && *qp
466 mb_count, buf + hdr_size, data_size - hdr_size,
467 &y_data_size, &u_data_size, &v_data_size,
473 buf[0] = hdr_size << 3;
478 return hdr_size + y_data_size + u_data_size + v_data_size;
484 int mb_width = (avctx->
width + 15) >> 4;
485 int mb_height = (avctx->
height + 15) >> 4;
486 int hdr_size, sl_size, i;
487 int mb_y, sl_data_size, qp;
488 int unsafe_bot, unsafe_right;
489 uint8_t *sl_data, *sl_data_sizes;
490 int slice_per_line = 0, rem = mb_width;
493 slice_per_line += rem >> i;
498 hdr_size = 8; sl_data_size = buf_size - hdr_size;
499 sl_data_sizes = buf + hdr_size;
500 sl_data = sl_data_sizes + (slice_per_line * mb_height * 2);
501 for (mb_y = 0; mb_y < mb_height; mb_y++) {
504 while (mb_x < mb_width) {
505 while (mb_width - mb_x < slice_mb_count)
506 slice_mb_count >>= 1;
508 unsafe_bot = (avctx->
height & 0xf) && (mb_y == mb_height - 1);
509 unsafe_right = (avctx->
width & 0xf) && (mb_x + slice_mb_count == mb_width);
511 sl_size =
encode_slice(avctx, pic, mb_x, mb_y, slice_mb_count,
512 sl_data, sl_data_size, unsafe_bot || unsafe_right, &qp);
514 bytestream_put_be16(&sl_data_sizes, sl_size);
516 sl_data_size -= sl_size;
517 mb_x += slice_mb_count;
521 buf[0] = hdr_size << 3;
522 AV_WB32(buf + 1, sl_data - buf);
523 AV_WB16(buf + 5, slice_per_line * mb_height);
526 return sl_data -
buf;
530 const AVFrame *pict,
int *got_packet)
532 int header_size = 148;
543 pkt->
size - header_size - 8);
545 bytestream_put_be32(&buf, pic_size + 8 + header_size);
548 bytestream_put_be16(&buf, header_size);
549 bytestream_put_be16(&buf, 0);
551 bytestream_put_be16(&buf, avctx->
width);
552 bytestream_put_be16(&buf, avctx->
height);
570 pkt->
size = pic_size + 8 + header_size;
579 for (i = 0; i < 64; i++)
580 dst[i] = src[i] * scale;
590 if (avctx->
width & 0x1) {
592 "frame width needs to be multiple of 2\n");
596 if (avctx->
width > 65534 || avctx->
height > 65535) {
598 "The maximum dimensions are 65534x65535\n");
606 "encoding with ProRes standard (apcn) profile\n");
610 "encoding with ProRes 444 (ap4h) profile\n");
618 "unknown profile %d, use [0 - apco, 1 - apcs, 2 - apcn (default), 3 - apch, 4 - ap4h]\n",
623 "encoding with ProRes 444 (ap4h) profile, need YUV444P10 input\n");
627 "encoding with ProRes Proxy/LT/422/422 HQ (apco, apcs, apcn, ap4h) profile, need YUV422P10 input\n");
655 for (i = 1; i <= 16; i++) {
const char const char void * val
This structure describes decoded (raw) audio or video data.
static const int qp_end_table[5]
static void put_sbits(PutBitContext *pb, int n, int32_t value)
static const int bitrate_table[5]
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
#define TO_GOLOMB2(val, sign)
static av_cold int init(AVCodecContext *avctx)
static av_cold int prores_encode_init(AVCodecContext *avctx)
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
static int encode_slice(AVCodecContext *avctx, const AVFrame *pic, int mb_x, int mb_y, unsigned mb_count, uint8_t *buf, unsigned data_size, int unsafe, int *qp)
#define FF_PROFILE_PRORES_PROXY
static void calc_plane_dct(FDCTDSPContext *fdsp, uint8_t *src, int16_t *blocks, int src_stride, int mb_count, int chroma, int is_422)
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format.
av_cold void ff_fdctdsp_init(FDCTDSPContext *c, AVCodecContext *avctx)
#define AV_CODEC_CAP_INTRA_ONLY
Codec is intra only.
static int prores_encode_picture(AVCodecContext *avctx, const AVFrame *pic, uint8_t *buf, const int buf_size)
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size)
Check AVPacket size and/or allocate data.
static void encode_ac_coeffs(PutBitContext *pb, int16_t *in, int blocks_per_slice, int *qmat)
#define FF_PROFILE_PRORES_444
static void encode_dc_coeffs(PutBitContext *pb, int16_t *in, int blocks_per_slice, int *qmat)
#define AV_CODEC_FLAG_GRAY
Only decode/encode grayscale.
#define AV_INPUT_BUFFER_MIN_SIZE
minimum encoding buffer size Used to avoid some checks during header writing.
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
static const uint8_t lev_to_cb[10]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static uint8_t * put_bits_ptr(PutBitContext *s)
Return the pointer to the byte where the bitstream writer will put the next bit.
static int prores_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *pict, int *got_packet)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static av_cold int prores_encode_close(AVCodecContext *avctx)
int flags
AV_CODEC_FLAG_*.
enum AVColorSpace colorspace
YUV colorspace type.
const char * name
Name of the codec implementation.
static const uint8_t QMAT_CHROMA[5][64]
#define AV_PIX_FMT_YUV444P10
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
int flags
A combination of AV_PKT_FLAG values.
static av_always_inline int get_level(int val)
static void scale_mat(const uint8_t *src, int *dst, int scale)
static const AVProfile profiles[]
int width
picture width / height.
static int encode_slice_plane(int16_t *blocks, int mb_count, uint8_t *buf, unsigned buf_size, int *qmat, int sub_sample_chroma)
#define FF_PROFILE_UNKNOWN
#define FF_PROFILE_PRORES_STANDARD
#define DEFAULT_SLICE_MB_WIDTH
AVCodec ff_prores_encoder
#define AV_LOG_INFO
Standard information.
Libavcodec external API header.
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
void(* fdct)(int16_t *block)
main external API structure.
static const uint8_t dc_codebook[7]
const uint8_t ff_prores_progressive_scan[64]
unsigned int codec_tag
fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt)>2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> in
const char * name
short name for the profile
static av_always_inline unsigned encode_slice_data(AVCodecContext *avctx, int16_t *blocks_y, int16_t *blocks_u, int16_t *blocks_v, unsigned mb_count, uint8_t *buf, unsigned data_size, unsigned *y_data_size, unsigned *u_data_size, unsigned *v_data_size, int qp)
#define QSCALE(qmat, ind, val)
static void encode_codeword(PutBitContext *pb, int val, int codebook)
static enum AVPixelFormat pix_fmts[]
#define AV_PIX_FMT_YUV422P10
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
static void fdct_get(FDCTDSPContext *fdsp, uint8_t *pixels, int stride, int16_t *block)
static void subimage_with_fill(uint16_t *src, unsigned x, unsigned y, unsigned stride, unsigned width, unsigned height, uint16_t *dst, unsigned dst_width, unsigned dst_height)
GLint GLenum GLboolean GLsizei stride
AVCodec ff_prores_aw_encoder
common internal api header.
static void flush_put_bits(PutBitContext *s)
Pad the end of the output stream with zeros.
#define LOCAL_ALIGNED(a, t, v,...)
static void init_put_bits(PutBitContext *s, uint8_t *buffer, int buffer_size)
Initialize the PutBitContext s.
static av_always_inline void bytestream_put_buffer(uint8_t **b, const uint8_t *src, unsigned int size)
static const int qp_start_table[5]
#define xf(width, name, var, range_min, range_max, subs,...)
enum AVColorPrimaries color_primaries
static const uint8_t QMAT_LUMA[5][64]
enum AVColorTransferCharacteristic color_trc
#define FF_PROFILE_PRORES_HQ
#define DIFF_SIGN(val, sign)
static const uint8_t run_to_cb[16]
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
AVPixelFormat
Pixel format.
#define FF_PROFILE_PRORES_LT
This structure stores compressed data.