/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 */ |