author | Gong Ke <ke.gong@amlogic.com> | 2017-12-28 02:04:09 (GMT) |
---|---|---|
committer | Gong Ke <ke.gong@amlogic.com> | 2017-12-28 02:04:09 (GMT) |
commit | dc78959c144c36ec7f52021745c683b7eea7bd03 (patch) | |
tree | c2800791741a624452e8407751d5b94654d07f9d | |
parent | ec9a390331d3e422a4ea20864ba43e8252cf5b05 (diff) | |
download | dvb-dc78959c144c36ec7f52021745c683b7eea7bd03.zip dvb-dc78959c144c36ec7f52021745c683b7eea7bd03.tar.gz dvb-dc78959c144c36ec7f52021745c683b7eea7bd03.tar.bz2 |
am_av: fixed replay and send no video data signal error [1/1]
PD# 157056
1.fixed replay and no video data signal error.
Change-Id: I08fdeabe78adb434b286e4fe4aa2ddd91a47270a
-rw-r--r-- | am_adp/am_av/aml/aml.c | 43 | ||||
-rwxr-xr-x | lib32/libam_ver.so | 6 | ||||
-rwxr-xr-x | lib64/libam_ver.so | 4 | ||||
-rwxr-xr-x | libam_ver.so | 4 |
4 files changed, 29 insertions, 28 deletions
diff --git a/am_adp/am_av/aml/aml.c b/am_adp/am_av/aml/aml.c index 60e14aa..2309078 100644 --- a/am_adp/am_av/aml/aml.c +++ b/am_adp/am_av/aml/aml.c @@ -3440,6 +3440,7 @@ static void* aml_av_monitor_thread(void *arg) int tsync_mode, vmaster_time = 0, vmaster_dur = 0; int abuf_level_empty_time = 0, abuf_level_empty_dur = 0, vbuf_level_empty_time = 0, vbuf_level_empty_dur = 0; int down_audio_cache_time = 0, down_video_cache_time = 0; + int vdec_stop_time = 0, vdec_stop_dur = 0; struct am_io_param astatus; struct am_io_param vstatus; int vdec_status, frame_width, frame_height; @@ -3949,7 +3950,7 @@ static void* aml_av_monitor_thread(void *arg) } //first no_data - if (has_audio && adec_start && !no_audio_data && (dmx_apts_stop_dur > NO_DATA_CHECK_TIME) && (apts_stop_dur > NO_DATA_CHECK_TIME)) { + if (has_audio && adec_start && !no_audio_data && (dmx_apts_stop_dur > NO_DATA_CHECK_TIME) && (arp_stop_dur > NO_DATA_CHECK_TIME)) { AM_Bool_t sf[2]; AM_DEBUG(1, "[avmon] audio stoped"); no_audio_data = AM_TRUE; @@ -3963,16 +3964,6 @@ static void* aml_av_monitor_thread(void *arg) AM_DEBUG(1, "[avmon] audio scrambled > stoped"); no_data_evt = AM_TRUE; } - } else { - if (!no_data_evt) { - AM_EVT_Signal(dev->dev_no, AM_AV_EVT_AV_NO_DATA, NULL); - no_data_evt = AM_TRUE; - } - } - } else { - if (!no_data_evt) { - AM_EVT_Signal(dev->dev_no, AM_AV_EVT_AV_NO_DATA, NULL); - no_data_evt = AM_TRUE; } } } @@ -3991,22 +3982,18 @@ static void* aml_av_monitor_thread(void *arg) AM_DEBUG(1, "[avmon] video scrambled"); no_data_evt = AM_TRUE; } - } else { - if (!no_data_evt) { - AM_EVT_Signal(dev->dev_no, AM_AV_EVT_AV_NO_DATA, NULL); - no_data_evt = AM_TRUE; - } - } - } else { - if (!no_data_evt) { - AM_EVT_Signal(dev->dev_no, AM_AV_EVT_AV_NO_DATA, NULL); - no_data_evt = AM_TRUE; } } } else if (is_avs_plus &&(tp->vfmt == VFORMAT_AVS)) { AM_EVT_Signal(dev->dev_no, AM_AV_EVT_VIDEO_NOT_SUPPORT, NULL);//not unsupport , just FORMAT is AVS } + if (no_audio_data && no_video_data && !no_data_evt) { + no_data_evt = AM_TRUE; + AM_DEBUG(1, "[avmon] send no video data signal"); + AM_EVT_Signal(dev->dev_no, AM_AV_EVT_AV_NO_DATA, NULL); + } + //AM_DEBUG(3,"no_audio = %d, dmx_a_stop = %d, a_stop= %d, no_video=%d, dmx_v_stop=%d, v_stop=%d, abuf_empty=%d, vbuf_empty=%d\n",no_audio_data,dmx_apts_stop_dur,apts_stop_dur, no_video_data, dmx_vpts_stop_dur, vpts_stop_dur, abuf_level_empty_dur,vbuf_level_empty_dur); if (no_audio_data && dmx_apts_stop_dur == 0) { @@ -4030,6 +4017,18 @@ static void* aml_av_monitor_thread(void *arg) need_replay = AM_FALSE; if (!no_video_data && /*!av_paused &&*/ (dmx_vpts_stop_dur == 0) && (vrp_stop_dur > NO_DATA_CHECK_TIME)) { + if (vdec_stop_time == 0) { + vdec_stop_time = now; + vdec_stop_dur = 0; + } else { + vdec_stop_dur = now - vdec_stop_time; + } + } else { + vdec_stop_time = 0; + vdec_stop_dur = 0; + } + + if (vdec_stop_dur > NO_DATA_CHECK_TIME) { need_replay = AM_TRUE; AM_DEBUG(1, "[avmon] apts_dmx_stop: %d arp_stop: %d vpts_dmx_stop: %d vrp_stop: %d", dmx_apts_stop_dur, arp_stop_dur, dmx_vpts_stop_dur, vrp_stop_dur); @@ -4097,6 +4096,8 @@ static void* aml_av_monitor_thread(void *arg) vmaster_time = 0; down_audio_cache_time = 0; down_video_cache_time = 0; + vdec_stop_time = 0; + vdec_stop_dur = 0; has_amaster = AM_FALSE; } } diff --git a/lib32/libam_ver.so b/lib32/libam_ver.so index c6d72ce..1840c71 100755 --- a/lib32/libam_ver.so +++ b/lib32/libam_ver.so @@ -1,4 +1,4 @@ -ELF +ELF 0å3ÿ/áÐKâ @@ -97,8 +97,8 @@ B¿&¼ñ óÿ°°¬€:óÿ°°°€8óÿ°°¨€Nóÿ°„€Xóÿ°°°€xóÿ°„€üóÿ°°ª€€ôÿ°°°€˜ôÿ°„€4õÿ°« -€˜ùÿ°°¬€Ôùÿ°°°€þÿ +€˜ùÿ°°¬€Ôùÿ°°°€þÿ A -"&Dlibam_ver.so +"&Dlibam_ver.so diff --git a/lib64/libam_ver.so b/lib64/libam_ver.so index 3c55889..9ac3cce 100755 --- a/lib64/libam_ver.so +++ b/lib64/libam_ver.so @@ -1,2 +1,2 @@ -ELF - +ELF + diff --git a/libam_ver.so b/libam_ver.so index 19a1a92..2b8a9ed 100755 --- a/libam_ver.so +++ b/libam_ver.so @@ -1,6 +1,6 @@ ELF -0å3ÿ/áÐKâ +0å3ÿ/áÐKâ A -"Dlibam_ver.so +"Dlibam_ver.so |