Opened 8 years ago

Closed 8 years ago

#5736 closed defect (fixed)

Crash when encoding from ffv1/bgr0 to ffv1/bgr0

Reported by: RaljOneed Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: ffv1 crash abort regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:

Program fails when input and output videos use ffv1 codec and bgr0 pixel format and no resizing is performed.

How to reproduce:

ffmpeg started on 2016-07-26 at 02:54:39
Report written to "ffmpeg-20160726-025439.log"
Command line:
./ffmpeg-N-81047-g64caafa -report -i zzz.mkv -c:v ffv1 -g 1 -slices 4 qqqq.mkv
ffmpeg version N-81047-g64caafa Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.1) 20160609
  configuration: --prefix=/home/xxxxxx/Programy/ffmpeg/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/xxxxxx/Programy/ffmpeg/ffmpeg_build/include --extra-ldflags=-L/home/xxxxxx/Programy/ffmpeg/ffmpeg_build/lib --bindir=/home/xxxxxx/Programy/ffmpeg/bin --enable-gpl --enable-libass --enable-libfreetype --enable-libopus --enable-libtheora --enable-libvorbis --enable-x11grab --enable-libsoxr --disable-ffserver --disable-ffplay --disable-ffprobe
  libavutil      55. 28.100 / 55. 28.100
  libavcodec     57. 50.100 / 57. 50.100
  libavformat    57. 43.100 / 57. 43.100
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 47.100 /  6. 47.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Splitting the commandline.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-i' ... matched as input file with argument 'zzz.mkv'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'ffv1'.
Reading option '-g' ... matched as AVOption 'g' with argument '1'.
Reading option '-slices' ... matched as AVOption 'slices' with argument '4'.
Reading option 'qqqq.mkv' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input file zzz.mkv.
Successfully parsed a group of options.
Opening an input file: zzz.mkv.
[file @ 0x2029da0] Setting default whitelist 'file,crypto'
[matroska,webm @ 0x2029460] Format matroska,webm probed with size=2048 and score=100
st:0 removing common factor 1000000 from timebase
[matroska,webm @ 0x2029460] Before avformat_find_stream_info() pos: 789 bytes read:32768 seeks:0 nb_streams:1
[matroska,webm @ 0x2029460] parser not found for codec ffv1, packets or times may be invalid.
[matroska,webm @ 0x2029460] parser not found for codec ffv1, packets or times may be invalid.
[matroska,webm @ 0x2029460] All info found
[matroska,webm @ 0x2029460] After avformat_find_stream_info() pos: 52270 bytes read:65536 seeks:0 frames:1
Input #0, matroska,webm, from 'zzz.mkv':
  Metadata:
    ENCODER         : Lavf57.41.100
  Duration: 00:00:19.02, start: 0.000000, bitrate: 15075 kb/s
    Stream #0:0, 1, 1/1000: Video: ffv1 (FFV1 / 0x31564646), bgr0, 320x180, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      ENCODER         : Lavc57.48.101 ffv1
      DURATION        : 00:00:19.019000000
