// H.264
gst_caps_append_structure (pCapslist,
gst_structure_new ("video/x-h264",
+ "alignment", G_TYPE_STRING, "au",
"width", GST_TYPE_INT_RANGE, 64, NX_MAX_WIDTH,
"height", GST_TYPE_INT_RANGE, 64, NX_MAX_HEIGHT, NULL));
GstVideoCodecState *pOutputState = NULL;
NX_VIDEO_DEC_STRUCT *pDecHandle = NULL;
gint ret = FALSE;
+#ifdef TIZEN_FEATURE_ARTIK530
+ gboolean bIsFormatChange = FALSE;
+#endif
FUNC_IN ();
return FALSE;
}
+#ifdef TIZEN_FEATURE_ARTIK530
+ GST_DEBUG_OBJECT (pNxVideoDec, "old %dx%d fps=%d/%d %p",
+ pDecHandle->width, pDecHandle->height,
+ pDecHandle->fpsNum, pDecHandle->fpsDen,
+ pDecHandle->codec_data);
+ GST_DEBUG_OBJECT (pNxVideoDec, "new %dx%d fps=%d/%d %p",
+ GST_VIDEO_INFO_WIDTH (&pState->info),
+ GST_VIDEO_INFO_HEIGHT (&pState->info),
+ GST_VIDEO_INFO_FPS_N (&pState->info),
+ GST_VIDEO_INFO_FPS_D (&pState->info),
+ pState->codec_data);
+
+ bIsFormatChange |=
+ pDecHandle->width != GST_VIDEO_INFO_WIDTH (&pState->info);
+ bIsFormatChange |=
+ pDecHandle->height != GST_VIDEO_INFO_HEIGHT (&pState->info);
+ if (GST_VIDEO_INFO_FPS_N (&pState->info) != 0) {
+ bIsFormatChange |=
+ pDecHandle->fpsNum != GST_VIDEO_INFO_FPS_N (&pState->info);
+ bIsFormatChange |=
+ pDecHandle->fpsDen != GST_VIDEO_INFO_FPS_D (&pState->info);
+ } else {
+ bIsFormatChange |= pDecHandle->fpsNum != 30;
+ bIsFormatChange |= pDecHandle->fpsDen != 1;
+ }
+ bIsFormatChange |= (pDecHandle->codec_data != pState->codec_data);
+ gst_buffer_replace (&pDecHandle->codec_data, pState->codec_data);
+ GST_DEBUG_OBJECT (pNxVideoDec, "format changed=%d", bIsFormatChange);
+#endif
+
pDecHandle->codecType = FindCodecInfo (pState, pDecHandle);
if (pDecHandle->codecType < 0) {
return ret;
}
+#ifdef TIZEN_FEATURE_ARTIK530
+ if (!bIsFormatChange) {
+ FUNC_OUT ();
+ return TRUE;
+ }
+
+ if (pDecHandle->hCodec) {
+ NX_V4l2DecClose (pDecHandle->hCodec);
+ pDecHandle->hCodec = NULL;
+
+ if (pDecHandle->pTmpStrmBuf) {
+ g_free (pDecHandle->pTmpStrmBuf);
+ pDecHandle->pTmpStrmBuf = NULL;
+ }
+
+ pDecHandle->bInitialized = FALSE;
+ }
+#endif
+
if (0 != InitVideoDec (pNxVideoDec->pNxVideoDecHandle)) {
return FALSE;
}