Coverage Report

Created: 2026-04-01 07:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/ffmpeg/libavcodec/h274.h
Line
Count
Source
1
/*
2
 * H.274 film grain synthesis
3
 * Copyright (c) 2021 Niklas Haas <ffmpeg@haasn.xyz>
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
/**
23
 * @file
24
 * H.274 film grain synthesis.
25
 * @author Niklas Haas <ffmpeg@haasn.xyz>
26
 */
27
28
#ifndef AVCODEC_H274_H
29
#define AVCODEC_H274_H
30
31
#include "libavutil/film_grain_params.h"
32
33
/**
34
 * Check whether ff_h274_apply_film_grain() supports the given parameter combination.
35
 *
36
 * @param model_id model_id from AVFilmGrainParams to be supplied
37
 * @param pix_fmt  pixel format of the frames to be supplied
38
 */
39
static inline int ff_h274_film_grain_params_supported(int model_id, enum AVPixelFormat pix_fmt)
40
770
{
41
770
    return model_id == 0 && pix_fmt == AV_PIX_FMT_YUV420P;
42
770
}
Unexecuted instantiation: h264_picture.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: h274.c:ff_h274_film_grain_params_supported
hevcdec.c:ff_h274_film_grain_params_supported
Line
Count
Source
40
770
{
41
770
    return model_id == 0 && pix_fmt == AV_PIX_FMT_YUV420P;
42
770
}
Unexecuted instantiation: dec.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: dsp.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: intra_utils.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: ps.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: refs.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: sei.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: thread.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: ctu.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: filter.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: inter.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: intra.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: mvs.c:ff_h274_film_grain_params_supported
Unexecuted instantiation: cabac.c:ff_h274_film_grain_params_supported
43
44
// Synthesizes film grain on top of `in` and stores the result to `out`. `out`
45
// must already have been allocated and set to the same size and format as
46
// `in`.
47
//
48
// Returns a negative error code on error, such as invalid params.
49
// If ff_h274_film_grain_params_supported() indicated that the parameters
50
// are supported, no error will be returned if the arguments given to
51
// ff_h274_film_grain_params_supported() coincide with actual values
52
// from the frames and params.
53
int ff_h274_apply_film_grain(AVFrame *out, const AVFrame *in,
54
                             const AVFilmGrainParams *params);
55
56
typedef struct H274HashContext H274HashContext;
57
58
typedef struct H274SEIPictureHash {
59
    int present;
60
    union {
61
        uint8_t  md5[3][16];
62
        uint16_t crc[3];
63
        uint32_t checksum[3];
64
    };
65
    uint8_t hash_type;
66
} H274SEIPictureHash;
67
68
int ff_h274_hash_init(H274HashContext **c, int type);
69
int ff_h274_hash_verify(H274HashContext *c, const H274SEIPictureHash *hash,
70
    const AVFrame *frame, int coded_width, int coded_height);
71
void ff_h274_hash_freep(H274HashContext **c);
72
73
typedef struct H274SEIFrameFieldInfo {
74
    int present;
75
    int picture_struct;
76
    uint8_t display_elemental_periods;
77
    uint8_t source_scan_type;
78
    uint8_t duplicate_flag;
79
} H274SEIFrameFieldInfo;
80
81
#endif /* AVCODEC_H274_H */