diff options
author | Burt P <pburt0@gmail.com> | 2016-07-29 12:36:17 -0500 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-07-31 16:36:22 +0200 |
commit | 390eea61be59ca75e55bc2dd630701281d15c0b8 (patch) | |
tree | 61b70c34511ce402212fa3e56567ae321be0ac84 /libavfilter/af_hdcd.c | |
parent | 999c6b1da85a3aa7f625353605cb3e1ec6fdf41d (diff) | |
download | ffmpeg-390eea61be59ca75e55bc2dd630701281d15c0b8.tar.gz |
af_hdcd: give cdt expired counter a value for never set
The counter is now -1 if the code detect timer was never set,
and 0 if it was set but never expired.
Signed-off-by: Burt P <pburt0@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavfilter/af_hdcd.c')
-rw-r--r-- | libavfilter/af_hdcd.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c index e7adbea5b7..36267474de 100644 --- a/libavfilter/af_hdcd.c +++ b/libavfilter/af_hdcd.c @@ -846,7 +846,9 @@ typedef struct { * steps of 0.5, but no value below -6.0 dB should appear. */ int gain_counts[16]; /* for cursiosity, mostly */ int max_gain; - int count_sustain_expired; /* occurences of code detect timer expiring without detecting a code */ + /* occurences of code detect timer expiring without detecting + * a code. -1 for timer never set. */ + int count_sustain_expired; AVFilterContext *fctx; /* filter context for logging errors */ } hdcd_state_t; @@ -909,7 +911,7 @@ static void hdcd_reset(hdcd_state_t *state, unsigned rate) for(i = 0; i < 16; i++) state->gain_counts[i] = 0; state->max_gain = 0; - state->count_sustain_expired = 0; + state->count_sustain_expired = -1; } /* update the user info/counters */ @@ -991,6 +993,15 @@ static int hdcd_integrate(hdcd_state_t *state, int *flag, const int32_t *samples return result; } +static void hdcd_sustain_reset(hdcd_state_t *state) +{ + state->sustain = state->sustain_reset; + /* if this is the first reset then change + * from never set, to never expired */ + if (state->count_sustain_expired == -1) + state->count_sustain_expired = 0; +} + static int hdcd_scan(hdcd_state_t *state, const int32_t *samples, int max, int stride) { int cdt_active = 0; @@ -1011,7 +1022,7 @@ static int hdcd_scan(hdcd_state_t *state, const int32_t *samples, int max, int s result += consumed; if (flag > 0) { /* reset timer if code detected in channel */ - state->sustain = state->sustain_reset; + hdcd_sustain_reset(state); break; } samples += consumed * stride; |