Làm thế nào để một máy tính phát video trong khi làm một cái gì đó khác?


8

Làm thế nào là phát lại video được thực hiện trên máy tính? Rõ ràng là không dựa hoàn toàn vào CPU, vì việc phát lại video vẫn tiếp tục khi người dùng thực hiện một hoạt động khác, chẳng hạn như nhập vào trường nhận xét YouTube. Nhiệm vụ này có vẻ phức tạp hơn trong trường hợp truyền phát video, trong đó dữ liệu có lẽ cần phải được chuyển từ giao diện mạng sang bộ điều khiển video / đồ họa.

EDIT: Tôi nên nói rõ rằng tôi hiểu rằng CPU chuyển đổi giữa nhiều tiến trình và luồng mọi lúc. Câu hỏi của tôi có nghĩa là cụ thể hơn về phát lại video. Là xử lý video được thực hiện trên chipset / thẻ đồ họa? Những người thường cung cấp bộ đệm? Hoặc tất cả có thể được xử lý bởi CPU lõi đơn có thời gian dự phòng cho các tác vụ khác hay tôi sai khi nghĩ rằng CPU cấp thấp có thể phát lại video mà không bị trì hoãn (không phải mạng)?


2
Bất kỳ lõi nào cũng có thể thực hiện một thao tác tại bất kỳ bước thời gian riêng biệt nào - nhưng vì nó rất nhanh, nên nó có thể chuyển đổi giữa việc thực hiện nhanh đến mức chúng ta không thể phát hiện ra. Nếu chúng ta có thể nghe hoặc nhìn thấy trong các bước thời gian trong phạm vi nano giây, nó sẽ trông / nghe như nói lắp. Lập kế hoạch sẽ là chủ đề sơ bộ cho điều này, tôi giả sử; mẹo có lẽ là lên lịch cho những thứ nhạy cảm về thời gian (như phát phương tiện hoặc thay đổi nội dung màn hình) đủ thường xuyên để não của chúng ta không thể nhận ra rằng có một cái gì đó khác đã được thực hiện ở giữa. (Lưu ý: ở trên là phỏng đoán sơ bộ, nhưng đó là nơi tôi sẽ tìm.)
G. Bach

1
Thêm vào nhận xét trước đó rằng các chip hiện đại có một số lõi (đọc: một số CPU) và có các bộ xử lý khác để chia sẻ khối lượng công việc, chẳng hạn như bộ xử lý đồ họa.
babou

Cảm ơn, nhưng tôi đã nghĩ về nhiều lõi và loại bỏ nó, vì có vẻ như ngay cả các máy tính cấp thấp cũ cũng có thể làm gì đó khác trong khi hiển thị video.
Ellen Spertus

Câu trả lời:


3

Một card đồ họa hiện đại hoạt động ít nhiều (phần nào) giống như một cpu thông thường.

Trên một card đồ họa, bạn sẽ có (đôi khi) nhiều bộ xử lý, mỗi bộ xử lý sẽ có (đôi khi) nhiều bộ xử lý, mỗi bộ có nhiều lõi.

Khi một video được tải vào một card đồ họa, nó sẽ được chuyển mã vào bộ đệm đầu ra bằng một sự phân bổ nhất định của các lõi đa bộ xử lý. Bộ đệm đầu ra này thường là bộ nhớ có thể truy cập toàn cầu, có nghĩa là mọi lõi từ bất kỳ bộ xử lý đa năng nào từ ít nhất một bộ xử lý (nhưng thường là tất cả) đều có quyền truy cập r / w trực tiếp vào nó.

Thông thường, một bộ đa xử lý được giới hạn trong một tập lệnh, điều đó có nghĩa là một card đồ họa chỉ có thể hoạt động đồng thời với nhiều "hương vị" khác nhau của các luồng khi có nhiều bộ xử lý trên thẻ. Ví dụ, "hương vị" có thể là mô phỏng vật lý, kết xuất video, kết xuất hệ điều hành hoặc chức năng mã hóa. Đương nhiên, một bộ đa xử lý có thể lên lịch nhiều loại luồng để chạy không liên tục, nhưng điều này thường không cần thiết.

