git.videolan.org
/
ffmpeg.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
35cf069
)
lavfi/pixdesctest: fix chroma subsampling with odd sizes.
author
Clément Bœsch
<ubitux@gmail.com>
Thu, 16 May 2013 16:54:28 +0000
(18:54 +0200)
committer
Clément Bœsch
<ubitux@gmail.com>
Sat, 1 Jun 2013 10:05:55 +0000
(12:05 +0200)
libavfilter/vf_pixdesctest.c
patch
|
blob
|
history
diff --git
a/libavfilter/vf_pixdesctest.c
b/libavfilter/vf_pixdesctest.c
index
55e6e39
..
89ac7b2
100644
(file)
--- a/
libavfilter/vf_pixdesctest.c
+++ b/
libavfilter/vf_pixdesctest.c
@@
-59,6
+59,8
@@
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
AVFilterLink *outlink = inlink->dst->outputs[0];
AVFrame *out;
int i, c, w = inlink->w, h = inlink->h;
AVFilterLink *outlink = inlink->dst->outputs[0];
AVFrame *out;
int i, c, w = inlink->w, h = inlink->h;
+ const int cw = FF_CEIL_RSHIFT(w, priv->pix_desc->log2_chroma_w);
+ const int ch = FF_CEIL_RSHIFT(h, priv->pix_desc->log2_chroma_h);
out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
if (!out) {
out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
if (!out) {
@@
-69,12
+71,11
@@
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
av_frame_copy_props(out, in);
for (i = 0; i < 4; i++) {
av_frame_copy_props(out, in);
for (i = 0; i < 4; i++) {
- int h = outlink->h;
- h = i == 1 || i == 2 ? h>>priv->pix_desc->log2_chroma_h : h;
+ const int h1 = i == 1 || i == 2 ? ch : h;
if (out->data[i]) {
uint8_t *data = out->data[i] +
if (out->data[i]) {
uint8_t *data = out->data[i] +
- (out->linesize[i] > 0 ? 0 : out->linesize[i] * (h-1));
- memset(data, 0, FFABS(out->linesize[i]) * h);
+ (out->linesize[i] > 0 ? 0 : out->linesize[i] * (h
1
-1));
+ memset(data, 0, FFABS(out->linesize[i]) * h
1
);
}
}
}
}
@@
-84,8
+85,8
@@
static int filter_frame(AVFilterLink *inlink, AVFrame *in)
memcpy(out->data[1], in->data[1], AVPALETTE_SIZE);
for (c = 0; c < priv->pix_desc->nb_components; c++) {
memcpy(out->data[1], in->data[1], AVPALETTE_SIZE);
for (c = 0; c < priv->pix_desc->nb_components; c++) {
-
int w1 = c == 1 || c == 2 ? w>>priv->pix_desc->log2_chroma_
w : w;
-
int h1 = c == 1 || c == 2 ? h>>priv->pix_desc->log2_chroma_
h : h;
+
const int w1 = c == 1 || c == 2 ? c
w : w;
+
const int h1 = c == 1 || c == 2 ? c
h : h;
for (i = 0; i < h1; i++) {
av_read_image_line(priv->line,
for (i = 0; i < h1; i++) {
av_read_image_line(priv->line,