当前位置:  技术问答>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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3