Tomas Härdin: > fre 2022-09-23 klockan 17:40 +0200 skrev Andreas Rheinhardt: >> That way the SAR will be automatically set on the AVFrame. >> >> Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> >> --- >> If I am not mistaken, then the earlier code would set the sar >> with a delay of one frame on the returned frames in case >> there is a sar change mid-stream. But I don't have a sample >> for this. >> >> libavcodec/jpeg2000dec.c | 7 ++++--- >> 1 file changed, 4 insertions(+), 3 deletions(-) >> >> diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c >> index 7d9661f29f..c3f2a7aa03 100644 >> --- a/libavcodec/jpeg2000dec.c >> +++ b/libavcodec/jpeg2000dec.c >> @@ -2519,6 +2519,10 @@ static int >> jpeg2000_decode_frame(AVCodecContext *avctx, AVFrame *picture, >> if (ret = jpeg2000_read_main_headers(s)) >> goto end; >> >> + if (s->sar.num && s->sar.den) >> + avctx->sample_aspect_ratio = s->sar; >> + s->sar.num = s->sar.den = 0; >> + >> /* get picture buffer */ >> if ((ret = ff_thread_get_buffer(avctx, picture, 0)) < 0) >> goto end; >> @@ -2547,9 +2551,6 @@ static int jpeg2000_decode_frame(AVCodecContext >> *avctx, AVFrame *picture, >> >> if (s->avctx->pix_fmt == AV_PIX_FMT_PAL8) >> memcpy(picture->data[1], s->palette, 256 * >> sizeof(uint32_t)); >> - if (s->sar.num && s->sar.den) >> - avctx->sample_aspect_ratio = s->sar; >> - s->sar.num = s->sar.den = 0; > > I suspect not doing this is what caused my simple hack to not work when > ff_thread_get_buffer() was skipped. Looks OK, passes FATE. >
FYI: Patch two passes FATE even without patch one. In what way did your simple hack not work when ff_thread_get_buffer() is skipped? - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".