Showing the changes to libavfilter (1 of 1 file). Show all
Unified · Split
| @@ -176,40 +176,12 @@ static int config_props(AVFilterLink *inlink) · 175 unmodified lines | ||
| 176 | 176 | sr_context->sws_slice_h = inlink->h; |
| 177 | 177 | } else { |
| 178 | 178 | if (inlink->format != AV_PIX_FMT_GRAY8){ |
| 179 | − sws_src_h = sr_context->input.height; | |
| 180 | − sws_src_w = sr_context->input.width; | |
| 181 | − sws_dst_h = sr_context->output.height; | |
| 182 | − sws_dst_w = sr_context->output.width; | |
| 183 | − | |
| 184 | − switch (inlink->format){ | |
| 185 | − case AV_PIX_FMT_YUV420P: | |
| 186 | − sws_src_h = AV_CEIL_RSHIFT(sws_src_h, 1); | |
| 187 | − sws_src_w = AV_CEIL_RSHIFT(sws_src_w, 1); | |
| 188 | − sws_dst_h = AV_CEIL_RSHIFT(sws_dst_h, 1); | |
| 189 | − sws_dst_w = AV_CEIL_RSHIFT(sws_dst_w, 1); | |
| 190 | − break; | |
| 191 | − case AV_PIX_FMT_YUV422P: | |
| 192 | − sws_src_w = AV_CEIL_RSHIFT(sws_src_w, 1); | |
| 193 | − sws_dst_w = AV_CEIL_RSHIFT(sws_dst_w, 1); | |
| 194 | − break; | |
| 195 | − case AV_PIX_FMT_YUV444P: | |
| 196 | − break; | |
| 197 | − case AV_PIX_FMT_YUV410P: | |
| 198 | − sws_src_h = AV_CEIL_RSHIFT(sws_src_h, 2); | |
| 199 | − sws_src_w = AV_CEIL_RSHIFT(sws_src_w, 2); | |
| 200 | − sws_dst_h = AV_CEIL_RSHIFT(sws_dst_h, 2); | |
| 201 | − sws_dst_w = AV_CEIL_RSHIFT(sws_dst_w, 2); | |
| 202 | − break; | |
| 203 | − case AV_PIX_FMT_YUV411P: | |
| 204 | − sws_src_w = AV_CEIL_RSHIFT(sws_src_w, 2); | |
| 205 | − sws_dst_w = AV_CEIL_RSHIFT(sws_dst_w, 2); | |
| 206 | − break; | |
| 207 | − default: | |
| 208 | − av_log(context, AV_LOG_ERROR, | |
| 209 | − "could not create SwsContext for scaling for given input pixel format: %s\n", | |
| 210 | − av_get_pix_fmt_name(inlink->format)); | |
| 211 | − return AVERROR(EIO); | |
| 212 | − } | |
| 179 | + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format); | |
| 180 | + sws_src_h = AV_CEIL_RSHIFT(sr_context->input.height, desc->log2_chroma_h); | |
| 181 | + sws_src_w = AV_CEIL_RSHIFT(sr_context->input.width, desc->log2_chroma_w); | |
| 182 | + sws_dst_h = AV_CEIL_RSHIFT(sr_context->output.height, desc->log2_chroma_h); | |
| 183 | + sws_dst_w = AV_CEIL_RSHIFT(sr_context->output.width, desc->log2_chroma_w); | |
| 184 | + | |
| 213 | 185 | sr_context->sws_contexts[0] = sws_getContext(sws_src_w, sws_src_h, AV_PIX_FMT_GRAY8, |
| 214 | 186 | sws_dst_w, sws_dst_h, AV_PIX_FMT_GRAY8, |
| 215 | 187 | SWS_BICUBIC, NULL, NULL, NULL); |