diff --git a/libavdevice/decklink_enc.cpp b/libavdevice/decklink_enc.cpp index 8892d1972fb77f6eadaa12aae208d8a12bb66b8d..18ef9058e28c38752b1b9c2c39cdb0a6c08c8785 100644 --- a/libavdevice/decklink_enc.cpp +++ b/libavdevice/decklink_enc.cpp @@ -19,6 +19,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include +using std::atomic; + #include #include @@ -28,7 +31,6 @@ extern "C" { #include "libavformat/avformat.h" #include "libavformat/internal.h" #include "libavutil/imgutils.h" -#include "libavutil/atomic.h" } #include "decklink_common.h" @@ -60,10 +62,10 @@ public: virtual HRESULT STDMETHODCALLTYPE GetAncillaryData(IDeckLinkVideoFrameAncillary **ancillary) { return S_FALSE; } virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; } - virtual ULONG STDMETHODCALLTYPE AddRef(void) { return avpriv_atomic_int_add_and_fetch(&_refs, 1); } + virtual ULONG STDMETHODCALLTYPE AddRef(void) { return ++_refs; } virtual ULONG STDMETHODCALLTYPE Release(void) { - int ret = avpriv_atomic_int_add_and_fetch(&_refs, -1); + int ret = --_refs; if (!ret) { av_frame_free(&_avframe); delete this; @@ -75,7 +77,7 @@ public: AVFrame *_avframe; private: - volatile int _refs; + std::atomic _refs; }; class decklink_output_callback : public IDeckLinkVideoOutputCallback