Skip to content

Commit 68ee58c

Browse files
committed
Merge pull request #254 from cchampet/fix_OuputFileAddAudioStreamChannelLayout
OutputFile: copy channel_layout for each audio stream added
2 parents 11af7c1 + e71368c commit 68ee58c

File tree

4 files changed

+14
-15
lines changed

4 files changed

+14
-15
lines changed

src/AvTranscoder/file/OutputFile.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ IOutputStream& OutputFile::addAudioStream( const AudioCodec& audioDesc )
7373

7474
stream.codec->sample_rate = audioDesc.getAVCodecContext().sample_rate;
7575
stream.codec->channels = audioDesc.getAVCodecContext().channels;
76+
stream.codec->channel_layout = audioDesc.getAVCodecContext().channel_layout;
7677
stream.codec->sample_fmt = audioDesc.getAVCodecContext().sample_fmt;
7778
stream.codec->frame_size = audioDesc.getAVCodecContext().frame_size;
7879

test/pyTest/testTranscoderRewrap.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def testRewrapAudioStream():
3030
ouputFile = av.OutputFile( outputFileName )
3131

3232
transcoder = av.Transcoder( ouputFile )
33-
transcoder.add( inputFileName, 0, "" )
33+
transcoder.add( inputFileName, 0 )
3434
transcoder.process( progress )
3535

3636
# get dst file of wrap
@@ -44,17 +44,14 @@ def testRewrapAudioStream():
4444
assert_equals( src_properties.getFormatLongName(), dst_properties.getFormatLongName() )
4545
assert_equals( src_properties.getStartTime(), dst_properties.getStartTime() )
4646
assert_equals( src_properties.getDuration(), dst_properties.getDuration() )
47-
deltaBitRateAudio = 10
47+
deltaBitRateAudio = dst_properties.getBitRate() * 0.01
4848
assert_almost_equals( src_properties.getBitRate(), dst_properties.getBitRate(), delta=deltaBitRateAudio )
4949
assert_equals( src_properties.getPacketSize(), dst_properties.getPacketSize() )
5050

5151
# check audio properties
5252
src_propertiesMap = src_audioStream.getPropertiesAsMap()
5353
dst_propertiesMap = dst_audioStream.getPropertiesAsMap()
5454
for key in src_propertiesMap:
55-
# @todo: don't skip channel layout
56-
if key == "channelLayout":
57-
continue
5855
assert_equals( src_propertiesMap[key], dst_propertiesMap[key] )
5956

6057
def testRewrapVideoStream():
@@ -74,7 +71,7 @@ def testRewrapVideoStream():
7471
ouputFile = av.OutputFile( outputFileName )
7572

7673
transcoder = av.Transcoder( ouputFile )
77-
transcoder.add( inputFileName, 0, "" )
74+
transcoder.add( inputFileName, 0 )
7875
transcoder.process( progress )
7976

8077
# get dst file of wrap
@@ -88,7 +85,7 @@ def testRewrapVideoStream():
8885
assert_equals( src_properties.getFormatLongName(), dst_properties.getFormatLongName() )
8986
assert_equals( src_properties.getStartTime(), dst_properties.getStartTime() )
9087
assert_equals( src_properties.getDuration(), dst_properties.getDuration() )
91-
deltaBitRateVideo = 500000
88+
deltaBitRateVideo = dst_properties.getBitRate() * 0.15
9289
assert_almost_equals( src_properties.getBitRate(), dst_properties.getBitRate(), delta=deltaBitRateVideo )
9390
assert_equals( src_properties.getPacketSize(), dst_properties.getPacketSize() )
9491

test/pyTest/testTranscoderTranscodeAudioWave.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ def testTranscodeWave24b48k5_1():
3939
assert_equals( "s32", dst_audioStream.getSampleFormatName() )
4040
assert_equals( "signed 32 bits", dst_audioStream.getSampleFormatLongName() )
4141
assert_equals( 48000, dst_audioStream.getSampleRate() )
42-
# assert_equals( "1 channels", dst_audioStream.getChannelLayout() ) # '1 channels' != '0 channels'
4342
assert_equals( 6, dst_audioStream.getChannels() )
4443

