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.mzph.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当然也可以应用回这些领域…