void CameraSource::dataCallbackTimestamp()
{
... ...
CHECK(data != NULL && data->size() > 0);
// Brand the timestamp start 2014-07-29
{
int _stride = mVideoSize.width;
int height = mVideoSize.height;
uint8_t *_ptr = (uint8_t *)data->pointer();
int offset = 240;
int bar_width = 80;
ALOGE("!!! draw line, ptr: %p, offset: %d, stride: %d, height: %d", _ptr, offset, _stride,height);
if (NULL != _ptr) {
// Overlay the timestamp here.
memset(_ptr + offset*_stride , 0x80, _stride * bar_width); //Clear Y
memset(_ptr + (height*_stride) + offset*_stride/4 , 0x40, _stride*bar_width/4); // Clear U
memset(_ptr + (height*_stride + height*_stride/4) + offset*_stride/4, 0x40, _stride*bar_width/4); // Clear V
}
}
// Brand the timestamp end 2014-07-29
mFramesReceived.push_back(data);
int64_t timeUs = mStartTimeUs + (timestampUs - mFirstFrameTimeUs);
mFrameTimes.push_back(timeUs);
... ...
}
if(flag&eID_Pass2VIDO)
{
//Add timestamp
MUINT8*p=(MUINT8*)vidoNode.getImgBuf()->getVirAddr();
MUINT8*end_p=(MUINT8*)vidoNode.getImgBuf()->getVirAddr()+ vidoNode.getImgBuf()->getImgWidth()*3*100/2;
while((p<(end_p)))//add the addTimeStamp() function for yourself
{
*p=0;
p++;
}
//Add timestamp end
vidoNode.getImgBuf()->setTimestamp(pass1LatestTimeStamp);
mspPreviewBufHandler->enqueBuffer(vidoNode);
}
2)录像preview的时候也显示时间:
if (flag&eID_Pass2DISPO)
{
//Add timestamp
MUINT8*p=(MUINT8*)dispNode.getImgBuf()->getVirAddr();
MUINT8*end_p=(MUINT8*)dispNode.getImgBuf()->getVirAddr()+ dispNode.getImgBuf()->getImgWidth()*3*100/2;
while((p<(end_p)) )//add the addTimeStamp() function for yourself
{
*p=0;
p++;
}
//Add timestamp
dispNode.getImgBuf()->setTimestamp(pass1LatestTimeStamp);
mspPreviewBufHandler->enqueBuffer(dispNode);
}
ExtImgProcImp::
ExtImgProcImp()
{
FUNCTION_NAME;
//Set which img buf you want to process.
//For example: mImgMask = BufType_Display|BufType_Record;
mImgMask = BufType_Display|BufType_Record;//录像Preview和video中都显示时间
mUser = 0;
}
MBOOL
ExtImgProcImp::
doImgProc(ImgInfo& img)
{
...
//Add image process code
switch(img.bufType)
{
case BufType_Display:
{
//[BEGIN]
//Add timestamp
MUINT8 *p = (MUINT8*)img.virtAddr;
MUINT8 *end_p = (MUINT8*)img.virtAddr + img.width*3*100/2;
while((p<(end_p)))
{
*p=0;
p++;
}
//Add timestamp end
//[END]
break;
}
...
case BufType_Record:
{
//[BEGIN]
//Add timestamp
MUINT8 *p = (MUINT8*)img.virtAddr;
MUINT8 *end_p = (MUINT8*)img.virtAddr + img.width*3*100/2;
while((p<(end_p)))
{
*p=0;
p++;
}
//Add timestamp end
//[END]
break;
}
...
}
}