Successfully opened the file.
Parsing a group of options: output file qqqq.mkv.
Applying option c:v (codec name) with argument ffv1.
Successfully parsed a group of options.
Opening an output file: qqqq.mkv.
[file @ 0x202f3a0] Setting default whitelist 'file,crypto'
Successfully opened the file.
detected 4 logical cores
[graph 0 input from stream 0:0 @ 0x2030400] Setting 'video_size' to value '320x180'
[graph 0 input from stream 0:0 @ 0x2030400] Setting 'pix_fmt' to value '298'
[graph 0 input from stream 0:0 @ 0x2030400] Setting 'time_base' to value '1/1000'
[graph 0 input from stream 0:0 @ 0x2030400] Setting 'pixel_aspect' to value '1/1'
[graph 0 input from stream 0:0 @ 0x2030400] Setting 'sws_param' to value 'flags=2'
[graph 0 input from stream 0:0 @ 0x2030400] Setting 'frame_rate' to value '30000/1001'
[graph 0 input from stream 0:0 @ 0x2030400] w:320 h:180 pixfmt:bgr0 tb:1/1000 fr:30000/1001 sar:1/1 sws_param:flags=2
[format @ 0x2030bc0] compat: called with args=[yuv420p|yuva420p|yuva422p|yuv444p|yuva444p|yuv440p|yuv422p|yuv411p|yuv410p|bgr0|bgra|yuv420p16le|yuv422p16le|yuv444p16le|yuv444p9le|yuv422p9le|yuv420p9le|yuv420p10le|yuv422p10le|yuv444p10le|yuva444p16le|yuva422p16le|yuva420p16le|yuva444p10le|yuva422p10le|yuva420p10le|yuva444p9le|yuva422p9le|yuva420p9le|gray16le|gray|gbrp9le|gbrp10le|gbrp12le|gbrp14le|ya8]
[format @ 0x2030bc0] Setting 'pix_fmts' to value 'yuv420p|yuva420p|yuva422p|yuv444p|yuva444p|yuv440p|yuv422p|yuv411p|yuv410p|bgr0|bgra|yuv420p16le|yuv422p16le|yuv444p16le|yuv444p9le|yuv422p9le|yuv420p9le|yuv420p10le|yuv422p10le|yuv444p10le|yuva444p16le|yuva422p16le|yuva420p16le|yuva444p10le|yuva422p10le|yuva420p10le|yuva444p9le|yuva422p9le|yuva420p9le|gray16le|gray|gbrp9le|gbrp10le|gbrp12le|gbrp14le|ya8'
[AVFilterGraph @ 0x202f520] query_formats: 4 queried, 3 merged, 0 already done, 0 delayed
Assertion s->bits_per_raw_sample >= 8 failed at libavcodec/ffv1enc.c:820

Patches should be submitted to the ffmpeg-devel mailing list and not this bug tracker.

Attachments (1)

slices.nut (122.6 KB ) - added by Carl Eugen Hoyos 8 years ago.

Download all attachments as: .zip

Change History (7)

comment:1 by Carl Eugen Hoyos, 8 years ago

Component: undeterminedavcodec
Keywords: ffv1 crash abort added
Priority: normalimportant
Version: unspecifiedgit-master

I cannot reproduce, is this a race condition?
Is the issue also reproducible with the following command line?

$ ffmpeg -f rawvideo -s cif -pix_fmt bgr0 -i /dev/zero -vcodec ffv1 -f null -t 1 -

in reply to:  1 comment:2 by RaljOneed, 8 years ago

Replying to cehoyos:

No, this command line doesn't trigger the error.
Looks like this can be reproduced only if input ffv1/bgr0 file was encoded using more than one slice.

by Carl Eugen Hoyos, 8 years ago

Attachment: slices.nut added

comment:3 by Carl Eugen Hoyos, 8 years ago

Reproduced by developer: set
Status: newopen
$ ffmpeg -i slices.nut -vcodec ffv1 -f null -
ffmpeg version N-81118-gfb91850 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.8 (SUSE Linux)
  configuration: --enable-gpl --enable-libvpx
  libavutil      55. 28.100 / 55. 28.100
  libavcodec     57. 50.100 / 57. 50.100
  libavformat    57. 44.100 / 57. 44.100
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 49.100 /  6. 49.100
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Input #0, nut, from 'slices.nut':
  Metadata:
    encoder         : Lavf57.44.100
  Duration: 00:00:00.96, start: 0.000000, bitrate: 1046 kb/s
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), bgr0, 320x240, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 51200 tbn, 51200 tbc
    Metadata:
      encoder         : Lavc57.50.100 ffv1
Assertion s->bits_per_raw_sample >= 8 failed at libavcodec/ffv1enc.c:820
Aborted

comment:4 by Carl Eugen Hoyos, 8 years ago

Regression since 81e40c26 - encoding works fine with older versions and the given sample here.

comment:5 by Carl Eugen Hoyos, 8 years ago

Keywords: regression added

comment:6 by Michael Niedermayer, 8 years ago

Resolution: fixed
Status: openclosed
Note: See TracTickets for help on using tickets.