author | Gong Ke <ke.gong@amlogic.com> | 2020-04-27 10:25:21 (GMT) |
---|---|---|
committer | Zhi Zhou <zhi.zhou@amlogic.com> | 2020-04-29 04:58:50 (GMT) |
commit | cf4afdca2675dc69a103471f4f0fcb659a71a1b3 (patch) | |
tree | cc3cdd9f32d89866838acf87d4e1a658787b5e4c | |
parent | f7a807582fff33856fdf41cccd16433794bb719e (diff) | |
download | media_modules-cf4afdca2675dc69a103471f4f0fcb659a71a1b3.zip media_modules-cf4afdca2675dc69a103471f4f0fcb659a71a1b3.tar.gz media_modules-cf4afdca2675dc69a103471f4f0fcb659a71a1b3.tar.bz2 |
sub: fix the demux driver to support amsub interface. [1/1]
PD#SWPL-24950
Problem:
amsub interface cannot be used.
Solution:
fixed demux driver to support use amsub interface.
Verify:
need verify on subtitle service.
Signed-off-by: Gong Ke <ke.gong@amlogic.com>
Change-Id: Ie6792bd8c876f6165ce67633353d1a16be5aaee7
-rw-r--r-- | drivers/stream_input/parser/hw_demux/aml_dmx.c | 2 | ||||
-rw-r--r-- | drivers/stream_input/parser/hw_demux/aml_dvb.c | 1 | ||||
-rw-r--r-- | drivers/stream_input/parser/tsdemux.c | 2 |
3 files changed, 4 insertions, 1 deletions
diff --git a/drivers/stream_input/parser/hw_demux/aml_dmx.c b/drivers/stream_input/parser/hw_demux/aml_dmx.c index eb8f30e..ef4725d 100644 --- a/drivers/stream_input/parser/hw_demux/aml_dmx.c +++ b/drivers/stream_input/parser/hw_demux/aml_dmx.c @@ -4386,11 +4386,13 @@ exit: static int set_subtitle_pes_buffer(struct aml_dmx *dmx) { #ifdef SUB_PARSER + if (dmx->sub_chan == -1) { unsigned long addr = virt_to_phys((void *)dmx->sub_pages); WRITE_MPEG_REG(PARSER_SUB_RP, addr); WRITE_MPEG_REG(PARSER_SUB_START_PTR, addr); WRITE_MPEG_REG(PARSER_SUB_END_PTR, addr + dmx->sub_buf_len - 8); pr_inf("set sub buff: (%d) %lx %x\n", dmx->id, addr, dmx->sub_buf_len); + } #endif return 0; } diff --git a/drivers/stream_input/parser/hw_demux/aml_dvb.c b/drivers/stream_input/parser/hw_demux/aml_dvb.c index 71f171f..cdc9b99 100644 --- a/drivers/stream_input/parser/hw_demux/aml_dvb.c +++ b/drivers/stream_input/parser/hw_demux/aml_dvb.c @@ -2720,6 +2720,7 @@ static int aml_tsdemux_set_sid(int spid) } if ((spid >= 0) && (spid < 0x1FFF)) { + dmx->sub_chan = 3; dmx->sub_chan = dmx_alloc_chan(dmx, DMX_TYPE_TS, DMX_PES_SUBTITLE, spid); diff --git a/drivers/stream_input/parser/tsdemux.c b/drivers/stream_input/parser/tsdemux.c index e3f61fe..7aa8a06 100644 --- a/drivers/stream_input/parser/tsdemux.c +++ b/drivers/stream_input/parser/tsdemux.c @@ -597,7 +597,7 @@ s32 tsdemux_init(u32 vid, u32 aid, u32 sid, u32 pcrid, bool is_hevc, WRITE_AIU_REG(AIU_MEM_AIFIFO_BUF_CNTL, MEM_BUFCTRL_INIT); CLEAR_AIU_REG_MASK(AIU_MEM_AIFIFO_BUF_CNTL, MEM_BUFCTRL_INIT); - if (!enable_demux_driver()) { + if (!enable_demux_driver() || ((sid > 0) && (sid < 0x1fff))) { WRITE_PARSER_REG(PARSER_SUB_START_PTR, parser_sub_start_ptr); WRITE_PARSER_REG(PARSER_SUB_END_PTR, parser_sub_end_ptr); WRITE_PARSER_REG(PARSER_SUB_RP, parser_sub_rp); |