c ffmpeg 学习

  1. int8_t <==> char u_int8_t == unsigned char

int16_t == short

int32_t ==int

  1. #define X(x) x,x,x,x,x,x,x,x //表示8个x 主要用于数组赋值

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    #define X8(x) x,x,x,x,x,x,x,x //X8(x) 表示8个x
    #define X64(x) x,x,x,x,x,x,x,x,
    x,x,x,x,x,x,x,x,
    x,x,x,x,x,x,x,x,
    x,x,x,x,x,x,x,x,
    x,x,x,x,x,x,x,x,
    x,x,x,x,x,x,x,x,
    x,x,x,x,x,x,x,x,
    x,x,x,x,x,x,x,x //X64(x) 表示64个x

    int main(void){

    复制代码
     int32_t a[] = {
     X8(13036),  // tg * (2<<16) + 0.5
     X8(27146),  // tg * (2<<16) + 0.5
     X8(-21746)  // tg * (2<<16) + 0.5
     };
     
     printf("%d\n",a[0]);
     int  b[64]={X64(1)};
     printf("%d\n",b[63]);
    
     return 0;

    }

与memset(b,1 ,64) 等效

  1. fwrite fread

fwrite(参数1,参数2,参数3,文件号) 参数2:相同单位内的字节数

参数3:表示有多少个相同单位

利用参数2,3能方便写入和读取二维数组元素

4。DECLARE_ALIGEND( n, 类型,名字) 内存对齐,我理解这个内存对齐是ffmpeg为了兼容不同操作系统用的,对于linux X86 来说,直接按n的大小选数据类型就可以了,比如是8,就是char,16 就选short。下面的例子就是

short fdct_tg_all_16[24]={....}

//concatenated table, for forward DCT transformation

DECLARE_ALIGNED(16, static const int16_t, fdct_tg_all_16)[24] = {

X8(13036), // tg * (2<<16) + 0.5

X8(27146), // tg * (2<<16) + 0.5

X8(-21746) // tg * (2<<16) + 0.5

};

  1. 开根号 sqrt()

比如1/2 开根号,必须写成: sqrt(1.0/2) 1必须写成1.0

相关推荐
mount_myj7 小时前
长长久久【C语言】
c语言
酿情师7 小时前
yihan:一款面向连续网页学习的智能侧边栏插件
学习·学习方法·工具·学习工具
瞎某某Blinder8 小时前
DFT学习记录[6]基于 HES06的能带计算+有效质量计算
python·学习·程序人生·数据挖掘·云计算·学习方法
love在水一方10 小时前
VLN 入门学习计划 —— 基于 InternNav
学习
Legendary_00810 小时前
LDR6500:USB‑C DRP PD协议芯片技术详解与应用实践
c语言·开发语言
red_redemption12 小时前
自由学习记录(175)
学习
nashane13 小时前
HarmonyOS 6学习:画中画(PiP)状态同步与场景化实战指南
学习·pip·harmonyos·harmonyos 5
_李小白13 小时前
【android opencv学习笔记】Day 8: remap(像素位置重映射)
android·opencv·学习
勤劳的进取家13 小时前
数据链路层基础
网络·学习·算法
d111111111d14 小时前
直流电机位置式 PID 控制 和 舵机的区别
笔记·stm32·单片机·嵌入式硬件·学习