diff --git a/src/dring/videomanager_interface.h b/src/dring/videomanager_interface.h
index 876df5fb456f2fb5795e2018409aa9b560312211..1713d157fe63f331ef3c4f1f84f4b80602a9965f 100644
--- a/src/dring/videomanager_interface.h
+++ b/src/dring/videomanager_interface.h
@@ -80,7 +80,8 @@ public:
     virtual ~MediaFrame() = default;
 
     // Return a pointer on underlaying buffer
-    AVFrame* pointer() const noexcept { return frame_.get(); }
+    const AVFrame* pointer() const noexcept { return frame_.get(); }
+    AVFrame* pointer() noexcept { return frame_.get(); }
 
     // Fill this MediaFrame with data from o
     void copyFrom(const MediaFrame& o);
diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index 9ebc6ea562d109e5b202d6e0269c880fd5b9b2d6..41ba6f227f0c097bb560187675517cc714895d1e 100644
--- a/src/media/media_decoder.cpp
+++ b/src/media/media_decoder.cpp
@@ -310,7 +310,7 @@ MediaDecoder::decode(VideoFrame& result)
 #endif // RING_VIDEO
 
 MediaDecoder::Status
-MediaDecoder::decode(const AudioFrame& decodedFrame)
+MediaDecoder::decode(AudioFrame& decodedFrame)
 {
     const auto frame = decodedFrame.pointer();
 
diff --git a/src/media/media_decoder.h b/src/media/media_decoder.h
index c1c560c61b59db5a620e9a869ff822c14b68c98f..8405dd18f6f54de1da3044c3a7dedab4311a7019 100644
--- a/src/media/media_decoder.h
+++ b/src/media/media_decoder.h
@@ -89,7 +89,7 @@ class MediaDecoder {
  #endif // RING_VIDEO
 
         int setupFromAudioData();
-        Status decode(const AudioFrame&);
+        Status decode(AudioFrame&);
         void writeToRingBuffer(const AudioFrame&, RingBuffer&, const AudioFormat);
 
         int getWidth() const;