I have a question regarding Mpeg2 VLD function of the TI IMG_LIB.
The API of the intra function is:
void IMG_mpeg2_vld_intra_
(
const short *RESTRICT Wptr, // quantization matrix
short *RESTRICT outi, // IDCT coefficients output array
IMG_mpeg2_vld *RESTRICT Mpeg2v, // bitstream context structure
int dc_pred[3], // DC prediction array
int mode_12Q4, // if !=0 returns coeffs in 12Q4 format
int num_blocks, // number of blocks in the MB
int bsbuf_words // bitstream buffer size
)
I see in the manual, that the bsbuf field in the IMG_mpeg2_vld struct, which
contains the bits of the decoded DCT coeffs, should be word aligned to the size
of bsbuf_words.
TI uses in their example a buffer of 512 words, 2048 bytes.
I guess it's because of loop unrolling.
The problem is that in the m2v bitstream, the DCT coeffs decoded bits are
obviously not aligned. I am familiar with the mechanism of word0, word1 and
word2 which create top0 and top1. This is ok.
But should I also copy the data to a 2048 bytes buffer before each calling to
the VLD function?
This is obviously time consuming.
So what am I missing?
Thanks a lot,
Moshe