On Tue, Jul 17, 2018 at 09:39:18PM +0200, Vittorio Giovara wrote: > YUV410P requires that sizes are divisible by 4. There seem to be > some encoders that ignore that and encode a different value in > the bitstream itself. Handle that case by exporting the relative > cropping information. > --- > Alternatively it is possible to always enforce mod4 sizes and call > it a day. > Vittorio > > libavcodec/svq1dec.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c > index d3e60c3a4a..55047b43ce 100644 > --- a/libavcodec/svq1dec.c > +++ b/libavcodec/svq1dec.c > @@ -663,7 +663,8 @@ static int svq1_decode_frame(AVCodecContext *avctx, void > *data, > return result; > } > > - result = ff_set_dimensions(avctx, s->width, s->height); > + /* sizes must be always disivible by 4 due to pixel format constraints */ > + result = ff_set_dimensions(avctx, FFALIGN(s->width, 4), > FFALIGN(s->height, 4)); > if (result < 0) > return result; > > @@ -755,6 +756,11 @@ static int svq1_decode_frame(AVCodecContext *avctx, void > *data, > *got_frame = 1; > result = buf_size; > > + cur->crop_left = 0; > + cur->crop_top = 0; > + cur->crop_right = FFALIGN(s->width, 4) - s->width; > + cur->crop_bottom = FFALIGN(s->height, 4) - s->height; > + > err: > av_free(pmv); > return result; > @@ -843,6 +849,7 @@ AVCodec ff_svq1_decoder = { > .close = svq1_decode_end, > .decode = svq1_decode_frame, > .capabilities = AV_CODEC_CAP_DR1, > + .caps_internal = FF_CODEC_CAP_EXPORTS_CROPPING, > .flush = svq1_flush, > .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV410P, > AV_PIX_FMT_NONE },
I dont think this is neccessary. but if it is fixing some testcase iam interrested in that testcase. Also this seems to break make fate TEST svq1-headerswap --- ./tests/ref/fate/svq1-headerswap 2018-07-16 18:42:40.498707547 +0200 +++ tests/data/fate/svq1-headerswap 2018-07-18 12:24:50.225870370 +0200 @@ -4,6 +4,3 @@ #dimensions 0: 293x178 #sar 0: 0/1 0, 0, 0, 1, 58814, 0x5caad04b -0, 1, 1, 1, 58814, 0x98d8ceb8 -0, 2, 2, 1, 58814, 0x8925cdb0 -0, 3, 3, 1, 58814, 0x6ffc02c3 Test svq1-headerswap failed. Look at tests/data/fate/svq1-headerswap.err for details. make: *** [fate-svq1-headerswap] Error 69 [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB While the State exists there can be no freedom; when there is freedom there will be no State. -- Vladimir Lenin
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel