omxvideo{enc,dec}: use GST_VIDEO_INFO_FIELD_HEIGHT()

Does not change anything for now but will be needed when we'll support
interlace-mode=alternate as the fields will have half the frame height.
This commit is contained in:
Guillaume Desmottes 2020-02-06 09:36:20 +05:30
parent 27c1aa544e
commit f14f5d9f70
2 changed files with 17 additions and 14 deletions

View file

@ -539,11 +539,12 @@ gst_omx_video_dec_fill_buffer (GstOMXVideoDec * self,
GstVideoFrame frame;
if (vinfo->width != port_def->format.video.nFrameWidth ||
vinfo->height != port_def->format.video.nFrameHeight) {
GST_VIDEO_INFO_FIELD_HEIGHT (vinfo) !=
port_def->format.video.nFrameHeight) {
GST_ERROR_OBJECT (self, "Resolution do not match: port=%ux%u vinfo=%dx%d",
(guint) port_def->format.video.nFrameWidth,
(guint) port_def->format.video.nFrameHeight,
vinfo->width, vinfo->height);
vinfo->width, GST_VIDEO_INFO_FIELD_HEIGHT (vinfo));
goto done;
}
@ -572,7 +573,7 @@ gst_omx_video_dec_fill_buffer (GstOMXVideoDec * self,
guint src_size[GST_VIDEO_MAX_PLANES] = { nstride * nslice, 0, };
gint dst_width[GST_VIDEO_MAX_PLANES] = { 0, };
gint dst_height[GST_VIDEO_MAX_PLANES] =
{ GST_VIDEO_INFO_HEIGHT (vinfo), 0, };
{ GST_VIDEO_INFO_FIELD_HEIGHT (vinfo), 0, };
const guint8 *src;
guint p;
@ -596,25 +597,25 @@ gst_omx_video_dec_fill_buffer (GstOMXVideoDec * self,
src_stride[1] = nstride / 2;
src_size[1] = (src_stride[1] * nslice) / 2;
dst_width[1] = GST_VIDEO_INFO_WIDTH (vinfo) / 2;
dst_height[1] = GST_VIDEO_INFO_HEIGHT (vinfo) / 2;
dst_height[1] = GST_VIDEO_INFO_FIELD_HEIGHT (vinfo) / 2;
src_stride[2] = nstride / 2;
src_size[2] = (src_stride[1] * nslice) / 2;
dst_width[2] = GST_VIDEO_INFO_WIDTH (vinfo) / 2;
dst_height[2] = GST_VIDEO_INFO_HEIGHT (vinfo) / 2;
dst_height[2] = GST_VIDEO_INFO_FIELD_HEIGHT (vinfo) / 2;
break;
case GST_VIDEO_FORMAT_NV12:
dst_width[0] = GST_VIDEO_INFO_WIDTH (vinfo);
src_stride[1] = nstride;
src_size[1] = src_stride[1] * nslice / 2;
dst_width[1] = GST_VIDEO_INFO_WIDTH (vinfo);
dst_height[1] = GST_VIDEO_INFO_HEIGHT (vinfo) / 2;
dst_height[1] = GST_VIDEO_INFO_FIELD_HEIGHT (vinfo) / 2;
break;
case GST_VIDEO_FORMAT_NV16:
dst_width[0] = GST_VIDEO_INFO_WIDTH (vinfo);
src_stride[1] = nstride;
src_size[1] = src_stride[1] * nslice;
dst_width[1] = GST_VIDEO_INFO_WIDTH (vinfo);
dst_height[1] = GST_VIDEO_INFO_HEIGHT (vinfo);
dst_height[1] = GST_VIDEO_INFO_FIELD_HEIGHT (vinfo);
break;
case GST_VIDEO_FORMAT_NV12_10LE32:
/* Need ((width + 2) / 3) 32-bits words */
@ -622,7 +623,7 @@ gst_omx_video_dec_fill_buffer (GstOMXVideoDec * self,
dst_width[1] = dst_width[0];
src_stride[1] = nstride;
src_size[1] = src_stride[1] * nslice / 2;
dst_height[1] = GST_VIDEO_INFO_HEIGHT (vinfo) / 2;
dst_height[1] = GST_VIDEO_INFO_FIELD_HEIGHT (vinfo) / 2;
break;
case GST_VIDEO_FORMAT_NV16_10LE32:
/* Need ((width + 2) / 3) 32-bits words */
@ -630,7 +631,7 @@ gst_omx_video_dec_fill_buffer (GstOMXVideoDec * self,
dst_width[1] = dst_width[0];
src_stride[1] = nstride;
src_size[1] = src_stride[1] * nslice;
dst_height[1] = GST_VIDEO_INFO_HEIGHT (vinfo);
dst_height[1] = GST_VIDEO_INFO_FIELD_HEIGHT (vinfo);
break;
default:
g_assert_not_reached ();
@ -2559,7 +2560,8 @@ gst_omx_video_dec_set_format (GstVideoDecoder * decoder,
* parts of the caps have changed or nothing at all.
*/
is_format_change |= port_def.format.video.nFrameWidth != info->width;
is_format_change |= port_def.format.video.nFrameHeight != info->height;
is_format_change |=
port_def.format.video.nFrameHeight != GST_VIDEO_INFO_FIELD_HEIGHT (info);
is_format_change |= (port_def.format.video.xFramerate == 0
&& info->fps_n != 0)
|| !gst_omx_video_is_equal_framerate_q16 (port_def.format.
@ -2596,7 +2598,7 @@ gst_omx_video_dec_set_format (GstVideoDecoder * decoder,
}
port_def.format.video.nFrameWidth = info->width;
port_def.format.video.nFrameHeight = info->height;
port_def.format.video.nFrameHeight = GST_VIDEO_INFO_FIELD_HEIGHT (info);
port_def.format.video.xFramerate = framerate_q16;
if (klass->cdata.hacks & GST_OMX_HACK_PASS_COLOR_FORMAT_TO_DECODER) {

View file

@ -1989,7 +1989,7 @@ gst_omx_video_enc_configure_input_buffer (GstOMXVideoEnc * self,
"input buffer doesn't provide video meta, can't adjust stride and slice height");
stride = info->stride[0];
slice_height = info->height;
slice_height = GST_VIDEO_INFO_FIELD_HEIGHT (info);
}
if (port_def.nBufferAlignment)
@ -2454,7 +2454,7 @@ gst_omx_video_enc_set_format (GstVideoEncoder * encoder,
}
port_def.format.video.nFrameWidth = info->width;
port_def.format.video.nFrameHeight = info->height;
port_def.format.video.nFrameHeight = GST_VIDEO_INFO_FIELD_HEIGHT (info);
if (G_UNLIKELY (klass->cdata.hacks & GST_OMX_HACK_VIDEO_FRAMERATE_INTEGER))
port_def.format.video.xFramerate =
@ -2660,7 +2660,8 @@ gst_omx_video_enc_fill_buffer (GstOMXVideoEnc * self, GstBuffer * inbuf,
gint stride = meta ? meta->stride[0] : info->stride[0];
if (info->width != port_def->format.video.nFrameWidth ||
info->height != port_def->format.video.nFrameHeight) {
GST_VIDEO_INFO_FIELD_HEIGHT (info) !=
port_def->format.video.nFrameHeight) {
GST_ERROR_OBJECT (self, "Width or height do not match");
goto done;
}