vp9 multithread is not working

1,439 views
Skip to first unread message

abo...@gmail.com

unread,
Jun 26, 2013, 4:10:22 PM6/26/13
to codec...@webmproject.org
Hi

vp9 uses one thread only no matter what number of threads are set. This problem make vp9 slower than vp8 if multi-thread option is used.
vp8 multi-thread works fine on my system while vp9 does not even thought the parameter is set (i.e. -t 8). vp9 encoder parameter:  g_threads = 8

System: ubuntu 12.04 LTS 64-bit
Processor: Intel® Core™ i7-2600 CPU @ 3.40GHz × 8

Has anyone run into the same issue?

Thank you

Ronald S. Bultje

unread,
Jun 26, 2013, 4:22:35 PM6/26/13
to Codec Developers
Hi,

we haven't implemented multithreading support in VP9 yet. The bitstream has provisions for it, it just hasn't been implemented yet.

Ronald



--
You received this message because you are subscribed to the Google Groups "Codec Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to codec-devel...@webmproject.org.
To post to this group, send email to codec...@webmproject.org.
Visit this group at http://groups.google.com/a/webmproject.org/group/codec-devel/.
For more options, visit https://groups.google.com/a/webmproject.org/groups/opt_out.
 
 

abo...@gmail.com

unread,
Jun 26, 2013, 4:24:01 PM6/26/13
to codec...@webmproject.org, abo...@gmail.com
Thank you for the clarification.

pswamy...@gmail.com

unread,
Aug 6, 2013, 2:07:58 AM8/6/13
to codec...@webmproject.org
Ronald,

Any update on multithreading support in VP9. ? I went thro the code. It doesn't seem to be there. What is the plan and tentative deadline for this support?
And when the support comes, will it be across tiles.?

Regards
Naveen

James Zern

unread,
Aug 6, 2013, 2:14:17 PM8/6/13
to codec...@webmproject.org
On Mon, Aug 5, 2013 at 11:07 PM, <pswamy...@gmail.com> wrote:
> Ronald,
>
> Any update on multithreading support in VP9. ? I went thro the code. It
> doesn't seem to be there. What is the plan and tentative deadline for this
> support?

I recently added threading for the loop filter:
a0ffa27 vp9/decoder: threaded row-based loop filter

Multi-frame decoding may be added, but I don't really have a time
frame for that.

> And when the support comes, will it be across tiles.?
>
The worker style used with the loop filter could be re-used for tiles,
but note some modifications would be necessary as the loop filter
itself expects to operate on the fully reconstructed frame.

j.kart...@gmail.com

unread,
Aug 7, 2013, 1:21:31 AM8/7/13
to codec...@webmproject.org
James,

Is there a plan to do multithreading for reconstruction, Intra prediction and Motion compensation(within a single frame) as well?

regards,
Karthick

James Zern

unread,
Aug 7, 2013, 10:57:34 PM8/7/13
to codec...@webmproject.org
On Tue, Aug 6, 2013 at 10:21 PM, <j.kart...@gmail.com> wrote:
> James,
>
> Is there a plan to do multithreading for reconstruction, Intra prediction
> and Motion compensation(within a single frame) as well?
>
There's definitely more that can be done within a single frame, so
these are open for exploration.

kurt...@gmail.com

unread,
Oct 30, 2014, 12:23:12 PM10/30/14
to codec...@webmproject.org, abo...@gmail.com
Hi,

Any news regarding VP9 multithreading support for the encoder ? Is it plan for VP10 or not ?

Regards,

Anil

unread,
Jan 27, 2015, 5:32:18 PM1/27/15
to codec...@webmproject.org, abo...@gmail.com
Hi,

I had the same question for encoder. I am running on a Nexus 5. 
By adjusting the cpu-used parameter, the encoder runs over 40fps for WVGA sequences.
But the quality is quite bad. It uses only one core. 
If it supported multi-core, either quality could be improved, or higher resolutions can be supported

I saw some decoder multi-threading support being added as per git logs
Is there any plan to add multi-threading support for encoder as well?

Thanks
Anil

Yunqing Wang

unread,
Jan 27, 2015, 7:05:04 PM1/27/15
to codec...@webmproject.org, abo...@gmail.com
FYI

VP9 multi-threaded encoder works now, which is based on the multi-tile feature in VP9. The number of threads is no more than the number of column tiles. In VP9, the minimum tile width is 256. Then, to run multi-threaded encoder(vpxenc), add encoding options:
  for videos with frame width >=512, use "--tile-columns=1 -t 2";
  for videos with frame width >= 1024, use "--tile-columns=2 -t 4";
  for videos with frame width >= 2048, use "--tile-columns=3 -t 8".

Yunqing

Anil

unread,
Jan 27, 2015, 8:08:04 PM1/27/15
to codec...@webmproject.org, abo...@gmail.com
Sorry, My mistake. I forgot to add "--tile-columns".
Multi-thread encoding works fine now

Thanks
Anil

Mustafa Muhammad

unread,
Mar 3, 2015, 6:45:45 AM3/3/15
to codec...@webmproject.org
On Wed, Jan 28, 2015 at 3:05 AM, Yunqing Wang <yunqi...@google.com> wrote:
> FYI
>
> VP9 multi-threaded encoder works now, which is based on the multi-tile
> feature in VP9. The number of threads is no more than the number of column
> tiles. In VP9, the minimum tile width is 256. Then, to run multi-threaded
> encoder(vpxenc), add encoding options:
> for videos with frame width >=512, use "--tile-columns=1 -t 2";
> for videos with frame width >= 1024, use "--tile-columns=2 -t 4";
> for videos with frame width >= 2048, use "--tile-columns=3 -t 8".
>
> Yunqing
>

Thank you for this info, I am wondering, does using multi-threading
affect output quality?

Also in "--tile-columns=1 -t 2" what does the "-t 2" represents? I
only saw VP9_DASH_PARAMS="-tile-columns 4 -frame-parallel 1"
in:
http://wiki.webmproject.org/adaptive-streaming/instructions-to-playback-adaptive-webm-using-dash

Where I can find more docs about this?

Thank you very much

> On Wednesday, June 26, 2013 at 1:10:22 PM UTC-7, abo...@gmail.com wrote:
>>
>> Hi
>>
>> vp9 uses one thread only no matter what number of threads are set. This
>> problem make vp9 slower than vp8 if multi-thread option is used.
>> vp8 multi-thread works fine on my system while vp9 does not even thought
>> the parameter is set (i.e. -t 8). vp9 encoder parameter: g_threads = 8
>>
>> System: ubuntu 12.04 LTS 64-bit
>> Processor: Intel® Core™ i7-2600 CPU @ 3.40GHz × 8
>>
>> Has anyone run into the same issue?
>>
>> Thank you
>
> --
> You received this message because you are subscribed to the Google Groups
> "Codec Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to codec-devel...@webmproject.org.
> To post to this group, send email to codec...@webmproject.org.
> Visit this group at
> http://groups.google.com/a/webmproject.org/group/codec-devel/.
> For more options, visit
> https://groups.google.com/a/webmproject.org/d/optout.

Mustafa Muhammad

unread,
Mar 3, 2015, 8:40:32 AM3/3/15
to codec...@webmproject.org
On Tue, Mar 3, 2015 at 2:45 PM, Mustafa Muhammad
<mustafaa....@gmail.com> wrote:
> On Wed, Jan 28, 2015 at 3:05 AM, Yunqing Wang <yunqi...@google.com> wrote:
>> FYI
>>
>> VP9 multi-threaded encoder works now, which is based on the multi-tile
>> feature in VP9. The number of threads is no more than the number of column
>> tiles. In VP9, the minimum tile width is 256. Then, to run multi-threaded
>> encoder(vpxenc), add encoding options:
>> for videos with frame width >=512, use "--tile-columns=1 -t 2";
>> for videos with frame width >= 1024, use "--tile-columns=2 -t 4";
>> for videos with frame width >= 2048, use "--tile-columns=3 -t 8".
>>
>> Yunqing
>>
>
> Thank you for this info, I am wondering, does using multi-threading
> affect output quality?
>
> Also in "--tile-columns=1 -t 2" what does the "-t 2" represents? I
> only saw VP9_DASH_PARAMS="-tile-columns 4 -frame-parallel 1"
> in:
> http://wiki.webmproject.org/adaptive-streaming/instructions-to-playback-adaptive-webm-using-dash
>
> Where I can find more docs about this?
>
> Thank you very much

I understood the "-t" is for threads, now the question: Does
"-tile-columns and -frame-parallel" affect the output quality? As I
understood they both can be used for multi-threading, what about
"-tile-rows"?

Thank you
Mustafa

Yunqing Wang

unread,
Mar 3, 2015, 11:55:48 AM3/3/15
to codec...@webmproject.org
VP9 doesn't support independent row tiles, the multi-threaded encoder uses independent column tiles. So you don't need to set "-tile-rows". "-tile-columns" always needs to be set, and it does affect the output quality slightly. There was some changes regarding using of "-frame-parallel". "-frame-parallel=1" was required before in order to do multi-thread encoding/decoding, but wasn't required anymore if you check out the newest libvpx code. "-frame-parallel=1" also affects the output quality.

Yunqing

Mustafa Muhammad

unread,
Mar 4, 2015, 4:45:06 AM3/4/15
to codec...@webmproject.org
On Tue, Mar 3, 2015 at 7:55 PM, 'Yunqing Wang' via Codec Developers
<codec...@webmproject.org> wrote:
> VP9 doesn't support independent row tiles, the multi-threaded encoder uses
> independent column tiles. So you don't need to set "-tile-rows".
> "-tile-columns" always needs to be set, and it does affect the output
> quality slightly. There was some changes regarding using of
> "-frame-parallel". "-frame-parallel=1" was required before in order to do
> multi-thread encoding/decoding, but wasn't required anymore if you check out
> the newest libvpx code. "-frame-parallel=1" also affects the output quality.
>
> Yunqing

Thanks for replying and thank you very much for the info, I think I'll
use only "-tile-columns=".

Regards
Mustafa
Reply all
Reply to author
Forward
0 new messages