>> + av_reduce(&avctx->sample_aspect_ratio.num, >> + &avctx->sample_aspect_ratio.den, >> + v->disp_horiz_size * v->aspect_ratio.num * h, >> + v->disp_vert_size * v->aspect_ratio.den * w, >> + 1 << 30); > >> + ff_set_sar(avctx, avctx->sample_aspect_ratio); > > I would have expected these two statements to be redundant - > am I wrong? > > Carl Eugen
I am not fully sure that I understand your comment. av_reduce takes out the greatest common divisor and puts a bound on the individual fraction numbers. ff_set_sar checks that the SAR makes sense in relation to the image size. Although, the code is reassigning avctx->sample_aspect_ratio to itself in ff_set_sar, the different checks make both statements necessary. In addition, the large values that results from 'v->disp_horiz_size * v->aspect_ratio.num * h' and 'v->disp_vert_size * v->aspect_ratio.den * w', can in most cases be efficiently reduced. These two statements are moved to the entrypoint parser, because the coded size is an entrypoint element. At the position where the av_reduce statement was previously located, the v->s.avctx->height and v->s.avctx->width could contain values from the previous entrypoint header or be zero when parsing the first sequence header. Regards, Jerome _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel