x264 关于plane[0]

今天试着动了一下手,发现对plane[0]是不是已经分配好内存了搞不清,翻开代码看了一下:

 

 

/*
Colorspace type (色彩空间类型)
 */
#define X264_CSP_MASK           0x00ff  /* */
#define X264_CSP_NONE           0x0000  /* Invalid mode     */
#define X264_CSP_I420           0x0001  /* yuv 4:2:0 planar */
#define X264_CSP_I422           0x0002  /* yuv 4:2:2 planar */
#define X264_CSP_I444           0x0003  /* yuv 4:4:4 planar */
#define X264_CSP_YV12           0x0004  /* yuv 4:2:0 planar */
#define X264_CSP_YUYV           0x0005  /* yuv 4:2:2 packed */
#define X264_CSP_RGB            0x0006  /* rgb 24bits       */
#define X264_CSP_BGR            0x0007  /* bgr 24bits       */
#define X264_CSP_BGRA           0x0008  /* bgr 32bits       */
#define X264_CSP_VFLIP          0x1000  /* */

 

void x264_picture_alloc( x264_picture_t *pic, int i_csp, int i_width, int i_height )
{

        case X264_CSP_I420://0x0001
        case X264_CSP_YV12://0x0004
            pic->img.i_plane = 3;
            //分配内存,把返回的地址保存到字段数组中
            pic->img.plane[0] = x264_malloc( 3 * i_width * i_height / 2 ); /* 分配了内存,返回首地址 */ //像素总数 * 1.5
            pic->img.plane[1] = pic->img.plane[0] + i_width * i_height;  /* 首地址 + 像素总数 ->另一段内存地址 */
            pic->img.plane[2] = pic->img.plane[1] + i_width * i_height / 4; /* 再向后移动地址 */
            pic->img.i_stride[0] = i_width;
            pic->img.i_stride[1] = i_width / 2;
            pic->img.i_stride[2] = i_width / 2;

}

 

只要调用了x264_picture_alloc,内存就已经分配了,所以可以用memcpy把样点值复制过来即可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值