Write a function to process audio buffers or signal data efficiently.
Given a list of audio buffers and a positive window size, flatten the buffers while preserving each sample's source buffer. For windows contained within one buffer, return the root-mean-square amplitude. For windows crossing a buffer boundary, return the mean absolute amplitude. Return results in window order, rounded to six decimal places.
Signature: process_audio_buffers(buffers, window_size)
Input buffers is a list of lists of numbers. Return a list of numbers, or an empty list when the window is invalid or larger than the flattened signal.
def process_audio_buffers(buffers, window_size):