Audio: Unify playback setup of the converter
This code was being duplicated across three different playback functions which basically did most of the same things. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
parent
04426d755c
commit
4face7d631
1 changed files with 13 additions and 29 deletions
|
@ -100,18 +100,7 @@
|
||||||
if(![inputNode openWithSource:source])
|
if(![inputNode openWithSource:source])
|
||||||
return NO;
|
return NO;
|
||||||
|
|
||||||
NSDictionary *properties = [inputNode properties];
|
if(![self initConverter:outputFormat])
|
||||||
|
|
||||||
AudioStreamBasicDescription inputFormat = [inputNode nodeFormat];
|
|
||||||
uint32_t inputChannelConfig = 0;
|
|
||||||
if([properties valueForKey:@"channelConfig"])
|
|
||||||
inputChannelConfig = [[properties valueForKey:@"channelConfig"] unsignedIntValue];
|
|
||||||
|
|
||||||
outputFormat.mChannelsPerFrame = inputFormat.mChannelsPerFrame;
|
|
||||||
outputFormat.mBytesPerFrame = ((outputFormat.mBitsPerChannel + 7) / 8) * outputFormat.mChannelsPerFrame;
|
|
||||||
outputFormat.mBytesPerPacket = outputFormat.mBytesPerFrame * outputFormat.mFramesPerPacket;
|
|
||||||
|
|
||||||
if(![converterNode setupWithInputFormat:inputFormat withInputConfig:inputChannelConfig outputFormat:outputFormat isLossless:[[properties valueForKey:@"encoding"] isEqualToString:@"lossless"]])
|
|
||||||
return NO;
|
return NO;
|
||||||
[self initDownmixer];
|
[self initDownmixer];
|
||||||
|
|
||||||
|
@ -133,19 +122,7 @@
|
||||||
if(![inputNode openWithDecoder:[i decoder]])
|
if(![inputNode openWithDecoder:[i decoder]])
|
||||||
return NO;
|
return NO;
|
||||||
|
|
||||||
NSDictionary *properties = [inputNode properties];
|
if(![self initConverter:outputFormat])
|
||||||
|
|
||||||
AudioStreamBasicDescription inputFormat = [inputNode nodeFormat];
|
|
||||||
uint32_t inputChannelConfig = 0;
|
|
||||||
if([properties valueForKey:@"channelConfig"])
|
|
||||||
inputChannelConfig = [[properties valueForKey:@"channelConfig"] unsignedIntValue];
|
|
||||||
|
|
||||||
outputFormat.mChannelsPerFrame = inputFormat.mChannelsPerFrame;
|
|
||||||
outputFormat.mBytesPerFrame = ((outputFormat.mBitsPerChannel + 7) / 8) * outputFormat.mChannelsPerFrame;
|
|
||||||
outputFormat.mBytesPerPacket = outputFormat.mBytesPerFrame * outputFormat.mFramesPerPacket;
|
|
||||||
|
|
||||||
DLog(@"Input Properties: %@", properties);
|
|
||||||
if(![converterNode setupWithInputFormat:inputFormat withInputConfig:inputChannelConfig outputFormat:outputFormat isLossless:[[properties objectForKey:@"encoding"] isEqualToString:@"lossless"]])
|
|
||||||
return NO;
|
return NO;
|
||||||
[self initDownmixer];
|
[self initDownmixer];
|
||||||
|
|
||||||
|
@ -169,6 +146,16 @@
|
||||||
if(![inputNode openWithDecoder:decoder])
|
if(![inputNode openWithDecoder:decoder])
|
||||||
return NO;
|
return NO;
|
||||||
|
|
||||||
|
if(![self initConverter:outputFormat])
|
||||||
|
return NO;
|
||||||
|
[self initDownmixer];
|
||||||
|
|
||||||
|
[self setRGInfo:rgi];
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)initConverter:(AudioStreamBasicDescription)outputFormat {
|
||||||
NSDictionary *properties = [inputNode properties];
|
NSDictionary *properties = [inputNode properties];
|
||||||
|
|
||||||
DLog(@"Input Properties: %@", properties);
|
DLog(@"Input Properties: %@", properties);
|
||||||
|
@ -182,11 +169,8 @@
|
||||||
outputFormat.mBytesPerFrame = ((outputFormat.mBitsPerChannel + 7) / 8) * outputFormat.mChannelsPerFrame;
|
outputFormat.mBytesPerFrame = ((outputFormat.mBitsPerChannel + 7) / 8) * outputFormat.mChannelsPerFrame;
|
||||||
outputFormat.mBytesPerPacket = outputFormat.mBytesPerFrame * outputFormat.mFramesPerPacket;
|
outputFormat.mBytesPerPacket = outputFormat.mBytesPerFrame * outputFormat.mFramesPerPacket;
|
||||||
|
|
||||||
if(![converterNode setupWithInputFormat:inputFormat withInputConfig:inputChannelConfig outputFormat:outputFormat isLossless:[[properties objectForKey:@"encoding"] isEqualToString:@"lossless"]])
|
if(![converterNode setupWithInputFormat:inputFormat withInputConfig:inputChannelConfig outputFormat:outputFormat isLossless:[[properties valueForKey:@"encoding"] isEqualToString:@"lossless"]])
|
||||||
return NO;
|
return NO;
|
||||||
[self initDownmixer];
|
|
||||||
|
|
||||||
[self setRGInfo:rgi];
|
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue