Allow remaining 32bit RGB packed pix_fmts in kerndeint filter.

Reviewed-by: Stefano Sabatini
This commit is contained in:
Carl Eugen Hoyos 2013-01-05 14:40:06 +01:00
parent 860b5c0a63
commit 6a9af92565
2 changed files with 14 additions and 3 deletions

View File

@ -82,7 +82,10 @@ static int query_formats(AVFilterContext *ctx)
static const enum PixelFormat pix_fmts[] = {
AV_PIX_FMT_YUV420P,
AV_PIX_FMT_YUYV422,
AV_PIX_FMT_ARGB,
AV_PIX_FMT_ARGB, AV_PIX_FMT_0RGB,
AV_PIX_FMT_ABGR, AV_PIX_FMT_0BGR,
AV_PIX_FMT_RGBA, AV_PIX_FMT_RGB0,
AV_PIX_FMT_BGRA, AV_PIX_FMT_BGR0,
AV_PIX_FMT_NONE
};
@ -200,10 +203,11 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpic)
(abs((int)prvp[x] - (int)srcp[x]) > thresh) ||
(abs((int)prvpp[x] - (int)srcpp[x]) > thresh) ||
(abs((int)prvpn[x] - (int)srcpn[x]) > thresh)) {
int is_packed_rgb = av_pix_fmt_desc_get(inlink->format)->flags & PIX_FMT_RGB;
if (map) {
g = x & ~3;
if (inlink->format == AV_PIX_FMT_ARGB) {
if (is_packed_rgb) {
AV_WB32(dstp + g, 0xffffffff);
x = g + 3;
} else if (inlink->format == AV_PIX_FMT_YUYV422) {
@ -214,7 +218,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpic)
dstp[x] = plane == 0 ? 235 : 128;
}
} else {
if (inlink->format == AV_PIX_FMT_ARGB) {
if (is_packed_rgb) {
hi = 255;
lo = 0;
} else if (inlink->format == AV_PIX_FMT_YUYV422) {

View File

@ -1,3 +1,10 @@
0bgr 58fb0bda60562ce17e75f1c3459d0504
0rgb d29f6a7b63ade359ec81f5856633ec06
abgr 71071045b8ec66a6d0a38bb3fed1ca51
argb 93ba0daa1e945ad1a6f8c0c1cd2e1858
bgr0 364b8bcd1c7a384902077bc7190c5ea3
bgra 81ac8315a4c66e363bc6fa3e99d9cd2b
rgb0 ae0c2afbc266345c1372276755595105
rgba 42a6cc9b815ca0ee69c29db3616ce25e
yuv420p a935cce07c5287b92c6d5220361866ed
yuyv422 f549c98059ba9ce50e28204256d13b5d