[FFmpeg-devel] [PATCH] avcodec/h274: slightly fix comments
Niklas Haas
ffmpeg at haasn.xyz
Mon Aug 30 02:37:21 EEST 2021
From: Niklas Haas <git at haasn.dev>
This comment was wrong. It does not require an FFT, a straight sum is
enough. (An FFT is only required for high-passed grain, not generational
grain)
Also fix a misleading/redundant comment on avg_8x8_c - the right shift
is just part of the averaging logic.
---
libavcodec/h274.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/libavcodec/h274.c b/libavcodec/h274.c
index 5e2cf150ea..7ace1829b4 100644
--- a/libavcodec/h274.c
+++ b/libavcodec/h274.c
@@ -110,7 +110,7 @@ static void init_slice(H274FilmGrainDatabase *database, uint8_t h, uint8_t v)
init_slice_c(database->db[h][v], h, v, database->slice_tmp);
}
-// Computes the average of an 8x8 block, right-shifted by 6
+// Computes the average of an 8x8 block
static uint16_t avg_8x8_c(const uint8_t *in, int in_stride)
{
uint16_t avg[8] = {0}; // summing over an array vectorizes better
@@ -166,15 +166,9 @@ static av_always_inline void generate(int8_t *out, int out_stride,
uint8_t h, v;
int8_t s = -1;
- // FIXME: This logic only generates grain with a single
- // intensity interval. Strictly speaking, the H.274 specification allows
- // for overlapping intensity intervals, however SMPTE RDD 5-2006 (which
- // concerns the implementation of H.274 for H.264) forbids this as it
- // requires a nontrivial grain synthesis process (FFT).
- //
- // In principle, we should detect this possibility ahead of time and warn
- // the user that the output is unlikely to be correct, or alternatively
- // return an AVERROR_PATCHWELCOME.
+ // TODO: Multi-generational grain, adding together multiple synthesized
+ // grain blocks where needed. This is allowed by H.274 but forbidden by
+ // SMPTE RDD 5-2006 (which concerns the implementation of H.274 for H.264)
for (int i = 0; i < h274->num_intensity_intervals[c]; i++) {
if (avg >= h274->intensity_interval_lower_bound[c][i] &&
avg <= h274->intensity_interval_upper_bound[c][i])
--
2.32.0
More information about the ffmpeg-devel
mailing list