x264重要结构体详细说明(3): x264_sps_t、x264_pps_t

x264代码剖析(六):encode()函数之x264_encoder_headers()函数 x264代码剖析(六):encode()函数之x264_encoder_headers()函数           encode()函数是x264的主干函数,主要包括x264_encoder_open()函数、x264_encoder_headers()函数、x264_encoder_encode()函数与x264_encoder_close()函数四大部分,其中x264_encoder_en 阅读详情

本博客转载于:http://nkwavelet.blog.163.com/blog/static/227756038201431095653355/


/****************************************************************************************************************

x264_sps_t 序列参数集,该结构体定义在common/set.h中

*****************************************************************************************************************/

typedef struct

{

    int i_id; // sps的id号

    int i_profile_idc; // 指明所用的profile

    int i_level_idc; // 指明所用的level


    /* 
当他们值等于1时,表示必须遵守某些制约条件 */

    int b_constraint_set0;

    int b_constraint_set1;

    int b_constraint_set2;

    int b_constraint_set3;

    int i_log2_max_frame_num; // 表示图像解码顺序的最大取值 

    int i_poc_type;

    int i_log2_max_poc_lsb; // poc 0


    int i_num_ref_frames; // 指定参考帧队列的最大长度,h264规定最多可有16个参考帧

    int b_gaps_in_frame_num_value_allowed;

    int i_mb_width;

    int i_mb_height;

    int b_frame_mbs_only;

    int b_mb_adaptive_frame_field;

    int b_direct8x8_inference; // 指明B片的direct和skip模式下运动矢量的预测方法


    /* 图像裁剪参数 */

    int b_crop;

    struct

    {

        int i_left;

        int i_right;

        int i_top;

        int i_bottom;

    } crop;

    int b_vui;

    struct

    {

        int b_aspect_ratio_info_present;

        int i_sar_width;

        int i_sar_height;


        int b_overscan_info_present;

        int b_overscan_info;


        int b_signal_type_present;

        int i_vidformat;

        int b_fullrange;

        int b_color_description_present;

        int i_colorprim;

        int i_transfer;

        int i_colmatrix;


        int b_chroma_loc_info_present;

        int i_chroma_loc_top;

        int i_chroma_loc_bottom;


        int b_timing_info_present;

        uint32_t i_num_units_in_tick;

        uint32_t i_time_scale;

        int b_fixed_frame_rate;


        int b_nal_hrd_parameters_present;

        int b_vcl_hrd_parameters_present;


        struct

        {

            int i_cpb_cnt;

            int i_bit_rate_scale;

            int i_cpb_size_scale;

            int i_bit_rate_value;

            int i_cpb_size_value;

            int i_bit_rate_unscaled;

            int i_cpb_size_unscaled;

            int b_cbr_hrd;


            int i_initial_cpb_removal_delay_length;

            int i_cpb_removal_delay_length;

            int i_dpb_output_delay_length;

            int i_time_offset_length;

        } hrd;


        int b_pic_struct_present;

        int b_bitstream_restriction;

        int b_motion_vectors_over_pic_boundaries;

        int i_max_bytes_per_pic_denom;

        int i_max_bits_per_mb_denom;

        int i_log2_max_mv_length_horizontal;

        int i_log2_max_mv_length_vertical;

        int i_num_reorder_frames;

        int i_max_dec_frame_buffering;


        /* FIXME to complete */

    } vui;


    int b_qpprime_y_zero_transform_bypass;

    int i_chroma_format_idc;


} x264_sps_t;

/****************************************************************************************************************

x264_pps_t 图像参数集,该结构体定义在common/set.h中

*****************************************************************************************************************/

typedef struct

