The present document relates to the design of anti-aliasing and/or anti-imaging filters for resamplers using rational resampling factors. In particular, the present document relates to a method for implementing such anti-aliasing and/or anti-imaging filters with reduced computational complexity. In addition, the present document relates to further aspects of an audio encoding and decoding system, such as the phase relation between the channels of a multi-channel audio signal and/or the structure of the bitstream of an encoded audio signal.
Furthermore, the present document relates to the modification of the frame rate of the bitstream of an encoded audio signal.
Different audio formats may require different sampling rates (e.g. 32 kHz, 44.1 kHz or 48 kHz). In order to transfer an audio signal at a first sampling rate (e.g. at 32 kHz) to an audio signal at a second sampling rate (e.g. at 48 kHz) rational resamplers may be used. The resampling of audio by rational factors typically introduces imaging/aliasing artifacts into the resampled audio signal. An anti-imaging/anti-aliasing filter may be used to suppress the unwanted images and/or aliases of the audio signal. The present document describes anti-imaging/anti-aliasing filters used in rational resamplers. In particular, the present document describes a method for implementing such anti-imaging/anti-aliasing filters in a computationally efficient manner.
Furthermore, the frame rate of an encoded audio signal may be modified, e.g. in conjunction with a modification of the frame rate of an associated video signal. Such frame rates may be rational numbers. The present document describes methods and systems which are configured to enable the modification of the frame rate of an encoded audio signal with reduced (e.g. no) audible artifacts.
According to an aspect a system for resampling an input audio signal into an output audio signal is described. The system may also be referred to as a resampler. The system may be configured to perform a resampling in accordance to a rational resampling ratio. The resampling ratio L/M may be defined by an upsampling factor L, e.g. L being an integer greater or equal to one, and a downsampling factor M, e.g. M being an integer greater or equal to one. As such, the resampler may be configured to resample the input audio signal at an input sampling rate into the output audio signal at an output sampling rate, wherein the output sampling rate corresponds to L/M times the input sampling rate.
The system may comprise a processing unit which is configured to determine a current output sample of the output audio signal from one or more input samples of the input audio signal using a current subset of filter coefficients from a filter which is configured to reduce imaging and/or aliasing of the output audio signal. The filter may be referred to as an anti-imaging/anti-aliasing filter. The filter may be implemented as a digital filter (e.g. a Finite Impulse Response, FIR, filter) comprising a pre-determined number N of filter coefficients. The current subset of filter coefficients for determining the current output sample may be selected from the pre-determined number N of filter coefficients of the anti-imaging/anti-aliasing filter. In particular, the current subset of filter coefficients may correspond to a phase of a polyphase structure of the anti-imaging/anti-aliasing filter.
As indicated above, the anti-imaging/anti-aliasing filter may comprise a total set of N filter coefficients. This total set of filter coefficients may be subdivided into a plurality of phases of a polyphase structure, wherein each phase comprises a subset of filter coefficients from the total set of filter coefficients. In particular, the polyphase structure may comprise L phases, i.e. a number of phases which corresponds to the upsampling factor L. The subsets of filter coefficients for the different phases may then comprise N/L filter coefficients each. Typically, the subsets of filter coefficients for the different phases of the polyphase structure are mutually exclusive with respect to one another. In other words, typically, each filter coefficient from the total set of filter coefficients is only comprised within a single subset for a single phase. Furthermore, the union of the subsets of filter coefficients for the different phases typically corresponds to the total set of filter coefficients.
The system may comprise one or more look-up tables providing a mapping between phase indexes of different phases of the polyphase structure of the filter, which are to be used to determine different output samples, and phase indexes of directly preceding phases which are to be used to determine directly preceding output samples, respectively, and providing a mapping between phase indexes and respective subsets of filter coefficients from the filter.
In particular, the system may further comprise a phase look-up table providing a mapping between phase indexes of different phases of the polyphase structure of the anti-imaging/anti-aliasing filter, wherein the different phases are to be used to determine different output samples, and phase indexes of directly preceding phases which are used to determine directly preceding output samples, respectively. In other words, the phase look-up table may be indicative of a sequence of phases of the polyphase structure of the anti-imaging/anti-aliasing filter, wherein the sequence of phases is to be used to determine a corresponding sequence of output samples of the output audio signal. As such, the phase look-up table may indicate for each phase of the polyphase structure the directly following phase of the polyphase structure.
In addition, the system may comprise a filter look-up table providing a mapping between phase indexes and respective subsets of filter coefficients from the anti-imaging/anti-aliasing filter. In other words, the filter look-up table may be indicative of the subsets of filter coefficients (forming sub-filters) for the different phases of the polyphase structure.
Alternatively, the system may comprise a combined phase/filter look-up table providing a mapping between phase indexes and respective subsets of filter coefficients from the filter. The phase indexes of the combined phase/filter look-up table may be ordered in accordance to the sequence of phase indexes to be used to determine the corresponding sequence of output samples of the output audio signal. By way of example, the combined phase/filter look-up table may comprise a plurality of lines (or columns) indicating different subsets of filter coefficients for different phase indexes, and the lines (or columns) may be ordered in accordance to the sequence of phase indexes to be used to determine the corresponding sequence of output samples of the output audio signal. Hence, the ordering of the lines (or columns) of the combined phase/filter look-up table provides a mapping between phase indexes of different phases of the polyphase structure of the filter, which are to be used to determine different output samples, and phase indexes of directly preceding phases which are to be used to determine directly preceding output samples, respectively.
As a result of using a combined phase/filter look-up table, the current subset of filter coefficients for the current output sample may be determined using look-up operations based on a MODULO L pointer.
The processing unit may be configured to determine the current subset of filter coefficients based on a previous phase index for a previous output sample directly preceding the current output sample, using the one or more look-up tables.
In particular, the processing unit may be configured to determine the current phase index (which identifies a to-be-used current phase for determining the current output samples) based on a previous phase index (which identifies the phase used for determining a previous output sample directly preceding the current output sample), using the phase look-up table. As such, the determination of the current phase index (and by consequence the determination of the current phase) may be performed in a computationally efficient manner, using a look-up operation. In a similar manner, the processing unit may be configured to determine the current subset of filter coefficients based on the current phase index using the filter look-up table. As such, the processing unit may be configured to determine the filter coefficients which are to be used for determining the current output sample using computationally efficient look-up operations.
Alternatively, the processing unit may be configured to determine the current subset of filter coefficients based on the previous phase index for the previous output sample directly preceding the current output sample, using a MODULO L pointer into the combined phase/filter look-up table.
As indicated above, the system may be configured to resample the input audio signal in accordance to an upsampling factor L, with L being greater than one. The polyphase structure of the anti-imaging/anti-aliasing filter may then comprise L phases. Furthermore, the phase look-up table may then provide for each of the L phase indexes for the L phases a mapping to the phase index for the directly preceding phase. In other words, the phase look-up table may comprise L entries with mapping pairs of current and preceding phase indexes. The phase look-up table may be indicative of a sequence of phase indexes of phases which are to be used for determining a corresponding sequence of output samples of the output audio signal. The sequence of phase indexes (i.e. the sequence of to-be-used phases) is typically dependent on the upsampling factor L and/or on the downsampling factor M. The processing unit may be configured to determine the sequence of phase indexes and/or the phase look-up table based on the upsampling factor L and/or based on the downsampling factor M. Furthermore, the processing unit may be configured to determine the subsets of filter coefficients and/or the filter look-up table. These determinations may be performed upon initialization of the resampler. The subsequent processing of the input audio signal may then be performed using a pre-determined sequence of phase indexes and/or phase look-up table, as well as pre-determined subsets of filter coefficients and/or a pre-determined filter look-up table.
The processing unit may be configured to determine the sequence of phase indexes and/or the phase look-up table by determining a base vector comprising a sequence of ascending integers from 1 to L. Furthermore, a concatenated vector may be determined from the base vector by concatenating the base vector M times. The sequence of phase indexes may be determined by selecting every Mth entry from the concatenated vector. The phase look-up table may then be determined based on the sequence of phase indexes. This method for determining the sequence of phase indexes is beneficial, as it does not involve any computationally onerous tasks such as multiplications or divisions.
However, the above mentioned method for determining the sequence of phase indexes involves the determination and storage of a concatenated vector comprising L*M entries. In the following, an alternative method for determining the sequence of phase indexes is described, which provides an improved efficiency regarding memory resources. For determining the sequence of phase indexes, the processing unit may be configured to select a first phase index from the sequence of phase indexes. The first phase index may be increased by L or multiples of L, as long as the increased first phase index is smaller or equal to M. As a consequence, the resulting increased first phase index exceeds the value M. A second phase index which directly follows the first phase index in the sequence of phase indexes may be determined based on the increased first phase index. In particular, the second phase index may be determined by subtracting M from the increased first phase index M, to yield an intermediate phase index. The second phase index may then be determined by subtracting the intermediate phase index from L+1. The above mentioned process may be repeated in an iterative manner (by replacing the first phase index of a current iteration with the second phase index of the previous iteration), to determine the complete sequence of phase indexes.
Furthermore, the processing unit may be configured to determine the sequence of phase indexes by setting a difference between adjacent phase indexes from the sequence of phase indexes to Δ=[M MOD L], for one or more pairs of adjacent phase indexes.
The system may be designed for different resampling ratios. In other words, the system may be configured to perform resampling in accordance to different upsampling factors L and/or in accordance to different downsampling factors M. For this purpose, the phase look-up table may comprise a plurality of phase index-to-phase index mappings for a plurality of different resampling ratios L/M, respectively. Furthermore, the filter look-up table may comprise a plurality of phase index-to-subset of filter coefficients mappings for the plurality of different resampling ratios L/M, respectively. The processing unit may then be configured to select the appropriate mappings for the applicable resampling ratio.
According to a further aspect, a method for determining a sequence of phase indexes is described. The sequence of phase indexes may identify a corresponding sequence of phases of a polyphase structure of a resampling filter which is used for determining a sequence of output samples of a resampled audio signal from a sequence of input samples of an input audio signal. The method may comprise selecting a first phase index from the sequence of phase indexes. The first phase index may be increased by an upsampling factor L or by multiples of L, as long as the increased first phase index is smaller or equal to a downsampling factor M. A second phase index which directly follows the first phase index in the sequence of phase indexes may be determined based on the increased first phase index. The method may further comprise determining the second phase index by subtracting M from the increased first phase index M, to yield an intermediate phase index. In addition, the method may comprise determining the second phase index by subtracting the intermediate phase index from L+1.
According to another aspect, a method for determining a sequence of phase indexes is described. The sequence of phase indexes may identify a corresponding sequence of phases of a polyphase structure of a resampling filter, wherein the sequence of phase indexes is to be used for determining a sequence of output samples of a resampled audio signal from a sequence of input samples of an input audio signal. The method may comprise determining a base vector comprising a sequence of ascending integers from 1 to an upsampling factor L. Furthermore, the method may comprise determining a concatenated vector from the base vector by concatenating the base vector M times, wherein M is a downsampling factor. The sequence of phase indexes may be determined by selecting every Mth entry from the concatenated vector.
According to another aspect, an audio decoding system for decoding a multi-channel audio signal comprising a plurality of different channels is described. The plurality of different channels may comprise one or more surround channels. The audio decoding system may be configured to receive a bitstream indicative of the multi-channel audio signal. The bitstream may be decoded to provide the multi-channel audio signal. Furthermore, the audio decoding system may be configured to determine whether a first condition and a second condition are met. The first condition may comprise or may indicate that the multi-channel audio signal is to be downmixed to a reduced number of channels. This downmixing may be performed in the context of decoding of the bitstream or subsequent to decoding of the bitstream. As such, the first condition may be directed at the audio decoding system being aware of an upcoming downmixing of the multi-channel audio signal.
The second condition may comprise or may indicate that the one or more surround channels have already been phase shifted with respect to one or more of the others of the plurality of different channels. In other words, the audio decoding system may be configured to verify whether the one or more surround channels of the multi-channel audio signal have already been phase shifted. The phase shift may correspond to a 90 degrees phase shift with respect to the other channels of the multi-channel audio signal. The second condition may be verified based on information (e.g. a flag) comprised within the received bitstream. Hence, the second condition may be determined based on an indication (e.g. a flag) comprised within the bitstream. Alternatively or in addition, the audio decoding system may be configured to analyze the multi-channel audio signal, in order to determine a probability for the fact that the one or more surround channels have been phase shifted with respect to one or more of the others of the plurality of different channels (as outlined in the present document).
The audio decoding system may be configured to apply a phase shift to the one or more surround channels to yield one or more phase shifted surround channels, if the first condition is met (i.e. if the multi-channel audio signal is going to be downmixed) and if the second condition is not met (i.e. if the audio decoding system could not confirm that the one or more surround channels have already been phase shifted). The phase shift to the one or more surround channels may be applied only if the first condition is met and if the second condition is not met. Otherwise, the phase of the one or more surround channels may be left unchanged. The audio decoding system may be configured to apply a 90 degrees phase shift to the one or more surround channels with respect to one or more of the others of the plurality of different channels.
As such, the audio decoding system may be configured to ensure a consistent phase shift of the one or more surround channels. Such a consistent phase shift is typically beneficial for channel separation in the context of matrix encoding (i.e. downmixing) and matrix decoding (i.e. upmixing). Furthermore, the occurrence of signal canceling phase shifts can be prevented or reduced. Such signal cancellations may occur due to multiple applications of a phase shift to the one or more surround channels.
The audio decoding system may be further configured to determine a downmixed audio signal from the multi-channel audio signal, using matrix encoding. The downmixed audio signal typically comprises less channels than the multi-channel audio signal. As part of the matrix encoding, the audio decoding system may be configured to attenuate the one or more (phase shifted) surround channels to yield one or more attenuated surround channels, and to combine the one or more attenuated surround channels with one or more of the others of the plurality of different channels, to yield one or more channels of the downmixed audio signal.
According to another aspect, an audio encoding system for encoding a multi-channel audio signal into a bitstream is described. The multi-channel audio signal comprises a plurality of different channels. The plurality of different channels may comprise one or more surround channels. The audio encoding system may be configured to determine a probability for the fact that the one or more surround channels have been phase shifted with respect to one or more of the others of the plurality of different channels. Determining the probability may comprise analyzing audio content of the plurality of different channels. In particular, a spectrum of the audio content of the plurality of different channels may be analyzed. Furthermore, phases of the spectra of the plurality of different channels may be compared.
Alternatively or in addition, the probability may be determined based on a history of the multi-channel audio signal. By way of example, the audio encoding system may be aware of the origin and/or of the previous processing of the multi-channel audio signal. In particular, the audio encoding system may be aware of a (complete) chain of processing of the multi-channel audio signal (starting from recording of the audio signal). This knowledge may be used to determine the probability for the fact that the one or more surround channels have been phase shifted with respect to one or more of the others of the plurality of different channels. In particular, this knowledge may be used to exclude (probability=0%) or to confirm (probability=100%) the fact that the one or more surround channels have been phase shifted.
Furthermore, the audio encoding system may be configured to insert into the bitstream an indication for the fact that the one or more surround channels have been phase shifted with respect to one or more of the others of the plurality of different channels, if the determined probability exceeds a pre-determined probability threshold. The indication may comprise a pre-determined bit or flag of the bitstream.
According to a further aspect, a method for decoding a multi-channel audio signal comprising a plurality of different channels is described. The plurality of different channels may comprise one or more surround channels. The method may comprise receiving a bitstream indicative of the multi-channel audio signal. Furthermore, the method comprises determining whether a first condition and a second condition are met. The first condition may comprise the verification that the multi-channel audio signal is to be downmixed to a reduced number of channels. The second condition comprises the verification that the one or more surround channels have been phase shifted with respect to one or more of the others of the plurality of different channels. This may be determined based on an indication (e.g. a flag) comprised within the bitstream. Alternatively or in addition, this may be determined based on the multi-channel audio signal itself and/or based on a knowledge regarding the processing chain of the multi-channel audio signal. The method may further comprise applying a phase shift to the one or more surround channels to yield one or more phase shifted surround channels, if the first condition is met and if the second condition is not met.
According to another aspect, a method for encoding a multi-channel audio signal into a bitstream is described. The multi-channel audio signal may comprise a plurality of different channels. The plurality of different channels may comprise one or more surround channels. The method may comprise determining a probability for the fact that the one or more surround channels have been phase shifted with respect to one or more of the others of the plurality of different channels. Furthermore, the method may comprise inserting into the bitstream an indication for the fact that the one or more surround channels have been phase shifted with respect to one or more of the others of the plurality of different channels, if the determined probability exceeds a pre-determined probability threshold.
According to a further aspect, an audio encoding system for encoding an audio signal comprising a sequence of audio frames into a bitstream comprising a corresponding sequence of bitstream frames is described. The audio encoding system may be configured to provide a first sequence of substream frames for the corresponding sequence of audio frames. The first sequence of substream frames may comprise a first representation of the sequence of audio frames. A representation may comprise a number of channels (e.g. 2 channels or 5.1 channels) representing the audio signal. Alternatively or in addition, a representation may comprise an indication of the bit-rate or a representation may be associated with a bit-rate of the sequence of substream frames. The audio encoding system may further be configured to provide a second sequence of substream frames for the corresponding sequence of audio frames. The first and second sequences may comprise different representations of the same sequence of audio frames.
In addition, the audio encoding system may be configured to determine the sequence of bitstream frames such that a bitstream frame comprises corresponding substream frames from the first and second sequences at different locations within the bitstream frame. In particular, the sequence of bitstream frames may be determined such that each bitstream frame comprises the corresponding substream frames from the first and second sequences. As such, the bitstream may comprise multiple representations of the same audio signal. The different representations may differ e.g. with respect to the number of channels and/or with respect to the bit-rate. Alternatively or in addition, the bitstream may comprise different sequences of substream frames for corresponding sequences of audio frames from different audio signals.
The audio encoding system may also be configured to insert control information into a bitstream frame of the sequence of bitstream frames, wherein the control information is indicative of the locations and/or of the representations of the substream frames comprised within the bitstream frame. Such control information may be inserted into each of the bitstream frames of the sequence of bitstream frames. The control information enables an audio processing system to identify one or more of the sequences of substream frames from the bitstream, without the need for decoding the complete sequence of bitstream frames.
The control information may comprise first and second control information for the first and second sequences, respectively. In particular, each of the bitstream frames may comprise first and second control information for identifying the substream frames of the first and second sequences, which are comprised within the bitstream frames. The audio encoding system may be configured to encode the first and second control information using code words of different lengths. In other words, the audio encoding system may be configured to use variable length encoding for encoding the control information.
The length of the code words used for encoding the first and the second control information, respectively, may depend on a bit-rate of the first and second sequences, respectively. In particular, the length of one or more code words used for encoding the first control information may be larger than the length of one or more code words used for encoding the second control information, if the bit-rate of the first sequence is higher than the bit-rate of the second sequence, and/or vice versa.
As such, the audio encoding system may be configured to encode the first and second control information using a variable length code, such that if—in average—the first sequence of substream frames comprises a higher number of bits than the second sequence of substream frames, then—in average—the first control information may comprise a higher number of bits than the second control information, and vice versa. In other words, the audio encoding system may be configured to encode the first and second control information using a variable length code, such that a difference between the relative overheads of the first and second sequences of substream frames, which are due to the first and second control information, respectively, is reduced.
According to a further aspect, an audio processing system configured to receive and to process an input bitstream comprising a corresponding sequence of bitstream frames is described. The bitstream frames from the sequence of bitstream frames comprise at different locations within the bitstream frames corresponding substream frames from a first and from a second sequence of substream frames. The first and second sequences may comprise different representations of a same sequence of audio frames. Furthermore, the bitstream frames of the sequence of bitstream frames may comprise control information which is indicative of the locations and/or of the representations of the substream frames from the first and second sequences comprised within the bitstream frames. The audio processing system may be configured to extract the first and/or second sequence of substream frames from the sequence of bitstream frames using the control information. In particular, the audio processing system may be configured to extract the first and/or second sequence of substream frames from the sequence of bitstream frames without having to decode the first sequence of substream frames and/or without having to decode the second sequence of substream frames. As such, the audio processing system may be configured to identify one or more of the sequences of substream frames in a computationally efficient manner.
In addition, the audio processing system may be configured to insert the substream frames of the first sequence into a corresponding sequence of bitstream frames of an output bitstream. Furthermore, the audio processing system may be configured to insert control information into the bitstream frames of the output bitstream. The control information may be indicative of the location and/or of the representation of the substream frames from the first sequence within the bitstream frames of the output bitstream. As such, the audio processing system may be configured to generate in a computationally efficient manner an output bitstream which comprises a selection of the sequences of sub stream frames comprised within the input bitstream.
According to a further aspect, a method for encoding an audio signal comprising a sequence of audio frames into a bitstream comprising a corresponding sequence of bitstream frames is described. The method may comprise the step of providing a first sequence of substream frames for the corresponding sequence of audio frames, and providing a second sequence of substream frames for the corresponding sequence of audio frames. The first and second sequences typically comprise different representations of the same sequence of audio frames. The method may further comprise determining the sequence of bitstream frames such that the bitstream frames comprise corresponding substream frames from the first and second sequences at different locations within the bitstream frames. In addition, the method may comprise inserting control information into a bitstream frame of the sequence of bitstream frames. The control information may be indicative of the locations and/or of the representations of the substream frames comprised within the bitstream frame.
According to another aspect, a method for processing a bitstream indicative of an audio signal comprising a sequence of audio frames is described. The method comprises receiving an input bitstream which comprises a corresponding sequence of bitstream frames. A bitstream frame may comprise at different locations or positions within the bitstream frame corresponding substream frames from a first and from a second sequence of substream frames. The first and second sequences may comprise different representations of the same sequence of audio frames. A bitstream frame of the sequence of bitstream frames may comprise control information which is indicative of the locations/positions and/or of the representations of the substream frames comprised within the bitstream frame. Furthermore, the method may comprise extracting the first sequence of substream frames from the sequence of bitstream frames using the control information.
According to a further aspect, an audio processing system for processing a bitstream comprising a corresponding sequence of bitstream frames is described. The sequence of bitstream frames may be indicative of a corresponding sequence of audio frames of an audio signal. The audio processing system may be configured to generate a sequence of counter values for the sequence of bitstream frames, respectively. The sequence of counter values may comprise sequentially ordered counter values (e.g. ascending or descending counter values). Furthermore, the counter values may comprise a minimum value and a maximum value. The maximum value may be followed by the minimum value within the sequence of counter values, or vice versa. In other words, the counter values may cycle periodically between the minimum value and the maximum value.
The audio processing system may be configured to insert the counter values from the sequence of counter values into the bitstream frames from the sequence of bitstream frames. The counter values may be inserted as control information into the bitstream frames. As a result of the insertion of the counter values, the control information (i.e. the counter values) of the bitstream frames may be indicative of the sequential order of the bitstream frames within the sequence of bitstream frames. This may be beneficial for detecting splicing points within bitstreams comprising a concatenation of different sequences of bitstream frames. A splicing point may be detected based on the counter values. In particular, a splicing point may be detected based on a particular value of the counter value and/or based on a discontinuity of the counter values of directly succeeding bitstream frames.
The bitstream frames typically further comprise payload data indicative of corresponding audio frames of the audio signal. The counter values and/or the control information may be positioned at an extremity (e.g. at the beginning or at the end) of the bitstream frames. In other words, the counter values and/or the control information may be positioned at a pre-determined position/location within the bitstream frames. In particular, the counter values and/or the control information may be positioned upstream of or downstream of the payload data. By way of example, the bitstream frame may first comprise control information (e.g. a frame synchronization word and/or bitstream version information) followed by a counter value at a pre-determined location. The positioning of the counter values and/or of the control information at exposed and/or pre-determined locations of the bitstream frames may simplify the identification of the counter values and/or control information, thereby simplifying the processing of the bitstream and the detection of splicing points.
According to another aspect, an audio processing system for generating a spliced bitstream is described. The spliced bitstream may be generated from a first bitstream comprising a corresponding first sequence of bitstream frames and from a second bitstream comprising a corresponding second sequence of bitstream frames. The first sequence of bitstream frames may be indicative of a corresponding first sequence of audio frames of a first audio signal, and the second sequence of bitstream frames may be indicative of a corresponding second sequence of audio frames of a second audio signal. The second audio signal may be different from the first audio signal.
The bitstream frames of the first sequence of bitstream frames comprise first counter values which are indicative of a sequential order of the bitstream frames within the first sequence of bitstream frames. In a similar manner, the bitstream frames of the second sequence of bitstream frames comprise second counter values which are indicative of a sequential order of the bitstream frames within the second sequence of bitstream frames. As such, the first and second bitstreams comprise first and second counter values, respectively.
The audio processing system may be configured to truncate the first bitstream at a particular bitstream frame from the first sequence of bitstream frames, and to thereby provide a truncated bitstream. Furthermore, the audio processing system may be configured to concatenate the truncated bitstream with the second sequence of bitstream frames, and to thereby provide the spliced bitstream. As a result of the concatenation and as the result of providing counter values, the first counter values comprised within the first part of the spliced bitstream and the second counter values comprised within the second part of the spliced bitstream may be indicative of a splicing point between the first and second bitstreams. In particular, the first counter value of the particular bitstream frame and/or the second counter value of the bitstream frame which follows the particular bitstream frame within the spliced bitstream may be indicative of a splicing point between the first and second bitstreams. Even more particularly, a discontinuity between the first counter value of the particular bitstream frame and the second counter value of the bitstream frame which follows the particular bitstream frame within the spliced bitstream may be indicative of a splicing point between the first and second bitstreams.
The audio processing system may be further configured to set the first counter value of the particular bitstream frame to a pre-determined counter value, and/or to set the second counter value of the bitstream frame which follows the particular bitstream frame within the spliced bitstream to the pre-determined counter value. As such, the counter value of the particular bitstream frame (referred to as the first counter value) may indicate the bitstream frame which directly precedes the splicing point and/or the counter value of the bitstream frame which directly follows the particular bitstream (referred to as the second counter value) may indicate the bitstream frame which directly follows the splicing point. Typically, it is sufficient to assign only one of the counter values (of the bitstream frame either directly before or directly after the splicing point) to the pre-determined counter value. In particular, it may be beneficial for real-time processing to (only) set the counter value of the bitstream frame which directly follows the splice point to the pre-determined counter value.
The pre-determined counter value may lie outside of the counter value range of counter values given by the minimum value and the maximum value of the counter values. In other words, the first and/or second counter values may take on values from a counter value range between the minimum value and the maximum value. The pre-determined counter value may lie outside the counter value range. By way of example, the minimum value of the counter values may be “1” and the pre-determined counter value may be “0”. The detection of a counter value which is set to the pre-determined value may indicate the presence of a splicing point between the particular bitstream frame and the bitstream frame which follows the particular bitstream frame within the spliced bitstream.
According to another aspect, a method for enabling the detection of splicing of a bitstream is described. The bitstream comprises a sequence of bitstream frames, wherein the sequence of bitstream frames is indicative of a corresponding sequence of audio frames of an audio signal. The method comprises generating a sequence of counter values for the sequence of bitstream frames, respectively. Furthermore, the method comprises inserting the counter values from the sequence of counter values, e.g. as control information, into the bitstream frames from the sequence of bitstream frames, such that the control information of the bitstream frames is indicative of a sequential order of the bitstream frames within the sequence of bitstream frames.
According to a further aspect, a method for generating a spliced bitstream indicative of a splicing point is described. The method comprises truncating a first bitstream at a particular bitstream frame from a first sequence of bitstream frames, to provide a truncated bitstream. The first sequence of bitstream frames is indicative of a corresponding first sequence of audio frames of a first audio signal. The bitstream frames of the first sequence of bitstream frames comprise first counter values which are indicative of a sequential order of the bitstream frames within the first sequence of bitstream frames. Furthermore, the method comprises concatenating the truncated bitstream with a second bitstream comprising a second sequence of bitstream frames, to provide the spliced bitstream. The second sequence of bitstream frames is indicative of a corresponding second sequence of audio frames of a second audio signal. The bitstream frames of the second sequence of bitstream frames comprise second counter values which are indicative of a sequential order of the bitstream frames within the second sequence of bitstream frames. The first counter value of the particular bitstream frame and/or the second counter value of the bitstream frame which follows the particular bitstream frame within the spliced bitstream may be indicative of the splicing point between the first and second bitstreams.
According to a further aspect, an audio decoding system for decoding a spliced bitstream is described. The spliced bitstream comprises a concatenation of a first and a second sequence of bitstream frames. The first and second sequences are indicative of first and second audio signals, respectively. The bitstream frames of the first sequence of bitstream frames comprise first counter values which are indicative of a sequential order of the bitstream frames within the first sequence of bitstream frames. The bitstream frames of the second sequence of bitstream frames comprise second counter values which are indicative of a sequential order of the bitstream frames within the second sequence of bitstream frames.
The audio decoding system may be configured to detect a splicing point between the first and the second concatenated sequences, based on the first and second counter values. The splicing point may be detected based on a discontinuity of the counter values of adjacent bitstream frames and/or based on a counter value having a pre-determined counter value (as outlined in the present document).
Furthermore, the audio decoding system may be configured to determine whether data necessary for correctly decoding a bitstream frame of the spliced bitstream subsequent to the splicing point is available. The data necessary for correctly decoding a bitstream frame may comprise settings of a decoding scheme used for decoding the second sequence of bitstream frames. Furthermore, it may need to be ensured that the bitstream frame is not dependent on a previous bitstream frame (which is not comprised within the spliced bitstream, due to the splicing). In other words, it may need to be ensured that the bitstream frame is an independent (i.e. I) frame comprising all the encoded audio data necessary for decoding.
In addition, the audio decoding system may be configured to suspend decoding of the bitstream frame of the spliced bitstream subsequent to the splicing point, if the data is not available. In particular, the audio decoding system may be configured to suspend decoding of (all) the bitstream frames subsequent to the splicing point, up to a bitstream frame of the spliced bitstream for which (all) the data necessary for correct decoding is available. Alternatively or in addition, the audio decoding system may be configured to provide an audio frame indicative of silence for a bitstream frame for which decoding has been suspended. As such, the audio decoding system may be configured to render “silence” subsequent to a splicing point, up to the time instant (i.e. up to the bitstream frame) when all the data necessary for correct decoding is available. By doing this, the output of audible artifacts can be reduced.
According to another aspect, a method for decoding a spliced bitstream comprising a concatenation of a first and a second sequence of bitstream frames is described. The first and second sequences may be indicative of first and second audio signals, respectively. The bitstream frames of the first sequence of bitstream frames comprise first counter values which are indicative of a sequential order of the bitstream frames within the first sequence of bitstream frames. The bitstream frames of the second sequence of bitstream frames comprise second counter values which are indicative of a sequential order of the bitstream frames within the second sequence of bitstream frames. The method may comprise detecting a splicing point between the first and the second sequences, based on the first and second counter values. Furthermore, the method comprises determining whether (all) data necessary for correctly decoding a bitstream frame of the spliced bitstream subsequent to the splicing point is available. In addition, the method may comprise suspending decoding of the bitstream frame of the spliced bitstream subsequent to the splicing point and/or outputting silence for the bitstream frame, if the data is not available.
According to further aspect, an audio processing system for processing a bitstream is described. The audio processing system may comprise or may be e.g. an audio decoding system or a sample rate conversion system or an audio encoding system. The bitstream may comprise a concatenation of a first and a second sequence of bitstream frames, wherein the first and second sequence are indicative of one or more audio signals. The one or more audio signals may be referred to as a set of audio signals. In case of a spliced bitstream, the first sequence may be indicative of a first audio signal (or a first set of audio signals) and the second sequence may be indicative of a second audio signal (or a second set of audio signals). However, both, the first and second sequence may also be indicative of excerpts of the same audio signal having different temporal properties, such as length and/or position in time.
The bitstream frames of the first sequence of bitstream frames comprise first counter values which are indicative of a sequential order of the bitstream frames within the first sequence of bitstream frames. Furthermore, the first sequence comprises a first subsequence of bitstream frames with a pre-determined suite of frame lengths. The suite of frame lengths of the first subsequence is such that the bitstream frames of the first subsequence exhibit a first pre-determined average frame length N.
The bitstream frames of the second sequence of bitstream frames comprise second counter values which are indicative of a sequential order of the bitstream frames within the second sequence of bitstream frames. Furthermore, the second sequence may comprise a second subsequence of bitstream frames with another (possibly different) pre-determined suite of frame lengths (wherein the frame lengths may be measured e.g. in number of samples). The suite of frame lengths of the second subsequence may be such that the bitstream frames of the second subsequence exhibit a second pre-determined average frame length K.
The audio processing system is configured to detect a transition point between the first and the second sequence. The transition point may be an arbitrary splicing point (also referred to as a splice point) between different audio signals (at an arbitrary position within the bitstream). Alternatively or in addition, the transition point may correspond to a point within the bitstream where the frame rate of the bitstream changes.
The audio processing system is further configured to determine a first bitstream frame from the first sequence of bitstream frames, wherein the first bitstream frame directly precedes the transition point. In addition, the audio processing system is configured to determine a sequence index value i1 of the first bitstream frame based on the first counter value q1 of the first bitstream frame. The sequence index value i1 may be indicative of a position and/or a frame length of the first bitstream frame within the first subsequence. In particular, the sequence index value i1 may be indicative of the frame length of the first bitstream frame within the suite of pre-determined frame lengths of the first subsequence.
In addition, the audio processing system is configured to determine a second bitstream frame from the second sequence of bitstream frames, wherein the second bitstream frame directly succeeds the transition point. The audio processing system may then determine a sequence index value i2 of the second bitstream frame based on the sequence index value i1 of the first bitstream frame. In a similar manner to the sequence index value i1, the sequence index value i2 may be indicative of a position and/or a frame length of the second bitstream frame within the second subsequence. In particular, the sequence index value i2 may be indicative of the frame length of the second bitstream frame within the suite of pre-determined frame lengths of the second subsequence.
By determining the sequence index value i2 of the second bitstream frame based on the sequence index value i1 of the first bitstream frame, it can be ensured that the “phase” of the bitstream 610 is maintained or locked, even at a splicing point and/or even subject to a frame rate change. As a result of this, the audio quality of a decoded bitstream may be improved.
The sequence index value i1 of the first bitstream frame may be determined as i1=q1 mod Z, wherein Z is the number of bitstream frames within the first subsequence. This may also be applicable to the second bitstream frame.
The sequence index value i1 of the first bitstream frame may be associated with a first remainder value r1, wherein the first remainder value r1 may be indicative of a difference between an intermediate average frame length for the bitstream frames of the first subsequence up to the first bitstream frame and the first pre-determined average frame length. The audio processing system may be configured to determine a first pseudo sequence index value îi based on the first remainder value r1 and based on the second pre-determined average frame length. In particular, it may be determined which sequence index îi the first remainder value r1 would be associated with if the first sequence of bitstream frames would exhibit the second pre-determined average frame length (instead of the first pre-determined average frame length). The sequence index value i2 of the second bitstream frame may then be determined based on the pseudo sequence index value î1. In particular, the sequence index value i2 of the second bitstream frame may be determined as i2=(î1+1) mod Z, wherein Z is the number of bitstream frames of the second subsequence (if the frame rate remains unchanged).
As indicated above, the transition point may be a splicing point. In such a case, the transition point may be detected based on the first and/or second counter values. In particular, the transition point may be detected based on the second counter value of the second bitstream frame, e.g. based on the second counter value of the second bitstream frame having a pre-determined counter value. As such, the “phase” locking of the bitstream may also be applicable to indicated splicing points, i.e. to splicing points which are indicated by a pre-determined counter value.
The first pre-determined average frame length may be a rational number and not an integer number. On the other hand, the pre-determined suite of frame lengths of the bitstream frames of the first subsequence may be integer numbers. As such, the first subsequence may be used to provide a fractional average frame length using a suite of integer frame lengths. The suite of frame lengths may be repeated to form the first sequence. In a similar manner, the second pre-determined average frame length may be a rational number and not an integer number, and the pre-determined suite of frame lengths of the bitstream frames of the second subsequence may be integer numbers.
The first pre-determined average frame length may be different from the second pre-determined average frame length. In particular, the ratio K/N or the ratio N/K may be an integer number greater 1. As such, “phase” locking may also be applicable to frame rate changes.
According to another aspect, an audio processing system for processing a bitstream is described. The audio processing system may comprise or may be e.g. an audio decoding system or a sample rate conversion system or an audio encoding system. The bitstream may comprise a concatenation of a first and a second sequence of bitstream frames, wherein the first and second sequence are indicative of one or more audio signals, e.g. of a set of audio signals. In case of a spliced bitstream, the first sequence may be indicative of a first audio signal (e.g. of a first set of audio signals) and the second sequence may be indicative of a second audio signal (e.g. of a second set of audio signals). However, both, the first and second sequence may also be indicative of different excerpts of the same audio signal, wherein the different excerpts have different temporal properties such as length and/or positions in time.
The bitstream frames of the first sequence of bitstream frames comprise first counter values which are indicative of a sequential order of the bitstream frames within the first sequence of bitstream frames. Furthermore, the first sequence exhibits a first average frame length. The bitstream frames of the second sequence of bitstream frames comprise second counter values which are indicative of a sequential order of the bitstream frames within the second sequence of bitstream frames. In addition, the second sequence exhibits a second average frame length. The first and second average frame length may be different.
The audio processing system is configured to detect a transition point between the first and the second sequence. Furthermore, the audio processing system is configured to determine a first bitstream frame from the first sequence of bitstream frames directly preceding the transition point and to determine the first counter value q1 of the first bitstream frame. In addition, the audio processing system is configured to determine a second bitstream frame from the second sequence of bitstream frames directly succeeding or following the transition point and to determine the second counter value q1 of the second bitstream frame.
Furthermore, the audio processing system may be configured to determine whether the transition point is a splicing point, based on the first counter value q1, the second counter value q2, the first average frame length, and the second average frame length. As such, the presence of a splicing point may be determined in a reliable manner (even in case of frame rate changes). As a result of this, the perceptual quality of the decoded bitstream may be improved.
In particular, the audio processing system may be configured to determine a target counter value k for the second bitstream frame based on the first counter value q1, based on the first average frame length, and based on the second average frame length. The target counter value k for the second bitstream frame may also be determined based on a maximum value Qmax and/or on a minimum value Qmin of the first counter values. In addition, the audio processing system may be configured to compare the target counter value k with the second counter value q2 to determine whether the transition point is a splicing point. Even more particularly, the audio processing system may be configured to determine that the transition point is a splicing point (only) if the target counter value k is different from second counter value q2.
N may be the average frame length and K may be the second average frame length. The ratio K/N may be an integer number greater 1, i.e. the frame rate may be increased at the transition point. The target counter value k may then be determined as
Alternatively, the ratio N/K may be an integer number greater 1, i.e. the frame rate may be decreased at the transition point. The target counter value k may then be determined as
with q1=4 s; sε*;
According to a further aspect, a method for processing a bitstream comprising a concatenation of a first and a second sequence of bitstream frames is described. The first and second sequences are indicative of one or more audio signals. The bitstream frames of the first sequence of bitstream frames comprise first counter values which are indicative of a sequential order of the bitstream frames within the first sequence of bitstream frames. The first sequence comprises a first subsequence of bitstream frames with a pre-determined suite of frame lengths, such that the bitstream frames of the first subsequence exhibit a first average frame length. The bitstream frames of the second sequence of bitstream frames comprise second counter values which are indicative of a sequential order of the bitstream frames within the second sequence of bitstream frames. The second sequence comprises a second subsequence of bitstream frames with a pre-determined suite of frame lengths, such that the bitstream frames of the second subsequence exhibit a second pre-determined average frame length.
The method comprises detecting a transition point between the first and the second sequences and determining a first bitstream frame from the first sequence of bitstream frames directly preceding the transition point. Furthermore, the method comprises determining a sequence index value i1 of the first bitstream frame based on the first counter value q1 of the first bitstream frame, wherein the sequence index value i1 is indicative of a position of the first bitstream frame within the first subsequence. In addition, the method comprises determining a second bitstream frame from the second sequence of bitstream frames directly succeeding the transition point. The method further comprises determining a sequence index value i2 of the second bitstream frame based on the sequence index value i1 of the first bitstream frame, wherein the sequence index value i2 is indicative of a position of the second bitstream frame within the second subsequence.
According to another aspect, a method for processing a bitstream comprising a concatenation of a first and a second sequence of bitstream frames is described. The first and second sequences are indicative of one or more audio signals. The bitstream frames of the first sequence of bitstream frames comprise first counter values which are indicative of a sequential order of the bitstream frames within the first sequence of bitstream frames. The first sequence exhibits a first average frame length. The bitstream frames of the second sequence of bitstream frames comprise second counter values which are indicative of a sequential order of the bitstream frames within the second sequence of bitstream frames. The second sequence exhibits a second average frame length.
The method comprises detecting a transition point between the first and the second sequences and determining a first bitstream frame from the first sequence of bitstream frames directly preceding the transition point. In addition, the method comprises determining the first counter value q1 of the first bitstream frame. Furthermore, the method comprises determining a second bitstream frame from the second sequence of bitstream frames directly succeeding the transition point, and determining the second counter value q2 of the second bitstream frame. The method further comprises determining whether the transition point is a splicing point based on the first counter value q1, the second counter value q2, the first average frame length, and the second average frame length.
According to a further aspect, a software program is described. The software program may be adapted for execution on a processor and for performing the method steps outlined in the present document when carried out on the processor.
According to another aspect, a storage medium is described. The storage medium may comprise a software program adapted for execution on a processor and for performing the method steps outlined in the present document when carried out on the processor.
According to a further aspect, a computer program product is described. The computer program may comprise executable instructions for performing the method steps outlined in the present document when executed on a computer.
It should be noted that the methods and systems including its preferred embodiments as outlined in the present patent application may be used stand-alone or in combination with the other methods and systems disclosed in this document. Furthermore, all aspects of the methods and systems outlined in the present patent application may be arbitrarily combined. In particular, the features of the claims may be combined with one another in an arbitrary manner.
The invention is explained below in an exemplary manner with reference to the accompanying drawings, wherein
It should be noted that the filter 102 runs at an intermediate frequency (IF) at L times the input sampling rate or at M times the output sampling rate (e.g. IF=M*48 kHz for the above mentioned cases). This means that the anti-aliasing filters 102 typically operate at high sampling rates, such that a reduction of the number of computational filter operations is desirable. In other words, it is desirable to reduce the number of required coefficients of the anti-aliasing filter 102, in order to reduce the overall computational complexity of the rational resampler 100.
The filters may be realized as a polyphase FIR (Finite Impulse Response) implementation as shown in
It can be seen from the formula above that the up-by-L upsampler 101 can be included into the polyphase filter by replacing the delay z−Ln, with n=0, . . . , N/L−1 by the delay z−n. Furthermore, the down-by-M downsampler 103 can be taken into account by only determining every Mth output sample of the polyphase filter.
The input samples 204 (i.e. the samples of the input audio signal 110) are shown in the first (left hand side) column of the table of
It can be seen that for determining the full sequence of output samples 203 (which correspond to the numbers in the right hand side column of the table of
From the example of
As outlined above, each subset of filter coefficients, i.e. each sub-filter 123, may be referred to as a filter phase or phase 121.
It can be seen from the above analysis that from each output sample 203 to the next output sample 203, the phase index changes. For the example of a resampling ratio 3/2, the sequence of the phase index 202 is l=1, 3, 2, 1, 3, 2, . . . . In general terms, the following observations can be made:
When considering a different conversion ratio, e.g. 11/13 (i.e. L=11 and M=13), it can be seen that the sub-sequence of phase indexes for determining a sequence of output samples is given be l=1, 3, 5, 7, 9, 11, 2, 4, 6, 8, 10. This sub-sequence of phase indexes is repeated to form the total sequence of phase indexes.
In embedded systems it is desirable to know the sequence of phase indexes in advance before starting the filter calculations, i.e. it is desirable to know or to determine the sequence of phase indexes at initialization time. Calculating the sequence of phase indexes at initialization time and storing the sequence in an array provides the advantage of saving calculations for each output sample. Instead of calculating the phase index 202 for a particular output sample 203, the phase index 202 for the particular output sample 203 can be read from the pre-calculated array and a pointer to the corresponding sub-filter 123 can be set. Such a look-up operation is substantially more efficient that the calculation of the phase index 202 and/or the identification of the sub-filter 123 during runtime.
The pre-determined phase look-up table 302 may reflect the sequence of phase indexes for a particular resampling ratio L/M. By way of example, for the resampling ratio 3/2, the phase look-up table 302 may have the form of Table 1. As can be seen from Table 1, the pre-determined phase look-up table 302 for a resampling ratio L/M typically comprises L entries. As such, the pre-determined phase look-up table 302 may be indicative of the sub-sequence of phase indexes which is repeated to form the sequence of phase indexes for determining the sequence of output samples 203 (i.e. for determining the output audio signal 113).
The system 300 may comprise a plurality of phase look-up tables 302 for a plurality of different resampling ratios L/M. The resampling ratio L/M may be provided to the processing unit 301 as configuration data 311. The configuration data 311 may be indicative of the upsampling factor L and/or of the downsampling factor M. The processing unit 301 may then be configured to select the phase look-up table 302 which is indicative of the (sub-)sequence of index phases 202, which is to be used for the resampling ratio L/M given by the configuration data 311.
The system 300 may further comprise a filter look-up table 303 providing the sub-filter 123 which is to be used for determining the current output sample y[p]. In other words, the filter look-up table 303 may provide the one or more filter coefficients 201 which are to be applied to one or more corresponding input samples 204, respectively, in order to determine the current output sample y[p]. In yet other words, the filter look-up table 303 may provide the filter coefficients 201 of the sub-filter 123 for the different phase indexes l 202. Different sets of filter coefficients 201 may be provided for different phase indexes l. As such, the filter look-up table 303 may provide the current set of filter coefficients (to be used for determining the current output sample y[p]) based on the current phase index lp. By way of example, for the resampling ratio 3/2 and for an anti-aliasing/anti-imaging filter 102 comprising a total of N=9 filter coefficients 201, the filter look-up table 303 may have the form of Table 2.
In a similar manner to the phase look-up table 302, the system 300 may comprise a plurality of filter look-up tables 303 for different upsampling factors L, for different downsampling factors M and/or for a different number N of filter coefficients 201. As indicated above, the configuration data 311 may be indicative of the up sampling factors L and/or of the downsampling factor M. Alternatively or in addition, the configuration data 311 may be indicative of the number N of filter coefficients to be used.
It should be noted that alternatively to using a phase look-up table 302 for determining the (sub-)sequence of index phases 202 and to then using a filter look-up table 303 for determining the one or more filter coefficients 201 which are to be used for the current phase, a combined phase/filter look-up table may be defined. The combined phase/filter look-up table may provide the filter coefficients 201 of the sub-filter 123 for the different phase indexes l 202 (similar to the filter look-up table 303), wherein the different phase indexes l 202 are ordered in accordance to the (sub-)sequence of index phases 202 (as given e.g. by the phase look-up table 302). Table 3 shows an example combined phase/filter look-up table for the resampling ratio 3/2 and for an anti-aliasing/anti-imaging filter 102 comprising a total of N=9 filter coefficients 201.
As a result of using a combined phase/filter look-up table which is ordered according to the (sub)sequence of phase indices, a MODULO L pointer may be incremented after computing the current output sample y[p], to look up the filter coefficients which are to be used for computing the next output sample y[p+1]. Hence, the filter coefficients for determining an output sample y[p] may be determined using only a single look-up operation.
As such, the system 300 may be configured to determine the set of filter coefficients which is to be used for determining the current output sample y[p] using computationally efficient look-up operations, e.g. using a phase look-up table 302 and/or a filter look-up table 303 and/or a combined phase/filter look-up table. The set of filter coefficients may comprise R filter coefficients, wherein R is typically equal to the ratio N/L (or to the nearest integer value thereof). The set of filter coefficients defines a sub-filter which is used to determine the current output sample y[p] from R input samples x[q] using the filter equation y[p]=Σr=0R-1ĥR-rx[q−r], wherein the filter coefficients ĥr, r=0, . . . , R−1 form the set of filter coefficients for the current sub-filter 123. The filter coefficients ĥr, r=0, . . . , R−1 correspond to a subset of the filter coefficients hn, with n=0, . . . , N−1, of the overall filter 102. Typically, the set of filter coefficients ĥr for the phase 121 with the phase index l corresponds to ĥr=hLr+l, r=0, . . . , R−1.
The relationship between the sample index p of the output audio signal 113 and the sample index q of the input audio signal 110 typically depends on the resampling ratio L/M. The one or more input samples 204 x[q−r], with r=0, . . . , R−1, which are used to determine the output sample y[p] may typically be determined based on the relation
The system 300 and in particular the processing unit 301 may be configured to determine the phase look-up table 302 and/or the repeated sub-sequence of phase indexes based on the upsampling factor L and based on the downsampling factor M. For this purpose, the system 300 and/or processing unit 301 may make use of a brute force approach. The method for determining the periodic sub-sequence of phase indexes may comprise generating a base vector comprising the ordered numbers [1; L], e.g. [1 2 3] for L=3. This base vector may be concatenated M times to yield a concatenated vector [[1; L] [1; L] . . . ], e.g. the concatenated vector [[1 2 3] [1 2 3] ] for L=3 and M=2. Furthermore, the method may comprise the step of removing every Mth entry of the concatenated vector. In the case of L=3 and M=2, the entries 2, 1, 3 (from left to right) are removed from the concatenated vector [[1 2 3] [1 2 3]]yielding the decimated vector [1 3 2]. The decimated vector corresponds to the sub-sequence of phase indexes, which is repeated to determine a sequence of output samples 203.
It should be noted that the above mentioned method for determining the to-be-repeated sub-sequence of phase indexes comprises the determination of a concatenated vector comprising L*M entries. This number may be quite large, e.g. for a sampling rate conversion of 48000 Hz to 44100 Hz, which corresponds to a ratio of L=147, M=160, the concatenated vector comprises 23520 entries. As such, the determination of the sub-sequence of phase indexes and/or of the phase look-up table 302 may make use of substantial memory resources. In view of this, a further method for determining the sub-sequence of phase indexes and/or for determining the phase look-up table 302 is described, which is more efficient regarding memory resources.
The method which is described below does not make use of a concatenated vector which needs to be stored in the memory of the system 300. The method is described in a pseudo-code manner in Table 4.
The method 400 for determining the phase index vector (which is indicative of the sub-sequence of phase indexes) is particularly efficient with regards to the memory which is required. Furthermore, the method is also computationally efficient, as it only makes use of additions and subtractions without the need for e.g. divisions or multiplications. This is particularly beneficial for embedded systems.
A further approach for determining the sub-sequence of phase indexes is given by the following formula:
P(i)=1+[M*(i−1)MOD L],
for i=1, 2, . . . L, wherein P(i) corresponds to the ith phase index of the sub-sequence of phase indexes. From the formula above, it can be seen that the difference between two adjacent phase indices may be Δ=[M MOD L], while taking into account that the phase index L is followed again by the phase index l (i.e. by taking into account the wrap around of the phase index at the maximum phase index L). In particular, the difference between two adjacent phase indices may be Δ=[M MOD L], except for the case where the phase index wraps from the maximum phase index L to a lower phase index.
A recursive formula for determining the sub-sequence of phase indexes may be given by:
P(i+1)=1+[P(i)−1+(M MOD L)] MOD L,
for i=1, 2, . . . L−1, wherein P(i) corresponds to the ith phase index of the sub-sequence of phase indexes and wherein e.g. P(1)=1.
It should be noted that the above mentioned methods for determining the sub-sequence of phase indexes and/or for determining the phase look-up table 302 are applicable to upsampling (L>M) and downsampling (L<M).
As such, the present document describes a resampling system 300 which is configured to resample an input audio signal 110 in a computationally and memory efficient manner. The system 300 may be configured to determine a sequence of phase-indexes (e.g. a phase look-up table 302) in a resource efficient manner. Furthermore, the system 300 may make use of one or more phase look-up tables 302 and/or of one or more filter look-up tables 303 to determine the current set of filter coefficients ĥr, r=0, . . . , R−1, which is to be used to determine the current sample y[p] of the output audio signal 113. As a result of such look-up operations, the computational complexity of the resampler 300 may be reduced.
In the following further aspects of an audio encoding and decoding system are described. These aspects are directed towards the phase relationship between the different channels of a multi-channel audio signal. Furthermore, these aspects are directed towards the design of audio bitstreams.
It is a typical use case for a multi-channel (e.g. a 5.1) audio signal to not be reproduced over five discrete audio speakers. Instead, the multi-channel audio signal may be mixed down to a reduced number of channels, e.g. to two (L/R) or three (L/C/R) channels, for reproduction or transmission. The downmix may be performed in the digital domain. Alternatively, the multi-channel audio signal may be fed to a so-called headphone virtualizer (also referred to as a binauralizer), which is configured to render the multi-channel audio signal in a virtual room environment over the headphone.
The downmix may be performed by an audio decoder (as part of the decoder processing), which may be placed within a settop box (STB). The downmixing process may make use of so called matrix encoding. The audio decoder (e.g. the STB) may then provide the downmixed audio signal to the actual reproduction device (e.g. the Audio/Video Receiver, AVR), wherein the link between the audio decoder and the actual reproduction device may be limited to a reduced number of channels. It should be noted that at the point of downmixing (e.g. at the audio decoder), no detailed information about the actual playback configuration may be available.
It may occur that the actual reproduction device has sufficient speakers or contains a headphone virtualizer with sufficient channel inputs, in order to render the full multi-channel audio signal. In this case, the actual reproduction device may perform a matrix upmixing process (also referred to as a matrix decoding process) from the downmixed audio signal to a multi-channel audio signal. Examples for such upmixing schemes are the Dolby Surround, the Dolby Prologic, or the Dolby Prologic II upmixing schemes.
In the case of
It can be seen that if only an S signal 504 (and no C signal 502 and no L, R signals 501, 503) is present at the downmixing system 500, the signals in Lt and Rt are identical, but of opposite polarity. When these signals are subtracted in the upmixing system 520, the signals 511, 513 create the surround output signal 524 as desired (being identical to the original surround signal 504, with a 90 degree phase shift). Furthermore, if only a C input signal 502 (and no S signal 504 and no L, R signals 501, 503) is present at the downmixing system 500, the C components in Lt and Rt are identical. When subtracted in the upmixing system 520, the C components cancel each other completely, leaving only silence at the S output, which is again the desired result. This shows that a high channel separation between C and S channels may be achieved. However, if the Lt and Rt signals are random (and not purely comprising the C or S signals), the subtraction unit 525 of the upmixing system 520 produces a difference signal at the S output 524. As a result, the original channels cannot be separated in a perfect manner anymore. The channel separation between front and surround signals can be as low as 3 dB.
The imperfect separation of the original channels of a multi-channel signal can partly be overcome by a suitable matrix encoding (or downmixing) process (e.g. Dolby Surround encoding). As shown in the context of
Given the above infrastructure constraints, and looking at the mastering stage of 5.1 material (i.e. when encoding the audio data for storage on e.g. DVD or BluRay or for broadcast transmission), it is usually not known whether a multi-channel audio signal will be reproduced ‘natively’ over a sufficient number of speakers, or whether the multi-channel audio signal will be downmixed using a matrix encoding process (as illustrated e.g. in
Due to the benefits of a 90 degree phase shift 505 for channel separation, it has become common to anticipate the above mentioned 90 degree phase shift 505 of the matrix encode system 500 by applying a 90 degree phase shift already in the mastering stage before encoding the multi-channel audio signal. As a result, already the coded discrete multi-channel audio signal carries a 90 degree phase shift in the one or more surround channels 504. By consequence, a matrix encode system should not comprise a phase shift unit 505, in order to avoid the 90 degree phase shift from being applied twice. Such a matrix encode or downmixing system 530 is illustrated in
The approach of providing a multi-channel audio signal which already comprises one or more 90 degrees phase shifted surround channels has proven to degrade the reproduction of the audio signal in a full multi-channel setup only minimally, while at the same time improving channel separation in case of matrix encoding and decoding. However, the approach of providing such a phase shifted multi-channel audio signal bears the risk that in case the matrix encoding stage 500 is not aware of the already shifted surround channels 504, the encoding stage 500 might apply a further 90 degrees phase shift to the one or more surround channels 504. For content of the surround channels 504 which is in-phase with content from the front channels 501, 503, this means that undesired signal cancellation may occur (due to a total 180 degrees phase shift). Such signal cancellation may also occur in the case where a multi-channel signal is not matrix encoded, but is re-encoded in a discrete manner using an encoder that also applies a 90 degree phase shift to the one or more surround channels 504. Furthermore, the effect of using phase-shifted surround channels in headphone virtualizers is not explored and may lead to suboptimal binauralization results.
In order to address the above mentioned shortcomings, it is proposed to always omit a 90 degree phase shift in audio encoders (i.e. when generating the multi-channel audio signal), so as to provide a (non-phase shifted) multi-channel audio signal. Instead, the 90 degree phase shift should be performed in the corresponding audio decoders. The application of a 90 degree phase shift should be performed subject to one or more conditions which should be fulfilled (i.e. true). The conditions may comprise:
In other words, it is proposed
As indicated above, the present document also addresses various aspects regarding a bitstream which is transmitted from an audio encoder to a corresponding audio decoder. The bitstream typically comprises audio data which is indicative of the to-be-rendered audio signal. Furthermore, the bitstream typically comprises metadata which provides information to the audio decoder on how the audio signal is to be rendered.
The bitstream is typically structured into a sequence of frames (also referred to as a sequence of access units). The bitstream structure of an audio coding system is preferably designed in a way to facilitate manipulation of the data which is comprised within the bitstream directly on the level of the bitstream (preferably without having to decode the audio data). In general, a frame of the bitstream may comprise a multiplex of different substreams. The different substreams may e.g. be related to different languages of an audio program (e.g. to different audio tracks for a video in different languages). Alternatively or in addition, the different substreams may be related to the same audio data at different bit-rates. It is desirable that the different substreams of the overall bitstream can be identified, stripped out, or merged into the overall bitstream on a relatively high level (without the need for decoding the substreams). Providing means for identifying, extracting and/or inserting substreams into an overall bitstream facilitates applications such as adaptive streaming, where a particular one of a plurality of different bit-rate representations of audio content is dynamically selected from a multiplex of different bit-rate representations, which may potentially be stored in one multiplex.
In the present document, it is proposed to provide the bitstream with information on the different substreams which are comprised within the bitstream. As indicated above, the bitstream structure allows to store different representations of audio content inside one multiplexed bitstream, in a manner that each bitstream frame contains the same signal (in time) several times, wherein the same signal is encoded in different channel modes and/or at different bit-rates. By way of example, the same content may be provided as a 2-channel and a 5.1-channel representation, and/or the same content may be provided at different bit-rates corresponding to different audio quality.
Using the bitstream structure shown in
As such, it is proposed to provide a bitstream which comprises a plurality of different substreams for different representations of the same audio content with a bitstream inventory 602 that holds information about the channel mode and/or the bit-rate of some or all of the substream frames 603 comprised within a multiplexed frame 601. The provision of such a bitstream inventory 602 enables dynamic decisions on which representation to choose and to stream out, as requested by a streaming client. Using appropriate coding formats, the control information 602 can be designed to require only a limited signaling overhead.
Possible manipulations on the level of the bitstream 600 comprise the assembly and the disassembly of multiplexed bitstreams 600 comprising a plurality of substreams. In particular, the manipulations comprise the addition and the removal of substreams to/from a pre-existing bitstream 600. The provision of control information 603 simplifies such additions and/or removals of substreams.
Such manipulations are desirable e.g. in broadcast situations, where a multiplexed bitstream comprising different qualities of the same audio content is stored on a server or transmitted in-house to a broadcast facility. At the point of playout, it can be decided which version of the audio content comprised within the multiplexed bitstream 600 is used for one or several distribution links (e.g. digital terrestrial TV, satellite, internet streaming). Different distribution links may have different bit-rate constraints and may therefore require the use of different representations of the audio content (i.e. the use of a different substream of the multiplexed bitstream 600).
The provision of control information 602 allows for a resource efficient identification of the different substreams, and for the extraction of one or several desired substreams from the multiplexed bitstream 600. Subsequent to extraction of the substream, the extracted substream may be converted into a new valid bitstream 600, wherein the new valid bitstream 600 comprises a subset (e.g. one or more) of the different representations of the audio content.
The control information 602 may be created, read and/or interpreted using a set of rules. The control information 602 may provide a Table of Content (ToC) of the substream frames 603 comprised within a multiplexed frame 601. An example method for extracting a substream from the multiplexed bitstream 600 and for re-inserting the extracted substream into a separate new bitstream comprises:
The control information or ToC 602 may comprise information regarding the representation of the audio content (such as the channel count and/or the bit-rate). Alternatively or in addition, the control information 602 may comprise information on the language of the audio content and/or on main/associate audio relations. By way of example, a multiplexed bitstream 600 may comprise a pair of substreams related to a main and an associated audio signal. The associated audio signal may e.g. comprise a director's comment, or a scene description for a TV program for blind/visually impaired viewers. A consumer may choose whether he wants to listen to the main track only, or whether he wants to listen to a mix of the main and associate signals. The identification of a signal being a main signal, and/or the identification of a signal being an associated signal, and/or what purpose the associated signal serves, and/or to which main signal the associated signal refers, may be part of the ToC 602.
As indicated above, a bitstream 600 typically comprises metadata and/or control information in addition to encoded audio data. This data may be referred to as side information. Such side information (e.g. the control information 602) is typically encoded using a variable rate encoder, in order to increase the coding or bit-rate efficiency. A typical approach to such variable rate coding is to analyze the redundancy and statistics of the data and to code frequently appearing data words by shorter code words and less frequently appearing data words by longer code words, thus providing a representation of the data which is shorter in average without losing data. An example of such a coding technique is a Huffman code.
In contrast to the above, it is proposed in the present document to use shorter code words for encoding the side information in cases, where the expected overall bit-rate of the associated substream is smaller. In other words, the variable rate coding of the side information may be dependent on the bit-rate of the audio data that the side information is associated with. In particular, the control information 602 of the frames 601 of the multiplexed bitstream 600 may be encoded using a variable length code, wherein the length of the code words which are used to encode the control information 602 for the different substreams depends on the bit-rate of the different substreams. Typically, the length of the code words increases with the bit-rate of the substreams.
By way of example, in order to code the channel configuration of the different substreams of a multiplexed bitstream 600, the following code word table (Table 5) may be used:
In the example of Table 5, four different channel configurations (or channel modes) are possible, which could be identified using 2 bits. In the present document, it is proposed to use for the mono case, for which the overall bit-rate of the associated substream is relatively low, a shorter code word (e.g. a 1 bit code word) than for the 5.1 multi-channel case, for which the overall bit-rate of the associated substream is higher than for the mono case. For the 5.1 multi-channel case, the channel configuration is coded with a 3 bit code word. Due to the increased bit-rate of the 5.1 multi-channel substream (compared to the mono substream), the relative overhead used for the control information 602 may not be higher than for the mono substream. Overall, a variable length encoding of the control information 602 based on the bit-rate of the associated audio data allows achieving a more adequate usage of the required control information overhead relative to the overall bit-rate. In other words, the variable length encoding scheme described in the present document allows equalizing the relative control information overhead (relative with respect to the bit-rate of the associated audio data) for the plurality of different substreams.
A further issue which is encountered in the context of broadcasting of audio bitstreams is the splicing of bitstreams. The splicing of different bitstreams may occur e.g. as the result of a program change within a running bitstream, as the result of an interruption of a program by an advertisement (“Ad insert”) and/or as the result of a user switching to a different program.
The splicing points between different programs or audio signals may be signaled on a high level within the bitstream (e.g. in the Program Map Tables, PMTs, of an MPEG-2 Transport stream). However, the information regarding the splicing points within the bitstream may not be available to the core audio decoder of a decoding device (such as a television, TV, and/or a settop box, STB). Even if the information regarding the splicing points is available at the decoding device, it may not be possible to convey the information regarding the splicing point to the decoding device at the accuracy of a particular splicing frame. Furthermore, the information regarding the splicing point is not always set correctly on the broadcasting headend.
As a consequence, the audio decoder may not be aware of a situation where a to-be-decoded frame of the received bitstream does not correspond to the same stream of audio data as the previously received frame of the received bitstream. In other words, the audio decoder may not be aware of a discontinuity within the bitstream between a previously received frame and a currently (to-be-decoded) frame. Such a discontinuity may lead to a loss of parameters which are required for an authentic decoding of the audio data.
Many audio coding algorithms (such as High Efficiency-Advanced Audio Coding, HE-AAC and Unified Speech and Audio Coding, USAC) usually do not transmit all necessary information for decoding an encoded frame within each individual encoded frame. For bit-rate efficiency, some information may only be transmitted occasionally (e.g. in a periodic manner). The frame header information is typically not changing on a frame-by-frame basis, and an encoder may set the header information to be constant for a given bit-rate and/or for a given channel configuration. As a consequence, subject to a discontinuity, the audio decoder may not be aware of the header information which is required for correctly decoding the to-be-decoded frame.
A further aspect is the usage of encoding techniques that explicitly rely on past information within the decoding process. These encoding techniques are directed at providing bit-rate savings by exploring commonalities in adjacent frames. Examples of such encoding techniques are cross-frame-delta encoding of parameters and the use of inter-frame prediction techniques.
As a result of such inter-dependencies, when an audio decoder receives a spliced bitstream, the fact that parameters may have changed at the splicing point may remain unnoticed. In consequence, the audio decoder may be driven to undefined conditions and/or may produce audible audio artifacts. This is particularly the case, when at least some high-level bitstream parameters (like e.g. the number of channels or the audio sampling frequency) remain unchanged before and after the splicing point, while other (more specific) parameters change.
In the present document, it is proposed to introduce a sequence counter per frame as part of the bitstream. In regular operation, subsequent audio frames are provided with increasing sequence counter numbers. A wrap-around (e.g. a reset to one) may be applied when the resolution of the counter is exhausted. The sequence counter enables the audio decoder to detect the fact that the sequence counter is not increased by 1 (or by a pre-determined amount) in two subsequent frames. A discontinuity of the sequence counter may be interpreted by the audio decoder as a discontinuity of the bitstream (caused e.g. by a splicing point). As a result, the audio decoder may be configured to detect a splicing point within the bitstream using the sequence counter.
In particular, the audio decoder may be configured to suppress the decoding of the to-be-decoded frame (subsequent to the detected splicing point) based on one or more decoded frames (preceding the detected splicing point). Furthermore, the audio decoder may be configured to suppress decoding of the to-be-decoded frame, which relies on header information that is associated with one or more frames preceding the detected splicing point. By way of example, the audio decoder may be configured to only resume decoding (subsequent to a detected splicing point) upon reception of the correct header information and/or upon reception of an independently encoded frame (e.g. of a so called I frame). By doing this, the occurrence of audible artifacts caused by unnoticed splicing points can be reduced.
As indicated above, the sequence counter typically has a limited resolution and so “false positives” (i.e. false detections of a splicing point) may occur with a certain probability. However, the probability of “false positives” may be controlled by the length or resolution of the sequence counter.
A specific value, e.g. the value “0”, of the sequence counter may be reserved for a specific purpose. This specific value may take on the function of a splice marker. The meaning of a frame which comprises this particular sequence counter value may be:
The definition of a splicer marker allows a splicing device at a broadcasting headend to mark a splicing point on-the-fly by means of a comparably simple modification of the sequence counter, i.e. by setting the sequence counter to the specific value. This marking process works especially well, when the sequence counter is stored at an easy-to-identify position, preferably close to the beginning, of a frame.
As indicated above, the sequence counters 612, 622 may be used to identify the presence of a slice point. The sequence counters 612, 622 may cycle periodically (in an ascending or descending sequential order) between a minimum value Qmin and a maximum value Qmax. An example value for the minimum value is Qmin=1 and for the maximum value is Qmax=1020. If the value q1=n of the sequence counter 612 of a current frame 611 directly precedes the value q2 of the sequence counter 622 of the directly following frame 621 within the bitstream 610, such that e.g. q2=n+1 or q2=n mod Qmax+Qmin, the values q1 and q2 of the sequence counters 612 and 622 indicate that there is no splicing point within the bitstream 610. On the other hand, if the value q2 of the sequence counter 622 of the frame 621 does not directly follow the value q1 of the sequence counter 612 of the frame 611, e.g. q2≠n+1 or q2≠n mod Qmax+Qmin, this may provide an indication for the presence of a splicing point within the bitstream 610 between the current frame 611 and the directly succeeding frame 621.
On the other hand, a change of the frame rate of the frames 611, 621 within the bitstream 610 may occur. By way of example, a user may request the same audio signal at a different frame rate, e.g. in order to improve the quality of the audio signal and/or in order to adapt the bitstream 610 to the available bandwidth of a transmission medium. By way of example, the bitstream 610 may comprise a first sequence of frames 611 at a first frame rate N and a second sequence of frames 621 at a second frame rate K. The ratio KEN of the first and second frame rates may be an integer or a rational number. In particular, the ratio of the first and second frame rates may be
In other words, the first and second frames rates may be integer multiples of a base frame rate.
As indicated above, the values q1, q2 of the sequence counter of consecutive frames 611, 621 should be consecutive as well. If the values q1, q2 are not consecutive, this may be an indication for a splice point (also referred to as a splicing point). In particular, a bitstream decoding system may be configured to evaluate the values of the sequence counter and to send a Splice Detected message, which may be timed to the nominal beginning of the frame 622 when the counter value jumps or exhibits a pre-determined value (e.g. zero). Typically, a sequence counter jump from 0 to any other number does not indicate a splice. A jump from 0 to 0 may indicate a further splice point.
However, the modification of the frame rate may lead to a change of the value q of a sequence counter of a frame. In particular, if the frame rate changes by a factor ¼, ½, 2, 4, a discontinuity of the counter values of directly following frames 611, 621 may not necessarily be due to a splice of the bitstream 610. Such changes of the value q of a sequence counter may be due to the fact that the counting speed, i.e. the speed at which the sequence counter is modified, may depend on the frame rate. By way of example, in case of a basic frame rate, the sequence counter may have the value 4 for the fourth frame. On the other hand, in case of a frame rate which is twice the basis frame rate, the sequence counter may already have the value 8 for the frame which corresponds the same temporal excerpt of an audio signal as the fourth frame at the basis frame rate. Hence, a change of the frame rate may lead to a discontinuity of the value of the sequence counter.
Table 6a provides formulas for determining a target sequence counter value {tilde over (k)} for the sequence counter 612 of the frame 611 (assuming the second frame rate K) based on the sequence counter value q1=n of the sequence counter 612 of the frame 611 (at the first frame rate N). The formulas are shown in Table 6a for the case Qmax=1020.
Table 6b provides the formulas in more general terms for arbitrary values of Qmax.
If the actual value q2 of the sequence counter 622 of frame 621 is equal to the target sequence counter value {tilde over (k)}+1 for the sequence counter 622, in particular q2=({tilde over (k)}+1) mod Qmax, the bitstream 610 does not comprise a splicing point between the frames 611 and 621 (but only a change of the frame rate). In this case, the decoding system may be configured to not provide a Splice Detect message (even though a discontinuity of the values of the sequence counters 612, 622 has been detected). On the other hand, if the actual value q2 of the sequence counter 622 of frame 621 differs from the target sequence counter value {tilde over (k)}+1 (or more precisely ({tilde over (k)}+1) mod Qmax) for the sequence counter 622, i.e. q2≠({tilde over (k)}+1) mod Qmax, the bitstream 610 comprises a splicing point between the frames 611 and 621 (in addition to a change of the frame rate). In such a case, a Splice Detect message may be provided.
It should be noted that, alternatively or in addition, a target sequence counter value k of the sequence counter 622 of frame 621 (with e.g. k=({tilde over (k)}+1) mod Qmax) may be calculated directly from the value q1 of the sequence counter 612 of the frame 611, as outlined above and/or in the claims. In such a case, the target sequence counter value k of the sequence counter 622 of frame 621 may be compared directly with the actual value q2 of the sequence counter 622 of frame 621, in order to determine whether a transition point between the first and the second sequence is a splicing point or not.
As such, the decoding system may be configured to take into account the fact that as a result of a change of the frame rate, the sequence counters 612, 622 of the frames may differ by a factor which corresponds to (or depends on) the ratio K/N of the second and first frame rates. By doing this, a seamless switching of the frame rate may be provided (without degradation of the audio quality due to the false detection of a splicing point).
The frame rate of a sequence of frames within the bitstream 610 may be a rational number. Alternatively or in addition, the average length of the frames of the bitstream 610 may be fractional or may be rational numbers. In order to implement such fractional frame rates and/or frame lengths, the length of the frames may vary within the bitstream 610.
By way of example, the frame rates 29.97, 59.94 and 119.88 fps (frames per second) may result in the fractional external frame lengths of 1601.6, 800.8 and 400.4 samples, respectively. A sample rate converter may provide such fractional frames by providing longer and shorter frames within a subsequence, such that in average the fractional external frame length is provided. After a pre-determined number Z of frames, e.g. Z=5, the subsequence may be repeated. In other words, a sample rate converter or an encoding system may be configured to go through Z different frame length within a subsequence. In order to produce the same sample output from bitstream 610, e.g. from an AC-4 stream, independent from the start of the decoding within the bitstream, the phase of the sample rate converter may be bound to the bitstream 610.
As indicated above and as illustrated in Table 7, an encoding system and/or a sample rate conversion system may generate frames with different frame lengths, in order to provide a sequence of frames which has a fractional average frame length. A certain pattern or suite of frame lengths may be repeated (as a subsequence), wherein the average of the frame lengths of the suite of frame lengths corresponds to the fractional average frame length. The position within the suite of frame lengths may be referred to as a phase of the bitstream 610. An encoding system and/or a rate conversion system may be configured to “lock” the phase of the bitstream 610, even at splicing points and/or rate conversion points. In particular, this may be achieved by locking the phase of the sample rate converter or the encoding device to a so called sequence index.
The sequence index may be calculated based on the sequence counter. In particular, the sequence index may be calculated using the formula:
sequence_index=sequence_counter mod Z,
wherein sequence_index is the value of the sequence index of a particular frame (which is indicative of the phase of the frame) and wherein sequence_counter is the value of the sequence counter of the particular frame.
It should be noted that the number of phases Z may depend on the relation between the internal frame length and its corresponding external frame length, i.e. the number of phases Z may depend on the resampling ratio. Alternatively or in addition, the number of phases Z may depend on the different frame rates, i.e. on the sizes of the internal frame lengths and their corresponding external frame lengths.
Typically, the sampling rate of an audio signal is fixed to a pre-determined external sampling rate (e.g. 48 kHz). In order to allow for fractional external frame lengths or frame rates, a sample rate conversion may be required (as outlined in the present document), in order to adapt the audio signal to meet a pre-determined internal frame length. The internal frame length is typically fixed. Furthermore, the internal frame length may depend on the signal processing which is performed. By way of example, the signal processing may comprise a QMF (Quadrature Mirror Filterbank) analysis/synthesis, e.g. a 64 subband QMF analysis/synthesis. The internal frame length may depend on such signal processing constraints, e.g. the internal frame length may be a multiple of 64 (as is the case for the example shown in Table 7). In order to transform an audio signal from the external frame length (which may be variable) to the internal frame length (which is typically fixed), a sample rate conversion may be performed, e.g. from 48 kHz to 46.33 kHz (in the case of an external frame length of 1601.6 and an internal frame length of 1536).
Table 7 shows example external and internal frame lengths and their relation with the sequence index.
From Table 7 it can be seen that the fractional frame length of 1601.6 samples can be implemented using a subsequence of Z=5 frames, with a suite of individual frame lengths 1601, 1602, 1601, 1602, and 1602. The subsequence of frame lengths may be repeated within the bitstream 610 in order to provide a bitstream 610 which exhibits the fractional frame length 1601.6.
The decoding system may be configured to take into account the value of the sequence index for decoding, notably at a splicing point. In particular, the decoding system may be configured to determine the value of the sequence index of the frame 611 from the first sequence of frames, which is directly preceding a splicing point, based on the value q1 of the sequence counter 612 of the frame 611. The value i1 of the sequence index of the frame 611 may be determined using the above mentioned formula, i.e. i1=q1 mod Z. The value i1 of the sequence index of the frame 611 of the first sequence of frames may be indicative of the phase of the bitstream 610 prior to the splicing point.
In order to ensure a pre-determined fractional frame length for the entire bitstream 610, the decoding system may be locked to the phase of the bitstream 610 at the splicing point. In particular, the decoding system may be configured to set the value i2 of the sequence index of the frame 612 of the second sequence of frames, which directly succeeds the splicing point, to i2=(i1+1) mod Z. In more general terms, the value i2 of the sequence index of the frame 612 subsequent to a splicing point may be determined based on the value i1 of the sequence index of the directly preceding frame 611 (which precedes the splicing point).
As can be seen in Table 7, depending on the value of the sequence index of a frame 611, there is a particular remainder, wherein the remainder of frame 611 corresponds to the difference between the number of samples which have been decoded (or encoded) subsequent to the decoding (or encoding) of frame 611 and the number of samples which should have been decoded (or encoded) in view of the fractional average frame length. Hence, the value i1 of the sequence index of the frame 611 is indicative of such a remainder. The value i2 of the sequence index of the frame 612 may be determined based on the remainder which is associated with the value i1 of the sequence index of the frame 611.
As can also be seen from Table 2, the values of the sequence index are associated with different remainder values for different frame rates. In other words, the remainder values for different frame rates are ordered differently. Notably in case of a change of the frame rate between frames 611 and 612, the value i2 of the sequence index of the frame 612 may be determined by
By doing this, the phase of the bitstream 310 may be maintained at a splicing point and/or in case of a change of the frame rate. Table 8 shows values of the sequence index in case of example frame rate ratios. The frame rate change occurs between the “previous” frame 611 and the “next” frame 621.
The locking of the phase is also applicable to the case where a pre-determined counter value (e.g. the counter value “0”) is used to indicate the presence of a splicing point. A sequence counter value “0” may denote a so-called indicated splice, which is used to signal to the decoding system that a splice has occurred. The associated slice may be a controlled or an uncontrolled splice and hence may be seamless. The value of the sequence index of a frame 621 with a sequence counter of value “0” may be derived from the previous frame.
In case the frame rate remains unchanged at the splicing point, the value of the sequence index may be continued, i.e. i2=(i1+1) mod Z. In case the frame rate changes, the value of the sequence index of the frame 621 may be determined as outlined above, e.g. using the formula i2=(î1+1) mod Z and/or using Table 8.
If the frame with the sequence counter value of 0 is the first frame in a decoding system, then the sequence counter value may be assumed to be Qmax, or—in other words—the value of the sequence index may be assumed to be 0.
In general, the value of the sequence counter of a frame n may be determined as
sequence_counter=((n−1)mod 1020)+1; nε*.
The methods and systems described in the present document may be implemented as software, firmware and/or hardware. Certain components may e.g. be implemented as software running on a digital signal processor or microprocessor. Other components may e.g. be implemented as hardware and or as application specific integrated circuits. The signals encountered in the described methods and systems may be stored on media such as random access memory or optical storage media. They may be transferred via networks, such as radio networks, satellite networks, wireless networks or wireline networks, e.g. the Internet. Typical devices making use of the methods and systems described in the present document are portable electronic devices or other consumer equipment which are used to store and/or render audio signals.
This application claims the benefit of priority to U.S. Provisional Patent Application No. 61/877,155 filed 12 Sep. 2013 and U.S. Provisional Patent Application No. 61/985,879 filed 29 Apr. 2014, each of which is hereby incorporated by reference in its entirety.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2014/054899 | 9/10/2014 | WO | 00 |
Number | Date | Country | |
---|---|---|---|
61985879 | Apr 2014 | US | |
61877155 | Sep 2013 | US |