amc: crop values are not mandatory in format

Android documentation has example code how to compute width and height
when crop values are present.
https://developer.android.com/reference/android/media/MediaCodec#accessing-raw-video-bytebuffers-on-older-devices
This commit is contained in:
Xavier Claessens 2019-05-15 10:16:33 -04:00
parent a604796c41
commit 06fc7880bb

View file

@ -766,13 +766,14 @@ gst_amc_video_dec_set_src_caps (GstAmcVideoDec * self, GstAmcFormat * format)
return FALSE; return FALSE;
} }
if (!gst_amc_format_get_int (format, "crop-left", &crop_left, &err) || if (gst_amc_format_get_int (format, "crop-left", &crop_left, NULL) &&
!gst_amc_format_get_int (format, "crop-right", &crop_right, &err) || gst_amc_format_get_int (format, "crop-right", &crop_right, NULL)) {
!gst_amc_format_get_int (format, "crop-top", &crop_top, &err) || width = crop_right + 1 - crop_left;
!gst_amc_format_get_int (format, "crop-bottom", &crop_bottom, &err)) { }
GST_ERROR_OBJECT (self, "Failed to get crop rectangle: %s", err->message);
g_clear_error (&err); if (gst_amc_format_get_int (format, "crop-top", &crop_top, NULL) &&
return FALSE; gst_amc_format_get_int (format, "crop-bottom", &crop_bottom, NULL)) {
height = crop_bottom + 1 - crop_top;
} }
if (width == 0 || height == 0) { if (width == 0 || height == 0) {
@ -780,16 +781,6 @@ gst_amc_video_dec_set_src_caps (GstAmcVideoDec * self, GstAmcFormat * format)
return FALSE; return FALSE;
} }
if (crop_bottom)
height = height - (height - crop_bottom - 1);
if (crop_top)
height = height - crop_top;
if (crop_right)
width = width - (width - crop_right - 1);
if (crop_left)
width = width - crop_left;
mime = caps_to_mime (self->input_state->caps); mime = caps_to_mime (self->input_state->caps);
if (!mime) { if (!mime) {
GST_ERROR_OBJECT (self, "Failed to convert caps to mime"); GST_ERROR_OBJECT (self, "Failed to convert caps to mime");