那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

設置I幀的QP的示例代碼

YCqV_FPGA_EETre ? 來源:博客園 ? 作者:HankFu ? 2021-10-20 11:35 ? 次閱讀

介紹

在有些應用中,發現I幀不夠大。MPSoC VCU CtrlSW可以設置每一幀的QP大小。因此,可以通過設置I幀的QP,提高I幀的大小,從而提高I幀的質量。

代碼

下面是設置I幀的QP的示例代碼。

GOP長度變量
在struct EncoderSink : IFrameSink的定義里添加GOP的成員變量,記錄GOP長度。

#if USER_I_FRAME_QP
               // USER_I_FRAME_QP changes START 
               float uFrameRate = 0.0f;
               int uGopLength = 0; 
               // USER_I_FRAME_QP changes END 
   
#endif  // USER_I_FRAME_QP

記錄GOP長度
在EncoderSink 的EncoderSink函數設置GOP的變量的值。

 struct EncoderSink : IFrameSink
{
  EncoderSink(ConfigFile const& cfg, AL_IEncScheduler* pScheduler, AL_TAllocator* pAllocator
              ) :
    CmdFile(cfg.sCmdFileName, false),
    EncCmd(CmdFile.fp, cfg.RunInfo.iScnChgLookAhead, cfg.Settings.tChParam[0].tGopParam.uFreqLT),
    twoPassMngr(cfg.sTwoPassFileName, cfg.Settings.TwoPass, cfg.Settings.bEnableFirstPassSceneChangeDetection, cfg.Settings.tChParam[0].tGopParam.uGopLength,
                cfg.Settings.tChParam[0].tRCParam.uCPBSize / 90, cfg.Settings.tChParam[0].tRCParam.uInitialRemDelay / 90, cfg.MainInput.FileInfo.FrameRate),
    qpBuffers{cfg.Settings, cfg.RunInfo.eGenerateQpMode},
    pAllocator{pAllocator},
    pSettings{&cfg.Settings}
  {
 
#if USER_I_FRAME_QP
                 // USER_I_FRAME_QP changes STARTED ----------------------------------
                 uFrameRate = cfg.Settings.tChParam.tRCParam.uFrameRate;
                 uGopLength = cfg.Settings.tChParam.tGopParam.uGopLength;
                 // USER_I_FRAME_QP changes END --------------------------------------
#endif  // USER_I_FRAME_QP
 
    }

設置QP

在EncoderSink 的ProcessFrame函數里,根據GOP長度,確定每個GOP開始的I幀。然后再設置QP的值??梢栽囋?0-35之間的QP值。QP值是20時,能帶來很好的圖像質量。

void ProcessFrame(AL_TBuffer* Src) override
  {
    if(m_picCount == 0)
      m_StartTime = GetPerfTime();
 
    if(!Src)
    {
      LogVerbose("Flushing...

");
 
      if(!AL_Encoder_Process(hEnc, nullptr, nullptr))
        throw std::runtime_error("Failed");
      return;
    }
 
    DisplayFrameStatus(m_picCount);
 
    if(twoPassMngr.iPass)
    {
      auto pPictureMetaTP = AL_TwoPassMngr_CreateAndAttachTwoPassMetaData(Src);
 
      if(twoPassMngr.iPass == 2)
        twoPassMngr.GetFrame(pPictureMetaTP);
    }
 
    AL_TBuffer* QpBuf = qpBuffers.getBuffer(m_picCount);
 
    std::shared_ptr QpBufShared(QpBuf, [&](AL_TBuffer* pBuf) { qpBuffers.releaseBuffer(pBuf); });
 
    if(pSettings->hRcPluginDmaContext != NULL)
      RCPlugin_SetNextFrameQP(pSettings, pAllocator);
 
#if   USER_I_FRAME_QP
    if( 0 == (m_picCount%uGopLength) )
    {
 
        AL_Encoder_SetQP(hEnc, 20 );
    }
#endif  // USER_I_FRAME_QP
 
    
    if(!AL_Encoder_Process(hEnc, Src, QpBuf))
      throw std::runtime_error("Failed");
 
    m_picCount++;
    m_picGopCount++;
  }
責任編輯:haq
責任編輯:haq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4827

    瀏覽量

    69054
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28466

原文標題:設置I幀的QP,提高I幀的質量

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    用于 SPI 絕對編碼器的 Arduino 示例代碼

    (SPI) 通信來配置和讀取 [Same Sky] 的 [AMT22 絕對編碼器] 的數據。該教程將提供所需的硬件和軟件、關鍵設置要求以及單圈和多圈輸出選項的示例代碼包和說明。以下是入門工作所需的物料清單
    的頭像 發表于 01-26 21:35 ?173次閱讀
    用于 SPI 絕對編碼器的 Arduino <b class='flag-5'>示例</b><b class='flag-5'>代碼</b>

    I2C總線設備地址設置方法

    通常是一個7位或10位的數字,用于標識總線上的每個設備。在7位尋址模式下,地址范圍是0x00到0x7F,而在10位尋址模式下,地址范圍是0x000到0x3FF。I2C地址的最低位(LSB)通常用于指示讀/寫操作。 硬件地址設置 1. 地址引腳配置 許多
    的頭像 發表于 01-17 15:17 ?294次閱讀

    AN-840: 通過I2C接口更新代碼

    電子發燒友網站提供《AN-840: 通過I2C接口更新代碼.pdf》資料免費下載
    發表于 01-15 16:04 ?0次下載
    AN-840: 通過<b class='flag-5'>I</b>2C接口更新<b class='flag-5'>代碼</b>

    TPS92682-Q1定義和示例

    電子發燒友網站提供《TPS92682-Q1定義和示例.pdf》資料免費下載
    發表于 11-24 14:26 ?7次下載
    TPS92682-Q1<b class='flag-5'>幀</b>定義和<b class='flag-5'>示例</b>

    LP589x和TLC698x示例代碼用戶指南

    電子發燒友網站提供《LP589x和TLC698x示例代碼用戶指南.pdf》資料免費下載
    發表于 11-13 15:57 ?0次下載
    LP589x和TLC698x<b class='flag-5'>示例</b><b class='flag-5'>代碼</b>用戶指南

    TPS929xxx-Q1示例代碼

    電子發燒友網站提供《TPS929xxx-Q1示例代碼.pdf》資料免費下載
    發表于 11-13 14:59 ?2次下載
    TPS929xxx-Q1<b class='flag-5'>示例</b><b class='flag-5'>代碼</b>

    LP5891-Q1示例代碼用戶指南

    電子發燒友網站提供《LP5891-Q1示例代碼用戶指南.pdf》資料免費下載
    發表于 11-12 14:08 ?1次下載
    LP5891-Q1<b class='flag-5'>示例</b><b class='flag-5'>代碼</b>用戶指南

    BQ40Z80量產校準代碼示例

    電子發燒友網站提供《BQ40Z80量產校準代碼示例.pdf》資料免費下載
    發表于 09-27 09:34 ?1次下載
    BQ40Z80量產校準<b class='flag-5'>代碼</b><b class='flag-5'>示例</b>

    can標準和擴展能否共存

    CAN(Controller Area Network)是一種用于汽車和工業自動化領域的現場總線通信協議。CAN協議具有多種格式,包括標準和擴展。在實際應用中,標準和擴展
    的頭像 發表于 07-24 15:24 ?2089次閱讀

    can標準和擴展的區別

    CAN(Controller Area Network)是一種用于汽車和工業領域的通信協議,它允許多個設備在同一總線上進行通信。CAN協議有兩種類型:標準和擴展。這兩種類型在結
    的頭像 發表于 07-24 15:20 ?2145次閱讀

    如何使用AURIX?將Erika操作系統移植到TC387-QP MCU中?

    如何使用AURIX?設計工作室將此 Erika OS 集成到 TC387-QP MCU 中? Erika OS文件夾已經可用,并以 ZIP 文件的形式共享,以供參考。 設置如下 AURIX?設計工
    發表于 05-17 14:03

    關于STM32 DMAMUX模塊具體的應用示例代碼

    有人通過公眾號微信留言,詢問是否有關于STM32 DMAMUX模塊具體的應用示例代碼。同時,個人也發現,雖然STM32片內的DMAMUX不是什么新模塊,似乎還是很多人并不太熟悉。這里借機聊聊這方面的內容,重點演示相關功能的實現,以供參考。
    的頭像 發表于 03-25 09:15 ?2574次閱讀
    關于STM32 DMAMUX模塊具體的應用<b class='flag-5'>示例</b><b class='flag-5'>代碼</b>

    TC387QP啟用HSm時,PFlash被擦除而鎖定了怎么解決?

    你好, 我曾在 HSM 啟用狀態下進行過 Pflash 擦除。 因此,鎖定微型 TC387QP。 請告訴我如何解鎖微控制器 TC387QP
    發表于 03-04 06:05

    瑞薩Flash示例程序01型SC版本(代碼Flash)應用說明

    電子發燒友網站提供《瑞薩Flash示例程序01型SC版本(代碼Flash)應用說明.pdf》資料免費下載
    發表于 02-19 13:48 ?0次下載
    瑞薩Flash<b class='flag-5'>示例</b>程序01型SC版本(<b class='flag-5'>代碼</b>Flash)應用說明

    如何使用Arduino設置熱敏電阻來創建溫度計

    在本教程中,我們將指導您如何使用Arduino設置熱敏電阻以創建基本溫度計。提供的原理圖、試驗板圖和示例代碼將使熱敏電阻工作變得簡單明了。
    的頭像 發表于 02-11 10:37 ?2712次閱讀
    如何使用Arduino<b class='flag-5'>設置</b>熱敏電阻來創建溫度計
    娱乐城注册| 广州百家乐官网赌场| 澳门百家乐官网游戏玩法| 大发888官方c8| 百家乐官网分析仪有真的吗| KK百家乐的玩法技巧和规则| 澳门百家乐官网游戏皇冠网| 乐天堂百家乐娱乐场| 荣昌县| 百家乐注码法| 泗阳县| 百家乐电投软件| 博彩乐百家乐官网平台| 合肥百家乐赌博机| 百家乐官网体育直播| 申博百家乐下载| 百家乐官网怎么下可以赢| 丽星百家乐的玩法技巧和规则| 澳门百家乐官网游戏说明书| 威尼斯人娱乐城 老品牌| 百家乐官网单机破解版| 德州扑克| 做生意摆放风水| 琼中| 百家乐破解方法技巧| 哪个百家乐官网技巧平台信誉好| 威尼斯人娱乐城动态| 百家乐官网好津乐汇| 十大博彩网| 百家乐百家乐视频游戏世界| 博士百家乐官网现金网| 菲律宾百家乐娱乐场| 百家乐官网网上投注文章| 大发888游戏备用网址| 百家乐官网博娱乐网赌百家乐官网的玩法技巧和规则 | 钱隆百家乐的玩法技巧和规则| 百家乐官网平注胜进与负追| 顶级赌场dj| 百家乐视频赌博| 百家乐官网霸王闲| 太阳城网上投注|