# simulcast - consumer is selecting invalid temporal layer

**URL:** <https://mediasoup.discourse.group/t/simulcast-consumer-is-selecting-invalid-temporal-layer/82>\
**Category:** mediasoup libraries\
**Created:** [June 13, 2019, 1:45pm UTC](https://mediasoup.discourse.group/t/simulcast-consumer-is-selecting-invalid-temporal-layer/82 "2019-06-13T13:45:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![aetheon](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/aetheon/32/39_2.png) [@aetheon](https://mediasoup.discourse.group/u/aetheon)\
**Post date:** [June 13, 2019, 1:45pm UTC](https://mediasoup.discourse.group/t/simulcast-consumer-is-selecting-invalid-temporal-layer/82/1 "2019-06-13T13:45:21Z")

</div>

Hi there,

I’m creating a video producer using the following code:

```auto
producer.transport({
  track,
  encodings: [
    { maxBitrate: 450000, scaleResolutionDownBy: 2 },
    { maxBitrate: 2500000, scaleResolutionDownBy: 1 },
  ], {
    videoGoogleStartBitrate: 500000,
  })

```

And keep getting the temporalLayer 2 selected when a consumer starts. After debugging the worker code I found it was caused by SimulcastConsumer::UseAvailableBitrate.

```auto

e[38;5;98;1mmediasoup:worker[pid:58818] e[0mRTC::RtpParameters::ValidateEncodings() | RtpParameters.ValidateEncodings e[38;5;98m+0mse[0m
  e[38;5;98;1mmediasoup:worker[pid:58818] e[0mRTC::RtpParameters::ValidateEncodings() | RtpParameters.ValidateEncodings encoding [spatial:1 e[38;5;98m+0mse[0m
  e[38;5;98;1mmediasoup:worker[pid:58818] e[0mRTC::RtpParameters::ValidateEncodings() | RtpParameters.ValidateEncodings encoding [temporal:1 e[38;5;98m+0mse[0m
  
e[38;5;98;1mmediasoup:worker[pid:58818] e[0mRTC::SimulcastConsumer::UseAvailableBitrate() | UseAvailableBitrate params [bitrate:1000000] e[38;5;98m+0mse[0m
  e[38;5;98;1mmediasoup:worker[pid:58818] e[0mRTC::SimulcastConsumer::UseAvailableBitrate() | testing layers 0:0 [virtualBitrate:1080000, requiredBitrate:137216] e[38;5;98m+0mse[0m
  e[38;5;98;1mmediasoup:worker[pid:58818] e[0mRTC::SimulcastConsumer::UseAvailableBitrate() | testing layers 0:1 [virtualBitrate:1080000, requiredBitrate:234272] e[38;5;98m+0mse[0m
  e[38;5;98;1mmediasoup:worker[pid:58818] e[0mRTC::SimulcastConsumer::UseAvailableBitrate() | testing layers 0:2 [virtualBitrate:1080000, requiredBitrate:426248] e[38;5;98m+0mse[0m
  e[38;5;98;1mmediasoup:worker[pid:58818] e[0mRTC::SimulcastConsumer::UseAvailableBitrate() | choosing layers 0:2 [bitrate:1000000, virtualBitrate:1080000, usedBitrate:426248, consumerId:08db906d-f18b-4c58-b9b5-a9381fd408bc] e[38;5;98m+0mse[0m

```

Do you have any idea why this is happening and point me in the right direction as debugging the c++ layer is very time consuming for me.

Thanks.

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [June 13, 2019, 2:16pm UTC](https://mediasoup.discourse.group/t/simulcast-consumer-is-selecting-invalid-temporal-layer/82/2 "2019-06-13T14:16:35Z")

</div>

You are settings 2 encodings, so in Chrome/Firefox with VP8, it means 2 spatial layers with 3 temporal layers each one, meaning that Chrome **may** send spatial layer 0 and 1 and temporal layer 0, 1 and 2.

So you are mixing the number of encodings (spatial layers) with temporal layers, which does not make sense.

Please rephrase your question. And also check your `producer.getStats()` (in server side) to see how many streams your browser is sending at a given time (the browser may stop sending spatial layer 1 due to CPU load, etc).

---

<div class="post-metadata">

**Author:** ![aetheon](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/aetheon/32/39_2.png) [@aetheon](https://mediasoup.discourse.group/u/aetheon)\
**Post date:** [June 13, 2019, 2:41pm UTC](https://mediasoup.discourse.group/t/simulcast-consumer-is-selecting-invalid-temporal-layer/82/3 "2019-06-13T14:41:47Z")

</div>

Thank you so much for the reply.

Right, so if I specify 3 encoding objects, like in the demo, it sends 3 spatial + 3 temporal layers right? Is there any reading material on this subject that you can recommend.

Great work by the way, thanks a million.

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [June 13, 2019, 2:53pm UTC](https://mediasoup.discourse.group/t/simulcast-consumer-is-selecting-invalid-temporal-layer/82/4 "2019-06-13T14:53:51Z")

</div>

> [@aetheon](#):
>
> Is there any reading material on this subject that you can recommend.

The [documentation](https://mediasoup.org/documentation/v3/mediasoup/rtp-parameters-and-capabilities/#Simulcast)?

---

<div class="post-metadata">

**Author:** ![ibc](https://yyz2.discourse-cdn.com/free1/user_avatar/mediasoup.discourse.group/ibc/32/1540_2.png) [@ibc](https://mediasoup.discourse.group/u/ibc)\
**Post date:** [December 2, 2019, 11:10pm UTC](https://mediasoup.discourse.group/t/simulcast-consumer-is-selecting-invalid-temporal-layer/82/5 "2019-12-02T23:10:48Z")

</div>


