X264.c: main X264.c:Encode 设置打开文件的方式 x264_param_default 设置编码器默认参数

Slides:



Advertisements
Similar presentations
元大京華證券 組員名單 : A 楊之奇 A 廖本揚 A 宋俊承 A 陳冠廷 A 郭峻瑋 A 指導教授 : 許素華 副教授.
Advertisements

達悟族報告 作者 : 林琪崴, 許原碩 座號 :13 號,14 號 原碩負責 : 簡介, 傳說, 圖驣, 達悟族飛魚季, 琪崴 : 地理位置, 土地利用方式, 飲食文化, 豐收祭.
主讲:张天明 影像艺术工程师. 声音的聆听 指出听到的是什么物体发出的声音,这一 声音是在什么样的空间环境中传播的。 一、 答案: 1 、打气筒打气的声音 2 、手打打气筒给足球打气的声音 3 、手打打气筒给自行车轮胎打气的声音 4 、七次(七声)打气筒打气的声音 5 、(气流)摩擦的声音 6 、猪在发急时的叫声.
概念導向命題技巧與試題分析 臺灣師大地理系 陳國川. 教學評量是一種『抽樣調查』 實施教學評量時,需具備二項條件: 其一,瞭解命題的理論及其實踐的方法; 其二,瞭解各種題型的功能與命題方式。 壹、前言.
第十八章 林肯大郡 第十八章 林肯大郡災變緊急搶救應變措施 1997 年 8 月 18 日溫妮颱風襲台,汐止鎮 的林肯大郡山崩,遭崩場土石撞擊 1997 年 8 月 18 日溫妮颱風襲台,汐止鎮 的林肯大郡山崩,遭崩場土石撞擊造成二十八人罹難八十戶住宅倒塌的慘劇 此災變要喚起國人的重視 本章介紹搜救行動緊急應變措施。
高峰植物園行前解說 2005/12/07 By 羽明. 陽性先驅物種 陽性植物 --- 陽光需求量大 陰性 ( 或耐蔭性 ) 植物 --- 陽光需求量少, 或 日照太強反而無法生存 先驅植物 --- 森林大火或土石流地震後產生的 裸露空地, 先生長出來的植物.
報 告 人 : 胡 嘉 琪 ˙ˇ˙ 、 王 紫 庭 = ˇ = 台灣夜市文化 作者: 郭明澤‧私立明道高中‧綜二 4 班 馬炯修‧私立明道高中‧綜二 4 班.
5 ˙ 1 第五章 生物的協調作用 5 ‧ 1 神經系統. 5 ˙ 1 人體的神經系統 1. 協調動物生理反應的系統: 神經 系統、 內分 泌 系統。 2. 神經系統負責 統整 和 協調 。分為 中樞 神經 和 周圍 神經。 (1) 中樞神經包括 腦 和 脊髓 。 (2) 周圍 神經包括 腦神經 和.
从《西游》看大学生的成长 主讲人:颜廷学 时间: 地点:演艺大楼流行剧场.
新员工培训 设计部 思安新能源股份有限公司 主讲人: 韩少华 时 间:
前言:河流的主要功能 1. 交通運輸 優點-運費低廉,維護費用低 缺點-速度慢,裝載費時,不能到達生產區或消費區 的末端,需要轉載。 尚受到河流網路,河口位置,水量變化,河床 狀況,冰封時期 2. 水資源系統.
幽夢影~張潮 小佑子工作室 關於《幽夢影》 作者張潮,記寫他個人對人生世事之體驗透悟的 書。 書中文字,全為「語錄」形式,屬於格言,也是 最精鍊的隨筆。 全書可分為九卷:論才子佳人、論人與人生、論 朋友知己、論讀書、論閒情逸趣、論立身處世、 談文論藝、論四時佳景、論花鳥蟲魚。
成人高考高起点 语文 冲刺班 主讲老师:邓君媚. 复习指导 高考语文含四大块内容: 语言知识和语言表达,古代诗文阅读,现 代文阅读,写作。 在全面复习的前提下,按照《考试大纲》 的要求,要做好思路整理,建立高考的整体框 架的工作。认真归纳整理基础知识、培养基本 能力,复习做到有的放矢。 复习指导.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
老师,我可以不 爱 吗? 山东省淄博市张店区实验中学 杜桂兰 星期一的早晨,我紧张而又兴奋,因为 我的赛教课就要开始了。 这是一次级别很 高 的竞赛。
财政部 国家税务总局 中国人民银行(央行) 银监会 证监会 保监会. 法定存款准备金率 利率 税率 政府投资 楼继伟,周小川,易纲.
油蔴菜籽 指導老師:陳瑜霞 學生: 商設一甲 謝旻璇 車輛三乙 許勝傑 工管四甲 彭凱雲. 作者介紹: 廖輝英( 1948 年生)臺大中文系畢業。 從初三開始寫作,早期作品多以散文為主,大四 畢業時才暫時封筆。畢業後進了廣告界,成為廣 告文案好手,後為企畫主管,在廣告界縱橫十餘 年,也曾任職於建設公司,辦過社區報高雄一周。
蘭嶼情人洞傳說 林庭羽製 林庭羽製. 台灣的蘭花特別多,台灣有個蘭 嶼島,島上面的蘭花更多.所以 叫蘭嶼.這裡留下了動人的傳說。
職業訪談報告. 成員 : 鐘怡君 劉沛君 謝明達 賴映辰.
南台科大幼保實習課程 見習幼兒園心得報告 夜四技幼保四甲 998i0021 黃欣婷.
第一章 生殖 1‧2 無性生殖.
高教三十条 — 科技创新能力提升 科技创新能力提升工程方案起草小组 2013年7月4日.
你不可不知之 十二年國教二三事 教務主任:傅瑞琪.
鞋 楦 的 材 質.
最古怪的15種動物.
走! 一起去拜訪筏子溪.
台灣文學館之旅.
AVS视频编码标准 常丽娜 2004/12/06.
日期: 六 福 村.
时间与我们的世界 Pb 段心蕊.
目錄 服務地點 南寮 世光教養院 飛鳳山 長安養老院 尖石國小 內灣 大華停車場 上智國小 二重國中 班級 領隊教師 參與人數 (人次)
基隆市中正國中100年度 教師輔導專業成長暨個案研討會 ~~高風險家庭及高關懷學生的相關輔導~~
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
企业税收筹划与税务风险管理 暨南大学财税系 沈肇章.
爱的表达方式.
?????? ?????? ?????? 他是我生的 我愛怎樣就怎樣 這樣對嗎? 影片欣賞.
第六章 社会主义初级阶段理论 第一节 社会主义初级阶段是我国最大的实际 第二节 社会主初级阶段的基本路线和基本纲领
股市不傳之秘 甘氏矩陣圖/價格推算 簡介、基礎學習步驟 1、學習觀念 2、基礎看圖法 A.大數推算 B.基礎角度線推算.
大肚宮廟巡禮 下一頁.
大嶼山 香港國際機場 及 寶蓮寺.
Oracle数据库 Oracle 子程序.
心理危机与应对 陈小华.
在PHP和MYSQL中实现完美的中文显示
游子心 中华情 美国大华府地区华人华侨 庆祝中国六十周年华诞.
第2章 Z变换 Z变换的定义与收敛域 Z反变换 系统的稳定性和H(z) 系统函数.
Hadoop I/O By ShiChaojie.
H.264/AVC视频编解码技术概念与实现.
多媒体技术基础(第3版) 第13章 MPEG-4 AVC/H.264视像
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第一讲: 基本流程(1).
Online job scheduling in Distributed Machine Learning Clusters
数据挖掘工具性能比较.
多媒体技术 中南大学信息科学与工程学院 黄东军.
图片与视频数字化. 图片与视频数字化 图片分类 根据图片的构成元素来分 位图: 由像素组成,计算机按顺序存储每个像素点 的颜色信息的保存方式获得的图片。 位图放大后会模糊失真,存储空间相对较大。 矢量图: 由图元组成,通过数学公式计算获得的图片。 放大后不会失真,占用空间小。
谢谢你: 我只对编码部分整体的看了一边,理解很浅显,希望你看完之后能够帮我指正一下。
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
香港傳統的農村生活.
姚金宇 MIT SCHEME 使用说明 姚金宇
第4章 Excel电子表格制作软件 4.4 函数(一).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
多媒体技术 中南大学信息科学与工程学院 黄东军.
3.16 枚举算法及其程序实现 ——数组的作用.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
滤波减速器的体积优化 仵凡 Advanced Design Group.
图片与视频数字化. 图片与视频数字化 图片分类 根据图片的构成元素来分 位图: 由像素组成,计算机按顺序存储每个像素点 的颜色信息的保存方式获得的图片。 位图放大后会模糊失真,存储空间相对较大。 矢量图: 由图元组成,通过数学公式计算获得的图片。 放大后不会失真,占用空间小。
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
由一个佯谬看涡旋电流的存在 PB 田鸿翔 指导老师 万树德.
Presentation transcript:

X264.c: main X264.c:Encode 设置打开文件的方式 x264_param_default 设置编码器默认参数 _setmode x264_param_default 设置编码器默认参数 读取命令行并分析 Parse 编码Encode X264.c:Encode 设置输出文件参数 p_set_outfile_param 得到总帧数 p_get_frame_total 初始化编码器 x264_encoder_open 为新图分配空间 x264_picture_alloc 更新,清理图片区, 关闭解码器,关闭输入输出文件 对帧编码 Encode frame 延迟的B帧

X264:Encode_Frames 调用 x264_encoder_encode 进行编码 不强制任何参数 编码NAL层 x264_nal_encode p_write_nalu 写入 图片结束 Encoder.c: x264_encoder_encode 移动一些B 帧 和一个非B帧到编 码队列中去 编码 Do encode 将图片copy一帧 并且移动到一个 缓冲器 获得要被编码 的帧 选择帧类型 更新编码器状态 判断是否存放 重建的帧 计算和打印 统计值 设置输出 图片属性

Encoder.c: do encode 初始化 (参考列表,bit率控制) 设置帧上下文 (初始化帧类型) 创建切片头部 写入bit流:初始化bit流上下文 ->写入序列参数信号和图片 参数信号->写入切片数据 (x264_slice_write)->bit流 结束,设置输出。

