mirror of
https://github.com/pion/mediadevices.git
synced 2025-09-26 20:41:46 +08:00
use thread safe atomic bool
This commit is contained in:

committed by
Eric Daniels

parent
694b4abd83
commit
2882fd42d5
@@ -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 {
|
||||
|
@@ -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 {
|
||||
|
Reference in New Issue
Block a user