国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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的值。可以試試20-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

    文章

    4968

    瀏覽量

    73974
  • 變量
    +關注

    關注

    0

    文章

    616

    瀏覽量

    29506

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于Matter over Thread的照明應用示例簡要設置步驟

    在Silicon Labs(芯科科技)近期更新的技術支持文檔頁面中,我們詳細描述了運行一個基于Matter over Thread的照明應用示例的簡要設置步驟。
    的頭像 發表于 02-03 14:03 ?365次閱讀
    基于Matter over Thread的照明應用<b class='flag-5'>示例</b>簡要<b class='flag-5'>設置</b>步驟

    TE Connectivity推出QP 6.5多色電源連接器

    在追求高密度集成的設計中,如何避免線路錯配和簡化后續調試與維修,是一大挑戰。TE Connectivity (以下簡稱“TE”)近期推出的QP 6.5 多色電源連接器,正是應對這一挑戰的關鍵解決方案。
    的頭像 發表于 01-12 11:22 ?444次閱讀

    中穎電子8位單片機的I/O設置介紹

    在嵌入式系統設計中,單片機的I/O端口設置是基礎且關鍵的一環。今天我們來詳細解析中穎電子8位單片機的I/O設置,幫助工程師更好地理解和應用。
    的頭像 發表于 12-30 09:37 ?734次閱讀
    中穎電子8位單片機的<b class='flag-5'>I</b>/O<b class='flag-5'>設置</b>介紹

    MCU軟件核心庫及示例代碼速覽 !

    為加速嵌入式項目開發,本文對MCU軟件核心庫進行整體速覽,涵蓋初始化、外設控制與中斷處理等關鍵部分,并結合簡潔示例代碼,幫助開發者快速理解與應用庫功能。 一、MCU核心庫函數功能 MCU核心庫
    的頭像 發表于 12-11 17:19 ?690次閱讀
    MCU軟件核心庫及<b class='flag-5'>示例</b><b class='flag-5'>代碼</b>速覽 !

    基于芯源CW32 MCU的LED閃爍示例代碼分析

    最近我在項目中使用了芯源的CW32 MCU,這是一款非常適合物聯網和低功耗應用的微控制器。在初步學習和使用中,我做了一個簡單的LED閃爍實驗,通過這篇帖子給大家分享一下代碼及相關的配置步驟。 硬件
    發表于 12-04 06:52

    淘寶京東API商品詳情接口示例參考

    。 is_promotion:是否獲取促銷價,可選參數,根據需求設置。 其他參數可能包括返回字段列表、API密鑰等,具體以API文檔為準。 請求示例: ? http復制代碼GET https://eco.taobao.com
    的頭像 發表于 11-04 09:36 ?291次閱讀

    請問如何構建 emWin 示例代碼

    如何構建 emWin 示例代碼
    發表于 09-04 07:25

    如何使用20829 can-fd發送64字節擴展標識符數據

    親愛的先生, 基于MTB代碼示例CAN_FD,它使用11位標準標識符數據。 更改為29位擴展標識符數據,并將RX / TX FIFO更改為64Bytes,將
    發表于 08-04 06:56

    CYW20721如何在A2DP接收器中更改I2S時鐘設置

    CYW20721 DS 提到的主模式下的 I2S 時鐘可以是: 44.1 kHz x 每 32 位 = 1411.2 千赫 48 kHz x 每 32 位 = 1536 kHz 我能知道如何為這 2 個
    發表于 07-03 06:41

    NXP i.MX RT1060移植TinyUSB:快速擴展大量USB Class示例

    前言 ? 為啥是TinyUSB?給強大的RT配個輕巧的USB棧! USB這個讓我們方便快捷的接口,幾乎無處不在。在嵌入式世界里,尤其是用上了像NXP i.MX RT這樣性能強勁的跨界MCU,我們自然
    的頭像 發表于 05-15 09:25 ?2578次閱讀
    NXP <b class='flag-5'>i</b>.MX RT1060移植TinyUSB:快速擴展大量USB Class<b class='flag-5'>示例</b>

    如何獲取用于開發fx2的sdk和示例代碼

    大家好 我正在使用 FX2 設備,以前也使用過 FX3 設備。 使用 FX3 設備 SDK,當我下載它時,我在安裝文件夾中獲得了許多示例代碼,但是它沒有 FX2 的示例代碼,我如何
    發表于 05-07 07:25

    ESP32P4示例工程中有用的i2c-tools調試工程

    有用的示例工程 開發過程調試是個令人頭疼的問題,在程序正式運行起來之前,需要借助其他的工具來調試硬件、檢驗代碼邏輯是否正確。樂鑫的示例代碼中有個使用串口控制臺調試
    發表于 05-03 18:25

    (開源代碼版)手把手教學:DVP攝像頭拍照&amp;上傳功能示例

    通過本開源示例即可完成DVP攝像頭的拍照、圖像預處理及云端上傳全流程。示例代碼包含完整工程、硬件配置說明及調試技巧,從環境搭建到功能實現,一步步帶你構建穩定可靠的圖像數據采集與傳輸系統,適用于智能
    的頭像 發表于 04-21 15:23 ?1096次閱讀
    (開源<b class='flag-5'>代碼</b>版)手把手教學:DVP攝像頭拍照&amp;上傳功能<b class='flag-5'>示例</b> !

    是否可以使用DMA和LPSPI的3字節大小?

    DMA 傳輸為24字節。 我不需要 CPU 干預,所以一切都需要在 DMA 設置中進行配置,否則就違背了使用 DMA 的目的。 此時,除非我們進一步深入研究,否則我不會分享我的代碼,但我
    發表于 03-17 06:47

    如何獲取SMBus示例代碼

    想找一個用硬件SMBus外設的示例代碼,但是在網上找到的很多都是HAL庫的版本,我目前的代碼是用的標準庫,想知道ST官方有沒有相關的示例代碼
    發表于 03-10 07:16