Closed master-of-zen closed 3 years ago
Working on some more extensive documentation, will update you soon.
@adamjw24 Sorry for pinging, but is there any updates?
@adamjw24 Hey, any updates/eta on how vvc bitestreams currently can be concatenated?
Sorry for the long wait. We are just preparing an update that will ease it up.
I assume you want to do Open-GOP encoding and encode each intra-period in parallel?
So for the segment parallel encoding, you need to use the full-featured app and the process is very much similar to VTM. Its easiest if each segment encoder has access to the full YUV file and you just define the segment with --FrameSkip and --FramesToBeEncoded parameters (similar to VTM). Now, for all presets but faster, we use an temporal filter, which for segment parallel encoding needs frames outside of its segment to create the proper temporal context. So for all but first segment, you need to set --MCTFNumLeadFrames=2 and for all but last segment --MCTFNumTrailFrames=2.
The segments can be concatenated using the parcat app from VTM repository.
Best you run it once with --SEIDecodedPictureHash=1 and confirm on the decoder that the decoded hashes match.
Let me know if this works.
Soon this functionality will also be available in the easy app.
@adamjw24 That's amazing answer and one I have been looking for quite a while)) Thank you, will look into that :+1:
For simple app, please use the --segment parameter to indicate if the position of the segment within the encoded sequence
A comment on this dead topic because I was thinking about it recently.
If still of interest (I saw VVC is no longer supported with Av1an), here is an update. There is some stuff I see differently and more practical today than at the beginning of the development.
If using bitstream concatenation after splitting the input at scene-cuts, best way is to do non-overlapping chunks and just use cat
for concatenation. There's no point having prediction continuity at scene-cuts.
If using regular chunking, just make sure the chunks are big enough (say >=10s), make them non-overlapping, and also use cat
for concatenation. An optimization here would be to make sure that the chunk size is a multiple of intra-period, otherwise the last intra-period in a chunk will be smaller than the rest. The prediction discontinuity will have a penalty, but the longer the chunk, the smaller the penalty. With >=10s it should be less than 1% relative bitrate increase.
Please provide links and guide how to properly concatenate and decode.