4544
def testTranscodeWave24b48kstereo():
@@ -68,7 +67,6 @@ def testTranscodeWave24b48kstereo():
6867
assert_equals( "s32", dst_audioStream.getSampleFormatName() )
6968
assert_equals( "signed 32 bits", dst_audioStream.getSampleFormatLongName() )
7069
assert_equals( 48000, dst_audioStream.getSampleRate() )
71-
# assert_equals( "1 channels", dst_audioStream.getChannelLayout() ) # '1 channels' != '0 channels'
7270
assert_equals( 2, dst_audioStream.getChannels() )
7371

7472
def testTranscodeWave24b48kmono():
@@ -97,7 +95,6 @@ def testTranscodeWave24b48kmono():
9795
assert_equals( "s32", dst_audioStream.getSampleFormatName() )
9896
assert_equals( "signed 32 bits", dst_audioStream.getSampleFormatLongName() )
9997
assert_equals( 48000, dst_audioStream.getSampleRate() )
100-
# assert_equals( "1 channels", dst_audioStream.getChannelLayout() ) # '1 channels' != '0 channels'
10198
assert_equals( 1, dst_audioStream.getChannels() )
10299

103100
def testTranscodeWave16b48kmono():
@@ -126,5 +123,4 @@ def testTranscodeWave16b48kmono():
126123
assert_equals( "s16", dst_audioStream.getSampleFormatName() )
127124
assert_equals( "signed 16 bits", dst_audioStream.getSampleFormatLongName() )
128125
assert_equals( 48000, dst_audioStream.getSampleRate() )
129-
# assert_equals( "1 channels", dst_audioStream.getChannelLayout() ) # '1 channels' != '0 channels'
130126
assert_equals( 1, dst_audioStream.getChannels() )

test/pyTest/testTranscoderTranscodeVideo.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ def testTranscodeDnxhd120():
3636

3737
assert_equals( "dnxhd", dst_videoStream.getCodecName() )
3838
assert_equals( "VC3/DNxHD", dst_videoStream.getCodecLongName() )
39-
# assert_equals( 120000000, dst_videoStream.getBitRate() ) # 120000000 != 0L
39+
expectedBitRate = 120000000
40+
deltaBitRate = expectedBitRate * 0.05
41+
assert_almost_equals( expectedBitRate, dst_videoStream.getBitRate(), delta=deltaBitRate )
4042
assert_equals( "yuv422p", dst_videoStream.getPixelProperties().getPixelName() )
4143
# assert_equals( 1, dst_videoStream.getGopSize() ) # 1 != 12L
4244

@@ -63,7 +65,9 @@ def testTranscodeDnxhd185():
6365

6466
assert_equals( "dnxhd", dst_videoStream.getCodecName() )
6567
assert_equals( "VC3/DNxHD", dst_videoStream.getCodecLongName() )
66-
# assert_equals( 185000000, dst_videoStream.getBitRate() ) # 185000000 != 0L
68+
expectedBitRate = 185000000
69+
deltaBitRate = expectedBitRate * 0.05
70+
assert_almost_equals( expectedBitRate, dst_videoStream.getBitRate(), delta=deltaBitRate )
6771
assert_equals( "yuv422p", dst_videoStream.getPixelProperties().getPixelName() )
6872
# assert_equals( 1, dst_videoStream.getGopSize() ) # 1 != 12L
6973

@@ -90,7 +94,9 @@ def testTranscodeDnxhd185x():
9094

9195
assert_equals( "dnxhd", dst_videoStream.getCodecName() )
9296
assert_equals( "VC3/DNxHD", dst_videoStream.getCodecLongName() )
93-
# assert_equals( 185000000, dst_videoStream.getBitRate() ) # 185000000 != 0L
97+
expectedBitRate = 185000000
98+
deltaBitRate = expectedBitRate * 0.05
99+
assert_almost_equals( expectedBitRate, dst_videoStream.getBitRate(), delta=deltaBitRate )
94100
assert_equals( "yuv422p10le", dst_videoStream.getPixelProperties().getPixelName() )
95101
# assert_equals( 1, dst_videoStream.getGopSize() ) # 1 != 12L
96102

@@ -125,4 +131,3 @@ def testTranscodeYUV420():
125131

126132
assert_equals( "mpeg2video", dst_videoStream.getCodecName() )
127133
assert_equals( "yuv420p", dst_videoStream.getPixelProperties().getPixelName() )
128-

0 commit comments

Comments
 (0)