On Mon, 2022-09-05 at 18:40 +0800, 1035567...@qq.com wrote: > From: Wang Yaqiang <wangyaqian...@kuaishou.com> > > For example, if the jpeg contains exif information > and the rotation direction is included in the exif, > the displaymatrix will be set on the side_data of the frame when > decoding. > However, when ffplay is used to play the image, > only the side data in the stream will be determined. > It does not check whether the frame also contains rotation > information, > causing it to play in the wrong direction > > Signed-off-by: Wang Yaqiang <wangyaqian...@kuaishou.com> > --- > fftools/ffplay.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/fftools/ffplay.c b/fftools/ffplay.c > index 9242047f5c..bcc00afe31 100644 > --- a/fftools/ffplay.c > +++ b/fftools/ffplay.c > @@ -1915,8 +1915,14 @@ static int > configure_video_filters(AVFilterGraph *graph, VideoState *is, const c > } while (0) > > if (autorotate) { > - int32_t *displaymatrix = (int32_t > *)av_stream_get_side_data(is->video_st, AV_PKT_DATA_DISPLAYMATRIX, > NULL); > - double theta = get_rotation(displaymatrix); > + double theta = 0.0; > + int32_t *displaymatrix = NULL; > + AVFrameSideData *sd = av_frame_get_side_data(frame, > AV_FRAME_DATA_DISPLAYMATRIX); > + if (sd) > + displaymatrix = (int32_t *)sd->data; > + if (!displaymatrix) > + displaymatrix = (int32_t *)av_stream_get_side_data(is- > >video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL); > + theta = get_rotation(displaymatrix); > > if (fabs(theta - 90) < 1.0) { > INSERT_FILT("transpose", "clock");
LGTM. _______________________________________________ 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".