Module ammosreader.AmmosAudioDataBody

I provide an AMMOS data block for audio data frames.

Expand source code
"""I provide an AMMOS data block for audio data frames."""


class AmmosAudioDataBody:
    """I implement an AMMOS data block for audio data frames."""

    def __init__(self, pcm_data, number_of_channels=1, samples_per_channel=1, sample_size=1):
        """I return a new AMMOS data block for audio data frames."""
        self.__number_of_channels = number_of_channels
        self.__samples_per_channel = samples_per_channel
        self.__sample_size = sample_size
        self.__payload = pcm_data

    @property
    def payload(self):
        """I return the raw pcm data with channels interweaved."""
        return self.__payload

    def pcm_for_channel(self, channel_number):
        """I return the raw pcm data for a given channel."""
        start_offset = channel_number * self.__sample_size
        step = self.__sample_size * self.__number_of_channels
        end = (len(self.__payload) // step) * step
        channel_bytes = b""
        for each in range(start_offset, end, step):
            channel_bytes += self.__payload[each:each+self.__sample_size]
        return channel_bytes

    def __str__(self):
        """I return the string representation of myself."""
        return ("Number of channels:" + str(self.__number_of_channels) +
                "\nSamples per channel:" + str(self.__samples_per_channel) +
                "\nSample size:" + str(self.__sample_size) +
                "\nData size:" + str(len(self.__payload)))

Classes

class AmmosAudioDataBody (pcm_data, number_of_channels=1, samples_per_channel=1, sample_size=1)

I implement an AMMOS data block for audio data frames.

I return a new AMMOS data block for audio data frames.

Expand source code
class AmmosAudioDataBody:
    """I implement an AMMOS data block for audio data frames."""

    def __init__(self, pcm_data, number_of_channels=1, samples_per_channel=1, sample_size=1):
        """I return a new AMMOS data block for audio data frames."""
        self.__number_of_channels = number_of_channels
        self.__samples_per_channel = samples_per_channel
        self.__sample_size = sample_size
        self.__payload = pcm_data

    @property
    def payload(self):
        """I return the raw pcm data with channels interweaved."""
        return self.__payload

    def pcm_for_channel(self, channel_number):
        """I return the raw pcm data for a given channel."""
        start_offset = channel_number * self.__sample_size
        step = self.__sample_size * self.__number_of_channels
        end = (len(self.__payload) // step) * step
        channel_bytes = b""
        for each in range(start_offset, end, step):
            channel_bytes += self.__payload[each:each+self.__sample_size]
        return channel_bytes

    def __str__(self):
        """I return the string representation of myself."""
        return ("Number of channels:" + str(self.__number_of_channels) +
                "\nSamples per channel:" + str(self.__samples_per_channel) +
                "\nSample size:" + str(self.__sample_size) +
                "\nData size:" + str(len(self.__payload)))

Instance variables

var payload

I return the raw pcm data with channels interweaved.

Expand source code
@property
def payload(self):
    """I return the raw pcm data with channels interweaved."""
    return self.__payload

Methods

def pcm_for_channel(self, channel_number)

I return the raw pcm data for a given channel.

Expand source code
def pcm_for_channel(self, channel_number):
    """I return the raw pcm data for a given channel."""
    start_offset = channel_number * self.__sample_size
    step = self.__sample_size * self.__number_of_channels
    end = (len(self.__payload) // step) * step
    channel_bytes = b""
    for each in range(start_offset, end, step):
        channel_bytes += self.__payload[each:each+self.__sample_size]
    return channel_bytes