当前位置: 技术问答>linux和unix
H264压缩技术,可加分100,服务器用的是serverfox!
来源: 互联网 发布时间:2016-07-14
本文导语: 自己在做h264视频图像压缩,不过经过调试发现每次压缩的数据都一样,都是12bytes 如果有这个经验的给我指教一下! /**************************************************************************** * Public ****************************************...
自己在做h264视频图像压缩,不过经过调试发现每次压缩的数据都一样,都是12bytes
如果有这个经验的给我指教一下!
如果有这个经验的给我指教一下!
/****************************************************************************
* Public
****************************************************************************/
int
init_videoIn (struct vdIn *vd, char *device, int width, int height,
int format, int grabmethod)
{
int err = -1;
int i;
if (vd == NULL || device == NULL)
return -1;
if (width == 0 || height == 0)
return -1;
if(grabmethod 1)
grabmethod = 1; //read by default;
// check format
vd->videodevice = NULL;
vd->cameraname = NULL;
vd->videodevice = NULL;
vd->videodevice = (char *) realloc (vd->videodevice, 16);
vd->cameraname = (char *) realloc (vd->cameraname, 32);
snprintf (vd->videodevice, 12, "%s", device);
if(debug) printf("video %s n",vd->videodevice);
memset (vd->cameraname, 0, sizeof (vd->cameraname));
memset(vd->bridge, 0, sizeof(vd->bridge));
vd->signalquit = 1;
vd->hdrwidth = width;
vd->hdrheight = height;
/* compute the max frame size */
vd->formatIn = format;
vd->bppIn = GetDepth (vd->formatIn);
vd->grabMethod = grabmethod; //mmap or read
vd->pFramebuffer = NULL;
/* init and check all setting */
err = init_v4l (vd);
/* allocate the 4 frames output buffer */
for (i = 0; i ptframe[i] = NULL;
vd->ptframe[i] =
(unsigned char *) realloc (vd->ptframe[i], sizeof(struct frame_t) + (size_t) vd->framesizeIn );
vd->framelock[i] = 0;
}
vd->frame_cour = 0;
pthread_mutex_init (&vd->grabmutex, NULL);
return err;
}
int
close_v4l (struct vdIn *vd)
{
int i;
if (vd->grabMethod)
{
if(debug) printf ("unmapping frame buffern");
munmap (vd->pFramebuffer, vd->mmapsize);
} else {
free(vd->pFramebuffer);
vd->pFramebuffer = NULL;
}
if(debug) printf ("close video_devicen");
close (vd->fd);
/* dealloc the whole buffers */
if (vd->videodevice)
{
free (vd->videodevice);
vd->videodevice = NULL;
}
if (vd->cameraname)
{
free (vd->cameraname);
vd->cameraname = NULL;
}
for (i = 0; i ptframe[i])
{
free (vd->ptframe[i]);
vd->ptframe[i] = NULL;
vd->framelock[i] = 0;
if(debug) printf ("freeing output buffer %dn",i);
}
}
pthread_mutex_destroy (&vd->grabmutex);
}
#if 0
int
convertframe(unsigned char *dst,unsigned char *src, int width,int height, int formatIn, int size)
{
int jpegsize =0; /*!*/
switch (formatIn){
case VIDEO_PALETTE_JPEG: /*!*/
jpegsize = get_jpegsize(src, size);
if (jpegsize
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!