Synchronization of downlink streaming data is performed by estimating the likelihood of an underflow or an overflow (406) in an output buffer upon receipt of each encoded data frame (402) to determine if synchronization will be needed. After each encoded data frame is decoded (408a, 408b) it is then synchronized if the estimate indicated synchronization would be needed. Synchronization of uplink steaming data is performed by estimating the likelihood of an underflow or an overflow in an input buffer upon sending of each encoded data frame to an output modem for transmission to determine if synchronization will be needed. If needed, synchronization will be performed later on a portion of data samples taken from the input buffer that are used to form a frame of un- encoded data samples.