Hi, On Wed, Apr 20, 2011 at 3:45 PM, Anton Khirnov <[email protected]> wrote: > From: Michael Niedermayer <[email protected]> > > Signed-off-by: Michael Niedermayer <[email protected]> > Signed-off-by: Anton Khirnov <[email protected]> > --- > libavfilter/vf_drawtext.c | 10 ++++++---- > 1 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/libavfilter/vf_drawtext.c b/libavfilter/vf_drawtext.c > index fa6b7fd..7b503f5 100644 > --- a/libavfilter/vf_drawtext.c > +++ b/libavfilter/vf_drawtext.c > @@ -385,12 +385,14 @@ static int config_input(AVFilterLink *inlink) > > #define SET_PIXEL_YUV(picref, yuva_color, val, x, y, hsub, vsub) { > \ > luma_pos = ((x) ) + ((y) ) * picref->linesize[0]; \ > - chroma_pos1 = ((x) >> (hsub)) + ((y) >> (vsub)) * picref->linesize[1]; \ > - chroma_pos2 = ((x) >> (hsub)) + ((y) >> (vsub)) * picref->linesize[2]; \ > alpha = yuva_color[3] * (val) * 129; \ > picref->data[0][luma_pos] = (alpha * yuva_color[0] + (255*255*129 - > alpha) * picref->data[0][luma_pos] ) >> 23; \ > - picref->data[1][chroma_pos1] = (alpha * yuva_color[1] + (255*255*129 - > alpha) * picref->data[1][chroma_pos1]) >> 23; \ > - picref->data[2][chroma_pos2] = (alpha * yuva_color[2] + (255*255*129 - > alpha) * picref->data[2][chroma_pos2]) >> 23; \ > + if(((x) & ((1<<(hsub))-1))==0 && ((y) & ((1<<(vsub))-1))==0){\ > + chroma_pos1 = ((x) >> (hsub)) + ((y) >> (vsub)) * > picref->linesize[1]; \ > + chroma_pos2 = ((x) >> (hsub)) + ((y) >> (vsub)) * > picref->linesize[2]; \ > + picref->data[1][chroma_pos1] = (alpha * yuva_color[1] + (255*255*129 > - alpha) * picref->data[1][chroma_pos1]) >> 23; \ > + picref->data[2][chroma_pos2] = (alpha * yuva_color[2] + (255*255*129 > - alpha) * picref->data[2][chroma_pos2]) >> 23; \ > + }\
This patch may optimize, but the big issue is that it loses 3/4 of chroma information when drawing the U/V planes in 420P. That may be optimal performance-wise, but isn't a great idea quality-wise. Ronald _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
