diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2008-06-27 16:18:13 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2008-06-27 16:18:13 +0000 |
commit | cc9f73832038bdab140af1818635f15a391f3398 (patch) | |
tree | c5e14fbff6d3c3f1c9f97fc25ba19d56da96123c /pjsip-apps/src/test-pjsua/mod_pesq.py | |
parent | 41171475ee587b18522664d5db1cdb2b7604d0f4 (diff) |
Ticket #543:
- Fixed bug of calculating clock interval which should include channel count
- Added L16 codecs including stereo
- Added WAV files for stereo tests
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2075 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps/src/test-pjsua/mod_pesq.py')
-rw-r--r-- | pjsip-apps/src/test-pjsua/mod_pesq.py | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/pjsip-apps/src/test-pjsua/mod_pesq.py b/pjsip-apps/src/test-pjsua/mod_pesq.py index ef76def3..9853a756 100644 --- a/pjsip-apps/src/test-pjsua/mod_pesq.py +++ b/pjsip-apps/src/test-pjsua/mod_pesq.py @@ -49,12 +49,35 @@ def test_func(t, user_data): # Get output file name user_data.output_filename = re.compile(const.MEDIA_REC_FILE).search(ua2.inst_param.arg).group(1) - # Find appropriate clock rate for the input file + # Get WAV input length, in seconds + fin = wave.open(user_data.input_filename, "r") + if fin == None: + raise TestError("Failed opening input WAV file") + inwavlen = fin.getnframes() * 1.0 / fin.getframerate() + inwavlen += 0.2 + fin.close() + print "WAV input len = " + str(inwavlen) + "s" + + # Get clock rate of the output mo_clock_rate = re.compile("\.(\d+)\.wav").search(user_data.output_filename) if (mo_clock_rate==None): raise TestError("Cannot compare input & output, incorrect output filename format") clock_rate = mo_clock_rate.group(1) - user_data.input_filename = re.sub("\.\d+\.wav", "."+clock_rate+".wav", user_data.input_filename) + + # Get channel count of the output + channel_count = 1 + if re.search("--stereo", ua2.inst_param.arg) != None: + channel_count = 2 + + # Get matched input file from output file + # (PESQ evaluates only files whose same clock rate & channel count) + if channel_count == 2: + if re.search("\.\d+\.\d+\.wav", user_data.input_filename) != None: + user_data.input_filename = re.sub("\.\d+\.\d+\.wav", + "." + str(channel_count) + "."+clock_rate+".wav", user_data.input_filename) + else: + user_data.input_filename = re.sub("\.\d+\.wav", + "." + str(channel_count) + "."+clock_rate+".wav", user_data.input_filename) if (clock_rate != "8") & (clock_rate != "16"): raise TestError("PESQ only works on clock rate 8kHz or 16kHz, clock rate used = "+clock_rate+ "kHz") @@ -62,15 +85,6 @@ def test_func(t, user_data): # Get conference clock rate of UA2 for PESQ sample rate option user_data.pesq_sample_rate_opt = "+" + clock_rate + "000" - # Get WAV input length, in seconds - fin = wave.open(user_data.input_filename, "r") - if fin == None: - raise TestError("Failed opening input WAV file") - inwavlen = fin.getnframes() // fin.getframerate() - if (fin.getnframes() % fin.getframerate()) > 0: - inwavlen = inwavlen + 1 - fin.close() - # UA1 making call ua1.send("m") ua1.send(t.inst_params[1].uri) @@ -109,7 +123,7 @@ def post_func(t, user_data): pesq_out = pesq_proc.communicate() # Parse ouput - mo_pesq_out = re.compile("Prediction[^=]+=\s+([\d\.]+)\s*").search(pesq_out[0]) + mo_pesq_out = re.compile("Prediction[^=]+=\s+([\-\d\.]+)\s*").search(pesq_out[0]) if (mo_pesq_out == None): raise TestError("Failed to fetch PESQ result") |