def glitch target = :all, &block  # :yield: data
      if block_given?
        @frames.each do |frame|
          if valid_target? target, frame
            frame.data = yield frame.data
          end
        end
        self
      else
        self.enum_for :glitch, target
      end
    end
def glitch target = :all, &block  # :yield: data
      if block_given?
        @frames.each do |frame|
          if valid_target? target, frame
            frame.data = yield frame.data
          end
        end
        self
      else
        self.enum_for :glitch, target
      end
    end
Glitches each frame data.
 It is a convenient method to iterate each frame.

 The argument +target+ takes symbols listed below:
 [<tt>:keyframe</tt> or <tt>:iframe</tt>]   select video key frames (aka I-frame)
 [<tt>:deltaframe</tt> or <tt>:pframe</tt>] select video delta frames (difference frames)
 [<tt>:videoframe</tt>] select both of keyframe and deltaframe
 [<tt>:audioframe</tt>] select audio frames
 [<tt>:all</tt>]        select all frames

 It also requires a block. In the block, you take the frame data
 as a String parameter.
 To modify the data, simply return a modified data.
 Without a block it returns Enumerator, with a block it returns +self+.