diff --git a/core/fxcodec/bmp/cfx_bmpdecompressor.cpp b/core/fxcodec/bmp/cfx_bmpdecompressor.cpp
index a25afdf..de97c6d 100644
--- a/core/fxcodec/bmp/cfx_bmpdecompressor.cpp
+++ b/core/fxcodec/bmp/cfx_bmpdecompressor.cpp
@@ -663,19 +663,11 @@
   input_buffer_ = pdfium::MakeRetain<CFX_CodecMemory>(src_buf);
 }
 
-FX_FILESIZE CFX_BmpDecompressor::GetAvailInput(uint8_t** avail_buf) {
+FX_FILESIZE CFX_BmpDecompressor::GetAvailInput() const {
   if (!input_buffer_)
     return 0;
 
-  FX_FILESIZE available =
-      input_buffer_->GetSize() - input_buffer_->GetPosition();
-  if (avail_buf) {
-    *avail_buf = nullptr;
-    if (available > 0)
-      *avail_buf = input_buffer_->GetBuffer() + available;
-  }
-
-  return available;
+  return input_buffer_->GetSize() - input_buffer_->GetPosition();
 }
 
 void CFX_BmpDecompressor::SetHeight(int32_t signed_height) {
diff --git a/core/fxcodec/bmp/cfx_bmpdecompressor.h b/core/fxcodec/bmp/cfx_bmpdecompressor.h
index ed013a2..331a634 100644
--- a/core/fxcodec/bmp/cfx_bmpdecompressor.h
+++ b/core/fxcodec/bmp/cfx_bmpdecompressor.h
@@ -28,7 +28,7 @@
   int32_t DecodeImage();
   int32_t ReadHeader();
   void SetInputBuffer(pdfium::span<uint8_t> src_buf);
-  FX_FILESIZE GetAvailInput(uint8_t** avail_buf);
+  FX_FILESIZE GetAvailInput() const;
 
   jmp_buf jmpbuf_;
   CFX_BmpContext* context_ptr_;
diff --git a/core/fxcodec/codec/ccodec_bmpmodule.cpp b/core/fxcodec/codec/ccodec_bmpmodule.cpp
index 75e59ed..ff4164c 100644
--- a/core/fxcodec/codec/ccodec_bmpmodule.cpp
+++ b/core/fxcodec/codec/ccodec_bmpmodule.cpp
@@ -63,10 +63,8 @@
   return ctx->m_Bmp.DecodeImage();
 }
 
-FX_FILESIZE CCodec_BmpModule::GetAvailInput(Context* pContext,
-                                            uint8_t** avail_buf_ptr) {
-  auto* ctx = static_cast<CFX_BmpContext*>(pContext);
-  return ctx->m_Bmp.GetAvailInput(avail_buf_ptr);
+FX_FILESIZE CCodec_BmpModule::GetAvailInput(Context* pContext) const {
+  return static_cast<CFX_BmpContext*>(pContext)->m_Bmp.GetAvailInput();
 }
 
 void CCodec_BmpModule::Input(Context* pContext, pdfium::span<uint8_t> src_buf) {
diff --git a/core/fxcodec/codec/ccodec_bmpmodule.h b/core/fxcodec/codec/ccodec_bmpmodule.h
index 42d686e..6dc0ebd 100644
--- a/core/fxcodec/codec/ccodec_bmpmodule.h
+++ b/core/fxcodec/codec/ccodec_bmpmodule.h
@@ -34,7 +34,7 @@
   ~CCodec_BmpModule();
 
   std::unique_ptr<Context> Start(Delegate* pDelegate);
-  FX_FILESIZE GetAvailInput(Context* pContext, uint8_t** avail_buf_ptr);
+  FX_FILESIZE GetAvailInput(Context* pContext) const;
   void Input(Context* pContext, pdfium::span<uint8_t> src_buf);
   int32_t ReadHeader(Context* pContext,
                      int32_t* width,
diff --git a/core/fxcodec/codec/ccodec_gifmodule.cpp b/core/fxcodec/codec/ccodec_gifmodule.cpp
index 872d90f..a93cb27 100644
--- a/core/fxcodec/codec/ccodec_gifmodule.cpp
+++ b/core/fxcodec/codec/ccodec_gifmodule.cpp
@@ -66,10 +66,8 @@
   return CFX_GifDecodeStatus::Success;
 }
 
-uint32_t CCodec_GifModule::GetAvailInput(Context* pContext,
-                                         uint8_t** avail_buf_ptr) {
-  auto* context = static_cast<CFX_GifContext*>(pContext);
-  return context->GetAvailInput(avail_buf_ptr);
+uint32_t CCodec_GifModule::GetAvailInput(Context* pContext) const {
+  return static_cast<CFX_GifContext*>(pContext)->GetAvailInput();
 }
 
 void CCodec_GifModule::Input(Context* pContext, pdfium::span<uint8_t> src_buf) {
diff --git a/core/fxcodec/codec/ccodec_gifmodule.h b/core/fxcodec/codec/ccodec_gifmodule.h
index f14665b..9529583 100644
--- a/core/fxcodec/codec/ccodec_gifmodule.h
+++ b/core/fxcodec/codec/ccodec_gifmodule.h
@@ -43,7 +43,7 @@
   ~CCodec_GifModule();
 
   std::unique_ptr<Context> Start(Delegate* pDelegate);
-  uint32_t GetAvailInput(Context* context, uint8_t** avail_buf_ptr);
+  uint32_t GetAvailInput(Context* context) const;
   void Input(Context* context, pdfium::span<uint8_t> src_buf);
   CFX_GifDecodeStatus ReadHeader(Context* context,
                                  int* width,
diff --git a/core/fxcodec/codec/ccodec_jpegmodule.cpp b/core/fxcodec/codec/ccodec_jpegmodule.cpp
index e6aef3c..aaf16ae 100644
--- a/core/fxcodec/codec/ccodec_jpegmodule.cpp
+++ b/core/fxcodec/codec/ccodec_jpegmodule.cpp
@@ -464,15 +464,8 @@
   return nlines == 1;
 }
 
-uint32_t CCodec_JpegModule::GetAvailInput(Context* pContext,
-                                          uint8_t** avail_buf_ptr) {
+uint32_t CCodec_JpegModule::GetAvailInput(Context* pContext) const {
   auto* ctx = static_cast<CJpegContext*>(pContext);
-  if (avail_buf_ptr) {
-    *avail_buf_ptr = nullptr;
-    if (ctx->m_SrcMgr.bytes_in_buffer > 0) {
-      *avail_buf_ptr = (uint8_t*)ctx->m_SrcMgr.next_input_byte;
-    }
-  }
   return (uint32_t)ctx->m_SrcMgr.bytes_in_buffer;
 }
 
diff --git a/core/fxcodec/codec/ccodec_jpegmodule.h b/core/fxcodec/codec/ccodec_jpegmodule.h
index fb116f5..2c72db3 100644
--- a/core/fxcodec/codec/ccodec_jpegmodule.h
+++ b/core/fxcodec/codec/ccodec_jpegmodule.h
@@ -56,7 +56,7 @@
 
   bool StartScanline(Context* pContext, int down_scale);
   bool ReadScanline(Context* pContext, uint8_t* dest_buf);
-  uint32_t GetAvailInput(Context* pContext, uint8_t** avail_buf_ptr);
+  uint32_t GetAvailInput(Context* pContext) const;
 
 #if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
   static bool JpegEncode(const RetainPtr<CFX_DIBBase>& pSource,
diff --git a/core/fxcodec/codec/ccodec_progressivedecoder.cpp b/core/fxcodec/codec/ccodec_progressivedecoder.cpp
index 6faaaa1..280b647 100644
--- a/core/fxcodec/codec/ccodec_progressivedecoder.cpp
+++ b/core/fxcodec/codec/ccodec_progressivedecoder.cpp
@@ -418,7 +418,7 @@
 #ifdef PDF_ENABLE_XFA_GIF
 void CCodec_ProgressiveDecoder::GifRecordCurrentPosition(uint32_t& cur_pos) {
   uint32_t remain_size =
-      m_pCodecMgr->GetGifModule()->GetAvailInput(m_pGifContext.get(), nullptr);
+      m_pCodecMgr->GetGifModule()->GetAvailInput(m_pGifContext.get());
   cur_pos = m_offSet - remain_size;
 }
 
@@ -805,7 +805,7 @@
     return false;
 
   dwSize = dwSize - m_offSet;
-  FX_SAFE_UINT32 avail_input = pBmpModule->GetAvailInput(pBmpContext, nullptr);
+  FX_SAFE_UINT32 avail_input = pBmpModule->GetAvailInput(pBmpContext);
   if (!avail_input.IsValid())
     return false;
 
@@ -898,10 +898,9 @@
     return false;
 
   uint32_t dwFileRemaining = m_pFile->GetSize() - m_offSet;
-  uint32_t dwUnusedBuffer =
-      !m_InvalidateGifBuffer
-          ? pGifModule->GetAvailInput(m_pGifContext.get(), nullptr)
-          : 0;
+  uint32_t dwUnusedBuffer = !m_InvalidateGifBuffer
+                                ? pGifModule->GetAvailInput(m_pGifContext.get())
+                                : 0;
   uint32_t dwAmountToFetchFromFile = dwFileRemaining;
   if (dwUnusedBuffer == m_SrcSize) {
     if (dwFileRemaining > FXCODEC_BLOCK_SIZE)
@@ -1129,7 +1128,7 @@
     return false;
   }
   dwSize = dwSize - m_offSet;
-  uint32_t dwAvail = pJpegModule->GetAvailInput(m_pJpegContext.get(), nullptr);
+  uint32_t dwAvail = pJpegModule->GetAvailInput(m_pJpegContext.get());
   if (dwAvail == m_SrcSize) {
     if (dwSize > FXCODEC_BLOCK_SIZE) {
       dwSize = FXCODEC_BLOCK_SIZE;
diff --git a/core/fxcodec/gif/cfx_gifcontext.cpp b/core/fxcodec/gif/cfx_gifcontext.cpp
index f746bc1..8f48cfd 100644
--- a/core/fxcodec/gif/cfx_gifcontext.cpp
+++ b/core/fxcodec/gif/cfx_gifcontext.cpp
@@ -346,19 +346,11 @@
   input_buffer_ = pdfium::MakeRetain<CFX_CodecMemory>(src_buf);
 }
 
-uint32_t CFX_GifContext::GetAvailInput(uint8_t** avail_buf) const {
+uint32_t CFX_GifContext::GetAvailInput() const {
   if (!input_buffer_)
     return 0;
 
-  FX_FILESIZE available_size =
-      input_buffer_->GetSize() - input_buffer_->GetPosition();
-  if (avail_buf) {
-    *avail_buf = nullptr;
-    if (available_size > 0)
-      *avail_buf = input_buffer_->GetBuffer() + available_size;
-  }
-
-  return available_size;
+  return input_buffer_->GetSize() - input_buffer_->GetPosition();
 }
 
 bool CFX_GifContext::ReadData(uint8_t* dest, uint32_t size) {
diff --git a/core/fxcodec/gif/cfx_gifcontext.h b/core/fxcodec/gif/cfx_gifcontext.h
index 90657b0..9cc7da9 100644
--- a/core/fxcodec/gif/cfx_gifcontext.h
+++ b/core/fxcodec/gif/cfx_gifcontext.h
@@ -42,7 +42,7 @@
   CFX_GifDecodeStatus GetFrame();
   CFX_GifDecodeStatus LoadFrame(int32_t frame_num);
   void SetInputBuffer(pdfium::span<uint8_t> src_buf);
-  uint32_t GetAvailInput(uint8_t** avail_buf) const;
+  uint32_t GetAvailInput() const;
   size_t GetFrameNum() const { return images_.size(); }
 
   UnownedPtr<CCodec_GifModule> gif_module_;
