class Origami::Stream

def decode!


Uncompress the stream data.
def decode!
    self.decrypt! if self.is_a?(Encryption::EncryptedStream)
    return if decoded?
    filters = self.filters
    dparams = decode_params
    @data = @encoded_data.dup
    @data.freeze
    filters.each_with_index do |filter, layer|
        params = dparams[layer].is_a?(Dictionary) ? dparams[layer] : {}
        # Handle Crypt filters.
        if filter == :Crypt
            raise Filter::Error, "Crypt filter must be the first filter" unless layer.zero?
            # Skip the Crypt filter.
            next
        end
        begin
            @data = decode_data(@data, filter, params)
        rescue Filter::Error => error
            @data = error.decoded_data
            raise
        end
    end
    self
end