Merge "vp9: Enable row multithreading for SVC in real-time mode."
This commit is contained in:
commit
2fa7092808
@ -697,8 +697,10 @@ int main(int argc, const char **argv) {
|
||||
|
||||
if (svc_ctx.speed != -1)
|
||||
vpx_codec_control(&codec, VP8E_SET_CPUUSED, svc_ctx.speed);
|
||||
if (svc_ctx.threads)
|
||||
if (svc_ctx.threads) {
|
||||
vpx_codec_control(&codec, VP9E_SET_TILE_COLUMNS, (svc_ctx.threads >> 1));
|
||||
vpx_codec_control(&codec, VP9E_SET_ROW_MT, 0);
|
||||
}
|
||||
if (svc_ctx.speed >= 5 && svc_ctx.aqmode == 1)
|
||||
vpx_codec_control(&codec, VP9E_SET_AQ_MODE, 3);
|
||||
if (svc_ctx.speed >= 5)
|
||||
|
@ -1096,6 +1096,7 @@ class DatarateOnePassCbrSvc
|
||||
encoder->Control(VP9E_SET_TILE_COLUMNS, 0);
|
||||
encoder->Control(VP8E_SET_MAX_INTRA_BITRATE_PCT, 300);
|
||||
encoder->Control(VP9E_SET_TILE_COLUMNS, (cfg_.g_threads >> 1));
|
||||
encoder->Control(VP9E_SET_ROW_MT, 1);
|
||||
encoder->Control(VP8E_SET_STATIC_THRESHOLD, 1);
|
||||
}
|
||||
const vpx_rational_t tb = video->timebase();
|
||||
|
@ -5212,8 +5212,7 @@ void vp9_set_row_mt(VP9_COMP *cpi) {
|
||||
|
||||
// In realtime mode, enable row based multi-threading for all the speed levels
|
||||
// where non-rd path is used.
|
||||
if (cpi->oxcf.mode == REALTIME && cpi->oxcf.speed >= 5 && cpi->oxcf.row_mt &&
|
||||
!cpi->use_svc) {
|
||||
if (cpi->oxcf.mode == REALTIME && cpi->oxcf.speed >= 5 && cpi->oxcf.row_mt) {
|
||||
cpi->row_mt = 1;
|
||||
}
|
||||
}
|
||||
|
@ -77,8 +77,9 @@ static void create_enc_workers(VP9_COMP *cpi, int num_workers) {
|
||||
int allocated_workers = num_workers;
|
||||
|
||||
// While using SVC, we need to allocate threads according to the highest
|
||||
// resolution.
|
||||
if (cpi->use_svc) {
|
||||
// resolution. When row based multithreading is enabled, it is OK to
|
||||
// allocate more threads than the number of max tile columns.
|
||||
if (cpi->use_svc && !cpi->row_mt) {
|
||||
int max_tile_cols = get_max_tile_cols(cpi);
|
||||
allocated_workers = VPXMIN(cpi->oxcf.max_threads, max_tile_cols);
|
||||
}
|
||||
@ -615,7 +616,6 @@ void vp9_encode_tiles_row_mt(VP9_COMP *cpi) {
|
||||
for (i = 0; i < num_workers; i++) {
|
||||
EncWorkerData *thread_data;
|
||||
thread_data = &cpi->tile_thr_data[i];
|
||||
|
||||
// Before encoding a frame, copy the thread data from cpi.
|
||||
if (thread_data->td != &cpi->td) {
|
||||
thread_data->td->mb = cpi->td.mb;
|
||||
|
Loading…
x
Reference in New Issue
Block a user