libaudiohal@aidl: Fix 'pause' handling

In case of transient states like DRAINING, the HAL may change its
StreamDescriptor::State on its own and may not be in synchronization with client. Thus, client can send the unexpected command and HAL returns failure. such failure is natural. The client handles it gracefully.

Example where HAL change its state,
1) DRAINING -> IDLE (on empty buffer)
2) DRAINING -> IDLE (on IStreamCallback::onDrainReady)

Also, refactor the resume implementation.

BUG: 363958142

Test: play compress offload playback

Change-Id: I1cd7ec96cfa7e20c69c03ec8aae088d1954adda2
1 file changed