{

    int i_id; // pps的的序号,在片头被引用

    int i_sps_id; // 本图像参数集所引用的序列参数集的序号

    int b_cabac; // 是否采用cabac编码,为1就是用cabac,为0则使用calvc

    int b_pic_order; // poc的三种计算方法在片层还各需要用一些句法元素作为参数;
// 当等于1时,表示在片头会有句句法元素指明这些参数;

// 当不为1时,表示片头不会给出这些参数

    int i_num_slice_groups; // 加1表示图像中片组的个数


    int i_num_ref_idx_l0_default_active; // 指明目前参考帧队列的长度,即有多少个参考帧(短期和长期),用于list0

    int i_num_ref_idx_l1_default_active; // 指明目前参考帧队列的长度,即有多少个参考帧(短期和长期),用于list1


    int b_weighted_pred; // 是否开启P帧和SP帧的加权预测

    int b_weighted_bipred; // 是否开启B帧的加权预测


    int i_pic_init_qp; // 加26后用以指明亮度分量的量化参数的初始值

    int i_pic_init_qs; // 同上,只是用于SP和SI


    int i_chroma_qp_index_offset; // 色度分量的量化参数是根据亮度分量的量化参数计算出来的,本句法元素用以 // 指明计算时用到的参数表示为在 QPC 值的表格中寻找 Cb色度分量而应加到 // 参数 QPY 和 QSY 上的偏移。该值应在-12 到 +12范围内(包括边界值)

    int b_deblocking_filter_control; // 编码器可以通过句法元素显式地控制去块滤波的强度

    int b_constrained_intra_pred; // 控制PB帧的帧内编码,在P和B帧中,帧内编码的宏块的邻近宏块可能采用帧间编码

    int b_redundant_pic_cnt; // 对于那些属于基本编码图像的条带和条带数据分割块,redundant_pic_cnt等于0;
// 在冗余编码图像中的编码条带和编码条带数据分割块,
redundant_pic_cnt大于0;
// 
当redundant_pic_cnt 不存在时,默认值为 0;redundant_pic_cnt的值应该在0到127之间。

    int b_transform_8x8_mode;

    int i_cqm_preset; // 外部量化矩阵的设置

    const uint8_t *scaling_list[8];  // 缩放比例列表,could be 12, but we don't allow separate Cb/Cr lists


} x264_pps_t;


X264编码流程详解 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如何构建起来一直感觉很神秘,于是决定在理解理论的基础上潜心于编码器实现框架。关于开源的H264编码器有很多,JMVC,T264、X264,这里选择X264,因为网上关于X264源码分析资源很多。X264编码器是一个开源的经过优化的高性能H.264编码器,目前最新的源码在本人的I5处理器的PC机上,编码1920x1080分 阅读详情

相关推荐

FFmpeg常用指令记录&sdp中提取sps/pps信息&sps/pps(STAP-A解析)

FFmpeg常用指令记录&sdp中提取sps/pps信息&sps/pps(STAP-A解析)

尤小白的博客 4234

x264获取sps pps 等信息

