... | ... |
@@ -2674,6 +2674,7 @@ scale_npp_filter_deps="cuda libnpp" |
2674 | 2674 |
nvenc_encoder_deps="nvenc" |
2675 | 2675 |
h264_cuvid_decoder_deps="cuda cuvid CUVIDH264PICPARAMS" |
2676 | 2676 |
h264_cuvid_decoder_select="h264_mp4toannexb_bsf h264_cuvid_hwaccel" |
2677 |
+h264_nvenc_encoder_deps="nvenc" |
|
2677 | 2678 |
h264_qsv_decoder_deps="libmfx" |
2678 | 2679 |
h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel" |
2679 | 2680 |
h264_qsv_encoder_deps="libmfx" |
... | ... |
@@ -2683,6 +2684,7 @@ h264_vaapi_encoder_select="vaapi_encode golomb" |
2683 | 2683 |
|
2684 | 2684 |
hevc_cuvid_decoder_deps="cuda cuvid CUVIDHEVCPICPARAMS" |
2685 | 2685 |
hevc_cuvid_decoder_select="hevc_mp4toannexb_bsf hevc_cuvid_hwaccel" |
2686 |
+hevc_nvenc_encoder_deps="nvenc" |
|
2686 | 2687 |
hevc_qsv_decoder_deps="libmfx" |
2687 | 2688 |
hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec hevc_qsv_hwaccel" |
2688 | 2689 |
hevc_qsv_encoder_deps="libmfx" |
... | ... |
@@ -315,6 +315,7 @@ OBJS-$(CONFIG_H264_DECODER) += h264.o h264_cabac.o h264_cavlc.o \ |
315 | 315 |
OBJS-$(CONFIG_H264_CUVID_DECODER) += cuvid.o |
316 | 316 |
OBJS-$(CONFIG_H264_MEDIACODEC_DECODER) += mediacodecdec_h264.o |
317 | 317 |
OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o |
318 |
+OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.o |
|
318 | 319 |
OBJS-$(CONFIG_NVENC_ENCODER) += nvenc_h264.o |
319 | 320 |
OBJS-$(CONFIG_NVENC_H264_ENCODER) += nvenc_h264.o |
320 | 321 |
OBJS-$(CONFIG_H264_VDA_DECODER) += vda_h264_dec.o |
... | ... |
@@ -329,6 +330,7 @@ OBJS-$(CONFIG_HEVC_DECODER) += hevc.o hevc_mvs.o hevc_ps.o hevc_sei.o |
329 | 329 |
hevc_cabac.o hevc_refs.o hevcpred.o \ |
330 | 330 |
hevcdsp.o hevc_filter.o h2645_parse.o hevc_data.o |
331 | 331 |
OBJS-$(CONFIG_HEVC_CUVID_DECODER) += cuvid.o |
332 |
+OBJS-$(CONFIG_HEVC_NVENC_ENCODER) += nvenc_hevc.o |
|
332 | 333 |
OBJS-$(CONFIG_NVENC_HEVC_ENCODER) += nvenc_hevc.o |
333 | 334 |
OBJS-$(CONFIG_HEVC_QSV_DECODER) += qsvdec_h2645.o |
334 | 335 |
OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o h2645_parse.o |
... | ... |
@@ -623,14 +623,18 @@ void avcodec_register_all(void) |
623 | 623 |
* above is available */ |
624 | 624 |
REGISTER_ENCODER(LIBOPENH264, libopenh264); |
625 | 625 |
REGISTER_DECODER(H264_CUVID, h264_cuvid); |
626 |
+ REGISTER_ENCODER(H264_NVENC, h264_nvenc); |
|
627 |
+ REGISTER_ENCODER(H264_OMX, h264_omx); |
|
626 | 628 |
REGISTER_ENCODER(H264_QSV, h264_qsv); |
627 | 629 |
REGISTER_ENCODER(H264_VAAPI, h264_vaapi); |
628 | 630 |
REGISTER_ENCODER(H264_VIDEOTOOLBOX, h264_videotoolbox); |
631 |
+#if FF_API_NVENC_OLD_NAME |
|
629 | 632 |
REGISTER_ENCODER(NVENC, nvenc); |
630 |
- REGISTER_ENCODER(H264_OMX, h264_omx); |
|
631 | 633 |
REGISTER_ENCODER(NVENC_H264, nvenc_h264); |
632 | 634 |
REGISTER_ENCODER(NVENC_HEVC, nvenc_hevc); |
635 |
+#endif |
|
633 | 636 |
REGISTER_DECODER(HEVC_CUVID, hevc_cuvid); |
637 |
+ REGISTER_ENCODER(HEVC_NVENC, hevc_nvenc); |
|
634 | 638 |
REGISTER_ENCODER(HEVC_QSV, hevc_qsv); |
635 | 639 |
REGISTER_ENCODER(HEVC_VAAPI, hevc_vaapi); |
636 | 640 |
REGISTER_ENCODER(LIBKVAZAAR, libkvazaar); |
... | ... |
@@ -98,6 +98,14 @@ static const AVCodecDefault defaults[] = { |
98 | 98 |
{ NULL }, |
99 | 99 |
}; |
100 | 100 |
|
101 |
+#if FF_API_NVENC_OLD_NAME |
|
102 |
+ |
|
103 |
+static av_cold int nvenc_old_init(AVCodecContext *avctx) |
|
104 |
+{ |
|
105 |
+ av_log(avctx, AV_LOG_WARNING, "This encoder is deprecated, use 'h264_nvenc' instead\n"); |
|
106 |
+ return ff_nvenc_encode_init(avctx); |
|
107 |
+} |
|
108 |
+ |
|
101 | 109 |
#if CONFIG_NVENC_ENCODER |
102 | 110 |
static const AVClass nvenc_class = { |
103 | 111 |
.class_name = "nvenc", |
... | ... |
@@ -111,7 +119,7 @@ AVCodec ff_nvenc_encoder = { |
111 | 111 |
.long_name = NULL_IF_CONFIG_SMALL("NVIDIA NVENC H.264 encoder"), |
112 | 112 |
.type = AVMEDIA_TYPE_VIDEO, |
113 | 113 |
.id = AV_CODEC_ID_H264, |
114 |
- .init = ff_nvenc_encode_init, |
|
114 |
+ .init = nvenc_old_init, |
|
115 | 115 |
.encode2 = ff_nvenc_encode_frame, |
116 | 116 |
.close = ff_nvenc_encode_close, |
117 | 117 |
.priv_data_size = sizeof(NvencContext), |
... | ... |
@@ -137,7 +145,7 @@ AVCodec ff_nvenc_h264_encoder = { |
137 | 137 |
.long_name = NULL_IF_CONFIG_SMALL("NVIDIA NVENC H.264 encoder"), |
138 | 138 |
.type = AVMEDIA_TYPE_VIDEO, |
139 | 139 |
.id = AV_CODEC_ID_H264, |
140 |
- .init = ff_nvenc_encode_init, |
|
140 |
+ .init = nvenc_old_init, |
|
141 | 141 |
.encode2 = ff_nvenc_encode_frame, |
142 | 142 |
.close = ff_nvenc_encode_close, |
143 | 143 |
.priv_data_size = sizeof(NvencContext), |
... | ... |
@@ -148,3 +156,28 @@ AVCodec ff_nvenc_h264_encoder = { |
148 | 148 |
.pix_fmts = ff_nvenc_pix_fmts, |
149 | 149 |
}; |
150 | 150 |
#endif |
151 |
+ |
|
152 |
+#endif |
|
153 |
+ |
|
154 |
+static const AVClass h264_nvenc_class = { |
|
155 |
+ .class_name = "h264_nvenc", |
|
156 |
+ .item_name = av_default_item_name, |
|
157 |
+ .option = options, |
|
158 |
+ .version = LIBAVUTIL_VERSION_INT, |
|
159 |
+}; |
|
160 |
+ |
|
161 |
+AVCodec ff_h264_nvenc_encoder = { |
|
162 |
+ .name = "h264_nvenc", |
|
163 |
+ .long_name = NULL_IF_CONFIG_SMALL("NVIDIA NVENC H.264 encoder"), |
|
164 |
+ .type = AVMEDIA_TYPE_VIDEO, |
|
165 |
+ .id = AV_CODEC_ID_H264, |
|
166 |
+ .init = ff_nvenc_encode_init, |
|
167 |
+ .encode2 = ff_nvenc_encode_frame, |
|
168 |
+ .close = ff_nvenc_encode_close, |
|
169 |
+ .priv_data_size = sizeof(NvencContext), |
|
170 |
+ .priv_class = &h264_nvenc_class, |
|
171 |
+ .defaults = defaults, |
|
172 |
+ .capabilities = AV_CODEC_CAP_DELAY, |
|
173 |
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, |
|
174 |
+ .pix_fmts = ff_nvenc_pix_fmts, |
|
175 |
+}; |
... | ... |
@@ -83,13 +83,6 @@ static const AVOption options[] = { |
83 | 83 |
{ NULL } |
84 | 84 |
}; |
85 | 85 |
|
86 |
-static const AVClass nvenc_hevc_class = { |
|
87 |
- .class_name = "nvenc_hevc", |
|
88 |
- .item_name = av_default_item_name, |
|
89 |
- .option = options, |
|
90 |
- .version = LIBAVUTIL_VERSION_INT, |
|
91 |
-}; |
|
92 |
- |
|
93 | 86 |
static const AVCodecDefault defaults[] = { |
94 | 87 |
{ "b", "2M" }, |
95 | 88 |
{ "qmin", "-1" }, |
... | ... |
@@ -102,12 +95,27 @@ static const AVCodecDefault defaults[] = { |
102 | 102 |
{ NULL }, |
103 | 103 |
}; |
104 | 104 |
|
105 |
+#if FF_API_NVENC_OLD_NAME |
|
106 |
+ |
|
107 |
+static av_cold int nvenc_old_init(AVCodecContext *avctx) |
|
108 |
+{ |
|
109 |
+ av_log(avctx, AV_LOG_WARNING, "This encoder is deprecated, use 'hevc_nvenc' instead\n"); |
|
110 |
+ return ff_nvenc_encode_init(avctx); |
|
111 |
+} |
|
112 |
+ |
|
113 |
+static const AVClass nvenc_hevc_class = { |
|
114 |
+ .class_name = "nvenc_hevc", |
|
115 |
+ .item_name = av_default_item_name, |
|
116 |
+ .option = options, |
|
117 |
+ .version = LIBAVUTIL_VERSION_INT, |
|
118 |
+}; |
|
119 |
+ |
|
105 | 120 |
AVCodec ff_nvenc_hevc_encoder = { |
106 | 121 |
.name = "nvenc_hevc", |
107 | 122 |
.long_name = NULL_IF_CONFIG_SMALL("NVIDIA NVENC hevc encoder"), |
108 | 123 |
.type = AVMEDIA_TYPE_VIDEO, |
109 | 124 |
.id = AV_CODEC_ID_HEVC, |
110 |
- .init = ff_nvenc_encode_init, |
|
125 |
+ .init = nvenc_old_init, |
|
111 | 126 |
.encode2 = ff_nvenc_encode_frame, |
112 | 127 |
.close = ff_nvenc_encode_close, |
113 | 128 |
.priv_data_size = sizeof(NvencContext), |
... | ... |
@@ -117,3 +125,28 @@ AVCodec ff_nvenc_hevc_encoder = { |
117 | 117 |
.capabilities = AV_CODEC_CAP_DELAY, |
118 | 118 |
.caps_internal = FF_CODEC_CAP_INIT_CLEANUP, |
119 | 119 |
}; |
120 |
+ |
|
121 |
+#endif |
|
122 |
+ |
|
123 |
+static const AVClass hevc_nvenc_class = { |
|
124 |
+ .class_name = "hevc_nvenc", |
|
125 |
+ .item_name = av_default_item_name, |
|
126 |
+ .option = options, |
|
127 |
+ .version = LIBAVUTIL_VERSION_INT, |
|
128 |
+}; |
|
129 |
+ |
|
130 |
+AVCodec ff_hevc_nvenc_encoder = { |
|
131 |
+ .name = "hevc_nvenc", |
|
132 |
+ .long_name = NULL_IF_CONFIG_SMALL("NVIDIA NVENC hevc encoder"), |
|
133 |
+ .type = AVMEDIA_TYPE_VIDEO, |
|
134 |
+ .id = AV_CODEC_ID_HEVC, |
|
135 |
+ .init = ff_nvenc_encode_init, |
|
136 |
+ .encode2 = ff_nvenc_encode_frame, |
|
137 |
+ .close = ff_nvenc_encode_close, |
|
138 |
+ .priv_data_size = sizeof(NvencContext), |
|
139 |
+ .priv_class = &hevc_nvenc_class, |
|
140 |
+ .defaults = defaults, |
|
141 |
+ .pix_fmts = ff_nvenc_pix_fmts, |
|
142 |
+ .capabilities = AV_CODEC_CAP_DELAY, |
|
143 |
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, |
|
144 |
+}; |
... | ... |
@@ -28,7 +28,7 @@ |
28 | 28 |
#include "libavutil/version.h" |
29 | 29 |
|
30 | 30 |
#define LIBAVCODEC_VERSION_MAJOR 57 |
31 |
-#define LIBAVCODEC_VERSION_MINOR 46 |
|
31 |
+#define LIBAVCODEC_VERSION_MINOR 47 |
|
32 | 32 |
#define LIBAVCODEC_VERSION_MICRO 100 |
33 | 33 |
|
34 | 34 |
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |
... | ... |
@@ -217,5 +217,8 @@ |
217 | 217 |
#ifndef FF_API_OLD_BSF |
218 | 218 |
#define FF_API_OLD_BSF (LIBAVCODEC_VERSION_MAJOR < 59) |
219 | 219 |
#endif |
220 |
+#ifndef FF_API_NVENC_OLD_NAME |
|
221 |
+#define FF_API_NVENC_OLD_NAME (LIBAVCODEC_VERSION_MAJOR < 59) |
|
222 |
+#endif |
|
220 | 223 |
|
221 | 224 |
#endif /* AVCODEC_VERSION_H */ |