use thread safe atomic bool

This commit is contained in:
Valentin Cocaud
2023-09-20 21:30:25 +02:00
committed by Eric Daniels
parent 694b4abd83
commit 2882fd42d5
2 changed files with 8 additions and 6 deletions

View File

@@ -62,6 +62,7 @@ import (
"image"
"io"
"sync"
"sync/atomic"
"unsafe"
"github.com/pion/mediadevices/pkg/codec"
@@ -100,7 +101,7 @@ type encoderVP8 struct {
rate *framerateDetector
forceKeyFrame bool
forceKeyFrame atomic.Bool
mu sync.Mutex
closed bool
@@ -318,7 +319,7 @@ func (e *encoderVP8) Read() ([]byte, func(), error) {
e.frParam.data.framerate = C.uint(e.rate.Calc())
if kf || e.forceKeyFrame {
if kf || e.forceKeyFrame.CompareAndSwap(true, false) {
// Key frame
C.setForceKFFlagVP8(&e.picParam, 1)
C.setFrameTypeFlagVP8(&e.picParam, 0)
@@ -549,7 +550,7 @@ func (e *encoderVP8) Controller() codec.EncoderController {
}
func (e *encoderVP8) ForceKeyFrame() {
e.forceKeyFrame = true
e.forceKeyFrame.Store(true)
}
func (e *encoderVP8) Close() error {

View File

@@ -45,6 +45,7 @@ import (
"image"
"io"
"sync"
"sync/atomic"
"unsafe"
"github.com/pion/mediadevices/pkg/codec"
@@ -92,7 +93,7 @@ type encoderVP9 struct {
rate *framerateDetector
forceKeyFrame bool
forceKeyFrame atomic.Bool
mu sync.Mutex
closed bool
@@ -307,7 +308,7 @@ func (e *encoderVP9) Read() ([]byte, func(), error) {
e.frParam.data.framerate = C.uint(e.rate.Calc())
if kf || e.forceKeyFrame {
if kf || e.forceKeyFrame.CompareAndSwap(true, false) {
C.setForceKFFlag9(&e.picParam, 1)
C.setFrameTypeFlagVP9(&e.picParam, 0)
e.picParam.refresh_frame_flags = 0
@@ -484,7 +485,7 @@ func (e *encoderVP9) Controller() codec.EncoderController {
}
func (e *encoderVP9) ForceKeyFrame() {
e.forceKeyFrame = true
e.forceKeyFrame.Store(true)
}
func (e *encoderVP9) Close() error {