[FFmpeg-cvslog] avcodec/vvcdec: thread, ensure the parse stage gets the highest priority
Nuo Mi
git at videolan.org
Thu Aug 15 15:43:45 EEST 2024
ffmpeg | branch: master | Nuo Mi <nuomi2021 at gmail.com> | Sun Jul 28 11:17:57 2024 +0800| [bdb79fe60afaf54505f1ffa8b5324bf05c700929] | committer: Nuo Mi
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%
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bdb79fe60afaf54505f1ffa8b5324bf05c700929
---
libavcodec/vvc/thread.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/libavcodec/vvc/thread.c b/libavcodec/vvc/thread.c
index 8dd9a36fd5..28065d726f 100644
--- a/libavcodec/vvc/thread.c
+++ b/libavcodec/vvc/thread.c
@@ -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;
More information about the ffmpeg-cvslog
mailing list