WorBry
30th November 2013, 22:45
I’ve been experimenting with the GoPro Studio software of late, in part to examine the quality (enough said) of raw Hero3+ action cam samples (with and without ProTune metadata) and the implications for third-party editing and processing. GoPro Studio utilizes the Cineform codec as an intermediate format in its internal processes and output to third-party software.
It's encouraging to find that MPC-HC (with GoPro Studio installed) plays back the Cineform/WAV muxed avi files and appears to use the native Cineform decoder to do so. VLC player seems “unable to find a CFHD decompressor”.
That said, one thing I have observed with MPC-HC is that, on first playback, at some point into the video, the audio becomes disrupted and the video starts to stall. Once it has got through that first pass however, the video subsequently plays without any problems. Not a big issue, but is this a known quirk that might be overcome? Looking at the Cineform Decoder-2 config, as it shows in the MPC-HC ‘Filters’ view during playback, it appears that it is able to output in a range of ‘pixel formats’. I was wondering which of these MPC-HC uses? Edit: Screen shot of Decoder attached.
My second query relates to processing these files through AVISynth. The Cineform codec as it appears in the Virtual Dub vfw compression library reveals only the encoder. When Cineform avi files are opened directly in VirtualDub, the File Information shows the decoder to be the GoPro Cineform codec and so looks to be outputting directly to RGB. When the files are opened as an AVISource into AVISynth however, the output is always YUY2 4:2:2 (in which case Vdub shows the decompressor to be 'YUV 4:2:2 (YUY2)'. The Cineform format is itself 10-bit YUV 4:2:2 (4:4:4 for 3D video). As I understand, AVISynth always looks for YV12 input, before YUY2, so it appears that the vfw Cineform decoder is not offering YV12 per se. Tried also as DirectShowSouce with pixel_type="YV12", but no joy.
Since (I’m sure like most people) I perform AVISynth processing in, and with output to YV12, I have therefore been adding a ConvertToYV12 step at the top of the script. The encoder however accepts both YUY2 and YV12 inputs without any problem, and so, in multi-stage processing, the only consideration is in possible sampling inefficiencies introduced as the Cineform files are returned from YUY2 to YV12 color space.
What has me wondering is that one of the listed Cineform Decoder-2 ‘pixel’ output options is NV12. From what I have read, NV12 is, like YV12, a YUV 4:2:0 color space, the only difference being that NV12 is interleaved. As I understand it, NV12 output is primarily intended for hardware decoding, as opposed to YV12 for software decoding.
Notwithstanding the possibility that the Cineform Decoder-2 (as used by MCP-HC) and vfw CFHD decompressor (??) are different entities, I wonder if there is any scope for conversion of the NV12 output to YV12 in a manner that would obviate the YUY2 to YV12 re-conversion? Anything in the FFMPEG domain?
Just a thought.
It's encouraging to find that MPC-HC (with GoPro Studio installed) plays back the Cineform/WAV muxed avi files and appears to use the native Cineform decoder to do so. VLC player seems “unable to find a CFHD decompressor”.
That said, one thing I have observed with MPC-HC is that, on first playback, at some point into the video, the audio becomes disrupted and the video starts to stall. Once it has got through that first pass however, the video subsequently plays without any problems. Not a big issue, but is this a known quirk that might be overcome? Looking at the Cineform Decoder-2 config, as it shows in the MPC-HC ‘Filters’ view during playback, it appears that it is able to output in a range of ‘pixel formats’. I was wondering which of these MPC-HC uses? Edit: Screen shot of Decoder attached.
My second query relates to processing these files through AVISynth. The Cineform codec as it appears in the Virtual Dub vfw compression library reveals only the encoder. When Cineform avi files are opened directly in VirtualDub, the File Information shows the decoder to be the GoPro Cineform codec and so looks to be outputting directly to RGB. When the files are opened as an AVISource into AVISynth however, the output is always YUY2 4:2:2 (in which case Vdub shows the decompressor to be 'YUV 4:2:2 (YUY2)'. The Cineform format is itself 10-bit YUV 4:2:2 (4:4:4 for 3D video). As I understand, AVISynth always looks for YV12 input, before YUY2, so it appears that the vfw Cineform decoder is not offering YV12 per se. Tried also as DirectShowSouce with pixel_type="YV12", but no joy.
Since (I’m sure like most people) I perform AVISynth processing in, and with output to YV12, I have therefore been adding a ConvertToYV12 step at the top of the script. The encoder however accepts both YUY2 and YV12 inputs without any problem, and so, in multi-stage processing, the only consideration is in possible sampling inefficiencies introduced as the Cineform files are returned from YUY2 to YV12 color space.
What has me wondering is that one of the listed Cineform Decoder-2 ‘pixel’ output options is NV12. From what I have read, NV12 is, like YV12, a YUV 4:2:0 color space, the only difference being that NV12 is interleaved. As I understand it, NV12 output is primarily intended for hardware decoding, as opposed to YV12 for software decoding.
Notwithstanding the possibility that the Cineform Decoder-2 (as used by MCP-HC) and vfw CFHD decompressor (??) are different entities, I wonder if there is any scope for conversion of the NV12 output to YV12 in a manner that would obviate the YUY2 to YV12 re-conversion? Anything in the FFMPEG domain?
Just a thought.