Ejemplo n.º 1
0
static mp_image_t* alloc_mpi(int w, int h, uint32_t fmt) {
  mp_image_t* mpi = new_mp_image(w,h);

  mp_image_setfmt(mpi,fmt);
  // IF09 - allocate space for 4. plane delta info - unused
  if (mpi->imgfmt == IMGFMT_IF09)
    {
      mpi->planes[0]=memalign(64, mpi->bpp*mpi->width*(mpi->height+2)/8+
			      mpi->chroma_width*mpi->chroma_height);
      /* delta table, just for fun ;) */
      mpi->planes[3]=mpi->planes[0]+2*(mpi->chroma_width*mpi->chroma_height);
    }
  else
    mpi->planes[0]=memalign(64, mpi->bpp*mpi->width*(mpi->height+2)/8);
  if(mpi->flags&MP_IMGFLAG_PLANAR){
    // YV12/I420/YVU9/IF09. feel free to add other planar formats here...
    if(!mpi->stride[0]) mpi->stride[0]=mpi->width;
    if(!mpi->stride[1]) mpi->stride[1]=mpi->stride[2]=mpi->chroma_width;
    if(mpi->flags&MP_IMGFLAG_SWAPPED){
      // I420/IYUV  (Y,U,V)
      mpi->planes[1]=mpi->planes[0]+mpi->width*mpi->height;
      mpi->planes[2]=mpi->planes[1]+mpi->chroma_width*mpi->chroma_height;
    } else {
      // YV12,YVU9,IF09  (Y,V,U)
      mpi->planes[2]=mpi->planes[0]+mpi->width*mpi->height;
      mpi->planes[1]=mpi->planes[2]+mpi->chroma_width*mpi->chroma_height;
    }
  } else {
    if(!mpi->stride[0]) mpi->stride[0]=mpi->width*mpi->bpp/8;
  }
  mpi->flags|=MP_IMGFLAG_ALLOCATED;
  
  return mpi;
}
Ejemplo n.º 2
0
media_fifo_t * media_fifo_init( media_fifo_t * mf)
{
	int i;
	media_packet_t *mp, *mpp, *mppp;
	mf = malloc(sizeof(media_fifo_t));
	mppp = mpp = malloc(sizeof(media_packet_t));
	for ( i = 0; i < MAX_PTS_BUF; i ++ )
	{
		mp = mpp;
		mp->mpi = new_mp_image(320,240);
		mp->pcm = malloc(sizeof(unsigned char)*PCM_BUF_SIZE);
		if ( !mp->pcm )
		{
			printf("PCM can not malloc buffer! \n");
			return 0;
		} 
		mpp = malloc(sizeof(media_packet_t));
		mp->next = mpp;
		mpp->priv = mp;
	}
	mp->next = mppp;
	mppp->priv = mp;
	mf->in = mf->out = mppp;
	mf->num = 0;
	free(mpp);
	return mf;
}
Ejemplo n.º 3
0
mp_image_t* alloc_mpi(int w, int h, unsigned long int fmt) {
  mp_image_t* mpi = new_mp_image(w,h);

  mp_image_setfmt(mpi,fmt);
  mp_image_alloc_planes(mpi);

  return mpi;
}