x264_macroblock_analyse 初始化状态参数 memset Encoder.c: x264_slice_write NAL单元开始 x264_nal_start 写切片头部 x264_slice_header_write 如果是cabac编码 初始化上下文以及编码器 编码开始 装载缓冲区 x264_macroblock_cache_load 分析宏块参数 x264_macroblock_analyse 宏块编码 x264_macroblock_encode

x264_macroblock_cache_save 是否为 cabac编码 是 否 是否为 跳过宏块 是否为 跳过宏块 是 是 否 否 写入cabac编码 x264_macroblock _write_cabac 写入cavlc编码 x264_macroblock _write_cavlc 进行相关处理 x264_cabac_mb_skip 进行相关处理 i_skip++ 写入结束 End 保存缓冲区数据 x264_macroblock_cache_save 编码结束(cabac或者cavlc) bs_rbsp_trailing NAL单元编码结束 x264_nal_end X264_ 20060805版本

x264_macroblock_write_cavlc 是否为 跳过宏块 是 否 是 是否为 cabac编码 否 写入cabac编码 x264_macroblock _write_cabac 写入cavlc编码 x264_macroblock_write_cavlc 进行相关处理 写入结束 End 保存缓冲区数据 编码结束(cabac或者cavlc) NAL单元编码结束 孔德明_版本

Analysis.c : x264_macroblock_analyse 设置QP 并且避免QP变化太快 对分析进行初始化 分析开始 P 判断切片类型 B I 进行帧内模式分析 比较16*16和4*4 子块模式 B切片分析 P切片分析 从分析中更新 宏块 宏块分析结束

P P切片分析 否 是 检查是否为 跳过P宏块 分析加载花费 分析帧间 16*16模式 相关处理 是 是否为16*16 子块模式 8*8子块 否 选择最好的 帧间模式 检测到16*16子 块信号并且帧内8*8花费 小于16*16运动 估计花费 是 分析帧间8*8子块 否

分析帧间 16*8/8*16子块 进行1/4象素加工 最佳帧内宏块模式 分析,并对色度和亮度 成分分别附值 P切片分析结束

判断是否为 直接模式 B切片分析 是 否 进行相关处理 判断是否为 skip模式 是 否 分析加载花费, 直接模式和 帧间16*16模式 是否收到16*16 子块信号 否 分析帧内8*8, 8*16,16*8子块 加工1/4象素精度

最佳帧内宏块 模式分析 B切片 分析结束

Macroblock.c: x264_macroblock_encode 判断是否为 跳过P宏块 是 x264_macroblock_ encode_pskip( h ) 否 判断是否为 跳过B宏块 是 x264_macroblock_ encode_skip( h ) 否 量化缩放 I 16*16 判断宏块类型 I 4*4 x264_mb_encode _i16x16 x264_mb_encode _i4x4 Inter MB 运动补偿x264_mb_mc 16×16DCT变换 分别对每一个4×4块量化和z扫描 以及对每一个8×8的块进行化简 色度编码开始

