From b625e6036d49b31aeab62ffdcdaffab59ca52349 Mon Sep 17 00:00:00 2001 From: KwangCheol Lee Date: Fri, 29 Sep 2017 17:51:36 +0900 Subject: [PATCH] modify S420 format caps nego, add bo handle in mm_video_buf Change-Id: I90f719aca2aa61dd312ac9b374c91c0dffcbde6d Signed-off-by: KwangCheol Lee --- src/Makefile.am | 1 + src/gstnxvideodec.c | 32 ++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 6e49c9d..9542366 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -17,6 +17,7 @@ libgstnxvideodec_la_SOURCES = gstnxvideodec.c decoder.c libgstnxvideodec_la_CFLAGS = \ $(GST_CFLAGS) \ $(MM_COMMON_CFLAGS) \ + -DTIZEN_FEATURE_ARTIK530 \ -I$(includedir) libgstnxvideodec_la_LIBADD = \ diff --git a/src/gstnxvideodec.c b/src/gstnxvideodec.c index 252dafa..fdc4e5b 100644 --- a/src/gstnxvideodec.c +++ b/src/gstnxvideodec.c @@ -70,7 +70,7 @@ // This SUPPORT_NO_MEMORY_COPY function is disabled now. // if the video decoder mmap is supported this function, it will be enabled. -#define SUPPORT_NO_MEMORY_COPY 0 +#define SUPPORT_NO_MEMORY_COPY 1 GST_DEBUG_CATEGORY_STATIC (gst_nxvideodec_debug_category); #define GST_CAT_DEFAULT gst_nxvideodec_debug_category @@ -138,7 +138,7 @@ GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { I420 }, " + "format = (string) { S420 }, " "width = (int) [ 64, 1920 ], " "height = (int) [ 64, 1088 ] ") ); @@ -465,12 +465,12 @@ gst_nxvideodec_set_format (GstVideoDecoder * pDecoder, } pOutputState = - gst_video_decoder_set_output_state (pDecoder, GST_VIDEO_FORMAT_I420, + gst_video_decoder_set_output_state (pDecoder, GST_VIDEO_FORMAT_S420, pDecHandle->width, pDecHandle->height, pNxVideoDec->pInputState); pOutputState->caps = gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, - gst_video_format_to_string (GST_VIDEO_FORMAT_I420), "width", G_TYPE_INT, + gst_video_format_to_string (GST_VIDEO_FORMAT_S420), "width", G_TYPE_INT, pDecHandle->width, "height", G_TYPE_INT, pDecHandle->height, "framerate", GST_TYPE_FRACTION, pDecHandle->fpsNum, pDecHandle->fpsDen, NULL); @@ -935,9 +935,11 @@ nxvideodec_mmvideobuf_copy (NX_V4L2DEC_OUT * pDecOut) pMMVideoBuf->size[0] = pDecOut->hImg.size[0]; pMMVideoBuf->data[0] = pDecOut->hImg.pBuffer[0]; pMMVideoBuf->handle_num = 1; - /* TODO need to convert from gem name to bo - pMMVideoBuf->handle.bo[0] = pDecOut->hImg.flink[0]; - */ +#ifdef TIZEN_FEATURE_ARTIK530 + pMMVideoBuf->handle.bo[0] = pDecOut->hImg.bo[0]; + if (!pMMVideoBuf->handle.bo[0]) + GST_ERROR ("bo = null\n"); +#endif } else if (3 == pDecOut->hImg.planes) { pMMVideoBuf->type = MM_VIDEO_BUFFER_TYPE_TBM_BO; pMMVideoBuf->format = MM_PIXEL_FORMAT_I420; @@ -954,11 +956,17 @@ nxvideodec_mmvideobuf_copy (NX_V4L2DEC_OUT * pDecOut) pMMVideoBuf->data[1] = pDecOut->hImg.pBuffer[1]; pMMVideoBuf->data[2] = pDecOut->hImg.pBuffer[2]; pMMVideoBuf->handle_num = 3; - /* TODO need to convert from gem name to bo - pMMVideoBuf->handle.bo[0] = pDecOut->hImg.flink[0]; - pMMVideoBuf->handle.bo[1] = pDecOut->hImg.flink[1]; - pMMVideoBuf->handle.bo[2] = pDecOut->hImg.flink[2]; - */ +#ifdef TIZEN_FEATURE_ARTIK530 + pMMVideoBuf->handle.bo[0] = pDecOut->hImg.bo[0]; + pMMVideoBuf->handle.bo[1] = pDecOut->hImg.bo[1]; + pMMVideoBuf->handle.bo[2] = pDecOut->hImg.bo[2]; + if (!pMMVideoBuf->handle.bo[0]) + GST_ERROR ("bo[0] = null\n"); + if (!pMMVideoBuf->handle.bo[1]) + GST_ERROR ("bo[1] = null\n"); + if (!pMMVideoBuf->handle.bo[2]) + GST_ERROR ("bo[2] = null\n"); +#endif } pMeta = gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY, -- 2.34.1