📄 rc_data.c
字号:
/* ****************************************************************************
* *********************** INCLUDE FILES ******************************* */
#include <stdio.h>
#include <stdlib.h>
#include "rc_data.h"
/*!
************************************************************************
* \brief
* init queque write and read pointer
* queue is used to save previous frame quant and complexity
************************************************************************
*/
void rch_init(RCQ2_SAVE_QUEUE* pqueue)
{
int i;
for(i=0;i<2;i++){
pqueue[i].read=0; /*读写指针初始置为0 modify by lxq*/
pqueue[i].write=0;
}
}
/*!
************************************************************************
* \brief
* get total queue size
*
************************************************************************
*/
int rch_get_size(RCQ2_SAVE_QUEUE* pqueue,int frametype)
{
return (pqueue[frametype].write-pqueue[frametype].read+MAX_SLIDING_WINDOW)%MAX_SLIDING_WINDOW;
}
/*!
************************************************************************
* \brief
* get usable queue data to compute quadratic rate distortion model param
*
************************************************************************
*/
void rch_get_data(RCQ2_SAVE_QUEUE* pqueue,int frametype,int w,int* Qp,double* Rp)
{
int temp_read,i;
int n=rch_get_size(pqueue,frametype);
temp_read=pqueue[frametype].read;
for(i=n; i>n-w; i--){
if(pqueue[frametype].read!=pqueue[frametype].write)
{
Qp[n-i]=pqueue[frametype].Qall[pqueue[frametype].read];
Rp[n-i]=pqueue[frametype].Rall[pqueue[frametype].read];
pqueue[frametype].read=(pqueue[frametype].read+1)%MAX_SLIDING_WINDOW;
}
else
i=n-w;
}
pqueue[frametype].read=temp_read;
}
/*!
************************************************************************
* \brief
* queue is used to save current frame quant and complexity for later use
*
************************************************************************
*/
void rch_store_after(RCQ2_SAVE_QUEUE* pqueue,int frametype,int Rc,int Qc,int Hc,int Ec)
{
if(((pqueue[frametype].write+1)%MAX_SLIDING_WINDOW)==pqueue[frametype].read)
pqueue[frametype].read=(pqueue[frametype].read+1)%MAX_SLIDING_WINDOW;
pqueue[frametype].Rall[pqueue[frametype].write] = (double)(Rc-Hc)/(double)Ec;
pqueue[frametype].Qall[pqueue[frametype].write]= Qc;
pqueue[frametype].write=(pqueue[frametype].write+1)%MAX_SLIDING_WINDOW;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -