Truyền dữ liệu âm thanh từ ứng dụng ở chế độ người dùng đến Sysvad (driver) qua IOCTL

Chào mọi người hiện em có chương trình ghi âm,em dùng mẫu CaptureSharedEvent của microsoft. Em muốn chuyển dữ liệu ghi được sẽ được truyền tới skype thông qua sysvad,ở đây là một mô tả khá giống về cách nó hoạt động. Có ai đã làm qua phần này chưa có thể chỉ em không ạ.

:v ai giúp em với. có thể là triển khai ioctl để truyền dữ liệu âm thanh cũng được ạ

Hi there,

Cảm ơn cậu đã đặt câu hỏi.
Tớ chưa bao giờ làm việc với chương trình ghi âm nào, nên tớ nghĩ tất cả điều tớ có thể làm là chỉ cho cậu vài hướng đi, hoặc kết nối cậu với người có kiến thức.
Trước mắt, tớ muốn cậu cung cấp thêm 1 số thông tin:

  • Cậu có tài liệu nào mô tả CaptureSharedEvent của Microsoft không? Tớ đã thử tìm kiếm, nhưng không có bất cứ thông tin nào về nó trên google. Sẽ có ích nếu như cậu có thể chia sẻ.
  • Link cậu đưa có chứa 1 high level design cho vấn đề khử nhiễu âm thanh cho các ứng dụng như Slack/MS Teams… Tuy nhiên, tớ không chắc vấn đề của cậu là gì (“chuyển dữ liệu ghi được tới Skype thông qua sysvad” có vẻ không thực sự là vấn đề).
    Cậu có thể cho bọn tớ biết vấn đề thực sự của cậu là gì không? Cậu gặp vấn đề khi lấy dữ liệu từ audio driver, hay gặp vấn đề về sử dụng virtual audio driver? Hay gặp vấn đề về application khử nhiễu?
  • Cậu có thể cho bọn tớ biết cậu đã hoàn thành những phần nào, trong design kể trên không?

Xem chừng nó có vẻ là 1 project lớn đấy.
Hi vọng nhận được thêm thông tin từ cậu.

5 Likes

Chào anh,cảm ơn anh đã giúp đỡ em thêm lần nữa ạ <3.Em là sinh viên năm cuối đang tự nghiên cứu về học máy và trước giờ em dùng python khá thích hợp cho việc phân tích với project hiện tại em nghĩ mình có thể học cách xây dựng một sản phẩm thực tế. Thực sự vấn đề hiện tại của em chỉ là việc chuyển dữ liệu âm thanh từ ứng dụng ở chế độ người dùng sang sysvad và đặt nó vào CMiniportWaveRTStream::WriteBytes. Theo như em biết dữ liệu phải được đặt vào một bộ đệm tròn, hiện giời em không dùng mẫu CaptureSharedEventDriven nữa nhưng cơ bản dữ liệu âm thanh sẽ được lưu vào một bộ đệm của chương trình và mình sẽ dùng ioctl để chuyển dữ liệu đó sang bộ đệm tròn hay một bộ đệm nào đó trong sysvad,từ hàm CMiniportWaveRTStream::WriteBytes sẽ có con trỏ trỏ đến bộ đệm và lấy dữ liệu ra,dữ liệu sau đó được đưa đến audio engine và chuyển đến skype. Cuối cùng em thành thực xin lỗi vì đã viết thiếu tên ứng dụng ghi âm

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?