SPS 解析分辨率算法

xiaojin2883 2014-03-14 04:08:00
好像sps解析分辨率的算法是这样的:
Width=(pic_width_in_mbs_minus1+1)*16;
Height=(pic_height_in_map_units_minus1+1)*16 * num_ref_frames;

unsigned char nalData[] = {0x00, 0x00, 0x01, 0x67, 0x64, 0x00, 0x29, 0xAC, 0x34, 0xCC, 0x07,
0x80, 0x22, 0x7E, 0x5C, 0x05, 0xA8, 0x08, 0x08, 0x0A, 0x00, 0x00, 0x07, 0xD0, 0x00, 0x01, 0x86,
0xA1, 0xD0, 0xC0, 0x01, 0xF4, 0xF8, 0x00, 0x07, 0xD3, 0xCD, 0x77, 0x97, 0x1A, 0x18, 0x00,
0x3E, 0x9F, 0x00, 0x00, 0xFA, 0x79, 0xAE, 0xF2, 0xE1, 0x40};

这个sps帧解出来的width = 1920,height=1088x2=2176,实际的height是1088的,请问上面的算法要怎么改吗,如果不乘以num_ref_frames,那么解下面这个sps又是不正确的,
unsigned char nalData[] = {/*0x00, 0x00, 0x00,0x01,*/0x67, 0x4D,0x40,0x1E,0xAB,0x60,0x5A,0x12,0x28,0x40,0x00,0x00,0x03,0x00,0x40,0x00,0x00,0x0C,
0x83,0xC5,0x8B,0xB8}; ,如果不乘以num_ref_frames,将会解成720x288,实际图像是720 x576
...全文
406 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
itzhli 2014-04-09
  • 打赏
  • 举报
回复

	switch (sps.i_chroma_format_idc)
	{
	case 0:
		CropUnitX = 1;
		CropUnitY = 2-sps.frame_mbs_only_flag;
		break;
	case 1:
		CropUnitX = 2/*SubWidthC*/;
		CropUnitY = 2/*SubHeightC*/*(2-sps.frame_mbs_only_flag);
		break;
	case 2:
		CropUnitX = 2/*SubWidthC*/;
		CropUnitY = 1/*SubHeightC*/*(2-sps.frame_mbs_only_flag);
		break;
	case 3:
		CropUnitX = 1/*SubWidthC*/;
		CropUnitY = 1/*SubHeightC*/*(2-sps.frame_mbs_only_flag);
		break;
	}
	width  = sps.i_mb_width*16-CropUnitX*(sps.frame_crop_left_offset+sps.frame_crop_right_offset);
	height = sps.i_mb_height*16*(2-sps.frame_mbs_only_flag)-CropUnitY*(sps.frame_crop_top_offset+sps.frame_crop_bottom_offset);
另外要注意的是,H.264 2005/03 提到,当chroma_format_idc不存在时,应推断其值为1(4:2:0的色度格式)。
itzhli 2014-04-09
  • 打赏
  • 举报
回复
感谢楼主分享。
xiaojin093 2014-03-18
  • 打赏
  • 举报
回复
自己解决了这个问题,好像是这样的: spsWidth = (sps->mb_width*16) - sps->crop_left*2 - sps->crop_right*2; spsHeight= ((2 - sps->frame_mbs_only_flag)* sps->mb_height * 16) - (sps->crop_top * 2) - (sps->crop_bottom * 2);
xiaojin093 2014-03-17
  • 打赏
  • 举报
回复
没有人知道吗

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