@@ -17,6 +17,8 @@ typedef void* (*PTHREAD_START_ROUTINE)(void*);
17
17
#define logi(...)
18
18
#endif
19
19
20
+ int gBytesPerSec = 0 ;
21
+
20
22
void openOrCloseWm8740Mute (bool enable);
21
23
void startCloseCodecMute ();
22
24
int gRun = 1 ;
@@ -252,6 +254,11 @@ void startCloseCodecMute();
252
254
return (mOut == mIn );
253
255
}
254
256
257
+ unsigned int RingBuffer::getDataLen ()
258
+ {
259
+ return mIn - mOut ;
260
+ }
261
+
255
262
#define USB_FUNCTION_PATH " /sys/class/android_usb/android0/functions"
256
263
#define USB_STATE_PATH " /sys/class/android_usb/android0/state"
257
264
#define USB_FUNCTION_HIFI " hifi\n "
@@ -485,7 +492,7 @@ void sendAudioMsg(int rate,int bit){
485
492
int readlen;
486
493
unsigned char buffer[512 ];
487
494
488
- log_i (" USBHiFi::USBHiFiReading" );
495
+ log_i (" ---> USBHiFi::USBHiFiReading" );
489
496
490
497
491
498
while (1 )
@@ -500,6 +507,12 @@ void sendAudioMsg(int rate,int bit){
500
507
{
501
508
gReadingCount += readlen;
502
509
WriteRingBuffer (buffer, readlen);
510
+
511
+ // 如果buffer 的数据长于100ms 则睡50ms
512
+ if (gBytesPerSec && gHiFiRing .getDataLen () > gBytesPerSec / 10 )
513
+ {
514
+ usleep (1000 * 50 );
515
+ }
503
516
}
504
517
}
505
518
else
@@ -675,6 +688,8 @@ void writePcm(unsigned char* buf,int size){
675
688
continue ;
676
689
}
677
690
lockWake (true );
691
+ log_i (" Channels=%d,SamplingRate=%d,BitPerSample=%d" ,gHiFiHeader .mChannels ,gHiFiHeader .mSamplingRate ,gHiFiHeader .mBitPerSample );
692
+ gBytesPerSec = gHiFiHeader .mSamplingRate * gHiFiHeader .mBitPerSample / 8 * gHiFiHeader .mChannels ;
678
693
679
694
while (1 )
680
695
{
@@ -696,6 +711,8 @@ void writePcm(unsigned char* buf,int size){
696
711
}
697
712
lockWake (false );
698
713
hifi_pcm_close (mHiFiOut );
714
+
715
+ gBytesPerSec = 0 ;
699
716
mHiFiOut = NULL ;
700
717
}
701
718
0 commit comments