[FFmpeg-trac] #10256(ffmpeg:open): ffmpeg incorrectly classifies .yuv input format as "gsm"

FFmpeg trac at avcodec.org
Tue Mar 14 20:07:00 EET 2023


#10256: ffmpeg incorrectly classifies .yuv input format as "gsm"
-------------------------------------+-------------------------------------
             Reporter:  Martin       |                    Owner:  (none)
                 Type:  defect       |                   Status:  open
             Priority:  normal       |                Component:  ffmpeg
              Version:  unspecified  |               Resolution:
             Keywords:  gsm          |               Blocked By:
  rawvideo yuv .yuv                  |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Description changed by Martin:

Old description:

> Summary of the bug:
>
> Input a raw 4:2:0 .yuv, attempting to pad black pixels
> ffmpeg classifies the image as "gsm", then fails to parse image
> dimensions supplied, using either "-s WxH" or "-video_size WxH"
>
> How to reproduce:
> {{{
> %
>
> ffmpeg -y  -v 99 -pix_fmt yuv420p -video_size 1882x1062 -i
> "problem_file.yuv"
>  -vf "pad=iw+16:ih+8:0:0:color=0x000000, format=pix_fmts=yuv420p"
> "problem_file_pad.yuv"
>
> ffmpeg version 4.4.1-static https://johnvansickle.com/ffmpeg/  Copyright
> (c) 2000-2021 the FFmpeg developers
>   built with gcc 8 (Debian 8.3.0-6)
>   configuration: --enable-gpl --enable-version3 --enable-static
> --disable-debug --disable-ffplay --disable-indev=sndio --disable-
> outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls
> --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-
> libfribidi --enable-libass --enable-libvmaf --enable-libfreetype
> --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb
> --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-
> libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-
> libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx
> --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2
> --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
>   libavutil      56. 70.100 / 56. 70.100
>   libavcodec     58.134.100 / 58.134.100
>   libavformat    58. 76.100 / 58. 76.100
>   libavdevice    58. 13.100 / 58. 13.100
>   libavfilter     7.110.100 /  7.110.100
>   libswscale      5.  9.100 /  5.  9.100
>   libswresample   3.  9.100 /  3.  9.100
>   libpostproc    55.  9.100 / 55.  9.100
> Splitting the commandline.
> Reading option '-y' ... matched as option 'y' (overwrite output files)
> with argument '1'.
> Reading option '-v' ... matched as option 'v' (set logging level) with
> argument '99'.
> Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel
> format) with argument 'yuv420p'.
> Reading option '-video_size' ... matched as AVOption 'video_size' with
> argument '1882x1062'.
> Reading option '-i' ... matched as input url with argument
> 'problem_file.yuv'.
> Reading option '-vf' ... matched as option 'vf' (set video filters) with
> argument 'pad=iw+16:ih+8:0:0:color=0x000000, format=pix_fmts=yuv420p'.
> Reading option 'problem_file_pad.yuv' ... matched as output url.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option y (overwrite output files) with argument 1.
> Applying option v (set logging level) with argument 99.
> Successfully parsed a group of options.
> Parsing a group of options: input url problem_file.yuv.
> Applying option pix_fmt (set pixel format) with argument yuv420p.
> Successfully parsed a group of options.
> Opening an input file: problem_file.yuv.
> [NULL @ 0x6f601c0] Opening 'problem_file.yuv' for reading
> [file @ 0x6f60f00] Setting default whitelist 'file,crypto,data'
> Probing gsm score:51 size:2048
> [gsm @ 0x6f601c0] Format gsm probed with size=2048 and score=51
> st:0 removing common factor 160 from timebase
> Option video_size not found.
> }}}
>

> Notes: This error only occurs with one of my images out 166.
>
> Workaround: Add input file option "-f rawvideo" to force ffmpeg to
> classify the input image format as "rawvideo".
> {{{
> ffmpeg -y  -v 99 -pix_fmt yuv420p -f rawvideo -video_size 1882x1062 -i
> "problem_file.yuv"
>  -vf "pad=iw+16:ih+8:0:0:color=0x000000, format=pix_fmts=yuv420p"
> "problem_file_pad.yuv"
> }}}

New description:

 Summary of the bug:

 Input a raw 4:2:0 .yuv, attempting to pad black pixels
 ffmpeg classifies the image as "gsm", then fails to parse image dimensions
 supplied, using either "-s WxH" or "-video_size WxH"

 How to reproduce:
 {{{
 ffmpeg -y  -v 99 -pix_fmt yuv420p -video_size 1882x1062 -i
 "problem_file.yuv"
  -vf "pad=iw+16:ih+8:0:0:color=0x000000, format=pix_fmts=yuv420p"
 "problem_file_pad.yuv"

 ffmpeg version 4.4.1-static https://johnvansickle.com/ffmpeg/  Copyright
 (c) 2000-2021 the FFmpeg developers
   built with gcc 8 (Debian 8.3.0-6)
   configuration: --enable-gpl --enable-version3 --enable-static --disable-
 debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio
 --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp
 --enable-libgme --enable-gray --enable-libaom --enable-libfribidi
 --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
 --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt
 --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab
 --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264
 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid
 --enable-libzvbi --enable-libzimg
   libavutil      56. 70.100 / 56. 70.100
   libavcodec     58.134.100 / 58.134.100
   libavformat    58. 76.100 / 58. 76.100
   libavdevice    58. 13.100 / 58. 13.100
   libavfilter     7.110.100 /  7.110.100
   libswscale      5.  9.100 /  5.  9.100
   libswresample   3.  9.100 /  3.  9.100
   libpostproc    55.  9.100 / 55.  9.100
 Splitting the commandline.
 Reading option '-y' ... matched as option 'y' (overwrite output files)
 with argument '1'.
 Reading option '-v' ... matched as option 'v' (set logging level) with
 argument '99'.
 Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel
 format) with argument 'yuv420p'.
 Reading option '-video_size' ... matched as AVOption 'video_size' with
 argument '1882x1062'.
 Reading option '-i' ... matched as input url with argument
 'problem_file.yuv'.
 Reading option '-vf' ... matched as option 'vf' (set video filters) with
 argument 'pad=iw+16:ih+8:0:0:color=0x000000, format=pix_fmts=yuv420p'.
 Reading option 'problem_file_pad.yuv' ... matched as output url.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option y (overwrite output files) with argument 1.
 Applying option v (set logging level) with argument 99.
 Successfully parsed a group of options.
 Parsing a group of options: input url problem_file.yuv.
 Applying option pix_fmt (set pixel format) with argument yuv420p.
 Successfully parsed a group of options.
 Opening an input file: problem_file.yuv.
 [NULL @ 0x6f601c0] Opening 'problem_file.yuv' for reading
 [file @ 0x6f60f00] Setting default whitelist 'file,crypto,data'
 Probing gsm score:51 size:2048
 [gsm @ 0x6f601c0] Format gsm probed with size=2048 and score=51
 st:0 removing common factor 160 from timebase
 Option video_size not found.
 }}}


 Notes: This error only occurs with one of my images (attached) out of 166.

 Workaround: Add input file option "-f rawvideo" to force ffmpeg to
 classify the input image format as "rawvideo".
 {{{
 ffmpeg -y  -v 99 -pix_fmt yuv420p -f rawvideo -video_size 1882x1062 -i
 "problem_file.yuv"
  -vf "pad=iw+16:ih+8:0:0:color=0x000000, format=pix_fmts=yuv420p"
 "problem_file_pad.yuv"
 }}}

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10256#comment:8>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list