存储cbp: coded_ block_ pattern 量化放缩 判断是否为skip模式, 并进行相关处理 x264_mb_encode_8x8 色度编码结束 计算亮度色度句型,以及非零计数 存储cbp: coded_ block_ pattern 检查P/B跳过情况, 进行相应处理 宏块编码结束

Encoder.c: x264_mb_encode_i16x16 读取 h->mb.pic.p_fenc[0]中的数据, 对其进行16*16dct变换,系数存放 在一个三维数组(17*4*4)里边, 的dct[1][][]中 进入循环16次 对每一个4*4块进行编码 将所有的4*4块的dc系数,按照 一定顺序存放在Dct[0][ ] [ ]中 量化Z扫描,结果存放于 h->dct.block[i].residual_ac 反量化所有dct[1][][]中的系数 是 i<16 否 对dct[0][][]中的所有dc系数 进行量化和扫描,解雇存放于 h->dct.luma16x16_dc 重建块(idct,反量化),并将结果 存放入h->mb.pic.p_fdec[0] 宏块编码结束

Encoder.c: x264_mb_encode_i4×4 对4*4子块dct变换从p_src和p_dst 取出数据变换以后放在dct4*4中 对dct4*4量化 4*4 Z字型全扫描结果存放于 h->dct.block[idx].luma4x4 对dct4*4 中的数据解量化 对dct4*4中的数据进行idct变换, 结果放置于p_dst 中,用于重建 编码结束

common\macroblock.c:x264_mb_mc 判断宏块类型 为使用列表0预测的 16*16预测模式 如果宏块类型为 P8*8或者B8*8 是否为B跳过 或者直接模式 分三种情况进行处理 (16×16,16×8,8×16) x264_mb_mc_0xywh 是 否,即为其 他B模式 x264_mb_mc_direct8x8 分为D_L0,D_L1,以及B预测 三大种种情况进行讨论分别调用: x264_mb_mc_0xywh x264_mb_mc_1xywh x264_mb_mc_01xywh x264_mb_mc_direct8x8 进行处理 初始化参考列表 判断宏块部分类新 D_16x16 End D_16x8 D_8*16

Macroblock.c: x264_mb_encode_8x8(编码色度成分) 对色度成分进行 8×8子块dct变换 对每一个4×4子块进行处理: 存储dc系数,量化,z扫描,反量化 对每一个子块的dc系数进行单独处理 量化,z扫描 对每一个子块的dc系数进行反变换和反量化 用于重建块 判断如果为B帧间模式并且简化参数足够低则: 该8*8块几乎没有色度数据因此把它置为空, 这样作可以节省bit 对整块进行反dct变换,用于重建 结束

Cavlc.c:x264_macroblock_write_cavlc 判断切片类型I,P,B 写入宏块类型,预测,和运动矢量 是 是否为I_PCM类型 写入哥伦布函数 bs_ write _ue 否 是否为I_4×4类型 是 补齐0 写入哥伦布函数 bs_ write _ue 分别写入Y, Cr, Cb值 并且返回 是 是否为I_16×16类型 为每一个4*4亮度子块进 行预测返回预测模式 结束 跳出类型判断 写入亮度和色度 的预测类型 否 写入每一个亮度4×4 子块的预测模式 是否为P_L0类型 是 写入色度的预测模式 判断宏块部分的类型 (16×16,16×8,8×16) 否 跳出类型判断 写入部分类型,针对每种不同类型 写入参考帧号和预测矢量 跳出类型判断

x264_sub_mb_mv_write_cavlc block_ residual_ write_ cavlc 是否为P_8×8类型 是 写入子宏块类型 否 是否为B_8×8类型 是 写入4个参考图像索引 写入宏块类型 否 是否为B直接类型 写入子宏块的mvd? x264_sub_mb_mv_write_cavlc 否 写入子块类型 跳出宏块类型判断 是 写入参考帧索引 初始化参考列表 直接写0 写入残差块,注意对B宏 块来说是两个残差分量 写入宏块类型 跳出宏块类型判断 写入参考帧索引 写入mvd 写入编码的块的句型 写入残差数据 block_ residual_ write_ cavlc 结束