工具/软件:Linux
您好 RAM、
我可以从解析流头获取 w/h、如下所示。
1.将 IVIDDEC3_DynamicParams 的假名标头设置为 XDM_parse_header
调用 XDM_SETPARAMS
调用 XDM_getStatus、正确的 w/h 存储在 outputHeight/outputWidth 中
但是、w/h 我在步骤3中对齐了。
240x180与240*192对齐,这是不可预料的。
那么、如何获得原始宽度和 hegiht?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Linux
您好 RAM、
我可以从解析流头获取 w/h、如下所示。
1.将 IVIDDEC3_DynamicParams 的假名标头设置为 XDM_parse_header
调用 XDM_SETPARAMS
调用 XDM_getStatus、正确的 w/h 存储在 outputHeight/outputWidth 中
但是、w/h 我在步骤3中对齐了。
240x180与240*192对齐,这是不可预料的。
那么、如何获得原始宽度和 hegiht?
您好 RAM、
我附加此 mp4、您可以对该文件执行一些进一步的检查
高您好、
从 RAM 进行上述开机自检是正确的。 它相对于 H.264标准。
使用 frame_crope_flag 编码的流将始终对齐。 如果禁用了 frame_crope_flag、则我们将获得实际宽度和高度。 在共享流中、实际高度可通过以下公式计算:
实际高度=(pic_height_in_map_units_minus1 + 1)-(2 * frame_cROP_Bottom_FLAG)
=(11Mbs + 1)-(2*6)
= 12MBs (192像素)-(12)
= 180像素。
类似 HD (1920x1080)
实际高度= 1088 -(2 * 4)
= 1080。
高您好、
是的、这就是如何在 H.264中计算实际分辨率。 具体而言、
if (frame_crope_flag){
宽度=((pic_width_in_MBS_minus1 +1)*16)- frame_cROP_LEFT_offset*2 - frame_cROP_RIGHT offset*2;
高度=((2 - FRAME_MBS_ONLY _FLAG)*(pic_height_in_map_units_minus1 +1)* 16)-(FRAME_CROP_TOP_OFFSET * 2)-(FRAME_CROP_Bottom_OFFSET * 2);
}
当 FRAME_CROP_FLAG 等于0时、应推断以下值:FRAME_CROP_LEFT_OFFSET = 0、FRAME_CROP_RIGHT 偏移= 0、FRAME_CROP_TOP_OFFSET = 0和 FRAME_CROP_Bottom偏移= 0。
以上内容符合 H.264规格。
高您好、
通过对此进行更多分析、我得到了一些要点、可以与您分享。
符合 H.264规范。 XDM_getStatus 调用将给出对齐的宽度和高度。 缓冲区分配需要对齐的分辨率。
实际的宽度和高度可以在解码完整帧后从,outArgs->displayBufs.activeFrameRegion 中找到。
ACTIVE1帧区域(software-dl.ti.com/.../struct_i_v_i_d_e_o2___buf_desc.html
请参阅附录 A (H.264用户指南中的图片格式)。 在此处附加用户指南的快照。
高您好、
这可能是可行的、因为 displayDelay = IVIDDEC3_DISPLAY_DELAY_AUTO;这里、编解码器保存的缓冲区被指定为显示 w.r.t 的显示延迟。 当设置 为 IVIDDEC3_DISPLAY_DELAY_AUTO 时、它最多可容纳16帧。
是否可以将其设置为 IVIDDEC3_DEDEC_ORDER ? 它应在解码第一帧后返回准确的分辨率。