日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AV1学习笔记一

發布時間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AV1学习笔记一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最新webrtc版本已經支持AV1編解碼功能,實測性能和質量真有很大的進步空間,另外potplay、VLC也支持AV1解碼播放功能。

一、接口函數

根據webrtc代碼總結AV1函數調用框架如下:

?

  • aom_codec_enc_config_default(aom_codec_iface_t *iface,aom_codec_enc_cfg_t *cfg, unsigned int usage)

? ? ? ? 注冊編碼器,獲取注冊的編碼器的默認編碼參數集。

? ? ? ??aom_codec_iface_t *iface:要使用的編碼器句柄指針。里面包含編碼器使用的接口函數,默認配置參數。

? ? ? ??aom_codec_enc_cfg_t *cfg:編碼器實際使用參數指針。這里是出參,需要根據usage在iface里面找到一組默認參數。

? ? ? ??usage:默認參數組序號。在webrtc代碼里面,可以參考encoder_usage_cfg定義。

  • aom_img_alloc

? ? ? ? 申請輸入編碼數據緩存buf

  • aom_codec_enc_init

? ? ? ?根據aom_codec_iface_t、aom_codec_enc_cfg_t初始化aom_codec_ctx_t句柄。并調用aom_codec_iface_t.encoder_init函數初始化編碼器。

  • aom_codec_control

? ? ? 根據需要,動態調整編碼參數。可以參考aom_codec_av1_cx_algo.encoder_ctrl_maps定義。可調整的參數列表參考encoder_ctrl_maps定義。可修改的參數列表在aom_com_control_id、aome_enc_control_id里面定義。??

  • aom_codec_encode

? ? ? ?輸入編碼器待編碼參數,進行編碼。

  • aom_codec_get_cx_data

? ? ? 獲取編碼后數據

  • aom_codec_enc_config_set

? ? ? 動態調整編碼參數。可通過調整aom_codec_enc_cfg_t參數,生效編碼器。

  • aom_img_free

? ? ?釋放編碼數據緩存buf

  • aom_codec_destroy

? ? ?釋放編碼器申請資源

?

二、接口參數

aom_codec_enc_cfg結構體定義

參數名稱參數類型參數含義參數配置
g_usageunsigned int自定義參數組編號webrtc里面自定義編碼:
AOM_USAGE_GOOD_QUALITY (0)
AOM_USAGE_REALTIME (1)
g_threadsunsigned int最大可使用線程數?
g_profileunsigned int編碼器可支持的格式集合PROFILE_0:8-bit 4:2:0 only
PROFILE_1:8-bit 4:4:4, 4:2:2, and 4:4:0
PROFILE_2:10-bit and 12-bit color only, with 4:2:0 sampling.
PROFILE_3:10-bit and 12-bit color only, with 4:2:2/4:4:4/4:4:0 sampling.
g_wunsigned int?
g_hunsigned int?
g_bit_depthaom_bit_depth_t編碼器支持的位深AOM_BITS_8
AOM_BITS_10
AOM_BITS_12
g_input_bit_depthunsigned int輸入編碼器數據位深?
g_timebaseaom_rational視頻采樣率?
g_error_resilientaom_codec_er_flags_tEnable error resiliency featuresAOM_ERROR_RESILIENT_DEFAULT
AOM_ERROR_RESILIENT_PARTITIONS
g_passaom_enc_passpass參數AOM_RC_ONE_PASS
AOM_RC_FIRST_PASS
AOM_RC_LAST_PASS
g_lag_in_framesunsigned int預編碼幀數?
rc_dropframe_threshunsigned int時間重采樣閾值?
rc_resize_modeunsigned int下采樣模式調整RESIZE_NONE:不調整分辨率.
RESIZE_FIXED:所有幀都按照指定參數調整分辨率,關鍵幀按照rc_resize_kf_numerator調整,非關鍵幀按照rc_resize_numerator調整
RESIZE_DYNAMIC:動態調整每一幀的分辨率
rc_resize_numeratorunsigned int非關鍵幀調整系數?
rc_resize_kf_numeratorunsigned int關鍵幀調整系數?
rc_superres_modeunsigned int上采樣模式調整SUPERRES_NONE:不調整分辨率.
SUPERRES_FIXED:所有幀都按照指定參數調整分辨率,關鍵幀按照rc_superres_kf_numerator調整,非關鍵幀按照rc_superres_numerator調整
SUPERRES_DYNAMIC:動態調整每一幀的分辨率
rc_superres_numeratorunsigned int非關鍵幀調整系數?
rc_superres_kf_numeratorunsigned int關鍵幀調整系數?
rc_end_usageaom_rc_mode碼控模式AOM_VBR:Variable Bit Rate mode
AOM_CBR:Constant Bit Rate mode
AOM_CQ:Constrained Quality mode
AOM_Q:Constant Quality mode
rc_twopass_stats_inaom_fixed_buf_t2pass統計?
rc_firstpass_mb_stats_inaom_fixed_buf_t1pass統計?
rc_target_bitrateunsigned int目標碼率?
rc_min_quantizerunsigned int最小QP?
rc_max_quantizerunsigned int最大QP?
rc_undershoot_pctunsigned int可上浮目標碼率比例?
rc_overshoot_pctunsigned int可下浮目標碼率比例?
rc_buf_szunsigned int解碼端需分配的緩存buf?
rc_buf_initial_szunsigned int開始解碼時,解碼端需分配的緩存buf?
rc_buf_optimal_szunsigned int解碼端需分配的最優緩存buf?
rc_2pass_vbr_bias_pctunsigned intCBR/VBR bias (0=CBR, 100=VBR)?
rc_2pass_vbr_minsection_pctunsigned intGOP min bitrate (% of target)?
rc_2pass_vbr_maxsection_pctunsigned intGOP max bitrate (% of target)?
kf_modeaom_kf_mode配置I幀間隔AOM_KF_AUTO:自適應I幀間隔
AOM_KF_DISABLED:固定I幀間隔
kf_min_distunsigned int最小I幀間隔?
kf_max_distunsigned int最大I幀間隔?

?

總結

以上是生活随笔為你收集整理的AV1学习笔记一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。