#11656: -bitexact does not remove metadata encoder tag in OGG Vorbis files
-------------------------------------+-------------------------------------
             Reporter:  Iwan         |                     Type:  defect
  Gabovitch                          |
               Status:  new          |                 Priority:  normal
            Component:  ffmpeg       |                  Version:  git-
                                     |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 `-bitexact` removes the metadata encoder tag for wav, flac and mp3 files,
 but not for ogg files.

 Let's generate a wav:

 {{{
 $ ffmpeg -f lavfi -i "sine=frequency=1000:duration=0.1:sample_rate=44100"
 -af "volume=0.2" input.wav
 ffmpeg version 2025-07-01-git-11d1b71c31-full_build-www.gyan.dev Copyright
 (c) 2000-2025 the FFmpeg developers
   built with gcc 15.1.0 (Rev4, Built by MSYS2 project)
   configuration: --enable-gpl --enable-version3 --enable-static --disable-
 w32threads --disable-autodetect --enable-fontconfig --enable-iconv
 --enable-gnutls --enable-lcms2 --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-libdvdnav --enable-libdvdread
 --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-
 libdav1d --enable-libdavs2 --enable-libopenjpeg --enable-libquirc
 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-liboapv
 --enable-libqrencode --enable-librav1e --enable-libsvtav1 --enable-
 libvvenc --enable-libwebp --enable-libx264 --enable-libx265 --enable-
 libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl
 --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r
 --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-
 liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-
 amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va
 --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec
 --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan
 --enable-libplacebo --enable-opencl --enable-libcdio --enable-openal
 --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-
 libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora
 --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-
 libilbc --enable-libgsm --enable-liblc3 --enable-libopencore-amrnb
 --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa
 --enable-libbs2b --enable-libflite --enable-libmysofa --enable-
 librubberband --enable-libsoxr --enable-chromaprint
   libavutil      60.  4.101 / 60.  4.101
   libavcodec     62.  4.103 / 62.  4.103
   libavformat    62.  1.101 / 62.  1.101
   libavdevice    62.  0.100 / 62.  0.100
   libavfilter    11.  0.100 / 11.  0.100
   libswscale      9.  0.100 /  9.  0.100
   libswresample   6.  0.100 /  6.  0.100
 [out @ 00000187e0830640] The "sample_fmts" option is deprecated: set the
 supported sample formats
 [out @ 00000187e0830640] The "all_channel_counts" option is deprecated:
 accept all channel counts
 Input #0, lavfi, from
 'sine=frequency=1000:duration=0.1:sample_rate=44100':
   Duration: N/A, start: 0.000000, bitrate: 705 kb/s
   Stream #0:0: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s
 Stream mapping:
   Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
 Press [q] to stop, [?] for help
 Output #0, wav, to 'input.wav':
   Metadata:
     ISFT            : Lavf62.1.101
   Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono,
 s16, 705 kb/s
     Metadata:
       encoder         : Lavc62.4.103 pcm_s16le
 [out#0/wav @ 00000187e082f500] video:0KiB audio:9KiB subtitle:0KiB other
 streams:0KiB global headers:0KiB muxing overhead: 0.884354%
 size=       9KiB time=00:00:00.10 bitrate= 711.8kbits/s speed=58.7x
 elapsed=0:00:00.00
 }}}

 Let's confirm the metadata:

 {{{
 $ ffprobe.exe -hide_banner input.wav
 Input #0, wav, from 'input.wav':
   Metadata:
     encoder         : Lavf62.1.101
   Duration: 00:00:00.10, bitrate: 711 kb/s
   Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 1
 channels, s16, 705 kb/s
 }}}

 Let's convert to flac with `-bitexact`:

 {{{
 $ ffmpeg -hide_banner -i input.wav -bitexact output.flac
 [aist#0:0/pcm_s16le @ 00000205f2020900] Guessed Channel Layout: mono
 Input #0, wav, from 'input.wav':
   Metadata:
     encoder         : Lavf62.1.101
   Duration: 00:00:00.10, bitrate: 711 kb/s
   Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono,
 s16, 705 kb/s
 Stream mapping:
   Stream #0:0 -> #0:0 (pcm_s16le (native) -> flac (native))
 Press [q] to stop, [?] for help
 Output #0, flac, to 'output.flac':
   Stream #0:0: Audio: flac, 44100 Hz, mono, s16, 128 kb/s
     Metadata:
       encoder         : Lavc flac
 [out#0/flac @ 00000205f2021bc0] video:0KiB audio:1KiB subtitle:0KiB other
 streams:0KiB global headers:0KiB muxing overhead: 707.455013%
 size=       9KiB time=00:00:00.10 bitrate= 753.8kbits/s speed=42.3x
 elapsed=0:00:00.00
 }}}

 Even though the output shows `encoder` `: Lavc flac`, it does not get
 written:

 {{{
 $ ffprobe.exe -hide_banner output.flac
 Input #0, flac, from 'output.flac':
   Duration: 00:00:00.10, bitrate: 753 kb/s
   Stream #0:0: Audio: flac, 44100 Hz, mono, s16
 }}}

 Let's convert to ogg with `-bitexact`:

 {{{
 $ ffmpeg -hide_banner -i input.wav -bitexact output.ogg
 [aist#0:0/pcm_s16le @ 00000256f3f20900] Guessed Channel Layout: mono
 Input #0, wav, from 'input.wav':
   Metadata:
     encoder         : Lavf62.1.101
   Duration: 00:00:00.10, bitrate: 711 kb/s
   Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono,
 s16, 705 kb/s
 Stream mapping:
   Stream #0:0 -> #0:0 (pcm_s16le (native) -> vorbis (libvorbis))
 Press [q] to stop, [?] for help
 Output #0, ogg, to 'output.ogg':
   Stream #0:0: Audio: vorbis, 44100 Hz, mono, fltp
     Metadata:
       encoder         : Lavc libvorbis
 [out#0/ogg @ 00000256f3f21bc0] video:0KiB audio:0KiB subtitle:0KiB other
 streams:0KiB global headers:3KiB muxing overhead: 743.708609%
 size=       4KiB time=00:00:00.10 bitrate= 305.8kbits/s speed=9.99x
 elapsed=0:00:00.01
 }}}

 This time, the metadata is in the file:

 {{{
 $ ffprobe.exe -hide_banner output.ogg
 Input #0, ogg, from 'output.ogg':
   Duration: 00:00:00.10, start: 0.000000, bitrate: 305 kb/s
   Stream #0:0: Audio: vorbis, 44100 Hz, mono, fltp, 80 kb/s
     Metadata:
       encoder         : Lavc libvorbis
 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11656>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to