FFmpeg中MPEG-4編碼程序追蹤,其他FFMPEG自帶編碼器同理

FFmpeg中與MPEG-4編碼相關的主要文件有mpegvideo.c,h263.c等。

在mpegvideo.c中,
AVCodec mpeg4_encoder = {
???"mpeg4",
???CODEC_TYPE_VIDEO,
???CODEC_ID_MPEG4,
???sizeof(MpegEncContext),
???MPV_encode_init,
???MPV_encode_picture,
???MPV_encode_end,
??? .pix_fmts=(enum PixelFormat[]){PIX_FMT_YUV420P, -1},
???.capabilities= CODEC_CAP_DELAY,
};

MPV_encode_picture()
{
?encode_picture();
}

encode_picture()
{
?//對每個宏塊MB進行運動估計
?estimate_motion_thread();

?encode_thread();
}

encode_thread()
{
?encode_mb_hq();
}

encode_mb_hq()
{
?encode_mb();
}

encode_mb()
{
?encode_mb_internal();
}

encode_mb_internal()
{
?//對單一的宏塊進行運動補償
?MPV_motion();

?//DCT & quantize
?dct_quantize_c();

?//huffman encode
?mpeg4_encode_mb();
}

幀內和幀間的量化矩陣在mpeg4data.h中
const int16_t ff_mpeg4_default_intra_matrix[64] = {
? 8, 17, 18, 19, 21, 23, 25, 27,
?17, 18, 19, 21, 23, 25, 27, 28,
?20, 21, 22, 23, 24, 26, 28, 30,
?21, 22, 23, 24, 26, 28, 30, 32,
?22, 23, 24, 26, 28, 30, 32, 35,
?23, 24, 26, 28, 30, 32, 35, 38,
?25, 26, 28, 30, 32, 35, 38, 41,
?27, 28, 30, 32, 35, 38, 41, 45,
};

const int16_t ff_mpeg4_default_non_intra_matrix[64] = {
?16, 17, 18, 19, 20, 21, 22, 23,
?17, 18, 19, 20, 21, 22, 23, 24,
?18, 19, 20, 21, 22, 23, 24, 25,
?19, 20, 21, 22, 23, 24, 26, 27,
?20, 21, 22, 23, 25, 26, 27, 28,
?21, 22, 23, 24, 26, 27, 28, 30,
?22, 23, 24, 26, 27, 28, 30, 31,
?23, 24, 25, 27, 28, 30, 31, 33,
};



D、量化矩陣

mpeg中的量化是對8x8 YUV 信號圖塊進行DCT變換之后的系數的量化。通過對高頻分量使用比較大的量化階從而達到減小高頻分量的編碼空間,達到壓縮的目的。代價就是喪失圖像細節,邊緣模糊等。

1)幀內編碼量化矩陣:這是指對I幀使用的幀內編碼量化矩陣

2)幀間編碼量化矩陣:是指對非I幀的幀間預測誤差編碼所用的量化矩陣。威龍漢化版中叫外部矩陣

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254486.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254486.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

符合skyline的3dml網絡發布服務

技術交流群:665060698使用java web實現;接口符合skyline的3dml模型形式;通過簡單的發布界面,直接發布3dml模型;實現te pro在客戶端讀取數據;實現在te pro客戶端的對應查詢功能;負載可以達到skyl…

Texture Inspection 紋理檢驗halcon算子,持續更新

