Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#4636 closed defect (fixed)

10 bit ffv1 in mkv created by libavfilter is interpreted as 8 bit

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

Description

Summary of the bug:

I tried to create a 10 bit ffv1.mkv file from libavfilter but it is detected as 8 bit.

How to reproduce:

Create 10 bit ffv1.mkv with yuv422p10le file via:

ffmpeg -f lavfi -i color=black -pix_fmt yuv422p10le -vframes 1 -c:v ffv1 -level 3 -y black.mkv
ffmpeg version N-45431-g7495e72 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfreetype --enable-libfaac --enable-libass --enable-ffplay --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.0/include ' --enable-nonfree --enable-vda
  libavutil      54. 26.101 / 54. 26.101
  libavcodec     56. 41.101 / 56. 41.101
  libavformat    56. 34.100 / 56. 34.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 16.101 /  5. 16.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, lavfi, from 'color=black':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
[ffv1 @ 0x7fd2f5000c00] bits_per_raw_sample > 8, forcing coder 1
Output #0, matroska, to 'black.mkv':
  Metadata:
    encoder         : Lavf56.34.100
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p10le, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 1k tbn, 25 tbc
    Metadata:
      encoder         : Lavc56.41.101 ffv1
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> ffv1 (native))
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=0.0 Lsize=       1kB time=00:00:00.04 bitrate= 295.2kbits/s    
video:1kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 144.370865%

Check output and it is interpreted as 8 bit (yuv422p).

ffmpeg -i black.mkv
ffmpeg version N-45431-g7495e72 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfreetype --enable-libfaac --enable-libass --enable-ffplay --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.0/include ' --enable-nonfree --enable-vda
  libavutil      54. 26.101 / 54. 26.101
  libavcodec     56. 41.101 / 56. 41.101
  libavformat    56. 34.100 / 56. 34.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 16.101 /  5. 16.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, matroska,webm, from 'black.mkv':
  Metadata:
    ENCODER         : Lavf56.34.100
  Duration: 00:00:00.04, start: 0.000000, bitrate: 295 kb/s
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p, 320x240, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      ENCODER         : Lavc56.41.101 ffv1
At least one output file must be specified

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

Change History (4)

comment:1 Changed 4 years ago by dericed

  • Version changed from unspecified to git-master

I updated to git-master and ran the same commands above again:

create a yuv422p10le file

ffmpeg -f lavfi -i color=black -pix_fmt yuv422p10le -vframes 1 -c:v ffv1 -level 3 -y black.mkv
ffmpeg version N-45793-g7c3f7e6 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfreetype --enable-libfaac --enable-libass --enable-ffplay --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.0/include ' --enable-nonfree --enable-vda
  libavutil      54. 27.100 / 54. 27.100
  libavcodec     56. 41.100 / 56. 41.100
  libavformat    56. 37.100 / 56. 37.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 17.100 /  5. 17.100
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.100 /  1.  2.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, lavfi, from 'color=black':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
[ffv1 @ 0x7fbe34018e00] bits_per_raw_sample > 8, forcing coder 1
Output #0, matroska, to 'black.mkv':
  Metadata:
    encoder         : Lavf56.37.100
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p10le, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 1k tbn, 25 tbc
    Metadata:
      encoder         : Lavc56.41.100 ffv1
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> ffv1 (native))
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=0.0 Lsize=       1kB time=00:00:00.04 bitrate= 295.2kbits/s    
video:1kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 144.370865%

seen as yuv422p

ffmpeg -i black.mkv
ffmpeg version N-45793-g7c3f7e6 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-libfreetype --enable-libfaac --enable-libass --enable-ffplay --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.0/include ' --enable-nonfree --enable-vda
  libavutil      54. 27.100 / 54. 27.100
  libavcodec     56. 41.100 / 56. 41.100
  libavformat    56. 37.100 / 56. 37.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 17.100 /  5. 17.100
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.100 /  1.  2.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, matroska,webm, from 'black.mkv':
  Metadata:
    ENCODER         : Lavf56.37.100
  Duration: 00:00:00.04, start: 0.000000, bitrate: 295 kb/s
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p, 320x240, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      ENCODER         : Lavc56.41.100 ffv1
At least one output file must be specified

comment:2 Changed 4 years ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords ffv1 regression added
  • Priority changed from normal to important
  • Reproduced by developer set
  • Status changed from new to open

comment:3 Changed 4 years ago by michael

  • Resolution set to fixed
  • Status changed from open to closed

comment:4 Changed 4 years ago by t.rapp

The issue seems to be unrelated to the container format, I can reproduce the original regression using AVI.

Would be great if the fix could be merged/backported into the 2.7 release branch.

Note: See TracTickets for help on using tickets.