TRUYỀN ÂM THANH TRÊN MẠNG LAN
V.2.3 MODUL THU VAØ PHÁT ÂM THANH
Modul xử lý âm thanh làm nhiệm vụ giao tiếp với soundcard, ghi vào bộ nhớ và truyền cho modul II để mã hố, đồng thời nhận các mẫu đã giải mã ở modul II để đưa ra soundcard trong quá trình nhận.
Quá trình thu và phát tiếng nĩi thơng qua vùng đệm (buffer), cĩ 2 loại vùng đệm trong Direct sound : Primary buffer và Secondary buffer. Primary buffer chứa tiếng nĩi mà người nghe sẽ nghe thấy. Chỉ cĩ duy nhất một Primary buffer và buffer này do DirectSound tạo ra, secondary buffer chứa tiếng nĩi hoặc đoạn tiếng cần đưa ra. Chương trình cĩ thể tạo ra một hoặc nhiều Secondary buffer. Khi phát tiếng nĩi trong secondary buffer, DerectSound sẽ chuyển tiếng nĩi sang Primary buffer và đưa ra soundcard. Chương trình ứng dụng cĩ thể dùng DirectSoundCapture để ghi tiếng nĩi vào một Capturebuffer. Cũng như khi phát tiếng nĩi, chương trình cĩ thể báo con trỏ đến một vị trí nào đĩ và khi nĩ đến cuối của buffer thì nĩ tự động quay lại vị trí đầu của buffer.
Khi thao tác với các buffer, DirectSound cho phép khĩ một phần của buffer lại để đảm bảo khơng bị ghi đè lên phần này.
Modul thu và phát tiếng nĩi nằm trong cùng một Record thread. Thread cĩ mức ưu tiên cao nhất. Mỗi khi cĩ một dịng thơng báo từ DirectSound gửi đến tức là khi con trỏ Capture buffer đi đến vị trí quy định trước thì thread này sẽ được gọi đến. Lúc này, modul thu tiếng nĩi sẽ khố phần Capture buffer vừa ghi xong. Néu trong buffer của modul phát tiếng nĩi cĩ tín hiệu tiếng nĩi thì sẽ chép vào Secondary buffer của DirectSound.
Lưu đồ của modul thu và phát tiếng nĩi như sau :
Hình V.3 Lưu đồ của modul thu và phát tiếng nĩi V.2.4 MODUL MÃ HỐ VAØ GIẢI MÃ ÂM THANH
Modul mã hố được kích hoạt sau khi modul VAD xác định tín hiệu âm thanh cĩ chức tiếng nĩi. Cơng việc của modul mã hố gọi đến các thủ tục mã hố tiếng nĩi(GSM,LPC…). Sau đĩ, chuyển dữ liệu đã mã hố vào Send buffer tồi kích hoạt modul truyền. Modul nhận nằm trong thread mã hố, cĩ mức ưu tiên bình thường.
Bắt đầu Khố buffer DirectSound
Chép tín hiệu âm thanh vừa lấy mẫu vào Record buffer
Play buffer cĩ dữ liệu
Chép play buffer vào Secondary buffer Mở khố buffer DirectSound Kích hoạt modul mã hố Kết thúc đúng sai
Sau đây là lưu đồ giải thuật modul mã hố :
Hình V.4 Lưu đồ giải thuật modul mã hố
Modul giải mã tiếng nĩi được kích hoạt sau khi modul nhận được dữ liệu từ máy ở xa. Loại bỏ Header, các dữ liệu thừa và đưa vào trong buffer nhận. Modul giải mã sẽ xá định phương pháp giải mã tương ứng với phương pháp mã hố được sử dụng ở bên truyền. Sau đĩ chuyển dữ liệu đã mã hố vào buffer phát tiếng nĩi.
Bắt đầu
Kết thúc
Lấy một khung tiếng nĩi từ Record buffer
Play buffer cĩ dữ liệu
Mã hố theo phương pháp PCM
Chép khung tiếng nĩi đã mã hố vào Sendbuffer
Kích hoạt modul truyền đúng
Lưu đồ giải thuật modul giải mã như sau :
Hình V.5 Lưu đồ giải thuật modul mã hố V.2.5 MODUL TRUYỀN, NHẬN ÂM THANH
Modul này cĩ nhiệm vụ giao tiếng giữa máy tính với mạng IP. Sử dụng giao thức TCP/IP.
Khi buffer truyền cĩ dữ liệu cần truyền đi, modul truyền sẽ kích hoạt . dữ liệu cần truyền sẽ cĩ thêm các header và các thơng tin cần thiết khác. Modul truyền cĩ mức ưu tiên bình thường.
Khi cĩ dữ liệu đến, winsock sẽ gửi thơng báo đến chương trình, chương trình nhận được thơng báo và kích hoạt modul nhận. Modul nàu cĩ nhiệm vụ nhận dữ liệu, kiểm tra, loại bỏ dữ liệu thừa cùng với header. Sau khi chuyển dữ liệu vào buffer nhận và kích hoạt modul giải mã.
Bắt đầu
Kết thúc
Lấy một khung tiếng nĩi từ buffer nhận
Buffer nhận cĩ dữ liệu
Mã hố theo phương pháp PCM
Chép khung tiếng nĩi vào buffer phát
đúng
Lưu đồ giải thuật của modul truyền và nhận :
Hình V. 6 Lưu đồ giải thuật modul truyền
Hình V.7 Lưu đồ giải thuật modul nhận