amlhwdmx: CB1 change the time of calling release [1/1]
PD#SWPL-179287
Problem:
change state ready to null failed
Solution:
change the time of calling release
Verify:
ap222
Change-Id: If08ba3fc437483cad7c7ee5d0a5f6866305df626
Signed-off-by: hanghang.luo <hanghang.luo@amlogic.com>
diff --git a/src/gstamldmx.c b/src/gstamldmx.c
index 5ba9c3e..0229ce3 100644
--- a/src/gstamldmx.c
+++ b/src/gstamldmx.c
@@ -215,14 +215,13 @@
case GST_STATE_CHANGE_READY_TO_NULL:
{
GST_LOG_OBJECT(amlhwdmx, "GST_STATE_CHANGE_READY_TO_NULL");
- gst_amlhwdmx_reset(amlhwdmx);
- gst_amldmxwrap_close(amlhwdmx->dmx_dev_id);
if (!(gst_aml_dmxmgr_release(class->dmx_mgr, amlhwdmx->dmx_dev_id)))
{
GST_ERROR_OBJECT(amlhwdmx, "release dmx id failed");
ret = GST_STATE_CHANGE_FAILURE;
- goto done;
}
+ gst_amlhwdmx_reset(amlhwdmx);
+ gst_amldmxwrap_close(amlhwdmx->dmx_dev_id);
break;
}
default:
@@ -546,7 +545,6 @@
gst_pat_filter_reset(amlhwdmx);
GST_DEBUG_OBJECT(amlhwdmx, "after reset PAT & PMT & ES filter");
- amlhwdmx->dmx_dev_id = -1;
amlhwdmx->audio_stream_num = 0;
amlhwdmx->selected_program_no = DEFAULT_PROGRAM_NO;
amlhwdmx->selected_audio_stream = DEFAULT_SELECTED_AUDIO_TRACK;
@@ -1661,12 +1659,12 @@
}
else if (newest_video_pts < amlhwdmx->sinkpad.decoded_pts)
{
- GST_ERROR_OBJECT(amlhwdmx->srcpads[i].pad, "check video pts fail(pushed pts should never greater than now pts)");
+ GST_DEBUG_OBJECT(amlhwdmx->srcpads[i].pad, "check video pts fail(pushed pts should never greater than now pts)");
pts_check_result = FALSE;
}
else if (newest_video_pts - amlhwdmx->sinkpad.decoded_pts > AMLHWDMX_MAX_ES_BUF_PTS_DIFF)
{
- GST_ERROR_OBJECT(amlhwdmx, "check video pts fail(pts diff: %" GST_TIME_FORMAT ", Threshold exceeded)",
+ GST_DEBUG_OBJECT(amlhwdmx, "check video pts fail(pts diff: %" GST_TIME_FORMAT ", Threshold exceeded)",
GST_TIME_ARGS(newest_video_pts - amlhwdmx->sinkpad.decoded_pts));
pts_check_result = FALSE;
}
diff --git a/src/gstamldmxmgr.c b/src/gstamldmxmgr.c
index a7782d5..cc76cb6 100644
--- a/src/gstamldmxmgr.c
+++ b/src/gstamldmxmgr.c
@@ -42,8 +42,9 @@
void gst_aml_dmxmgr_finalize(void *dmx_mgr)
{
- if (dmx_mgr)
- g_slice_free(GstAmlhwdmxMgr, dmx_mgr);
+ g_assert(dmx_mgr != NULL);
+
+ g_slice_free(GstAmlhwdmxMgr, dmx_mgr);
}
gboolean gst_aml_dmxmgr_acquire(void *dmx_mgr, gint *id)
@@ -51,12 +52,11 @@
GstAmlhwdmxMgr *mgr;
gboolean ret = FALSE;
+ g_assert(dmx_mgr != NULL);
+
*id = -1;
mgr = (GstAmlhwdmxMgr *)dmx_mgr;
- if (!mgr)
- goto done;
-
for (guint i = 0; i < DMX_DEV_NUM; i++)
{
GST_DEBUG("dmx id[%d] used:%d", i, mgr->used_dmx_id[i]);
@@ -69,7 +69,6 @@
}
}
-done:
GST_DEBUG("acquire ret:%d with dmx_id:%d ", ret, *id);
return ret;
}
@@ -79,10 +78,9 @@
GstAmlhwdmxMgr *mgr;
gboolean ret = FALSE;
- mgr = (GstAmlhwdmxMgr *)dmx_mgr;
+ g_assert(dmx_mgr != NULL);
- if (!mgr)
- goto done;
+ mgr = (GstAmlhwdmxMgr *)dmx_mgr;
if (id < 0 || id >= DMX_DEV_NUM)
goto done;