39 unsigned bit = ((
r >> 0) ^ (
r >> 1) ^ (
r >> 3) ^ (
r >> 12)) & 1;
73 const int subx =
desc->log2_chroma_w, suby =
desc->log2_chroma_h;
74 const int pxstep =
desc->comp[0].step;
80 if (!
params->codec.aom.num_y_points) {
83 out->width * pxstep,
out->height);
85 for (
int uv = 0; uv < 2; uv++) {
86 if (!
data->num_uv_points[uv]) {
102 return apply_film_grain_8(
out, in,
params);
107 return apply_film_grain_16(
out, in,
params, 9);
112 return apply_film_grain_16(
out, in,
params, 10);
117 return apply_film_grain_16(
out, in,
params, 12);
125 const uint8_t *payload,
int payload_size)
130 int ret, num_sets, n,
i, uv, num_y_coeffs, update_grain, luma_only;
145 for (n = 0; n < num_sets; n++) {
146 int payload_4byte, payload_size, set_idx, apply_units_log2, vsc_flag;
147 int predict_scaling, predict_y_scaling, predict_uv_scaling[2];
148 int payload_bits, start_position;
153 payload_size =
get_bits(gb, payload_4byte ? 2 : 8);
157 if (!fgp ||
s->sets[set_idx])
216 if (predict_scaling && !
ref)
219 predict_y_scaling = predict_scaling ?
get_bits1(gb) : 0;
220 if (predict_y_scaling) {
221 int y_scale, y_offset, bits_res;
226 int res[14],
pred, granularity;
232 pred =
ref->codec.aom.y_points[
i][1];
233 pred = ((
pred * y_scale + 8) >> 4) + y_offset;
234 pred += (res[
i] - (1 << (bits_res - 1))) * granularity;
244 int bits_inc, bits_scaling;
250 if (y_value > UINT8_MAX)
266 for (uv = 0; uv < 2; uv++) {
267 predict_uv_scaling[uv] = predict_scaling ?
get_bits1(gb) : 0;
268 if (predict_uv_scaling[uv]) {
269 int uv_scale, uv_offset, bits_res;
273 aom->
uv_mult[uv] =
ref->codec.aom.uv_mult[uv];
277 int res[10],
pred, granularity;
283 pred =
ref->codec.aom.uv_points[uv][
i][1];
284 pred = ((
pred * uv_scale + 8) >> 4) + uv_offset;
285 pred += (res[
i] - (1 << (bits_res - 1))) * granularity;
291 int bits_inc, bits_scaling, uv_offset;
301 if (uv_value > UINT8_MAX)
316 for (
i = 0;
i < num_y_coeffs;
i++)
319 for (uv = 0; uv < 2; uv++) {
328 for (uv = 0; uv < 2; uv++) {
343 if (payload_bits > payload_size * 8)
345 skip_bits(gb, payload_size * 8 - payload_bits);
349 if (!
s->sets[set_idx])
388 56, 568, -180, 172, 124, -84, 172, -64, -900, 24, 820,
389 224, 1248, 996, 272, -8, -916, -388, -732, -104, -188, 800,
390 112, -652, -320, -376, 140, -252, 492, -168, 44, -788, 588,
391 -584, 500, -228, 12, 680, 272, -476, 972, -100, 652, 368,
392 432, -196, -720, -192, 1000, -332, 652, -136, -552, -604, -4,
393 192, -220, -136, 1000, -52, 372, -96, -624, 124, -24, 396,
394 540, -12, -104, 640, 464, 244, -208, -84, 368, -528, -740,
395 248, -968, -848, 608, 376, -60, -292, -40, -156, 252, -292,
396 248, 224, -280, 400, -244, 244, -60, 76, -80, 212, 532,
397 340, 128, -36, 824, -352, -60, -264, -96, -612, 416, -704,
398 220, -204, 640, -160, 1220, -408, 900, 336, 20, -336, -96,
399 -792, 304, 48, -28, -1232, -1172, -448, 104, -292, -520, 244,
400 60, -948, 0, -708, 268, 108, 356, -548, 488, -344, -136,
401 488, -196, -224, 656, -236, -1128, 60, 4, 140, 276, -676,
402 -376, 168, -108, 464, 8, 564, 64, 240, 308, -300, -400,
403 -456, -136, 56, 120, -408, -116, 436, 504, -232, 328, 844,
404 -164, -84, 784, -168, 232, -224, 348, -376, 128, 568, 96,
405 -1244, -288, 276, 848, 832, -360, 656, 464, -384, -332, -356,
406 728, -388, 160, -192, 468, 296, 224, 140, -776, -100, 280,
407 4, 196, 44, -36, -648, 932, 16, 1428, 28, 528, 808,
408 772, 20, 268, 88, -332, -284, 124, -384, -448, 208, -228,
409 -1044, -328, 660, 380, -148, -300, 588, 240, 540, 28, 136,
410 -88, -436, 256, 296, -1000, 1400, 0, -48, 1056, -136, 264,
411 -528, -1108, 632, -484, -592, -344, 796, 124, -668, -768, 388,
412 1296, -232, -188, -200, -288, -4, 308, 100, -168, 256, -500,
413 204, -508, 648, -136, 372, -272, -120, -1004, -552, -548, -384,
414 548, -296, 428, -108, -8, -912, -324, -224, -88, -112, -220,
415 -100, 996, -796, 548, 360, -216, 180, 428, -200, -212, 148,
416 96, 148, 284, 216, -412, -320, 120, -300, -384, -604, -572,
417 -332, -8, -180, -176, 696, 116, -88, 628, 76, 44, -516,
418 240, -208, -40, 100, -592, 344, -308, -452, -228, 20, 916,
419 -1752, -136, -340, -804, 140, 40, 512, 340, 248, 184, -492,
420 896, -156, 932, -628, 328, -688, -448, -616, -752, -100, 560,
421 -1020, 180, -800, -64, 76, 576, 1068, 396, 660, 552, -108,
422 -28, 320, -628, 312, -92, -92, -472, 268, 16, 560, 516,
423 -672, -52, 492, -100, 260, 384, 284, 292, 304, -148, 88,
424 -152, 1012, 1064, -228, 164, -376, -684, 592, -392, 156, 196,
425 -524, -64, -884, 160, -176, 636, 648, 404, -396, -436, 864,
426 424, -728, 988, -604, 904, -592, 296, -224, 536, -176, -920,
427 436, -48, 1176, -884, 416, -776, -824, -884, 524, -548, -564,
428 -68, -164, -96, 692, 364, -692, -1012, -68, 260, -480, 876,
429 -1116, 452, -332, -352, 892, -1088, 1220, -676, 12, -292, 244,
430 496, 372, -32, 280, 200, 112, -440, -96, 24, -644, -184,
431 56, -432, 224, -980, 272, -260, 144, -436, 420, 356, 364,
432 -528, 76, 172, -744, -368, 404, -752, -416, 684, -688, 72,
433 540, 416, 92, 444, 480, -72, -1416, 164, -1172, -68, 24,
434 424, 264, 1040, 128, -912, -524, -356, 64, 876, -12, 4,
435 -88, 532, 272, -524, 320, 276, -508, 940, 24, -400, -120,
436 756, 60, 236, -412, 100, 376, -484, 400, -100, -740, -108,
437 -260, 328, -268, 224, -200, -416, 184, -604, -564, -20, 296,
438 60, 892, -888, 60, 164, 68, -760, 216, -296, 904, -336,
439 -28, 404, -356, -568, -208, -1480, -512, 296, 328, -360, -164,
440 -1560, -776, 1156, -428, 164, -504, -112, 120, -216, -148, -264,
441 308, 32, 64, -72, 72, 116, 176, -64, -272, 460, -536,
442 -784, -280, 348, 108, -752, -132, 524, -540, -776, 116, -296,
443 -1196, -288, -560, 1040, -472, 116, -848, -1116, 116, 636, 696,
444 284, -176, 1016, 204, -864, -648, -248, 356, 972, -584, -204,
445 264, 880, 528, -24, -184, 116, 448, -144, 828, 524, 212,
446 -212, 52, 12, 200, 268, -488, -404, -880, 824, -672, -40,
447 908, -248, 500, 716, -576, 492, -576, 16, 720, -108, 384,
448 124, 344, 280, 576, -500, 252, 104, -308, 196, -188, -8,
449 1268, 296, 1032, -1196, 436, 316, 372, -432, -200, -660, 704,
450 -224, 596, -132, 268, 32, -452, 884, 104, -1008, 424, -1348,
451 -280, 4, -1168, 368, 476, 696, 300, -8, 24, 180, -592,
452 -196, 388, 304, 500, 724, -160, 244, -84, 272, -256, -420,
453 320, 208, -144, -156, 156, 364, 452, 28, 540, 316, 220,
454 -644, -248, 464, 72, 360, 32, -388, 496, -680, -48, 208,
455 -116, -408, 60, -604, -392, 548, -840, 784, -460, 656, -544,
456 -388, -264, 908, -800, -628, -612, -568, 572, -220, 164, 288,
457 -16, -308, 308, -112, -636, -760, 280, -668, 432, 364, 240,
458 -196, 604, 340, 384, 196, 592, -44, -500, 432, -580, -132,
459 636, -76, 392, 4, -412, 540, 508, 328, -356, -36, 16,
460 -220, -64, -248, -60, 24, -192, 368, 1040, 92, -24, -1044,
461 -32, 40, 104, 148, 192, -136, -520, 56, -816, -224, 732,
462 392, 356, 212, -80, -424, -1008, -324, 588, -1496, 576, 460,
463 -816, -848, 56, -580, -92, -1372, -112, -496, 200, 364, 52,
464 -140, 48, -48, -60, 84, 72, 40, 132, -356, -268, -104,
465 -284, -404, 732, -520, 164, -304, -540, 120, 328, -76, -460,
466 756, 388, 588, 236, -436, -72, -176, -404, -316, -148, 716,
467 -604, 404, -72, -88, -888, -68, 944, 88, -220, -344, 960,
468 472, 460, -232, 704, 120, 832, -228, 692, -508, 132, -476,
469 844, -748, -364, -44, 1116, -1104, -1056, 76, 428, 552, -692,
470 60, 356, 96, -384, -188, -612, -576, 736, 508, 892, 352,
471 -1132, 504, -24, -352, 324, 332, -600, -312, 292, 508, -144,
472 -8, 484, 48, 284, -260, -240, 256, -100, -292, -204, -44,
473 472, -204, 908, -188, -1000, -256, 92, 1164, -392, 564, 356,
474 652, -28, -884, 256, 484, -192, 760, -176, 376, -524, -452,
475 -436, 860, -736, 212, 124, 504, -476, 468, 76, -472, 552,
476 -692, -944, -620, 740, -240, 400, 132, 20, 192, -196, 264,
477 -668, -1012, -60, 296, -316, -828, 76, -156, 284, -768, -448,
478 -832, 148, 248, 652, 616, 1236, 288, -328, -400, -124, 588,
479 220, 520, -696, 1032, 768, -740, -92, -272, 296, 448, -464,
480 412, -200, 392, 440, -200, 264, -152, -260, 320, 1032, 216,
481 320, -8, -64, 156, -1016, 1084, 1172, 536, 484, -432, 132,
482 372, -52, -256, 84, 116, -352, 48, 116, 304, -384, 412,
483 924, -300, 528, 628, 180, 648, 44, -980, -220, 1320, 48,
484 332, 748, 524, -268, -720, 540, -276, 564, -344, -208, -196,
485 436, 896, 88, -392, 132, 80, -964, -288, 568, 56, -48,
486 -456, 888, 8, 552, -156, -292, 948, 288, 128, -716, -292,
487 1192, -152, 876, 352, -600, -260, -812, -468, -28, -120, -32,
488 -44, 1284, 496, 192, 464, 312, -76, -516, -380, -456, -1012,
489 -48, 308, -156, 36, 492, -156, -808, 188, 1652, 68, -120,
490 -116, 316, 160, -140, 352, 808, -416, 592, 316, -480, 56,
491 528, -204, -568, 372, -232, 752, -344, 744, -4, 324, -416,
492 -600, 768, 268, -248, -88, -132, -420, -432, 80, -288, 404,
493 -316, -1216, -588, 520, -108, 92, -320, 368, -480, -216, -92,
494 1688, -300, 180, 1020, -176, 820, -68, -228, -260, 436, -904,
495 20, 40, -508, 440, -736, 312, 332, 204, 760, -372, 728,
496 96, -20, -632, -520, -560, 336, 1076, -64, -532, 776, 584,
497 192, 396, -728, -520, 276, -188, 80, -52, -612, -252, -48,
498 648, 212, -688, 228, -52, -260, 428, -412, -272, -404, 180,
499 816, -796, 48, 152, 484, -88, -216, 988, 696, 188, -528,
500 648, -116, -180, 316, 476, 12, -564, 96, 476, -252, -364,
501 -376, -392, 556, -256, -576, 260, -352, 120, -16, -136, -260,
502 -492, 72, 556, 660, 580, 616, 772, 436, 424, -32, -324,
503 -1268, 416, -324, -80, 920, 160, 228, 724, 32, -516, 64,
504 384, 68, -128, 136, 240, 248, -204, -68, 252, -932, -120,
505 -480, -628, -84, 192, 852, -404, -288, -132, 204, 100, 168,
506 -68, -196, -868, 460, 1080, 380, -80, 244, 0, 484, -888,
507 64, 184, 352, 600, 460, 164, 604, -196, 320, -64, 588,
508 -184, 228, 12, 372, 48, -848, -344, 224, 208, -200, 484,
509 128, -20, 272, -468, -840, 384, 256, -720, -520, -464, -580,
510 112, -120, 644, -356, -208, -608, -528, 704, 560, -424, 392,
511 828, 40, 84, 200, -152, 0, -144, 584, 280, -120, 80,
512 -556, -972, -196, -472, 724, 80, 168, -32, 88, 160, -688,
513 0, 160, 356, 372, -776, 740, -128, 676, -248, -480, 4,
514 -364, 96, 544, 232, -1032, 956, 236, 356, 20, -40, 300,
515 24, -676, -596, 132, 1120, -104, 532, -1096, 568, 648, 444,
516 508, 380, 188, -376, -604, 1488, 424, 24, 756, -220, -192,
517 716, 120, 920, 688, 168, 44, -460, 568, 284, 1144, 1160,
518 600, 424, 888, 656, -356, -320, 220, 316, -176, -724, -188,
519 -816, -628, -348, -228, -380, 1012, -452, -660, 736, 928, 404,
520 -696, -72, -268, -892, 128, 184, -344, -780, 360, 336, 400,
521 344, 428, 548, -112, 136, -228, -216, -820, -516, 340, 92,
522 -136, 116, -300, 376, -244, 100, -316, -520, -284, -12, 824,
523 164, -548, -180, -128, 116, -924, -828, 268, -368, -580, 620,
524 192, 160, 0, -1676, 1068, 424, -56, -360, 468, -156, 720,
525 288, -528, 556, -364, 548, -148, 504, 316, 152, -648, -620,
526 -684, -24, -376, -384, -108, -920, -1032, 768, 180, -264, -508,
527 -1268, -260, -60, 300, -240, 988, 724, -376, -576, -212, -736,
528 556, 192, 1092, -620, -880, 376, -56, -4, -216, -32, 836,
529 268, 396, 1332, 864, -600, 100, 56, -412, -92, 356, 180,
530 884, -468, -436, 292, -388, -804, -704, -840, 368, -348, 140,
531 -724, 1536, 940, 372, 112, -372, 436, -480, 1136, 296, -32,
532 -228, 132, -48, -220, 868, -1016, -60, -1044, -464, 328, 916,
533 244, 12, -736, -296, 360, 468, -376, -108, -92, 788, 368,
534 -56, 544, 400, -672, -420, 728, 16, 320, 44, -284, -380,
535 -796, 488, 132, 204, -596, -372, 88, -152, -908, -636, -572,
536 -624, -116, -692, -200, -56, 276, -88, 484, -324, 948, 864,
537 1000, -456, -184, -276, 292, -296, 156, 676, 320, 160, 908,
538 -84, -1236, -288, -116, 260, -372, -644, 732, -756, -96, 84,
539 344, -520, 348, -688, 240, -84, 216, -1044, -136, -676, -396,
540 -1500, 960, -40, 176, 168, 1516, 420, -504, -344, -364, -360,
541 1216, -940, -380, -212, 252, -660, -708, 484, -444, -152, 928,
542 -120, 1112, 476, -260, 560, -148, -344, 108, -196, 228, -288,
543 504, 560, -328, -88, 288, -1008, 460, -228, 468, -836, -196,
544 76, 388, 232, 412, -1168, -716, -644, 756, -172, -356, -504,
545 116, 432, 528, 48, 476, -168, -608, 448, 160, -532, -272,
546 28, -676, -12, 828, 980, 456, 520, 104, -104, 256, -344,
547 -4, -28, -368, -52, -524, -572, -556, -200, 768, 1124, -208,
548 -512, 176, 232, 248, -148, -888, 604, -600, -304, 804, -156,
549 -212, 488, -192, -804, -256, 368, -360, -916, -328, 228, -240,
550 -448, -472, 856, -556, -364, 572, -12, -156, -368, -340, 432,
551 252, -752, -152, 288, 268, -580, -848, -592, 108, -76, 244,
552 312, -716, 592, -80, 436, 360, 4, -248, 160, 516, 584,
553 732, 44, -468, -280, -292, -156, -588, 28, 308, 912, 24,
554 124, 156, 180, -252, 944, -924, -772, -520, -428, -624, 300,
555 -212, -1144, 32, -724, 800, -1128, -212, -1288, -848, 180, -416,
556 440, 192, -576, -792, -76, -1080, 80, -532, -352, -132, 380,
557 -820, 148, 1112, 128, 164, 456, 700, -924, 144, -668, -384,
558 648, -832, 508, 552, -52, -100, -656, 208, -568, 748, -88,
559 680, 232, 300, 192, -408, -1012, -152, -252, -268, 272, -876,
560 -664, -648, -332, -136, 16, 12, 1152, -28, 332, -536, 320,
561 -672, -460, -316, 532, -260, 228, -40, 1052, -816, 180, 88,
562 -496, -556, -672, -368, 428, 92, 356, 404, -408, 252, 196,
563 -176, -556, 792, 268, 32, 372, 40, 96, -332, 328, 120,
564 372, -900, -40, 472, -264, -592, 952, 128, 656, 112, 664,
565 -232, 420, 4, -344, -464, 556, 244, -416, -32, 252, 0,
566 -412, 188, -696, 508, -476, 324, -1096, 656, -312, 560, 264,
567 -136, 304, 160, -64, -580, 248, 336, -720, 560, -348, -288,
568 -276, -196, -500, 852, -544, -236, -1128, -992, -776, 116, 56,
569 52, 860, 884, 212, -12, 168, 1020, 512, -552, 924, -148,
570 716, 188, 164, -340, -520, -184, 880, -152, -680, -208, -1156,
571 -300, -528, -472, 364, 100, -744, -1056, -32, 540, 280, 144,
572 -676, -32, -232, -280, -224, 96, 568, -76, 172, 148, 148,
573 104, 32, -296, -32, 788, -80, 32, -16, 280, 288, 944,
SwsAArch64OpImplParams params
static int get_random_number(const int bits, unsigned *const state)
static int round2(const int x, const uint64_t shift)
static const int16_t gaussian_sequence[2048]
void ff_aom_uninit_film_grain_params(AVFilmGrainAFGS1Params *s)
int ff_aom_apply_film_grain(AVFrame *out, const AVFrame *in, const AVFilmGrainParams *params)
int ff_aom_parse_film_grain_sets(AVFilmGrainAFGS1Params *s, const uint8_t *payload, int payload_size)
int ff_aom_attach_film_grain_sets(const AVFilmGrainAFGS1Params *s, AVFrame *frame)
AOM film grain synthesis.
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert0(cond)
assert() equivalent, that is always enabled.
refcounted data buffer API
#define i(width, name, range_min, range_max)
#define bit(string, value)
#define AV_CEIL_RSHIFT(a, b)
static struct @346255127015250356166251341105367306144006377143 state
static const uint8_t bits[8]
AVFilmGrainParams * av_film_grain_params_alloc(size_t *size)
This file is part of FFmpeg.
@ AV_FILM_GRAIN_PARAMS_AV1
The union is valid when interpreted as AVFilmGrainAOMParams (codec.aom)
@ AV_FILM_GRAIN_PARAMS_NONE
bitstream reader API header.
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits(GetBitContext *s, int n)
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext.
static int get_bits_count(const GetBitContext *s)
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it.
AVBufferRef * av_buffer_create(uint8_t *data, size_t size, void(*free)(void *opaque, uint8_t *data), void *opaque, int flags)
Create an AVBuffer from an existing array.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_FRAME_SIDE_DATA_FLAG_NEW_REF
Create a new reference to the passed in buffer instead of taking ownership of it.
AVFrameSideData * av_frame_side_data_add(AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type, AVBufferRef **buf, unsigned int flags)
Add a new side data entry to an array from an existing AVBufferRef.
@ AV_FRAME_DATA_FILM_GRAIN_PARAMS
Film grain parameters for a frame, described by AVFilmGrainParams.
void av_image_copy_plane(uint8_t *dst, int dst_linesize, const uint8_t *src, int src_linesize, int bytewidth, int height)
Copy image plane from src to dst.
static int shift(int a, int b)
Memory handling functions.
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
#define AV_PIX_FMT_YUV444P12
#define AV_PIX_FMT_YUV444P9
#define AV_PIX_FMT_YUV420P10
#define AV_PIX_FMT_YUV422P9
@ AVCOL_RANGE_MPEG
Narrow or limited range content.
@ AVCOL_RANGE_UNSPECIFIED
@ AVCOL_RANGE_JPEG
Full range content.
#define AV_PIX_FMT_YUV420P12
#define AV_PIX_FMT_YUV422P12
#define AV_PIX_FMT_YUV422P10
#define AV_PIX_FMT_GRAY12
#define AV_PIX_FMT_YUV420P9
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
@ AV_PIX_FMT_YUVJ422P
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
@ AV_PIX_FMT_YUVJ444P
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
@ AV_PIX_FMT_YUVJ420P
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
#define AV_PIX_FMT_GRAY10
@ AVCOL_PRI_NB
Not part of ABI.
@ AVCOL_TRC_NB
Not part of ABI.
#define AV_PIX_FMT_YUV444P10
@ AVCOL_SPC_NB
Not part of ABI.
@ AVCOL_SPC_RESERVED
reserved for future use by ITU-T and ISO/IEC just like 15-255 are
#define FF_ARRAY_ELEMS(a)
static const float pred[4]
A reference to a data buffer.
This structure describes how to handle film grain synthesis for AOM codecs.
int chroma_scaling_from_luma
Signals whether to derive the chroma scaling function from the luma.
int limit_output_range
Signals to clip to limited color levels after film grain application.
int scaling_shift
Specifies the shift applied to the chroma components.
int grain_scale_shift
Signals the down shift applied to the generated gaussian numbers during synthesis.
int num_uv_points[2]
If chroma_scaling_from_luma is set to 0, signals the chroma scaling function parameters.
int overlap_flag
Signals whether to overlap film grain blocks.
int ar_coeff_lag
Specifies the auto-regression lag.
int uv_offset[2]
Offset used for component scaling function.
int ar_coeff_shift
Specifies the range of the auto-regressive coefficients.
uint8_t uv_points[2][10][2]
int8_t ar_coeffs_uv[2][25]
Chroma auto-regression coefficients.
int uv_mult[2]
Specifies the luma/chroma multipliers for the index to the component scaling function.
int8_t ar_coeffs_y[24]
Luma auto-regression coefficients.
int num_y_points
Number of points, and the scale and value for each point of the piecewise linear scaling function for...
This structure describes how to handle film grain synthesis in video for specific codecs.
enum AVColorPrimaries color_primaries
enum AVColorRange color_range
Intended video signal characteristics.
int subsampling_x
Intended subsampling ratio, or 0 for luma-only streams.
int bit_depth_luma
Intended bit depth, or 0 for unknown/unspecified.
union AVFilmGrainParams::@177057277273004265167152242113040056044005264354 codec
Additional fields may be added both here and in any structure included.
enum AVFilmGrainParamsType type
Specifies the codec for which this structure is valid.
int width
Intended display resolution.
uint64_t seed
Seed to use for the synthesis process, if the codec allows for it.
enum AVColorTransferCharacteristic color_trc
enum AVColorSpace color_space
This structure describes decoded (raw) audio or video data.
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
int linesize[AV_NUM_DATA_POINTERS]
For video, a positive or negative value, which is typically indicating the size in bytes of each pict...
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames,...
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
static void error(const char *err)
static int ref[MAX_W *MAX_W]