[FFmpeg-trac] #9833(undetermined:new): print expression ignores sign

FFmpeg trac at avcodec.org
Sun Jul 17 01:01:10 EEST 2022


#9833: print expression ignores sign
-------------------------------------+-------------------------------------
             Reporter:  Player701    |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:  expressions  |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 It appears that when a print expression is encountered, the sign before it
 is ignored. For example, "-print(1)" actually evaluates to 1 and not -1.
 However, "-1*print(1)" correctly evaluates to -1.

 How to reproduce:
 {{{
 % ffmpeg -loglevel repeat+info -f lavfi -i nullsrc -c:v copy -bsf:v
 setts=ts='print(-print(1),16);TS' -vframes 1 -f null -
 ffmpeg version 2022-07-14-git-882aac99d2-full_build-www.gyan.dev Copyright
 (c) 2000-2022 the FFmpeg developers
   built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
   configuration: --enable-gpl --enable-version3 --enable-static --disable-
 w32threads --disable-autodetect --enable-fontconfig --enable-iconv
 --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma
 --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt
 --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray
 --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libdavs2
 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1
 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2
 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg
 --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r
 --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-
 libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-
 llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc
 --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libshaderc
 --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio
 --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-
 libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora
 --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-
 libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex
 --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite
 --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-
 chromaprint
   libavutil      57. 29.100 / 57. 29.100
   libavcodec     59. 38.100 / 59. 38.100
   libavformat    59. 28.100 / 59. 28.100
   libavdevice    59.  8.100 / 59.  8.100
   libavfilter     8. 45.100 /  8. 45.100
   libswscale      6.  8.100 /  6.  8.100
   libswresample   4.  8.100 /  4.  8.100
   libpostproc    56.  7.100 / 56.  7.100
 Splitting the commandline.
 Reading option '-v' ... matched as option 'v' (set logging level) with
 argument '9'.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument 'repeat+99'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'lavfi'.
 Reading option '-i' ... matched as input url with argument 'nullsrc'.
 Reading option '-c:v' ... matched as option 'c' (codec name) with argument
 'copy'.
 Reading option '-bsf:v' ... matched as option 'bsf' (A comma-separated
 list of bitstream filters) with argument
 'setts=ts='print(-print(1),16);TS''.
 Reading option '-vframes' ... matched as option 'vframes' (set the number
 of video frames to output) with argument '1'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'null'.
 Reading option '-' ... matched as output url.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option v (set logging level) with argument 9.
 Successfully parsed a group of options.
 Parsing a group of options: input url nullsrc.
 Applying option f (force format) with argument lavfi.
 Successfully parsed a group of options.
 Opening an input file: nullsrc.
 detected 16 logical cores
 [Parsed_nullsrc_0 @ 00000174f5dd7ac0] size:320x240 rate:25/1
 duration:-1.000000 sar:1/1
 [AVFilterGraph @ 00000174f7904040] query_formats: 2 queried, 1 merged, 0
 already done, 0 delayed
 [lavfi @ 00000174f7903840] All info found
 [lavfi @ 00000174f7903840] stream 0: start_time: 0 duration: NOPTS
 [lavfi @ 00000174f7903840] format: start_time: 0 duration: NOPTS (estimate
 from bit rate) bitrate=0 kb/s
 Input #0, lavfi, from 'nullsrc':
   Duration: N/A, start: 0.000000, bitrate: N/A
   Stream #0:0, 1, 1/25: Video: rawvideo, 1 reference frame (I420 /
 0x30323449), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 0/1, 25 tbr, 25 tbn
 Successfully opened the file.
 Parsing a group of options: output url -.
 Applying option c:v (codec name) with argument copy.
 Applying option bsf:v (A comma-separated list of bitstream filters) with
 argument setts=ts='print(-print(1),16);TS'.
 Applying option vframes (set the number of video frames to output) with
 argument 1.
 Applying option f (force format) with argument null.
 Successfully parsed a group of options.
 Opening an output file: -.
 [setts_bsf @ 00000174f7951000] Setting 'ts' to value
 'print(-print(1),16);TS'
 Successfully opened the file.
 Output #0, null, to 'pipe:':
   Metadata:
     encoder         : Lavf59.28.100
   Stream #0:0, 0, 1/25: Video: rawvideo, 1 reference frame (I420 /
 0x30323449), yuv420p, 320x240 (0x0) [SAR 1:1 DAR 4:3], 0/1, q=2-31, 25
 tbr, 25 tbn
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
 Press [q] to stop, [?] for help
 cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 1.000000
 1.000000
 No more output streams to write to, finishing.
 1.000000
 1.000000
 frame=    1 fps=0.0 q=-1.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
 speed=16.8x
 video:112kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 Input file #0 (nullsrc):
   Input stream #0:0 (video): 2 packets read (230400 bytes);
   Total: 2 packets (230400 bytes) demuxed
 Output file #0 (pipe:):
   Output stream #0:0 (video): 1 packets muxed (115200 bytes);
   Total: 1 packets (115200 bytes) muxed
 0 frames successfully decoded, 0 decoding errors
 }}}
 Note that "1.000000" is printed two times per frame, while it should be
 first "1.000000" and then "-1.000000". Changing the first part to
 "print(-1*print(1),16)" produces correct results.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/9833>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list