[FFmpeg-user] LLossless (10 Bit RGB 444) and (10 Bit YUV 422) Compression

Jason Freets jasonslife at hotmail.com
Tue Dec 30 21:33:53 CET 2014


Ok Carl, so your fix does work! Wonderful! I can now use FFPlay to view the r10k  (little endian) file on PC! 

Read on ...

> Subject: Re: [FFmpeg-user] LLossless (10 Bit RGB 444) and (10 Bit YUV 422) Compression
> > 
> > Could you test if the following file produced with 
> > FFmpeg plays with the AJA codec on Windows?
> > $ ffmpeg -f lavfi -i testsrc -t 10 -vcodec r10k out.avi
> 
> Yes, I will start looking at it =) Exciting! See, Christmas is not over yet. I will take FFmpeg out for a new spin.
> 
> Cheers,
> 
> Jason

However, this test actually result in a R10k (big endian) file and NOT an r10k (little endian) file.  

See "r10k (R10k / 0x6B303152)" below...

////////////////////////////////////////////////////////////////////////////////
// Sample test filter -> R10k 
////////////////////////////////////////////////////////////////////////////////
E:\ffmpeg-20141225-git-1515bfb-win64-static>ffmpeg -f lavfi -i testsrc -t 10 -vc
odec r10k out.avi
ffmpeg version N-68778-g5c7227b Copyright (c) 2000-2014 the FFmpeg developers
  built on Dec 29 2014 22:12:54 with gcc 4.9.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-lib
modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrw
b --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge
r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --en
able-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis
 --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-
libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enab
le-zlib
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 19.100 / 56. 19.100
  libavformat    56. 16.102 / 56. 16.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  6.100 /  5.  6.100
  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 '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
[swscaler @ 0000000000361000] full chroma interpolation for destination format '
rgb48le' not yet implemented
Output #0, avi, to 'out.avi':
  Metadata:
    ISFT            : Lavf56.16.102
    Stream #0:0: Video: r10k (R10k / 0x6B303152), rgb48le, 320x240 [SAR 1:1 DAR
4:3], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
    Metadata:
      encoder         : Lavc56.19.100 r10k
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> r10k (native))
Press [q] to stop, [?] for help
frame=  250 fps=0.0 q=0.0 Lsize=   75011kB time=00:00:10.00 bitrate=61449.4kbits
/s
video:75000kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing
 overhead: 0.015310%

E:\ffmpeg-20141225-git-1515bfb-win64-static>

////////////////////////////////////////////////////////////////////////////////
// End
////////////////////////////////////////////////////////////////////////////////

Aside from the test above. It would seem I can take the original r10k (little endian) file and convert that to FFV1. But, going from FFV1 back to r10k there is the issue below:

////////////////////////////////////////////////////////////////////////////////
// FFV1 -> r10k 
// Has the following warning message:
//   Incompatible pixel format 'gbrp10le' for codec 'r10k', auto-selecting format 'rg
//   b48le'
//   [swscaler @ 0000000002bfcfe0] full chroma interpolation for destination format '
//   rgb48le' not yet implemented
///////////////////////////////////////////////////////////////////////////////
E:\ffmpeg-20141225-git-1515bfb-win64-static>ffmpeg -i r10kToFFV.avi -pix_fmt gbr
p10le -vcodec r10k -c:a copy FFVTor10k.avi -f framemd5 -an FFVTor10k.framemd5
ffmpeg version N-68778-g5c7227b Copyright (c) 2000-2014 the FFmpeg developers
  built on Dec 29 2014 22:12:54 with gcc 4.9.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-lib
modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrw
b --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinge
r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --en
able-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis
 --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-
libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enab
le-zlib
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 19.100 / 56. 19.100
  libavformat    56. 16.102 / 56. 16.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  6.100 /  5.  6.100
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, avi, from 'r10kToFFV.avi':
  Metadata:
    encoder         : Lavf56.16.102
  Duration: 00:00:05.01, start: 0.000000, bitrate: 108456 kb/s
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), gbrp10le, 720x486, 109169 kb/s
, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
Incompatible pixel format 'gbrp10le' for codec 'r10k', auto-selecting format 'rg
b48le'
[swscaler @ 0000000002bfcfe0] full chroma interpolation for destination format '
rgb48le' not yet implemented
Output #0, avi, to 'FFVTor10k.avi':
  Metadata:
    ISFT            : Lavf56.16.102
    Stream #0:0: Video: r10k (R10k / 0x6B303152), rgb48le, 720x486, q=2-31, 200
kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc
    Metadata:
      encoder         : Lavc56.19.100 r10k
Output #1, framemd5, to 'FFVTor10k.framemd5':
  Metadata:
    encoder         : Lavf56.16.102
    Stream #1:0: Video: rawvideo (G3[0][10] / 0xA003347), gbrp10le, 720x486, q=2
-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc
    Metadata:
      encoder         : Lavc56.19.100 rawvideo
Stream mapping:
  Stream #0:0 -> #0:0 (ffv1 (native) -> r10k (native))
  Stream #0:0 -> #1:0 (ffv1 (native) -> rawvideo (native))
Press [q] to stop, [?] for help
frame=   13 fps=0.0 q=0.0 q=0.0 size=   17775kB time=00:00:00.43 bitrate=335693.
frame=   36 fps= 35 q=0.0 q=0.0 size=   49213kB time=00:00:01.20 bitrate=335627.
frame=   59 fps= 38 q=0.0 q=0.0 size=   80652kB time=00:00:01.96 bitrate=335612.
frame=   82 fps= 40 q=0.0 q=0.0 size=  112090kB time=00:00:02.73 bitrate=335606.
frame=  105 fps= 40 q=0.0 q=0.0 size=  143528kB time=00:00:03.50 bitrate=335602.
frame=  128 fps= 41 q=0.0 q=0.0 size=  174967kB time=00:00:04.27 bitrate=335600.
frame=  150 fps= 42 q=0.0 q=0.0 size=  205038kB time=00:00:05.00 bitrate=335598.
frame=  150 fps= 42 q=0.0 Lq=0.0 size=  205040kB time=00:00:05.00 bitrate=335602
.4kbits/s
video:512578kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxin
g overhead: unknown

////////////////////////////////////////////////////////////////////////////////
// End
////////////////////////////////////////////////////////////////////////////////

So 2 questions:

1) What are your thoughts on this warning message or what does it mean:

Incompatible pixel format 'gbrp10le' for codec 'r10k', auto-selecting format 'rg
b48le'
[swscaler @ 0000000002bfcfe0] full chroma interpolation for destination format '
rgb48le' not yet implemented

2) Going from r10k -> FFV1, a framemd5 can be created. This is good. However, I'd like to be able to produce a framemd5 going back from FFV1 -> r10k. Would this be possible if the "full chroma interpolation" was implemented? Or? What's the possiblity of making this round trip (r10k -> FFV1 -> r10k) for validation purposes? Otherwise, how does one verify that the ORIGINAL r10k -> FFV1 -> results in ORIGINAL r10k?

Cheers,

Jason

> 
> > 
> > Thanks, Carl Eugen
> > 
> > _______________________________________________
> > ffmpeg-user mailing list
> > ffmpeg-user at ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>  		 	   		  
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
 		 	   		  


More information about the ffmpeg-user mailing list