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

相关推荐
椰子今天很可爱10 分钟前
五种I/O模型与多路转接
linux·c语言·c++
程序员zgh44 分钟前
C++ 互斥锁、读写锁、原子操作、条件变量
c语言·开发语言·jvm·c++
喵了meme1 小时前
C语言实战5
c语言·开发语言
八月的雨季 最後的冰吻1 小时前
FFmepg-- 32-ffplay源码- PacketQueue 的线程安全机制 以及 serial 字段的作用
安全·ffmpeg
Nan_Shu_6142 小时前
学习:VueUse (1)
学习
Li.CQ2 小时前
SQL学习笔记(二)
笔记·sql·学习
Huangxy__2 小时前
指针的补充学习
学习
Smartdaili China3 小时前
掌握Java网页抓取:技术与示例完整指南
java·网络·学习·指南·网页·住宅ip·爬虫api
神仙别闹3 小时前
基于C语言实现B树存储的图书管理系统
c语言·前端·b树