struct timeval tp;
gettimeofday(&tp, NULL);
long long ms = (long long) tp.tv_sec * 1000L + tp.tv_usec / 1000; //get current timestamp in milliseconds
2015년 9월 18일 금요일
Get current timestamp in milliseconds (UTC)
2015년 9월 8일 화요일
[FFMPEG] RGB <-> YUV
int imgWidth = 320, imgHeight = 240;
AVPicture rgbPic, yuvPic;
int dataSize = imgWidth * imgHeight;
avpicture_fill(&rgbPic, NULL, PIX_FMT_RGB24, imgWidth, imgHeight);
rgbPic.data[0] = (uint8_t *) malloc(dataSize * 3);
avpicture_fill(&yuvPic, NULL, PIX_FMT_YUV420P, imgWidth, imgHeight);
yuvPic.data[0] = (uint8_t *) malloc(dataSize * 3 / 2);
yuvPic.data[1] = yuvPic.data[0] + dataSize;
yuvPic.data[2] = yuvPic.data[1] + dataSize / 4;
// RGB888 to YUV420
{
SwsContext *rgb_to_yuv_ctx = sws_getContext(
imgWidth, imgHeight, PIX_FMT_RGB24
, imgWidth, imgHeight, PIX_FMT_YUV420P
, SWS_BICUBIC, NULL, NULL, NULL);
sws_scale(rgb_to_yuv_ctx
, rgbPic.data, rgbPic.linesize, 0, imgHeight
, yuvPic.data, yuvPic.linesize);
sws_freeContext(rgb_to_yuv_ctx);
}
// YUV420 to RGB888
{
SwsContext *yuv_to_rgb_ctx = sws_getContext(
imgWidth, imgHeight, PIX_FMT_YUV420P
, imgWidth, imgHeight, PIX_FMT_RGB24
, SWS_BICUBIC, NULL, NULL, NULL);
sws_scale(yuv_to_rgb_ctx
, yuvPic.data, yuvPic.linesize, 0, imgHeight
, rgbPic.data, rgbPic.linesize);
sws_freeContext(yuv_to_rgb_ctx);
}
피드 구독하기:
글 (Atom)