|
68 | 68 | const HWAccel hwaccels[] = { |
69 | 69 | #if HAVE_VDPAU_X11 |
70 | 70 | { "vdpau", hwaccel_decode_init, HWACCEL_VDPAU, AV_PIX_FMT_VDPAU, |
71 | | - AV_HWDEVICE_TYPE_VDPAU }, |
| 71 | + AV_HWDEVICE_TYPE_VDPAU, FALSE }, |
72 | 72 | #endif |
73 | 73 | #if HAVE_DXVA2_LIB |
74 | 74 | { "dxva2", dxva2_init, HWACCEL_DXVA2, AV_PIX_FMT_DXVA2_VLD, |
75 | | - AV_HWDEVICE_TYPE_NONE }, |
| 75 | + AV_HWDEVICE_TYPE_NONE, FALSE }, |
76 | 76 | #endif |
77 | 77 | #if CONFIG_VDA |
78 | 78 | { "vda", videotoolbox_init, HWACCEL_VDA, AV_PIX_FMT_VDA, |
79 | | - AV_HWDEVICE_TYPE_NONE }, |
| 79 | + AV_HWDEVICE_TYPE_NONE, FALSE }, |
80 | 80 | #endif |
81 | 81 | #if CONFIG_VIDEOTOOLBOX |
82 | 82 | { "videotoolbox", videotoolbox_init, HWACCEL_VIDEOTOOLBOX, AV_PIX_FMT_VIDEOTOOLBOX, |
83 | | - AV_HWDEVICE_TYPE_NONE }, |
| 83 | + AV_HWDEVICE_TYPE_NONE, FALSE }, |
84 | 84 | #endif |
85 | 85 | #if CONFIG_LIBMFX |
86 | 86 | { "qsv", qsv_init, HWACCEL_QSV, AV_PIX_FMT_QSV, |
87 | | - AV_HWDEVICE_TYPE_NONE }, |
| 87 | + AV_HWDEVICE_TYPE_NONE, TRUE }, |
88 | 88 | #endif |
89 | 89 | #if CONFIG_VAAPI |
90 | 90 | { "vaapi", hwaccel_decode_init, HWACCEL_VAAPI, AV_PIX_FMT_VAAPI, |
91 | | - AV_HWDEVICE_TYPE_VAAPI }, |
| 91 | + AV_HWDEVICE_TYPE_VAAPI, FALSE }, |
92 | 92 | #endif |
93 | 93 | #if CONFIG_CUVID |
94 | 94 | { "cuvid", hwaccel_decode_init, HWACCEL_CUDA, AV_PIX_FMT_CUDA, |
95 | | - AV_HWDEVICE_TYPE_CUDA }, |
| 95 | + AV_HWDEVICE_TYPE_CUDA, TRUE }, |
96 | 96 | #endif |
97 | 97 | { 0 }, |
98 | 98 | }; |
@@ -708,6 +708,7 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic) |
708 | 708 | char *discard_str = NULL; |
709 | 709 | const AVClass *cc = avcodec_get_class(); |
710 | 710 | const AVOption *discard_opt = av_opt_find(&cc, "skip_frame", NULL, 0, 0); |
| 711 | + enum AVPixelFormat default_pix_fmt = AV_PIX_FMT_NONE; |
711 | 712 |
|
712 | 713 | if (!ist) |
713 | 714 | exit_program(1); |
@@ -805,6 +806,8 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic) |
805 | 806 | for (i = 0; hwaccels[i].name; i++) { |
806 | 807 | if (!strcmp(hwaccels[i].name, hwaccel)) { |
807 | 808 | ist->hwaccel_id = hwaccels[i].id; |
| 809 | + if (hwaccels[i].pix_fmt_is_default) |
| 810 | + default_pix_fmt = hwaccels[i].pix_fmt; |
808 | 811 | break; |
809 | 812 | } |
810 | 813 | } |
@@ -837,7 +840,7 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic) |
837 | 840 | "format: %s", hwaccel_output_format); |
838 | 841 | } |
839 | 842 | } else { |
840 | | - ist->hwaccel_output_format = AV_PIX_FMT_NONE; |
| 843 | + ist->hwaccel_output_format = default_pix_fmt; |
841 | 844 | } |
842 | 845 |
|
843 | 846 | ist->hwaccel_pix_fmt = AV_PIX_FMT_NONE; |
|
0 commit comments