通常是通过 x264_nal_t::i_type 判断当前的NAL的类型; 其定义的枚举类型: enum nal_unit_type_e {     NAL_UNKNOWN     = 0,     NAL_SLICE       = 1,     NAL_SLICE_DPA   = 2,     NAL_SLICE_DPB   = 3,     NAL_SLICE_DPC

chinabinlang的专栏 3162

x264编码过程分析(一)概述

雷神 x264编码 先看雷神的 再来看:待整理的一个栏目的博客 这里只摘录个人觉得梗概的部分,详细跳转雷神x264源代码简单分析:概述 x264编码主要分4部分: 1、x264_encoder_open()用于打开编码器,其中初始化了libx264编码所需要的各种变量。它调用了下面的函数: x264_validate_parameters():检查输入参数(例如输入图像的宽高是否为正数)。 ...

qq_42024067的博客 871

X264视频编码分析(4):视频压缩编码VCL

    在前面的过程中,我们得到了编码图像,编码器开始H264视频编码VCL。首先初始化有关参数,包括帧类型的获取、创建多参考帧的列表、初始化码流控制、初始化写码流结构和写SPS、PPS头结构信息。    1.初始化相关参数    若为IDR帧,则意味着一个新图像片的开始。在H264中为了防止编码错误扩散,规定当前片不以本片以外的其他帧为参考,因而编码器遇到IDR帧则需要重置参考帧区域。同时,将S...

为取经而来的博客 1134

x264编码器的参数设置。

我对编码也是一知半解,很多参数意义也不太清楚,基本都是实际调整参数后,观看效果。如果描述错误,勿喷。 我也没打算深入研究,只是想用用该编码器。 本人使用x264主要想调整的参数, 第一,profile,也就是使用baseline还是main,还是high编码。 可以通过该接口设置 x264_param_apply_profile(); 第二, 编码复杂度 param.i_level_

table的专栏 3万+

x264代码剖析(五):encode()函数之x264_encoder_open()函数

x264代码剖析(五):encode()函数之x264_encoder_open()函数           我们知道x264源码从主观上分为两大块,一是解析函数parse(),另一个是编码函数encode()。解析函数parse()较简单,并且不涉及H.264编码算法,故不是重点,所以我们要学习的重点自然而然地就是编码函数encode()了。           encode()函数是x

成长Bar的博客专栏 5320

x264源代码简单分析:编码器主干部分-1

本文分析x264编码器主干部分的源代码。“主干部分”指的就是libx264中最核心的接口函数——x264_encoder_encode(),以及相关的几个接口函数x264_encoder_open(),x264_encoder_headers(),和x264_encoder_close()。这一部分源代码比较复杂,现在看了半天依然感觉很多地方不太清晰,暂且把已经理解的地方整理出来,以后再慢慢补充还不太清晰的地方。

雷霄骅(leixiaohua1020)的专栏 3万+

最权威的从H264码流中,解析出最全的SPS信息. 包括宽高等.

最权威的从H264码流中,解析出最全的SPS信息. 包括宽高等. 包含使用说明

x264编码详细文字全过程

(1)       x264_param_default( x264_param_t *param )  作用: 对编码器进行参数设定 cqm:量化表相关信息                  csp:                            量化表相

beyondhenry的专栏 2303

核回归(Kernel Regression)

本文讲解了核函数,并且实战通过核函数进行了预测,并附python代码

a2333333_的博客 6955

uniapp(全端兼容)-最新详细实现接入腾讯云IM即时通讯教程,uniapp在安卓苹果app端/小程序/h5移动端等集成使用腾讯云im插件,提供消息列表与聊天对话示例,支持发图片/私聊/实时监听消息

uni-app,腾讯云IM,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,im即时通讯,腾讯云IM详细教程,如何接入腾讯IM即时通讯,使用腾讯im有没有插件,怎么使用腾讯云IM插件,tim-wx-sdk,聊天sdk,即时通讯im uniapp私聊/群聊/聊天室,实现IM即时通讯仿微信聊天功能,对接腾讯云IM+音视频,调用腾讯即时通信IM的示例,卡顿很卡不流畅,音视频,全局监听,仿微信IM,uni-huanxin-im,sdk,实现多端实时通

✅ 精选推荐文章 1万+

x264_sps_init

x264_sps_init此函数为序列量化集的初始化。主要对结构体x264_sps_t中参数的初始化。void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param ){    sps->i_id = i_id;首先设置序列参数集的IDb_qpprime_y_zero_transform_bypass判断码率控制方法是否是恒定质量方法并且量化值初始为0.    sps->b_qpprime_y_zero_transform_bypass

android_lee的专栏 1070

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9371

x264 sps pps以及流输出形式

本文主要描述x264中sps pps的nalu如何输出以及x264中写bit流的相关数据结构。

qq_41678939的博客 1906

python实现边缘检测Canny算子 (附完整源码)

python实现边缘检测Canny算子 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 457

ESP32与DS18B20温度传感器的数据采集与告警系统

并且,通过自定义的微信告警功能,我们可以及时收到温度超过阈值的告警消息。随着物联网的快速发展,传感器在各种应用场景中发挥着重要的作用。本文将介绍如何使用ESP32微控制器与DS18B20温度传感器结合,通过串口输出和Web服务器实现温度数据的采集和监控,并使用自定义微信告警功能。上传完成后,打开串口监视器,您将看到ESP32连接到Wi-Fi网络,并开始监测温度。在您的计算机或移动设备上,打开一个Web浏览器,并输入ESP32的IP地址。在浏览器中输入ESP32的IP地址后,您将看到显示当前温度的页面。

loop_class349的博客 2243

h.264中的SPS和PPS

​ 在H.264流中,有两种NALU极其重要,H264码流可以分为两层,VCL层和NAL层,NAL的全称是Network abstractionlayer,叫网络抽象层,它保存了H264相关的参数信息和图像信息,NAL层由多个单元NALU组成,NALU由了NALU头(00 00 00 01或者00 00 01)、sps(序列参数集)、pps(图像参数集合)、slice、sei、IDR帧、I帧(在图像运动变化较少时,I帧后面是7个P帧,如果图像运动变化大时,一个序列就短了,I帧后面可能是3个或者4个

thehunters的专栏 5357

【ArcGIS Pro微课1000例】0023:ArcGIS Pro 3.0中打开GeoPackage数据库(.gpkg)

本文讲解ArcGIS Pro 3.0中打开GeoPackage数据库(.gpkg)的两种方法。

智慧空间实验室 4641

H264 数据提取sps 和 pps 信息

PS:在项目中运用到了硬件编码卡编H264 数据,由于解码需要sps和pps才能解除帧,那么就需要提取sps 和pps。 在使用x264 编码中 可以直接通过帧类型获取到。但是使用硬件编码则需要自己运算,下直接上代码。 软件编码x264 为例: void encodeData(int8_t *data) { // long long int start =printtime(); //编码 pthread_mutex_lock(&mutex); me...

陈柱的博客 1591

MIKE21 教程 3.2 随空间变化的网格文件制作(.dfsu文件制作) 曼宁值网格文件制作

上一节讲解了如何制作时间序列文件。本节讲解如何制作仅随空间变化的文件。 目录 1 数据准备 1.1 基于地形设置 1.2 基于地形水深设置: 2 数据导入 3 数据导出

Hello Word 3940

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

H264_SPS_PPS信息

JNIEXPORT void JNICALL Java_com_dongnaoedu_live_jni_PushNative_fireVideo (JNIEnv *env, jobject jobj, jbyteArray buffer){ //视频数据转为YUV420P //NV21->YUV420P jbyte* nv21_buffer = (*...

nicolelili1的专栏 374

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【Android RTMP】RTMPDump 封装 RTMPPacket 数据包 ( 封装 SPS / PPS 数据包 )

一、 基本封装数据格式说明、 二、 封装 SPS PPS 数据总体说明、 三、 封装头数据、 四、 封装 SPS 数据、 五、 封装 PPS 数据、 六、 设置 RTMP 数据包其它参数、 七、 SPS PPS 数据封装代码示例

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2308

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【ffmpeg】SPS与PPS的实战解析:从提取到应用

本文深入解析了FFmpeg中SPS与PPS的基础概念及实战应用,详细介绍了四种提取方法,包括FFmpeg命令行、十六进制分析、FFprobe输出和Python编程提取。通过实际案例展示了SPS/PPS在视频解码中的关键作用,帮助开发者高效处理视频流问题。

weixin_30839881的博客 434

x264获取sps pps 等信息

通常是通过 x264_nal_t::i_type 判断当前的NAL的类型; 其定义的枚举类型: enum nal_unit_type_e {     NAL_UNKNOWN     = 0,     NAL_SLICE       = 1,     NAL_SLICE_DPA   = 2,     NAL_SLICE_DPB   = 3,     NAL_SLI

yangzhao0001的博客 844
上一篇: x264重要结构体详细说明(2): x264_image_t、x264_picture_t、x264_nal_t
下一篇: x264重要结构体详细说明(4): x264_t
一世豁然
博客等级 码龄15年 1276粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值