Short story:
Color-wise, you can use your videos as they are (no conversion) with imperceptible color differences in most cases.
Longer story:
I dug out my old Sony HDR-CX110 camcorder which also produces videos with this transfer characteristic. The marketing term for xvYCC is x.v.Color, and my camera has a menu option to turn x.v.Color on or off, as seen here:
“Off” would be the recommended option, as x.v.Color by nature can produce colors that are outside the much-more-standard BT.709 color gamut by using negative CbCr values. x.v.Color looks its best only if every device in the chain understands it, including the television, which pretty much never happens. Devices that don’t understand xvYCC will most likely clip/clamp the illegal out-of-gamut colors to the nearest legal color, and the video will look like everybody else’s “boring” BT.709 footage instead of the “snazzy rich” colors offered by xvYCC (Sony marketing department talking here).
In theory, the extended colors of x.v.Color are supposed to allow for more saturated colors than BT.709 on its own. At worst, this higher saturation is what you would lose by not watching the video on an xvYCC-compatible television. Converting the video won’t gain much of anything because BT.709 itself doesn’t support those extra-saturated colors, meaning BT.709-compliant televisions can’t even display them. The only thing conversion will do is make an educated guess about the closest legal color and encode the video with all legal values instead of the video containing illegal xvYCC values (“legal” meaning within the BT.709 color gamut).
I put this to the test by using my Sony camera to record a box with highly-saturated colors on it, with x.v.Color turned on then off, then extracted a frame from each version and put them side-by-side. See the results here:
The bad news is that I can’t make a truly fair comparison unless I have a video editor and television that both understand xvYCC and support the wider gamut. The good news is that the real world must contain some extremely saturated colors before the difference between BT.709 and xvYCC becomes visible. Looking at the photo above, I can’t detect any color shift between modes, which would be the main concern in the case of your videos.
So then I took it a step further. What if I used FFmpeg to do a proper conversion into 709 gamut and compared the results again?
ffmpeg ^
-i 00000.MTS -t 00:00:01.000 ^
-filter:v bwdif,zscale=^
primariesin=709:^
matrixin=709:^
transferin=iec61966-2-4:^
rangein=limited:^
primaries=709:^
matrix=709:^
transfer=709:^
range=limited:^
filter=spline36:^
dither=error_diffusion ^
-codec:v dnxhd ^
-profile:v dnxhr_hq ^
-an ^
-y ^
00000.mov
By using zscale
to respect the xvYCC transfer characteristics, I got a new video file that had effectively been “color tonemapped” into traditional BT.709 color space. Putting the xvYCC original video and this converted video side-by-side also showed imperceptible difference.
All that to say, it probably isn’t necessary to convert any of your videos in terms of color fidelity.
However, if a camera made an xvYCC file, it’s probably kinda old, and may have made an interlaced MPEG transport stream file. The filename would end with .TS or .MTS or .M2TS if it did. Those files do not seek well with FFmpeg/Shotcut, and interlaced footage is a pain in general. Hence, the FFmpeg command I wrote above was designed to deinterlace the video with bwdif
and then save it in a format other than MTS. If your footage falls into this category, then conversion could have some benefits to you after all, and the “good” conversion level in Shotcut should be sufficient, which should be a manageable file size.