Answers.Body: <p>Nvdec and qsv do not have support for 10 bit AVC. And if there was a more “efficient” software decoder available, it would already be in ffmpeg. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-12-18T17:04:10.720Z
Answers.LastActivityDate: 2019-12-18T17:04:10.720Z
Answers.UserDisplayName: SlimSCSI
Body: <p>On my Intel 4770k (bought back in 2014) I can only decode GH5S's 4k 10-bit video at about 30fps with CPU maxing out. This is both when manually using ffmpeg and when using Handbrake. ffmpeg, Handbrake and Vegas 13 are all taking almost realtime to just decode </p>
  
  <p>The system also has NVidia's GTX 1070Ti in it.</p>
  
  <p>I was unable to use Intel's QuickSync (<code>-hwaccel qsv -c:v h264_qsv</code> before the <code>-i</code> argument in ffmpeg) or NVidia's NVDEC (<code>-hwaccel nvdec</code>) to decode the 10-bit h264.</p>
  
  <p>Is there any software solution that can convert the video into something more efficiently usable? Whether 8-bit h264, or 10-bit HEVC, or some other intermediary format that can actually be hardware-decoded by Intel QuickSync or NVENC. Did I overlook any hardware solution? GPU upgrade? CPU upgrade?</p>
  
  <p>I really would prefer not to go back to the good old days of files being decodable at merely realtime.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-12-18T06:32:15.120Z
Comments.Text: `-hwaccel qsv -v:c h264_qsv` --> this should be `-c:v h264_qsv`, similar for nvdec. In any case, here, on a i5-3470, ffmpeg decodes 10-bit 4K 30 fps H264 @ 3.7x, suggesting your bottleneck is not CPU or s/w decoder. (Handbrake uses ffmpeg for media processing). Maybe available RAM or its speed?
Comments.UserDisplayName: Gyan
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-12-18T19:18:22.297Z
Comments.Text: @Gyan sure, typo fixed, thanks. I don't have the `h264_nvdec` on my build of ffmpeg, but if I remember correctly, `-hwaccel nvdec` was enough on my machine when feeding it 8-bit input (and [that's how it was documented, too](https://trac.ffmpeg.org/wiki/HWAccelIntro)).
Comments.UserDisplayName: Ivan Vučica
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-12-18T19:20:41.823Z
Comments.Text: @Gyan Also: I wasn't use if Handbrake used ffmpeg or libav, so I didn't specify anything. Either way, for software decoding with ffmpeg, 4770k _is_ the bottleneck (90%+ use) based on what Windows Task Manager says. I'll admit that RAM could be the bottleneck when `nvdec` kicks in on 8-bit; Windows Task Manager claims that 'video decoding' on the GPU is at mere 40-50%.
Comments.UserDisplayName: Ivan Vučica
Tags: <ffmpeg><decoding>
Title: Efficient decoding of 10-bit 4k h264 from GH5S?
UserDisplayName: Ivan Vučica
ThreadText: # Efficient decoding of 10-bit 4k h264 from GH5S?
  
  (Asked by: username_0 on 2019-12-18)
  
  On my Intel 4770k (bought back in 2014) I can only decode GH5S's 4k 10-bit video at about 30fps with CPU maxing out. This is both when manually using ffmpeg and when using Handbrake. ffmpeg, Handbrake and Vegas 13 are all taking almost realtime to just decode
  
  The system also has NVidia's GTX 1070Ti in it.
  
  I was unable to use Intel's QuickSync (`-hwaccel qsv -c:v h264_qsv` before the `-i` argument in ffmpeg) or NVidia's NVDEC (`-hwaccel nvdec`) to decode the 10-bit h264.
  
  Is there any software solution that can convert the video into something more efficiently usable? Whether 8-bit h264, or 10-bit HEVC, or some other intermediary format that can actually be hardware-decoded by Intel QuickSync or NVENC. Did I overlook any hardware solution? GPU upgrade? CPU upgrade?
  
  I really would prefer not to go back to the good old days of files being decodable at merely realtime.
  
  **Tags:** ffmpeg, decoding
  
  > **Comments:**
  > **username_1**: `-hwaccel qsv -v:c h264_qsv` --> this should be `-c:v h264_qsv`, similar for nvdec. In any case, here, on a i5-3470, ffmpeg decodes 10-bit 4K 30 fps H264 @ 3.7x, suggesting your bottleneck is not CPU or s/w decoder. (Handbrake uses ffmpeg for media processing). Maybe available RAM or its speed?  
  > **username_0**: @username_1 sure, typo fixed, thanks. I don't have the `h264_nvdec` on my build of ffmpeg, but if I remember correctly, `-hwaccel nvdec` was enough on my machine when feeding it 8-bit input (and [that's how it was documented, too](https://trac.ffmpeg.org/wiki/HWAccelIntro)).  
  > **username_0**: @username_1 Also: I wasn't use if Handbrake used ffmpeg or libav, so I didn't specify anything. Either way, for software decoding with ffmpeg, 4770k _is_ the bottleneck (90%+ use) based on what Windows Task Manager says. I'll admit that RAM could be the bottleneck when `nvdec` kicks in on 8-bit; Windows Task Manager claims that 'video decoding' on the GPU is at mere 40-50%.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2019-12-18. Score: 1 | Accepted answer
  
  Nvdec and qsv do not have support for 10 bit AVC. And if there was a more “efficient” software decoder available, it would already be in ffmpeg.
  
  
  ---
  
  