Giải mã một video thường rất nhiều công việc, xem xét cách nó thường được nén và đôi khi được mã hóa, do đó, trình hiển thị không phải lúc nào cũng bận rộn. Do đó, tương đối dễ dàng để hiển thị một con trỏ chuột di chuyển trên khung hình video. Tuy nhiên, đôi khi điều này không hoạt động tốt và bạn sẽ thấy con trỏ của bạn biến mất như thế nào. Điều này không nhất thiết là vì ứng dụng "nằm trên cùng" của hệ điều hành, mà đơn giản chỉ vì nó là một phần của bộ đệm đầu ra.


3

Điều này được thực hiện bằng cách sử dụng một số kỹ thuật khác nhau. Trong ứng dụng (ví dụ: trình duyệt web), chương trình có thể thực thi các luồng thực thi khác nhau . Một luồng có thể thực hiện truyền phát / phát video, trong khi một luồng khác có thể xử lý người dùng nhập vào trường nhận xét.

Các luồng này, cùng với nhiều luồng và tiến trình khác, lần lượt được hệ điều hành lên lịch (ngay cả khi bạn chỉ mở trình duyệt web, hệ điều hành có nhiều tác vụ nền đang chạy, chẳng hạn như trình quản lý cửa sổ, bộ đệm in, Quản lý thiết bị USB, v.v.). Công việc của bộ lập lịch hệ điều hành là xác định luồng nào có thể chủ động chạy, trên lõi bộ xử lý nào và trong bao lâu. Trong một hệ thống điển hình, một luồng có thể chạy tới một số giá trị ngưỡng, giả sử 100 mili giây, trước khi bộ lập lịch cho phép một tác vụ khác chạy.

Chuyển đổi tác vụ này là nền tảng cho tất cả các hệ điều hành hiện đại (Windows, Linux, UNIX, v.v.) và thường là một phần quan trọng của khóa học hệ điều hành đại học.


Cảm ơn vi đa trả lơi. Tôi nên đã làm rõ rằng tôi biết về đa luồng và đa lập trình. (Trên thực tế, tôi đang dạy một khóa học hệ điều hành đại học trong khoảng thời gian thứ mười.) Tôi chỉ không hiểu cụ thể cách phát lại video hoạt động
Ellen Spertus

1
@espertus Đây là một bài viết về lập lịch truyền thông liên tục , có thể điều đó có thể làm sáng tỏ một số mối quan tâm của bạn. Mặc dù phải đọc lên là công việc nhiều hơn nhiều so với việc ai đó chỉ đưa ra câu trả lời, tôi đã hiểu rằng ít nhất đó là điểm khởi đầu vì tôi không chắc chúng ta có ai đó trên diễn đàn này thông thạo các vấn đề liên quan.
G. Bạch

2

Phát lại video không phải là đặc biệt. Chắc chắn, giải mã tăng tốc GPU là phổ biến ngày nay, giúp giải phóng CPU cho công việc khác, nhưng không phải lúc nào cũng như vậy. Phát lại video mượt mà chỉ với một CPU duy nhất là có thể, miễn là có đủ CPU cho độ phân giải và độ phức tạp của thuật toán nén, và thực hiện cùng với các tác vụ khác là có thể, miễn là có đủ CPU cho cả hai, và hệ điều hành lịch trình tốt. Video 30fps là phổ biến, cho phép 33ms giải mã từng khung hình. Ngay cả các chip khá cũ cũng có thể quản lý điều đó đối với MPEG-2 chất lượng SD và các chip hiện đại có thể quản lý nó cho HD MPEG-4; máy tính xách tay Tôi đang gõ này yêu cầu khoảng 20% ​​CPU để phát lại AVC cấu hình cao 720p.

Đối với bộ đệm, có một số lượng hạn chế có sẵn. Tối thiểu cho bất cứ thứ gì không muốn bị rách màn hình là "bộ đệm đôi", trong đó có hai khung hình trong bộ nhớ: thẻ video hiển thị một khung hình trong khi phần mềm cập nhật cái kia và vai trò của hai cái được hoán đổi trong suốt dọc Làm tươi. Với "bộ đệm ba", có hai khung ngoài màn hình, tiếp theo và tiếp theo + 1, giúp giảm lượng jitter. Trên các thẻ hiện đại có dung lượng RAM lớn, có thể vượt xa số lượng khung hình lớn hơn, với nhược điểm duy nhất là độ trễ hiển thị của người dùng trong việc tìm kiếm, bắt đầu phát lại, v.v. và thực tế là các ứng dụng khác có thể muốn có RAM video đó cho chính họ .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.