2013-03-03 27 views
1

我使用libusb與UCG102(吉他鏈接)USB設備進行通信,並且在使用同步控制請求設置採樣率時獲取-9(LIBUSB_ERROR_PIPE,這意味着參數不受支持)。這是因爲通過記錄的libusb的基本要求細節,你不能看到實際的採樣率,因爲它是一個3字節的緩衝區按規範:使用libusb設置採樣率使用libusb

03-02 14:33:13.173: I/LIBUSB(9480): bmRequestType=22, bRequest=01, wValue=0100, wIndex=0084, wLength=0003 

代碼來設置採樣率值

byte[] param2 = new byte[3]; 

param2[2] = (byte)(sampleRate >> 16); //0x44; 
param2[1] = (byte)(sampleRate >> 8); // 0xAC; 
param2[0] = (byte) (sampleRate & 0xff); //0x00; 

相同的代碼適用於多種其他USB音頻設備。然後,我繼續做同步音頻(UCG102有哪些類型的作品 - 但速度不是我想要的)。

我應該指出,採樣率是從設備描述符中選擇的,所以我知道它是受此設備支持的。

所以問題是我怎樣才能設置採樣率?在這之前我需要做些什麼(是的,我已經分離了所有其他接口,然後聲明瞭我想要的)。有些設備是否期望採用與USB audio規範不同的方式表示採樣率?

如果你不能直接回答,也許有人可以指向我的Windows或Fedora庫/應用程序,它將與我的USB設備通信(用於音頻目的)並註銷所有LIBUSB調用,以便我可以看到它工作(或開源,所以我可以把我自己的調試到它)。

您的幫助表示讚賞。

回答

1

事實證明,您無法對輸入或輸出端點上的設置請求執行此操作。您可以通過在接口上選擇適當的備用設置來有效地設置輸入採樣率,因爲每個備用設置只有一個採樣率。在輸出端,每個備用設置有三個採樣率,它只是適應速度。這不是典型的USB音頻1.0行爲,但它的工作原理。

+0

你似乎知道很多。你能幫助解決這個問題嗎? http://stackoverflow.com/questions/35039258/libusb-how-to-select-an-alternate-setting-of-a-usb-soundcard-for-stereo-record – DrCachetes 2016-01-27 13:59:22