avsync: spdif: fix the avsync for ms12 [1/4]

PD#SWPL-5837

Problem:
dtv is out of avsync when dolby ms12 certificate

Solution:
when the audio is played, recalculate the apts to sync
pcrsrc when pcrmaster.

Verify:
X301

Change-Id: I199383aa1c0de1b4f0ec646d9d066910b3bb2b42
Signed-off-by: Xiaoming Sui <xiaoming.sui@amlogic.com>

avsync: tsync: fix the avsync for ms12 [3/4]

PD#SWPL-5837

Problem:
dtv is out of avsync when dolby ms12 certificate

Solution:
when the audio is played, recalculate the apts to sync
pcrsrc when pcrmaster.

Verify:
X301

Change-Id: Ia121e57ad69c5b0d211e14bf3a61f165457e54c7
Signed-off-by: Xiaoming Sui <xiaoming.sui@amlogic.com>
This commit is contained in:
Xiaoming Sui
2019-04-15 20:38:47 +08:00
committed by Chris KIM
parent 3c829561f4
commit d7660c49ab
3 changed files with 36 additions and 0 deletions

View File

@@ -136,6 +136,19 @@ u32 timestamp_pcrscr_get(void)
}
EXPORT_SYMBOL(timestamp_pcrscr_get);
void timestamp_set_pcrlatency(u32 latency)
{
if (latency < 500 * 90)
pcrscr_lantcy = latency;
}
EXPORT_SYMBOL(timestamp_set_pcrlatency);
u32 timestamp_get_pcrlatency(void)
{
return pcrscr_lantcy;
}
EXPORT_SYMBOL(timestamp_get_pcrlatency);
u32 timestamp_tsdemux_pcr_get(void)
{
if (tsdemux_pcrscr_get_cb)

View File

@@ -1999,6 +1999,25 @@ static ssize_t show_startsync_mode(struct class *class,
return sprintf(buf, "0x%x\n", tsync_get_startsync_mode());
}
static ssize_t show_latency(struct class *class,
struct class_attribute *attr, char *buf)
{
return sprintf(buf, "%u\n", timestamp_get_pcrlatency());
}
static ssize_t store_latency(struct class *class,
struct class_attribute *attr,
const char *buf, size_t size)
{
unsigned int latency = 0;
ssize_t r;
r = kstrtoint(buf, 0, &latency);
if (r != 0)
return -EINVAL;
timestamp_set_pcrlatency(latency);
return size;
}
static ssize_t show_apts_lookup(struct class *class,
struct class_attribute *attrr, char *buf)
@@ -2088,6 +2107,7 @@ static struct class_attribute tsync_class_attrs[] = {
NULL),
__ATTR(checkin_firstapts, 0644, show_checkin_firstapts,
NULL),
__ATTR(pts_latency, 0664, show_latency, store_latency),
__ATTR_NULL
};

View File

@@ -157,6 +157,9 @@ extern int tsync_set_av_threshold_max(int max);
extern void set_pts_realign(void);
extern void timestamp_set_pcrlatency(u32 latency);
extern u32 timestamp_get_pcrlatency(void);
static inline u32 tsync_vpts_discontinuity_margin(void)
{
return tsync_get_av_threshold_min();