libvpx中的rc_dropframe_thresh

AndyHu518發表於2024-08-04

webrtc中的程式碼:

cfg_.rc_dropframe_thresh = (!disable_frame_dropping_ && encoder_settings_.GetFrameDropEnabled()) ? 30 : 0;

https://chromium.googlesource.com/webm/libvpx/+/master/vpx/vpx_encoder.h#399

引數定義

  • 引數名稱rc_dropframe_thresh
  • 資料型別unsigned int
  • 所屬結構體vpx_codec_enc_cfg

功能描述

rc_dropframe_thresh 是一個用於控制時間重取樣(temporal resampling)的引數。如果編碼器支援,該引數允許編碼器透過丟棄幀(drop frames)來達到目標資料率(target data rate)。這種策略可能會導致編碼影片中出現時間上的不連續性,播放時可能會出現卡頓。這種折衷在某些應用中是可以接受的,但在許多應用中是不被允許的。在這些情況下,可以禁用該功能。

引數具體作用

  • 丟幀機制:當目標資料緩衝區(target data buffer)的滿度低於該閾值所描述的百分比時,編碼器將丟棄幀。
  • 禁用丟幀:將該閾值設定為 0 可以禁用丟幀功能。

使用場景

  • 啟用丟幀:在需要嚴格控制資料率並且可以接受播放時卡頓的情況下,可以啟用丟幀機制,透過設定適當的閾值來允許丟幀。
  • 禁用丟幀:在要求影片播放流暢、不出現卡頓的應用場景中,可以將閾值設定為 0,以禁用丟幀功能。

注意事項

  • 支援的編碼器:所有 vpx VPx 編碼器(如 VP8、VP9)都支援該功能。
  • 其他編碼器:對於其他編碼器,需查閱相關文件以確定是否支援該功能。

透過合理配置 rc_dropframe_thresh,可以在影片質量和資料率控制之間找到平衡,以適應不同的應用需求。

相關文章