mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-09-19 21:06:42 +00:00
avcodec/vvcdec: thread, ensure the parse stage gets the highest priority
The parser stage is not parallelizable. We need to schedule it as soon as possible to create later stages, which are more parallelizable clips | before | after | delta --------------------------------------------|--------|-------|------ RitualDance_1920x1080_60_10_420_37_RA.266 | 342.7 | 365.3 | 6.59% NovosobornayaSquare_1920x1080.bin | 321.7 | 400 | 24.34% Tango2_3840x2160_60_10_420_27_LD.266 | 82.3 | 91.7 | 11.42% RitualDance_1920x1080_60_10_420_32_LD.266 | 323.7 | 319.3 | -1.36% Chimera_8bit_1080P_1000_frames.vvc | 364 | 411.3 | 12.99% BQTerrace_1920x1080_60_10_420_22_RA.vvc | 162.7 | 185.7 | 14.14%
This commit is contained in:
parent
7eb1df44ae
commit
bdb79fe60a
@ -385,14 +385,15 @@ static int task_priority_higher(const AVTask *_a, const AVTask *_b)
|
||||
const VVCTask *a = (const VVCTask*)_a;
|
||||
const VVCTask *b = (const VVCTask*)_b;
|
||||
|
||||
CHECK(a->fc->decode_order, b->fc->decode_order); //decode order
|
||||
|
||||
if (a->stage == VVC_TASK_STAGE_PARSE || b->stage == VVC_TASK_STAGE_PARSE) {
|
||||
if (a->stage <= VVC_TASK_STAGE_PARSE || b->stage <= VVC_TASK_STAGE_PARSE) {
|
||||
CHECK(a->stage, b->stage);
|
||||
CHECK(a->fc->decode_order, b->fc->decode_order); //decode order
|
||||
CHECK(a->ry, b->ry);
|
||||
return a->rx < b->rx;
|
||||
}
|
||||
|
||||
CHECK(a->fc->decode_order, b->fc->decode_order); //decode order
|
||||
CHECK(a->rx + a->ry + a->stage, b->rx + b->ry + b->stage); //zigzag with type
|
||||
CHECK(a->rx + a->ry, b->rx + b->ry); //zigzag
|
||||
return a->ry < b->ry;
|
||||
|
Loading…
Reference in New Issue
Block a user