AFD主要用在视频处理领域,基本的概念这里不介绍,这里主要介绍的是AFD编码代表的意思,以及和bar data的关系,关于这部分的标准可以参考ETSI TS 101 154文档。

1.AFD编码代表的意思:

0000:AFD未定义或不可用;
0001:保留未用;
0010:16:9的制作图像(image),源码帧(coded frame)为4:3时,top对齐,bottom填充,源码帧为16:9时全屏;
0011:14:9的制作图像,源码帧为4:3时,bottom对齐,top填充,源码帧为16:9时为pillar-box;
0100:制作图像>16:9,  源码帧为4:3和16:9时,都为letterbox;
0101 to 0111:保留未用;
1000: 制作图像和源码帧相同;
1001:4:3的制作图像,源码帧为4:3时全屏,源码帧为16:9时pillar-box;
1010: 16:9的制作图像;源码帧为4:3时letterbox,源码帧为16:9时全屏;
1011: 14:9的制作图像,源码帧为4:3时letterbox,源码帧为16:9时pillar-box;
1100:保留未用;
1101:4:3的制作图像(with shoot and protect 14:9 centre),源码帧为4:3时全屏,源码帧为16:9时pillar-box,当输出设备设置为16:9时,先AFD cut 14:9,然后进行宽高比矫正进行显示;
1110:16:9的制作图像(with shoot and protect 14:9 centre),源码帧为4:3时letterbox,源码为16:9时全屏;
1111:16:9的制作图像(with shoot and protect 4:3 centre),源码帧为4:3时letterbox,源码为16:9时全屏;
这里的image是节目制作时摄像到的素材宽高比,源码帧就是编码后TS流中视频帧的宽高比。

2.bar data的作用

因为AFD只支持4:3 14:9和16:9 三种宽高比,实际中远不止这些宽高比,于是bar data就出现了,作为AFD的一个补充。
bar data是成对出现的,top和bottom一对,left和right一对,任何时候不能两队同时出现。虽然是成对出现的,但其中一个可以为0 。

3.AFD和bar data的关系

当AFD和bar data同时出现在流中时,进行AFD cut操作,bar data被忽略,但有一种情况例外,就是当AFD 为"0000" 和 "0100"时, bar data 应该被使用。

4.一个实际的例子

在每个vsync时,产生中断,注册这个中断的处理函数的过程为:
1.NEXUS_VideoInput_P_ConnectVideoDecoder()
调用:
decoderConnect.callbackContext = link;
decoderConnect.dataReadyCallback_isr = NEXUS_VideoInput_P_DecoderDataReady_isr;
rc = NEXUS_VideoDecoder_SetDisplayConnection_priv(link->input->source, &decoderConnect);

2.NEXUS_VideoDecoder_SetDisplayConnection_priv()
调用:
NEXUS_VideoDecoder_SetDisplayConnection_priv_Avd()

3. NEXUS_VideoDecoder_SetDisplayConnection_priv_Avd()
调用:
NEXUS_VideoDecoder_P_SetXvdDisplayInterrupt()

4.NEXUS_VideoDecoder_P_SetXvdDisplayInterrupt()
调用:
VDCDevIntrSettings.hAppXdmDih = connection->dataReadyCallback_isr?videoDecoder->device->hXdmDih[interrupt]:NULL;
BXVD_RegisterVdcDeviceInterrupt()

所以当有vsync中断产生时,实际的中断处理函数为:
NEXUS_VideoInput_P_DecoderDataReady_isr(void *input_, const BAVC_MFD_Picture *pPicture)
这里*pPicture为下一帧要显示的图片

1.下面分析一下NEXUS_VideoInput_P_DecoderDataReady_isr()这个函数的执行过程,
调用:BVDC_Source_MpegDataReady_isr()

2.BVDC_Source_MpegDataReady_isr()
调用:
BVDC_P_Window_AdjustRectangles_isr()函数调整窗口大小
然后重构RULlist,更新RULlist

