Opened 5 years ago

Closed 5 years ago

#3281 closed defect (fixed)

ffvhuff -context 1 outputs garbled video

Reported by: qyot27 Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: ffvhuff regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:
Since I noticed the recent commits extending ffvhuff to experimentally support 4:4:4, et al., I rebuilt FFmpeg from git to test it out.

However, it seems that as part of that patchset, -context 1 broke, as later on I was actually just converting 4:2:0 like I usually do and I ended up finding out that the output was corrupted badly. To its credit, -context 1 also seemed to corrupt 4:4:4 when I tested it there too, but not as badly (4:4:4 output was still in the proper colors as the source video, although there were artifacts; 4:2:0 was awash in rainbow-colored strobing and artifacts).

If I don't use -context 1 at all, then the problem doesn't occur. But then it doesn't enable the adaptive huffman tables.

How to reproduce:
Broken:

ffmpeg -i input -vcodec ffvhuff -context 1 output.avi

Working:

ffmpeg -i input -vcodec ffvhuff output.avi

Attachments (2)

ffvhuff-420-with-context1.avi (2.0 MB) - added by qyot27 5 years ago.
ffvhuff 4:2:0 -context 1 corrupted output
original.avi (635.9 KB) - added by qyot27 5 years ago.
Original source, 4:2:0, FFV1 (to get under the 2.5 MB size limit)

Change History (6)

Changed 5 years ago by qyot27

ffvhuff 4:2:0 -context 1 corrupted output

Changed 5 years ago by qyot27

Original source, 4:2:0, FFV1 (to get under the 2.5 MB size limit)

comment:1 Changed 5 years ago by cehoyos

  • Keywords regression added
  • Priority changed from normal to important

For future tickets: Please always provide a failing command line together with the complete, uncut console output.

out.avi is broken.

$ ffmpeg -f lavfi -i testsrc -vcodec ffvhuff -context 1 -t 2 out.avi
ffmpeg version N-59661-g243b9fe Copyright (c) 2000-2014 the FFmpeg developers
  built on Jan  7 2014 20:37:45 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      52. 62.100 / 52. 62.100
  libavcodec     55. 47.100 / 55. 47.100
  libavformat    55. 22.102 / 55. 22.102
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     4.  0.103 /  4.  0.103
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, lavfi, from 'testsrc':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 320x240 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
Output #0, avi, to 'out.avi':
  Metadata:
    ISFT            : Lavf55.22.102
    Stream #0:0: Video: ffvhuff (FFVH / 0x48564646), rgb24, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo -> ffvhuff)
Press [q] to stop, [?] for help
frame=   50 fps=0.0 q=0.0 Lsize=    1770kB time=00:00:02.00 bitrate=7251.2kbits/s
video:1763kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.385304%

comment:2 Changed 5 years ago by qyot27

I don't know where my mind was not putting that info in, aside from the build including some disparate patches. The patches I'd included in the build didn't touch anything related to ffvhuff, though.

>ffmpeg -i test.avs -vcodec ffvhuff -context 1 test.avi
ffmpeg version r59664 git-a8a9c74 Copyright (c) 2000-2014 the FFmpeg developers
  built on Jan  7 2014 02:25:46 with gcc 4.8.2 (GCC)
  libavutil      52. 62.100 / 52. 62.100
  libavcodec     55. 47.100 / 55. 47.100
  libavformat    55. 22.102 / 55. 22.102
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     4.  0.103 /  4.  0.103
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, avisynth, from 'test.avs':
  Duration: 00:00:00.83, start: 0.000000, bitrate: 1 kb/s
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 720x480, 23.98 fps, 23.98 t
br, 23.98 tbn, 23.98 tbc
Output #0, avi, to 'test.avi':
  Metadata:
    ISFT            : Lavf55.22.102
    Stream #0:0: Video: ffvhuff (FFVH / 0x48564646), yuv420p, 720x480, q=2-31, 200 kb/s, 2
3.98 tbn, 23.98 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo -> ffvhuff)
Press [q] to stop, [?] for help
frame=   20 fps=2.6 q=0.0 Lsize=    2066kB time=00:00:00.83 bitrate=20293.9kbits/s
video:2060kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.292052%

>ffmpeg -buildconf
ffmpeg version r59664 git-a8a9c74 Copyright (c) 2000-2014 the FFmpeg developers
  built on Jan  7 2014 02:25:46 with gcc 4.8.2 (GCC)
  libavutil      52. 62.100 / 52. 62.100
  libavcodec     55. 47.100 / 55. 47.100
  libavformat    55. 22.102 / 55. 22.102
  libavdevice    55.  5.102 / 55.  5.102
  libavfilter     4.  0.103 /  4.  0.103
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100

  configuration:
    --prefix=/home/qyot27/win32_build
    --cross-prefix=i686-w64-mingw32-
    --enable-gpl
    --enable-version3
    --disable-w32threads
    --enable-avresample
    --disable-doc
    --enable-concise-version
    --enable-fontconfig
    --enable-libfreetype
    --enable-libass
    --enable-libbluray
    --enable-libcaca
    --enable-libcdio
    --enable-openal
    --enable-libquvi
    --enable-librtmp
    --enable-libsoxr
    --enable-libvidstab
    --enable-libflite
    --enable-libgme
    --enable-libgsm
    --enable-libilbc
    --enable-libmp3lame
    --enable-libnut
    --enable-libopencore-amrnb
    --enable-libopencore-amrwb
    --enable-libopenjpeg
    --enable-libopus
    --enable-libschroedinger
    --enable-libshine
    --enable-libspeex
    --enable-libtheora
    --enable-libtwolame
    --enable-libutvideo
    --enable-libvo-aacenc
    --enable-libvo-amrwbenc
    --enable-libvorbis
    --enable-libvpx
    --enable-libwavpack
    --enable-libx264
    --enable-libxavs
    --enable-libxvid
    --enable-avisynth
    --cpu=pentium3
    --extra-cflags='-mfpmath=sse -march=pentium3 -msse -mtune=pentium3 -DPTW32_STATIC_LIB -DCACA_STATIC'
    --extra-ldflags='-mconsole -Wl,--allow-multiple-definition'
    --target-os=mingw32
    --arch=x86
    --pkg-config='pkg-config --static'

comment:3 Changed 5 years ago by cehoyos

What's wrong with the command line I posted?

comment:4 Changed 5 years ago by michael

  • Reproduced by developer set
  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.