1枢步,目的
首先明確的一點(diǎn)是這篇文章說的是如何將一幀的某些動(dòng)作所指示的的標(biāo)志位寫入碼流的過程
2暇唾,理論分析
1我們需要在每一幀的碼流里加入一個(gè)標(biāo)志位鸟整,要知道碼流的打包在bitstream.c中,所以我們要做的就是首先在幀的碼流中開辟一個(gè)標(biāo)志位數(shù)組澎嚣,然后根據(jù)編碼過程中的某些操作進(jìn)行標(biāo)志位的修改击吱,然后在bitstream.c中淋淀,打包碼流是將這個(gè)標(biāo)志位也打包進(jìn)去。
2首先明確要在那個(gè)結(jié)構(gòu)體中加入標(biāo)志位覆醇,一般情況下朵纷,AV1_COMP 這個(gè)結(jié)構(gòu)體只在編碼器中運(yùn)作,不會(huì)直接傳送到解碼端永脓,但是它和AV1_COMMON結(jié)構(gòu)體在編碼器中會(huì)存在一些交互的過程袍辞,并且AV1_COMMON是要傳到解碼端,所以為了方便起見常摧,我們?cè)谶@里將標(biāo)志位開辟在AV1_COMMON中搅吁。
3,實(shí)踐過程
1,開辟標(biāo)志位
在AV1_COMMON結(jié)構(gòu)體中新增一個(gè)int標(biāo)志位排宰,例如
image.png
在自己需要的地方將a的標(biāo)志位改變
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);
完成