aboutsummaryrefslogtreecommitdiff
path: root/src/analysis.c
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2013-09-28 19:29:23 -0400
committerJean-Marc Valin <jmvalin@jmvalin.ca>2013-09-28 23:50:30 -0400
commit292544453fc89a9a2d14781328f8b1a517e756bc (patch)
tree37ecfeb6612381ad6030a1606cd7e42c8962f4b7 /src/analysis.c
parenta4c2512aa4fbd49142e2026ab5cdeacaa1e1e394 (diff)
downloadlibopus-292544453fc89a9a2d14781328f8b1a517e756bc.tar.gz
Makes analysis work when encoding more than 20 ms at a time
Diffstat (limited to 'src/analysis.c')
-rw-r--r--src/analysis.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/analysis.c b/src/analysis.c
index c130e3a4..53247df9 100644
--- a/src/analysis.c
+++ b/src/analysis.c
@@ -625,22 +625,23 @@ void run_analysis(TonalityAnalysisState *analysis, const CELTMode *celt_mode, co
int offset;
int pcm_len;
- /* Avoid overflow/wrap-around of the analysis buffer */
- analysis_frame_size = IMIN((DETECT_SIZE-5)*Fs/100, analysis_frame_size);
-
- pcm_len = analysis_frame_size - analysis->analysis_offset;
- offset = analysis->analysis_offset;
- do {
- tonality_analysis(analysis, NULL, celt_mode, analysis_pcm, IMIN(480, pcm_len), offset, c1, c2, C, lsb_depth, downmix);
- offset += 480;
- pcm_len -= 480;
- } while (pcm_len>0);
- analysis->analysis_offset = analysis_frame_size;
-
- analysis->analysis_offset -= frame_size;
-
- /* Only perform analysis up to 20-ms frames. Longer ones will be split if
- they're in CELT-only mode. */
+ if (analysis_pcm != NULL)
+ {
+ /* Avoid overflow/wrap-around of the analysis buffer */
+ analysis_frame_size = IMIN((DETECT_SIZE-5)*Fs/100, analysis_frame_size);
+
+ pcm_len = analysis_frame_size - analysis->analysis_offset;
+ offset = analysis->analysis_offset;
+ do {
+ tonality_analysis(analysis, NULL, celt_mode, analysis_pcm, IMIN(480, pcm_len), offset, c1, c2, C, lsb_depth, downmix);
+ offset += 480;
+ pcm_len -= 480;
+ } while (pcm_len>0);
+ analysis->analysis_offset = analysis_frame_size;
+
+ analysis->analysis_offset -= frame_size;
+ }
+
analysis_info->valid = 0;
tonality_get_info(analysis, analysis_info, frame_size);
}