int x264_nal_encode( void *p_data, int *pi_data, int b_annexeb, x264_nal_t *nal ) .
来源:互联网 发布:sacdiso mac播放 编辑:程序博客网 时间:2024/05/16 19:40
原文地址:http://blog.csdn.net/diffenyu/article/details/8292541
/****************************************************************************
- * x264_nal_encode:
- * x264_nal_encode( mux_buffer, &i_size, 1, &nal[i] );
- ****************************************************************************/
- int x264_nal_encode( void *p_data, int *pi_data, int b_annexeb, x264_nal_t *nal )
- {
- uint8_t *dst = p_data;/*nal首地址*/
- uint8_t *src = nal->p_payload;/*裸数据的首地址*/
- uint8_t *end = &nal->p_payload[nal->i_payload];/*下一个裸数据的首地址,-> 和 [] 属于同一优先级,从左到右结合*/
- int i_count = 0;
- /* FIXME this code doesn't check overflow */
- if( b_annexeb )/*H.264附录B中的方案,此处b_annexeb一直取1,利用RTP打包时去掉下面4个字节的start_code,但在存储介质上时,由于NAL
- 是依次紧密排列的,解码器将无法在数据流中分辨出每个NAL的起始位置和终止位置,故而采用了start_code*/
- {
- /* long nal start code (we always use long ones)*/
- *dst++ = 0x00;
- *dst++ = 0x00;
- *dst++ = 0x00;
- *dst++ = 0x01;
- }
- /* nal header */
- *dst++ = ( 0x00 << 7 ) | ( nal->i_ref_idc << 5 ) | nal->i_type;/*第一个字节*/
- while( src < end )
- {
- if( i_count == 2 && *src <= 0x03 )
- {
- *dst++ = 0x03;
- i_count = 0;
- }
- if( *src == 0 )/*如果遇到数据中有0x00的,则i_cout++,直到检测到2次0x00,则在其后面添加03以防止与起始码竞争*/
- i_count++;
- else
- i_count = 0;
- *dst++ = *src++;
- }
- *pi_data = dst - (uint8_t*)p_data;/*p_data为nal的首地址,最后pi_data记录的是整个nal的字节数*/
- return *pi_data;
- }
- int x264_nal_encode( void *p_data, int *pi_data, int b_annexeb, x264_nal_t *nal )
- int x264_nal_encode( void *p_data, int *pi_data, int b_annexeb, x264_nal_t *nal ) .
- void (*f(int, void (*)(int)))(int)
- void (*Pfun(int, void(*Qfun)(int))) (int)
- 理解(*(void(*)())0)()和void (*signal(int, void(*)(int)))(int)
- int
- int?
- int ?
- int
- Int
- int?
- void (*f(int, void (*)(int)))(int) 函数解析
- void (*f(int, void (*)(int)))(int) 函数解析
- void (*signal(int sig, void (*func) (int))) (int)理解
- signal函数:void (*signal(int,void(*)(int)))(int);
- void (*f(int, void (*)(int)))(int) 函数解析
- void (*f(int, void (*)(int)))(int) 函数解析
- void (*signal(int signo, void (*fun(int))))(int)
- 在页签上嵌入表单
- SQLiteProgram bool类型重复绑定
- Unity + NGUI开发2D游戏的笔记。
- myeclipse8.5
- iphone开发之解决viewWillAppear失效
- int x264_nal_encode( void *p_data, int *pi_data, int b_annexeb, x264_nal_t *nal ) .
- android手机设置屏幕横竖屏朝向
- POJ 1477 ( 贪心 )
- codeforces-230B-T-primes
- Struts2 XML配置详解
- 初学者快速理解UINavigationController结构
- POJ 1328
- c#汉字转化为拼音
- void main()还是int main()