mirror of
https://github.com/jech/galene.git
synced 2024-11-22 16:45:58 +01:00
More tweaks to layer switching.
I'm not seeing any non-keyframe spatial sync frames, so simplify the code by only switching spatial layers on keyframes.
This commit is contained in:
parent
d29f6d6e5d
commit
6aa7a9394a
1 changed files with 14 additions and 21 deletions
|
@ -231,9 +231,10 @@ func (down *rtpDownTrack) Write(buf []byte) (int, error) {
|
||||||
|
|
||||||
layer := down.getLayerInfo()
|
layer := down.getLayerInfo()
|
||||||
|
|
||||||
// increase eagerly if this is the first time we see a given layer
|
|
||||||
if flags.Tid > layer.maxTid || flags.Sid > layer.maxSid {
|
if flags.Tid > layer.maxTid || flags.Sid > layer.maxSid {
|
||||||
if flags.Tid > layer.maxTid {
|
if flags.Tid > layer.maxTid {
|
||||||
|
// increase eagerly if this is the first time we
|
||||||
|
// see a given layer
|
||||||
if layer.tid == layer.maxTid {
|
if layer.tid == layer.maxTid {
|
||||||
layer.wantedTid = flags.Tid
|
layer.wantedTid = flags.Tid
|
||||||
layer.tid = flags.Tid
|
layer.tid = flags.Tid
|
||||||
|
@ -253,33 +254,25 @@ func (down *rtpDownTrack) Write(buf []byte) (int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if flags.Start && (layer.tid != layer.wantedTid) {
|
if flags.Start && (layer.tid != layer.wantedTid) {
|
||||||
if layer.wantedTid < layer.tid || flags.TidUpSync {
|
if flags.Keyframe {
|
||||||
layer.tid = layer.wantedTid
|
layer.tid = layer.wantedTid
|
||||||
down.setLayerInfo(layer)
|
down.setLayerInfo(layer)
|
||||||
|
} else if layer.wantedTid < layer.tid {
|
||||||
|
layer.tid = layer.wantedTid
|
||||||
|
down.setLayerInfo(layer)
|
||||||
|
} else if flags.TidUpSync && flags.Tid <= layer.wantedTid {
|
||||||
|
layer.tid = flags.Tid
|
||||||
|
down.setLayerInfo(layer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if flags.Start && (layer.sid != layer.wantedSid) {
|
if flags.Start && (layer.sid != layer.wantedSid) {
|
||||||
if layer.wantedSid < layer.sid {
|
|
||||||
if flags.Keyframe {
|
if flags.Keyframe {
|
||||||
layer.sid = layer.wantedSid
|
layer.sid = layer.wantedSid
|
||||||
down.setLayerInfo(layer)
|
down.setLayerInfo(layer)
|
||||||
} else {
|
} else {
|
||||||
down.remote.RequestKeyframe()
|
down.remote.RequestKeyframe()
|
||||||
}
|
}
|
||||||
} else if layer.wantedSid > layer.sid {
|
|
||||||
if flags.Keyframe {
|
|
||||||
layer.sid = layer.wantedSid
|
|
||||||
down.setLayerInfo(layer)
|
|
||||||
} else if flags.Sid == layer.sid + 1 {
|
|
||||||
if flags.SidUpSync {
|
|
||||||
layer.sid = layer.sid + 1
|
|
||||||
down.setLayerInfo(layer)
|
|
||||||
} else {
|
|
||||||
down.remote.RequestKeyframe()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if flags.Tid > layer.tid || flags.Sid > layer.sid ||
|
if flags.Tid > layer.tid || flags.Sid > layer.sid ||
|
||||||
|
|
Loading…
Reference in a new issue