如何将一个标志位写入AV1的码流

1,目的

首先明确的一点是这篇文章说的是如何将一帧的某些动作所指示的的标志位写入码流的过程

2,理论分析

1我们需要在每一帧的码流里加入一个标志位,要知道码流的打包在bitstream.c中,所以我们要做的就是首先在帧的码流中开辟一个标志位数组,然后根据编码过程中的某些操作进行标志位的修改,然后在bitstream.c中,打包码流是将这个标志位也打包进去。
2首先明确要在那个结构体中加入标志位,一般情况下,AV1_COMP 这个结构体只在编码器中运作,不会直接传送到解码端,但是它和AV1_COMMON结构体在编码器中会存在一些交互的过程,并且AV1_COMMON是要传到解码端,所以为了方便起见,我们在这里将标志位开辟在AV1_COMMON中。

3,实践过程

1,开辟标志位

AV1_COMMON结构体中新增一个int标志位,例如

image.png

在自己需要的地方将a的标志位改变

2,编写写入码流方法
static void encode_a(AV1_COMMON *cm, struct aom_write_bit_buffer *wb) {
  aom_wb_write_bit(wb, cm->a);
}
3,写入码流

在bitstream.c中的write_uncompressed_header_obu方法中,添加

encode_a(cm, wb);

完成

你可能感兴趣的:(如何将一个标志位写入AV1的码流)