Registered Member
|
Well from tests I've done its a little tricky and I've got a blog post setup to explain in a little more detail but basically ffmpeg assigns a yuvj420p pixel format, notice tbe 'j' to our Canon sources because of a little bit of metadata in the canon MOV container header called the fullrange flag, but yuvj420 is not the 'correct' choice.
What happens when we try to encode to h264 or other codecs which ffmpeg assigns a yuv420p is it complains about incompatible pixel formats yuv420p versus yuvj420 and as a result scales luma into 16-235. The solution that gives a smooth unaffected histogram and maintains levels giving us a 'lossless' round trip back to h264 is to switch off the full range flag by doing a quick remux with a special patched build of an opensource tool called MP4Box, importing the remuxed files which ffmpeg then reads as yuv420p because the flag is off but ffmpeg scales what it thinks is a 16-235 source so we override this with forcing ffmpeg to treat as full range and we get our round trip. Forcing full range on the original Canon MOVs leads to reduction in quality evident in the histogram and waveform. I can update with a link to MP4Box build and my blog later if of interest. **EDIT** I've explained a little what's going on in a blog post today. http://blendervse.wordpress.com/?p=768&preview=true |
Registered users: Bing [Bot], Google [Bot], Sogou [Bot], Yahoo [Bot]