91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)置I幀的QP的示例代碼

YCqV_FPGA_EETre ? 來(lái)源:博客園 ? 作者:HankFu ? 2021-10-20 11:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

介紹

在有些應(yīng)用中,發(fā)現(xiàn)I幀不夠大。MPSoC VCU CtrlSW可以設(shè)置每一幀的QP大小。因此,可以通過(guò)設(shè)置I幀的QP,提高I幀的大小,從而提高I幀的質(zhì)量。

代碼

下面是設(shè)置I幀的QP的示例代碼。

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

#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長(zhǎng)度
在EncoderSink 的EncoderSink函數(shù)設(shè)置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
 
    }

設(shè)置QP

在EncoderSink 的ProcessFrame函數(shù)里,根據(jù)GOP長(zhǎng)度,確定每個(gè)GOP開始的I幀。然后再設(shè)置QP的值。可以試試20-35之間的QP值。QP值是20時(shí),能帶來(lái)很好的圖像質(zhì)量。

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++;
  }
責(zé)任編輯:haq
責(zé)任編輯:haq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73999
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    616

    瀏覽量

    29511

原文標(biāo)題:設(shè)置I幀的QP,提高I幀的質(zhì)量

文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于Matter over Thread的照明應(yīng)用示例簡(jiǎn)要設(shè)置步驟

    在Silicon Labs(芯科科技)近期更新的技術(shù)支持文檔頁(yè)面中,我們?cè)敿?xì)描述了運(yùn)行一個(gè)基于Matter over Thread的照明應(yīng)用示例的簡(jiǎn)要設(shè)置步驟。
    的頭像 發(fā)表于 02-03 14:03 ?383次閱讀
    基于Matter over Thread的照明應(yīng)用<b class='flag-5'>示例</b>簡(jiǎn)要<b class='flag-5'>設(shè)置</b>步驟

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

    在追求高密度集成的設(shè)計(jì)中,如何避免線路錯(cuò)配和簡(jiǎn)化后續(xù)調(diào)試與維修,是一大挑戰(zhàn)。TE Connectivity (以下簡(jiǎn)稱“TE”)近期推出的QP 6.5 多色電源連接器,正是應(yīng)對(duì)這一挑戰(zhàn)的關(guān)鍵解決方案。
    的頭像 發(fā)表于 01-12 11:22 ?455次閱讀

    中穎電子8位單片機(jī)的I/O設(shè)置介紹

    在嵌入式系統(tǒng)設(shè)計(jì)中,單片機(jī)的I/O端口設(shè)置是基礎(chǔ)且關(guān)鍵的一環(huán)。今天我們來(lái)詳細(xì)解析中穎電子8位單片機(jī)的I/O設(shè)置,幫助工程師更好地理解和應(yīng)用。
    的頭像 發(fā)表于 12-30 09:37 ?739次閱讀
    中穎電子8位單片機(jī)的<b class='flag-5'>I</b>/O<b class='flag-5'>設(shè)置</b>介紹

    MCU軟件核心庫(kù)及示例代碼速覽 !

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

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

    最近我在項(xiàng)目中使用了芯源的CW32 MCU,這是一款非常適合物聯(lián)網(wǎng)和低功耗應(yīng)用的微控制器。在初步學(xué)習(xí)和使用中,我做了一個(gè)簡(jiǎn)單的LED閃爍實(shí)驗(yàn),通過(guò)這篇帖子給大家分享一下代碼及相關(guān)的配置步驟。 硬件
    發(fā)表于 12-04 06:52

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

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

    請(qǐng)問(wèn)如何構(gòu)建 emWin 示例代碼?

    如何構(gòu)建 emWin 示例代碼
    發(fā)表于 09-04 07:25

    如何使用20829 can-fd發(fā)送64字節(jié)擴(kuò)展標(biāo)識(shí)符數(shù)據(jù)?

    親愛(ài)的先生, 基于MTB代碼示例CAN_FD,它使用11位標(biāo)準(zhǔn)標(biāo)識(shí)符數(shù)據(jù)。 更改為29位擴(kuò)展標(biāo)識(shí)符數(shù)據(jù),并將RX / TX FIFO更改為64Bytes,將
    發(fā)表于 08-04 06:56

    CYW20721如何在A2DP接收器中更改I2S時(shí)鐘設(shè)置?

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

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

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

    如何獲取用于開發(fā)fx2的sdk和示例代碼?

    大家好 我正在使用 FX2 設(shè)備,以前也使用過(guò) FX3 設(shè)備。 使用 FX3 設(shè)備 SDK,當(dāng)我下載它時(shí),我在安裝文件夾中獲得了許多示例代碼,但是它沒(méi)有 FX2 的示例代碼,我如何
    發(fā)表于 05-07 07:25

    ESP32P4示例工程中有用的i2c-tools調(diào)試工程

    有用的示例工程 開發(fā)過(guò)程調(diào)試是個(gè)令人頭疼的問(wèn)題,在程序正式運(yùn)行起來(lái)之前,需要借助其他的工具來(lái)調(diào)試硬件、檢驗(yàn)代碼邏輯是否正確。樂(lè)鑫的示例代碼中有個(gè)使用串口控制臺(tái)調(diào)試
    發(fā)表于 05-03 18:25

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

    通過(guò)本開源示例即可完成DVP攝像頭的拍照、圖像預(yù)處理及云端上傳全流程。示例代碼包含完整工程、硬件配置說(shuō)明及調(diào)試技巧,從環(huán)境搭建到功能實(shí)現(xiàn),一步步帶你構(gòu)建穩(wěn)定可靠的圖像數(shù)據(jù)采集與傳輸系統(tǒng),適用于智能
    的頭像 發(fā)表于 04-21 15:23 ?1101次閱讀
    (開源<b class='flag-5'>代碼</b>版)手把手教學(xué):DVP攝像頭拍照&amp;上傳功能<b class='flag-5'>示例</b> !

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

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

    如何獲取SMBus示例代碼?

    想找一個(gè)用硬件SMBus外設(shè)的示例代碼,但是在網(wǎng)上找到的很多都是HAL庫(kù)的版本,我目前的代碼是用的標(biāo)準(zhǔn)庫(kù),想知道ST官方有沒(méi)有相關(guān)的示例代碼
    發(fā)表于 03-10 07:16