Active Format Description (AFD)简介相关推荐

  1. OpenCascade BRep Format Description

    为什么80%的码农都做不了架构师?>>>    OpenCascade BRep Format Description eryar@163.com 摘要Abstract:本文结合Op ...

  2. FFmpeg5.0源码阅读——AVFrame

      摘要:AVFrame是FFmpeg中表示裸数据的结构体,是FFmpeg最重要的结构体之一.本篇文章针对FFmpeg源码理解AVFrame的作用,相关的结构定义以及一些操作API的具体实现.   关 ...

  3. FFmpeg 源码之分配与释放 AVPacket 常用函数

    查看 packet.h 源码,可以看到一系列的 AVPacket 分配与释放函数.熟悉这些 API 有利于方便在不同场景下使用 AVPacket. 一.av_packet_alloc 分配一个 AVP ...

  4. MICROSOFT EXCEL FILE FORMAT(BIFF2.1)

    转自:http://www.xgdown.com/article/243/61822_1.htm 作用:http://unruledboy.cnblogs.com/archive/2004/07/07 ...

  5. GNU工具链简介(全)

    Mips GNU工具链简介  1 . 总括 本文分三部分来介绍mips的工具链,首先工具链的总括,其次是每个工具链的简介,最后是各工具链的实际应用举例.我们的项目使用的工具链就如图1所示,声明,本文所 ...

  6. USEARCH11命令大全,200+命令中文简介,快速查找需要功能

    序列比对 嵌合体检测和过滤 序列.树和基于图形的聚类 距离矩阵 多样性分析 fastq格式文件处理 Fasta和fastq文件处理格式 机器学习和鉴定有用OTUs 其它命令 OTU分析和去噪 OTU表 ...

  7. Windows Server 2008 Active Directory的安装

    安装前的准备和条件: A. 登陆的账户是属于administrator组,必须有密码; B. 配置静态的IP地址; C. DNS服务和唯一的DNS名称以及NETBIOS名称(此实验中使用contoso ...

  8. 基于lucene的案例开发:纵横小说简介页采集

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44851419 http://www.llwjy.com/blogdetail/1 ...

  9. python语言format是什么意思_Python代码中str.format()函数有什么功能呢?

    摘要: 下文讲述Python代码中str.format()函数的简介说明,如下所示: str.format()函数功能 用于将字符串格式化,然后输出 str.format()函数语法 通过{} 和:替 ...

  10. swagger 界面_使用Swagger和Scalatra进行界面驱动的开发简介

    swagger 界面 自从三年前开始使用以来,Scalatra网络微框架已经发展成为一个轻量级但功能齐全的模型-视图-控制器(MVC)框架,背后是一个活跃的社区. Scalatra最初是Ruby流行的 ...

最新文章

  1. Asp.Net Core 入门(一)——Program.cs做了什么
  2. python生成随机数—random模块
  3. [导入]Eval格式化日期
  4. 本地构建和自动化构建_如何构建最强大,最安全的家庭自动化系统
  5. Java MVC 1.0规范开始进入公开评审阶段
  6. C# Excel 删除指定的工作表
  7. 新员工月度计划制定心得
  8. sql 去重 distinct
  9. intellij IDEA 中,.properties文件unicode转中文
  10. event事件坐标详解(clientx, offsetx, screenX等)
  11. OKR 年度规划实践:如何在 2022 年做好准备
  12. vue视频播放组件vue-mini-player
  13. 毛巾架用久了生锈怎么办?
  14. ubuntu中安装卸载mysql8.0及修改密码
  15. 微波——导引波(三)
  16. 6 Processes 下
  17. 日本人又一变态爱好!¨【盆景猫】
  18. linux淘宝秒杀脚本,在天猫及京东上秒杀不到飞天茅台的原因是有人用抢茅台脚本...
  19. pms输变电状态监测_智能电网输变电设备综合状态监测系统的设计与实现
  20. linux系统配置静态ip

热门文章

  1. java file数组 初始化_Java之处理数组
  2. sql语句中分组和排序(group by、order by、rank)
  3. (算法)C语言得到两个升序序列的中位数
  4. 读书笔记《蛤蟆先生去看心理医生》
  5. 为什么WiFi自动信道选到的信道多数在1/6/11
  6. Log4j2-Log4j 2介绍及使用
  7. 杭电计算机考研比率,杭州电子科技大学考研的难度大吗
  8. windows7 优化:readyboost总结
  9. 【目标跟踪论文阅读】Cooling-Shrinking Attack: Blinding the Tracker with Imperceptible Noises
  10. php webp格式转换,webp的格式的转换