目錄deviation_imageentropy_imagetexture_lawsdeviation_image 功能:計算矩形窗口內的灰度值的標準偏差。 entropy_image 功能:計算矩形窗口內的灰度值的平均信息量。 texture_laws 功能:使用一個Laws文本濾波器(地質變形&a…

51NOD 1125(交換機器最小代價) (貪心) 思想 !思想!

題目鏈接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId1125 1125 交換機器的最小代價基準時間限制:1 秒 空間限制:131072 KB 分值: 80 難度:5級算法題收藏關注有N臺機器重量各不相等,現在要求把這些機器按照…

《Python從小白到大牛》簡介

《Python從小白到大牛》已經上市! 本書是一部系統論述Python編程語言、OOP編程思想以及函數式編程思想的立體化教程(含紙質圖書、電子書、教學課件、源代碼與視頻教程)。為便于讀者高效學習,快速掌握Python編程方法。本書作者精心…

c語言基礎知識_結構體訪問,共同體,枚舉類型

C語言結構體變量的引用:對于定義的結構體類型的普通變量,訪問其成員用圓點運算符(“.”),標準訪問方式如下:   結構體變量名.成員名   對于定義為指向結構體的指針變量,用箭頭運算符&#x…

Wiener Filter維納濾波器halcon算子,持續更新

目錄gen_psf_defocusgen_psf_motionsimulate_defocussimulate_motionwiener_filterwiener_filter_nigen_psf_defocus 功能:產生一個均勻散焦模糊的脈沖相應。 gen_psf_motion 功能:產生一個(線性)運動模糊的脈沖相應。 simula…

【轉載】數據庫操作:添加、插入、更新語句

原始日期: 2016-07-22 12:03 SQL常用命令使用方法:(1) 數據記錄篩選:sql"select * from 數據表 where 字段名字段值 order by 字段名 [desc]"sql"select * from 數據表 where 字段名 like %字段值% order by 字段名 [desc]&qu…

webpack學習

全局安裝安裝webapck npm i webpack -g 現在我們就可以全局的使用webpack命令了 webpack中基礎的命令: webpack enter.js output.js --watch 這個命令是將enter.js打包成output.js,然后html只需要引用該文件就可以了看如下entry.js,這是簡單的js代碼。 /…

3D 相機halcon算子,持續更新

目錄add_scene_3d_cameraadd_scene_3d_instanceadd_scene_3d_labeladd_scene_3d_lightclear_scene_3dcreate_scene_3ddisplay_scene_3dget_display_scene_3d_inforemove_scene_3d_cameraremove_scene_3d_instanceremove_scene_3d_labelremove_scene_3d_lightrender_scene_3dset…

Selenium 中文API

Selenium 中文API 轉自:http://blog.csdn.net/lh9529/article/details/3946567 概念 Selenium 通過命令進行驅動。Selenium 可歸納為三種“風格”:動作、輔助和斷言。每一個命令調用就是下表中的一行。 命令 目標 值 動作(Actions)命令一般用于操作應用…

C# 特性(Attribute)

個人定義:不侵入對象的情況下,添加對象附注信息。 官方定義:將預定義的系統信息或用戶定義的自定義信息與目標元素相關聯。目標元素可以是程序集、類、構造函數、委托、枚舉、事件、字段、接口、方法、可移植可執行文件模 塊、參數、屬性 (…

收集js庫的網站

https://www.javascripting.com/view/redux

c語言中有關void,sizeof,結構體的一些問題

void[1]:void是C語言中的空類型,void的用途有二。 1、對函數返回的限定; 如果函數沒有返回值,則默認返回整數類型,而不是void類型。c有很嚴格的類型,不允許函數不加類型聲明,而編譯器則不這么認…

Drawing繪圖halcon算子,持續更新

目錄drag_region1drag_region2drag_region3draw_circledraw_circle_moddraw_ellipsedraw_ellipse_mod_draw_linedraw_line_moddraw_nurbsdraw_nurbs_interpdraw_nurbs_interp_moddraw_nurbs_moddraw_pointdraw_point_moddraw_polygondraw_rectangle1draw_rectangle1_moddraw_re…

搞明白這八個問題,Linux系統就好學多了

正在猶豫入坑Linux學習的同學或者已經入坑的同學,經常會問到這樣八個問題。今天,這些問題我都會一一解答,希望我的看法能幫助各位同學。常言道“好的開始是成功的一半”,如果你明白了以下八個問題,就能有一個很好的開始…

從ORA-27300,ORA-27301到ORA-00064

近期因為session數量添加,須要調整session,也就是要調整process參數。看是比較簡單的一個問題,卻遭遇了ORA-27300,ORA-27301。因為這個涉及到了有關內核參數kernel.sem的改動。以下是其詳細描寫敘述。1、故障現象OS版本號&#xf…

Halcon|讀取3D相機點云數據

Halcon|讀取3D相機點云數據 最近發現很多小伙伴在使用Halcon處理3D工業相機掃描結果的時候遇到了“如何讀取”的問題。一般的3D工業相機儲存數據的格式有txt格式、tif格式、csv格式、ply格式、ptx格式、bin格式、obj格式等。 txt格式 讀取txt文件生成3D模型一般需要分析txt文件…

FFMPEG解碼流程

1. 注冊所有容器格式和CODEC: av_register_all() 2. 打開文件: av_open_input_file() 3. 從文件中提取流信息: av_find_stream_info() 4. 窮舉所有的流,查找其中種類為CODEC_TYPE_VIDEO 5. 查找對應的解碼器: avcodec_find_decoder() 6. 打開編解碼器: avcodec_open…

linux用戶登錄指定目錄

一、創建用戶和用戶組 [rootweb4 lianyu]# groupadd lianyu [rootweb4 lianyu]# useradd lianyu -g lianyu [rootweb4 lianyu]# passwd lianyu二、用戶登錄指定目錄 [rootweb4 lianyu]# cd /home/lianyu [rootweb4 lianyu]# ls -a . .. .bash_history .bash_logout .bas…

轉載:說一下AI的前景吧

發信人: wdong (萬事休), 信區: Stock標 題: 說一下AI的前景吧這一波AI和前兩年的big data,根本就是兩回事。big data這一波,主要是用數據分析來支撐起各種現有系統的改進,包括銷售業績的提高和用戶體驗的提高等。AI當然也可以應用回這些領域…