?? 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 + -