Once I remembered that there's a separate decoder type for mpeg1,
even though params struct is shared with mpeg2, everything worked.
... | ... |
@@ -13,7 +13,7 @@ version <next>: |
13 | 13 |
- PCE support for extended channel layouts in the AAC encoder |
14 | 14 |
- native aptX encoder and decoder |
15 | 15 |
- Raw aptX muxer and demuxer |
16 |
-- NVIDIA NVDEC-accelerated H.264, HEVC, MPEG-2, VC1 and VP9 hwaccel decoding |
|
16 |
+- NVIDIA NVDEC-accelerated H.264, HEVC, MPEG-1/2, VC1 and VP9 hwaccel decoding |
|
17 | 17 |
- Intel QSV-accelerated overlay filter |
18 | 18 |
- mcompand audio filter |
19 | 19 |
- acontrast audio filter |
... | ... |
@@ -2704,6 +2704,8 @@ mjpeg_cuvid_hwaccel_select="mjpeg_cuvid_decoder" |
2704 | 2704 |
mpeg_xvmc_hwaccel_deps="xvmc" |
2705 | 2705 |
mpeg_xvmc_hwaccel_select="mpeg2video_decoder" |
2706 | 2706 |
mpeg1_cuvid_hwaccel_select="mpeg1_cuvid_decoder" |
2707 |
+mpeg1_nvdec_hwaccel_deps="nvdec" |
|
2708 |
+mpeg1_nvdec_hwaccel_select="mpeg1video_decoder" |
|
2707 | 2709 |
mpeg1_vdpau_hwaccel_deps="vdpau" |
2708 | 2710 |
mpeg1_vdpau_hwaccel_select="mpeg1video_decoder" |
2709 | 2711 |
mpeg1_videotoolbox_hwaccel_deps="videotoolbox" |
... | ... |
@@ -849,6 +849,7 @@ OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o |
849 | 849 |
OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec_h2645.o |
850 | 850 |
OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o |
851 | 851 |
OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o |
852 |
+OBJS-$(CONFIG_MPEG1_NVDEC_HWACCEL) += nvdec_mpeg12.o |
|
852 | 853 |
OBJS-$(CONFIG_MPEG1_VDPAU_HWACCEL) += vdpau_mpeg12.o |
853 | 854 |
OBJS-$(CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o |
854 | 855 |
OBJS-$(CONFIG_MPEG1_XVMC_HWACCEL) += mpegvideo_xvmc.o |
... | ... |
@@ -87,6 +87,7 @@ static void register_all(void) |
87 | 87 |
REGISTER_HWACCEL(HEVC_VIDEOTOOLBOX, hevc_videotoolbox); |
88 | 88 |
REGISTER_HWACCEL(MJPEG_CUVID, mjpeg_cuvid); |
89 | 89 |
REGISTER_HWACCEL(MPEG1_CUVID, mpeg1_cuvid); |
90 |
+ REGISTER_HWACCEL(MPEG1_NVDEC, mpeg1_nvdec); |
|
90 | 91 |
REGISTER_HWACCEL(MPEG1_XVMC, mpeg1_xvmc); |
91 | 92 |
REGISTER_HWACCEL(MPEG1_VDPAU, mpeg1_vdpau); |
92 | 93 |
REGISTER_HWACCEL(MPEG1_VIDEOTOOLBOX, mpeg1_videotoolbox); |
... | ... |
@@ -1130,6 +1130,9 @@ static void quant_matrix_rebuild(uint16_t *matrix, const uint8_t *old_perm, |
1130 | 1130 |
} |
1131 | 1131 |
|
1132 | 1132 |
static const enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420[] = { |
1133 |
+#if CONFIG_MPEG1_NVDEC_HWACCEL |
|
1134 |
+ AV_PIX_FMT_CUDA, |
|
1135 |
+#endif |
|
1133 | 1136 |
#if CONFIG_MPEG1_XVMC_HWACCEL |
1134 | 1137 |
AV_PIX_FMT_XVMC, |
1135 | 1138 |
#endif |
... | ... |
@@ -54,6 +54,7 @@ static int map_avcodec_id(enum AVCodecID id) |
54 | 54 |
switch (id) { |
55 | 55 |
case AV_CODEC_ID_H264: return cudaVideoCodec_H264; |
56 | 56 |
case AV_CODEC_ID_HEVC: return cudaVideoCodec_HEVC; |
57 |
+ case AV_CODEC_ID_MPEG1VIDEO: return cudaVideoCodec_MPEG1; |
|
57 | 58 |
case AV_CODEC_ID_MPEG2VIDEO: return cudaVideoCodec_MPEG2; |
58 | 59 |
case AV_CODEC_ID_VC1: return cudaVideoCodec_VC1; |
59 | 60 |
case AV_CODEC_ID_VP9: return cudaVideoCodec_VP9; |
... | ... |
@@ -1,5 +1,5 @@ |
1 | 1 |
/* |
2 |
- * MPEG-2 HW decode acceleration through NVDEC |
|
2 |
+ * MPEG-1/2 HW decode acceleration through NVDEC |
|
3 | 3 |
* |
4 | 4 |
* Copyright (c) 2017 Philip Langdale |
5 | 5 |
* |
... | ... |
@@ -105,3 +105,19 @@ AVHWAccel ff_mpeg2_nvdec_hwaccel = { |
105 | 105 |
.priv_data_size = sizeof(NVDECContext), |
106 | 106 |
}; |
107 | 107 |
#endif |
108 |
+ |
|
109 |
+#if CONFIG_MPEG1_NVDEC_HWACCEL |
|
110 |
+AVHWAccel ff_mpeg1_nvdec_hwaccel = { |
|
111 |
+ .name = "mpeg1_nvdec", |
|
112 |
+ .type = AVMEDIA_TYPE_VIDEO, |
|
113 |
+ .id = AV_CODEC_ID_MPEG1VIDEO, |
|
114 |
+ .pix_fmt = AV_PIX_FMT_CUDA, |
|
115 |
+ .start_frame = nvdec_mpeg12_start_frame, |
|
116 |
+ .end_frame = ff_nvdec_simple_end_frame, |
|
117 |
+ .decode_slice = ff_nvdec_simple_decode_slice, |
|
118 |
+ .frame_params = nvdec_mpeg12_frame_params, |
|
119 |
+ .init = ff_nvdec_decode_init, |
|
120 |
+ .uninit = ff_nvdec_decode_uninit, |
|
121 |
+ .priv_data_size = sizeof(NVDECContext), |
|
122 |
+}; |
|
123 |
+#endif |
... | ... |
@@ -29,7 +29,7 @@ |
29 | 29 |
|
30 | 30 |
#define LIBAVCODEC_VERSION_MAJOR 58 |
31 | 31 |
#define LIBAVCODEC_VERSION_MINOR 3 |
32 |
-#define LIBAVCODEC_VERSION_MICRO 103 |
|
32 |
+#define LIBAVCODEC_VERSION_MICRO 104 |
|
33 | 33 |
|
34 | 34 |
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |
35 | 35 |
LIBAVCODEC_VERSION_MINOR, \ |