[FFmpeg-devel] [PATCH]Always accept concatenating a stream without SAR with a stream with SAR defined
Carl Eugen Hoyos
cehoyos at ag.or.at
Wed Jul 17 10:37:57 CEST 2013
On Wednesday 17 July 2013 10:26:00 am Nicolas George wrote:
> > for (seg = 1; seg < cat->nb_segments; seg++) {
> > inlink = ctx->inputs[in_no += ctx->nb_outputs];
> > + if (!outlink->sample_aspect_ratio.num)
> > + outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
> > /* possible enhancement: unsafe mode, do not check */
> > if (outlink->w != inlink->w
> > || outlink->h != inlink->h
> > || - outlink->sample_aspect_ratio.num !=
> > inlink->sample_aspect_ratio.num ||
> >
> > + outlink->sample_aspect_ratio.num !=
> > inlink->sample_aspect_ratio.num && +
> > inlink->sample_aspect_ratio.num ||
>
> I would be slightly happier with parentheses to show that && has precedence
> over || (not every reader of the code knows the exact order of precedence,
> and relying on it is fragile).
>
> And maybe keep the || aligned with the other ||.
I agree that the original patch does not look very nice but I am not sure how
to improve.
Please see attached, Carl Eugen
-------------- next part --------------
diff --git a/libavfilter/avf_concat.c b/libavfilter/avf_concat.c
index 4534102..667edc6 100644
--- a/libavfilter/avf_concat.c
+++ b/libavfilter/avf_concat.c
@@ -134,10 +134,13 @@ static int config_output(AVFilterLink *outlink)
outlink->format = inlink->format;
for (seg = 1; seg < cat->nb_segments; seg++) {
inlink = ctx->inputs[in_no += ctx->nb_outputs];
+ if (!outlink->sample_aspect_ratio.num)
+ outlink->sample_aspect_ratio = inlink->sample_aspect_ratio;
/* possible enhancement: unsafe mode, do not check */
if (outlink->w != inlink->w ||
outlink->h != inlink->h ||
- outlink->sample_aspect_ratio.num != inlink->sample_aspect_ratio.num ||
+ (outlink->sample_aspect_ratio.num != inlink->sample_aspect_ratio.num &&
+ inlink->sample_aspect_ratio.num) ||
outlink->sample_aspect_ratio.den != inlink->sample_aspect_ratio.den) {
av_log(ctx, AV_LOG_ERROR, "Input link %s parameters "
"(size %dx%d, SAR %d:%d) do not match the corresponding "
More information about the ffmpeg-devel
mailing list