Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1709993

Browse files
committed
Fix nb samples computing into AudioProperties
And complete and update unit tests
1 parentf5975f2 commit1709993

File tree

5 files changed

+40
-9
lines changed

5 files changed

+40
-9
lines changed

‎src/AvTranscoder/properties/AudioProperties.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ size_t AudioProperties::getNbSamples() const
140140
throwstd::runtime_error("unknown format context");
141141
size_t nbSamples = _formatContext->streams[_streamIndex]->nb_frames;
142142
if(nbSamples ==0)
143-
nbSamples =getSampleRate() *getNbChannels() *getDuration();
143+
nbSamples =getSampleRate() *getDuration();
144144
return nbSamples;
145145
}
146146

‎src/AvTranscoder/properties/AudioProperties.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class AvExport AudioProperties : public StreamProperties
2222
size_tgetBitRate()const;///< in bits/s, 0 if unknown
2323
size_tgetSampleRate()const;
2424
size_tgetNbChannels()const;
25-
size_tgetNbSamples()const;///<All the channels are included.
25+
size_tgetNbSamples()const;///<For one channel.
2626

2727
size_tgetTicksPerFrame()const;
2828

‎test/pyTest/testNbSamples.py

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
frompyAvTranscoderimportavtranscoderasav
1111

1212

13-
deftestNbSamplesAudioRewrap():
13+
deftestNbSamplesAudioRewrapFromWav():
1414
"""
15-
Rewrap one audio stream, check nb samples.
15+
Rewrap one audio stream from WAV file, check nb samples.
1616
"""
1717
inputFileName=os.environ['AVTRANSCODER_TEST_AUDIO_WAVE_FILE']
18-
outputFileName="testNbSamplesAudioRewrap.wav"
18+
outputFileName="testNbSamplesAudioRewrapFromWav.wav"
1919

2020
ouputFile=av.OutputFile(outputFileName )
2121
transcoder=av.Transcoder(ouputFile )
@@ -36,6 +36,35 @@ def testNbSamplesAudioRewrap():
3636
dst_audioStream=dst_properties.getAudioProperties()[0]
3737

3838
assert_equals(src_audioStream.getNbSamples(),dst_audioStream.getNbSamples() )
39+
assert_equals(src_audioStream.getNbSamples(),src_audioStream.getSampleRate()*src_audioStream.getDuration() )
40+
41+
deftestNbSamplesAudioRewrapFromMov():
42+
"""
43+
Rewrap one audio stream from MOV file, check nb samples.
44+
"""
45+
inputFileName=os.environ['AVTRANSCODER_TEST_AUDIO_MOV_FILE']
46+
outputFileName="testNbSamplesAudioRewrapFromMov.wav"
47+
48+
ouputFile=av.OutputFile(outputFileName )
49+
transcoder=av.Transcoder(ouputFile )
50+
51+
transcoder.addStream(av.InputStreamDesc(inputFileName,1) )
52+
53+
progress=av.ConsoleProgress()
54+
transcoder.process(progress )
55+
56+
# get src file of rewrap
57+
src_inputFile=av.InputFile(inputFileName )
58+
src_properties=src_inputFile.getProperties()
59+
src_audioStream=src_properties.getAudioProperties()[0]
60+
61+
# get dst file of rewrap
62+
dst_inputFile=av.InputFile(outputFileName )
63+
dst_properties=dst_inputFile.getProperties()
64+
dst_audioStream=dst_properties.getAudioProperties()[0]
65+
66+
assert_equals(src_audioStream.getNbSamples(),dst_audioStream.getNbSamples() )
67+
assert_equals(src_audioStream.getNbSamples(),src_audioStream.getSampleRate()*src_audioStream.getDuration() )
3968

4069
deftestNbSamplesAudioTranscode():
4170
"""
@@ -70,3 +99,4 @@ def testNbSamplesAudioTranscode():
7099
dst_audioStream=dst_properties.getAudioProperties()[0]
71100

72101
assert_equals(src_audioStream.getNbSamples(),dst_audioStream.getNbSamples() )
102+
assert_equals(src_audioStream.getNbSamples(),src_audioStream.getSampleRate()*src_audioStream.getDuration() )

‎test/pyTest/testOffset.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def testRewrapAudioPositiveOffset():
103103

104104
# check output duration
105105
assert_equals(src_audioStream.getDuration()+offset,dst_audioStream.getDuration() )
106-
assert_equals(src_audioStream.getNbSamples()+ (offset*dst_audioStream.getSampleRate()*dst_audioStream.getNbChannels()),dst_audioStream.getNbSamples() )
106+
assert_equals(src_audioStream.getNbSamples()+ (offset*dst_audioStream.getSampleRate() ),dst_audioStream.getNbSamples() )
107107

108108

109109
deftestRewrapAudioNegativeOffset():
@@ -134,7 +134,7 @@ def testRewrapAudioNegativeOffset():
134134

135135
# check output duration
136136
assert_equals(src_audioStream.getDuration()+offset,dst_audioStream.getDuration() )
137-
assert_equals(src_audioStream.getNbSamples()+ (offset*dst_audioStream.getSampleRate()*dst_audioStream.getNbChannels()),dst_audioStream.getNbSamples() )
137+
assert_equals(src_audioStream.getNbSamples()+ (offset*dst_audioStream.getSampleRate() ),dst_audioStream.getNbSamples() )
138138

139139

140140
# # The output video stream has not the correct duration.

‎test/pyTest/testProperties.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,11 @@ def testCheckAudioProperties():
150150
expectedAudioBitRate=4608000
151151

152152
expectedCodecName='pcm_s16le'
153-
expectedSamples=5760000
154153
expectedDuration=20
155154
expectedChannels=6
156155
expectedChannelLayout='5.1'
157156
expectedSampleRate=48000
157+
expectedSamples=expectedSampleRate*expectedDuration;
158158

159159
assert_equals(properties.getBitRate(),expectedTotalBitRate )
160160
assert_equals(audioStream.getBitRate(),expectedAudioBitRate )
@@ -177,4 +177,5 @@ def testCheckFilePropertiesAsJson():
177177

178178
importjson
179179
# json.loads method throws a ValueError if it is not a valid JSON.
180-
json.loads(inputFile.getProperties().allPropertiesAsJson())
180+
jsonProps=json.loads(inputFile.getProperties().allPropertiesAsJson())
181+
print(jsonProps)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp