Tegra3 -- Error output timeStamp with omx_message::FILL_BUFFER_DONE in Android

For some reasons, I have to use OpenMAX IL to encode/decode video(format I420/H.264). 
  1. Basically, I configure the OpenMAX IL component according to “Acodec.cpp” (Android 4.1).
  2. I’m using a Nexus 7(Android 4.1) for development.
  3. I use “_iomx->emptyBuffer(_node, mBuffer, 0, bufferSize, 0, timeStamp);” to transfer video frame and timestamp to OpenMAX IL component.
  4. When get message “omx_message::FILL_BUFFER_DONE:”, I get out the encoded/decoded video frame and timestamp.

The encoded/decoded video frame is OK. I have written the YUV/H.264 data to files and it can display on PC. But, the timestamp is error, that is, timestamp I transfer to OpenMAX IL component doesn’t equal to timestamp I get from OpenMAX IL component.

Since I can get the right YUV/H.264 data, I think I should just make a few mistakes. Which configuration I may made a mistakes?

If I don’t describe the problem clearly, please let me know what else information you need.
Thanks in advance for any help.