Browse code

avcodec/nvenc: Bring encoder names in line with other encoders

Timo Rothenpieler authored on 2016/06/26 05:24:13
Showing 6 changed files
... ...
@@ -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 */