[FFmpeg-trac] #9432(avfilter:new): [regression] jpeg autorotate breaks vaapi 422 jpeg decode

FFmpeg trac at avcodec.org
Tue Sep 21 06:58:20 EEST 2021


#9432: [regression] jpeg autorotate breaks vaapi 422 jpeg decode
-------------------------------------+-------------------------------------
             Reporter:  U. Artie     |                    Owner:  (none)
  Eoff                               |
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:  avfilter
              Version:  git-master   |               Resolution:
             Keywords:  vaapi        |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Comment (by James):

 Replying to [comment:2 U. Artie Eoff]:
 > hmm... 420 jpeg might be broken, too, with vaapi if file has exif
 orientation.
 Yes, pretty much any jpeg sample with orientation exif and any h264 stream
 with Display Orientation SEI will be affected. What i did was make ffmpeg
 look at codec exported display matrix instead of only container exported.

 Does the following fix it for you?

 {{{
 diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
 index da0d4faf54..cf52cc03ba 100644
 --- a/fftools/ffmpeg_filter.c
 +++ b/fftools/ffmpeg_filter.c
 @@ -699,6 +699,7 @@ static int configure_input_video_filter(FilterGraph
 *fg, InputFilter *ifilter,
  {
      AVFilterContext *last_filter;
      const AVFilter *buffer_filt = avfilter_get_by_name("buffer");
 +    const AVPixFmtDescriptor *desc;
      InputStream *ist = ifilter->ist;
      InputFile     *f = input_files[ist->file_index];
      AVRational tb = ist->framerate.num ? av_inv_q(ist->framerate) :
 @@ -756,7 +757,8 @@ static int configure_input_video_filter(FilterGraph
 *fg, InputFilter *ifilter,
      av_freep(&par);
      last_filter = ifilter->filter;

 -    if (ist->autorotate) {
 +    desc = av_pix_fmt_desc_get(ifilter->format);
 +    if (ist->autorotate && desc && !(desc->flags &
 AV_PIX_FMT_FLAG_HWACCEL)) {
          int32_t *displaymatrix = ifilter->displaymatrix;
          double theta;

 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9432#comment:3>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list