Video/audio transmission system and method
Abstract
The invention is a data pipeline system which synchronizes the display of digitized audio and video data regardless of the speed at which the data was recorded on its linear medium. To do this, the video data is played at a constant speed, synchronized by the audio speed. Further, the invention uses a method of “staging” data in storage buffers, i.e., ring buffers, which encourages efficient use of the viewer module resources by not permitting the viewer to read excessive amounts of data at any one time, i.e., to read only enough data into any one ring buffer so that the amount of data in the ring buffer is roughly equivalent to the amount of data in the other ring buffers and yet permitting the viewer to read large enough chunks of data to promote efficient use of the fill system.
Claims
exact text as granted — not AI-modified1. A media pipeline system for displaying digitized audio and video, comprising:
a media file database for accepting and making available a plurality of media files, at least one of said media files having digitized audio media data and at least another one of said media files having video media data, each of said media files being divided into a plurality of frames; a plurality of ring buffers; a viewer module comprising procedures to synchronize the transfer of media data from the media files into said plurality of ring buffers, said ring buffers storing the media data before it is displayed; a video accelerator connected to receive an output of at least one of said ring buffers for generating a video display output; and a sound accelerator connected to receive an output of at least one of said ring buffers for generating an audio output.
2. The system of claim 1 wherein one of said ring buffers receives and stores only audio media and another of said ring buffers receives and stores only video media.
3. The system of claim 2 , wherein two of said ring buffers receive and store only audio data.
4. The system of claim 2 , further comprising a controller for signalling said sound accelerator to start playing a part of the media data found on a ring buffer containing audio data, said sound accelerator producing an output signal after playing said part, said controller being responsive to said sound accelerator output signal for signalling said video accelerator to start displaying part of the media data stored in a ring buffer containing video data.
5. The system of claim 1 , wherein at least one of said audio media files contains audio data for a first audio channel and at least another of said audio media files contains audio data for a second audio channel.
6. The system of claim 5 , wherein one of said ring buffers receives and stores only video media data, another one of said ring buffers receives and stores only audio media data for said first channel and another one of said ring buffers receives and stores only audio media data for said second channel.
7. The system of claim 1 , wherein said viewer module procedures to synchronize media data transfer include a data transfer coordinator to stage the transfer of data to said plurality of ring buffers so that at any one time the amount of data in one ring buffer is approximately equivalent to the amount of data in at least one other ring buffer.
8. The system of claim 7 , wherein said transfer coordinator acts so that at any one time the amount of data in one ring buffer is approximately equivalent to the amount of data in all other ring buffers.
9. The system of claim 1 , wherein said viewer module further comprises procedures for determining which of said ring buffers contains the least media data and transferring media data to the ring buffer having the least media data.
10. The system of claim 9 , wherein said viewer module procedures include a transfer coordinator for transferring data to a ring buffer in disregard of other conditions when said ring buffer contents are below a predetermined minimum.
11. A method of displaying digitized media data on a monitor, comprising the steps of:
storing the media data in a plurality of media files and a plurality of ring buffers, at least one of which contains video media data and at least one of which contains audio media data; determining which of the ring buffers contains the least media data; reading media data from one of the media files into the ring buffer having the least media data; signaling a sound accelerator card which plays a part of the media data found one of the audio ring buffers; waiting for an interrupt from the sound accelerator card; signaling a video accelerator card which plays the a part of the media data found in one of the video ring buffers.
12. The method of claim 11 , further comprising the step of executing a critical read operation when the number of bytes contained in a ring buffer less than a predefined minimum.
13. The method of claim 12 , further comprising the step of executing an efficient read operation when the number of bytes contained in a ring buffer is greater than a predefined number.
14. The system of claim 1 , wherein the ring buffers are preloaded with data (before playing begins) to increase efficiency.
15. The method of claim 11 , further comprising the step of determining the number of bytes of audio needed to properly synchronize with a given amount of video by using a proportion with the amount of video that was associated with this audio when it was digitized.
16. The system of claim 1 , further enhanced by a set of capture masks used to efficiently play back material that was captured at fewer than 30 frames per second.
17. A process for transferring video data from one or more video data files stored in a file system of an operating system of a general purpose computer to a video playback device and audio data from one or more audio data files stored in the file system to an audio playback device, during synchronized playback of the audio and video, wherein a first buffer associated with the video playback device stores video data before playback and a second buffer associated with the audio playback device stores audio data before playback, the process comprising:
determining an actual amount of data in the first buffer; determining an actual amount of data in the second buffer; selecting one of the video data and the audio data according to the measured amount of data in the first buffer and the second buffer; reading a desired amount of data from the data file for the selected data; playing back the video data in the first buffer and the audio data in the second buffer in synchronism; and repeating steps of measuring, selecting and reading while playing back the video data and audio data in synchronism.
18. The process of claim 17 , wherein selecting one of the video data and the audio data comprises selecting the video data if the first buffer has a least amount of data and selecting the audio data if the second buffer has a least amount of data.
19. The process of claim 17 , wherein selecting one of the video data and the audio data further comprises selecting the video data if the first buffer has an amount of data below a predetermined minimum and selecting the audio data if the second buffer has an amount of data below a predetermined minimum.
20. The process of claim 17 , wherein selecting one of the video data and the audio data is performed independent of location of the video data and the audio data on a storage medium.
21. The process of claim 17 , wherein selecting the desired amount of data to be read comprises selecting an amount of data such that the amount of data in the buffer for the selected data is roughly equivalent to the amount of data in the other buffer.
22. The process of claim 17 , wherein playing back in synchronism comprises:
signaling one of the playback devices to play a part of the data in the buffer for the playback device, the playback device producing an output signal after playing said part; and signaling the other of the playback devices to play a part of the data in the buffer for the other playback device.
23. The process of claim 17 , wherein selecting comprises:
for each buffer, determining a state according to the determined amount of data in the buffer; selecting an action according to the state of each buffer.
24. The process of claim 23 , wherein the action is one of reading video data, reading audio data or waiting.
25. The process of claim 24 , wherein the state of a buffer is one of critical, efficient and not critical and not efficient.
26. The process of claim 23 , wherein the state of a buffer is one of critical, efficient and not critical and not efficient.
27. A process for transferring media data for a plurality of streams from a computer readable medium during playback of the media data to one or more output devices for playing back each stream, and wherein each stream has a buffer for storing media data before playback, the process comprising:
determining an actual amount of data in the buffer for each stream; selecting one of the streams, and selecting a desired amount of data to be read for the stream; for the selected stream, reading the desired amount of data from the computer readable medium into the buffer for the output device associated with the selected stream for playback by the output device; and repeating steps of measuring, selecting and reading during playback of the media data of the plurality of streams.
28. The process of claim 27 , wherein selecting one of the streams comprises selecting a first stream if the buffer for the first stream has a least amount of data and selecting a second stream if the buffer for the second stream has a least amount of data.
29. The process of claim 27 , wherein selecting one of the streams comprises selecting a first stream if the buffer for the first stream has an amount of data below a predetermined minimum and selecting a second stream if the buffer for the second stream has an amount of data below a predetermined minimum.
30. The process of claim 27 , wherein selecting one of the streams is performed independent of location of the media data on a storage medium.
31. The process of claim 27 , wherein selecting the desired amount of data to be read comprises selecting an amount of data such that the amount of data in the buffer for the selected data is roughly equivalent to the amount of data in another buffer.
32. The process of claim 27 , wherein playback comprises:
signaling one of the playback devices to play a part of the data in the buffer for the one of the playback devices, the one of the playback devices producing an output signal after playing said part; and signaling another of the playback devices to play a part of the data in the buffer for the another of the playback devices.
33. The process of claim 27 , wherein selecting comprises:
for each buffer, determining a state according to the determined amount of data in the buffer; selecting an action according to the state of each buffer.
34. The process of claim 33 , wherein the action is one of reading media data for a first stream, reading media data for a second stream or waiting.
35. The process of claim 34 , wherein the state of a buffer is one of critical, efficient and not critical and not efficient.
36. The process of claim 33 , wherein the state of a buffer is one of critical, efficient and not critical and not efficient.
37. A process for transferring video data from one or more data files stored in a file system of an operating system of a general purpose computer to a video playback device and audio data from the one or more data files stored in the file system to an audio playback device, during playback of the audio and video, wherein a first buffer is associated with the video playback device to storing video data before playback and a second buffer is associated with the audio playback device to store audio data before playback, the process comprising:
determining an actual amount of data in the first buffer; determining an actual amount of data in the second buffer; selecting one of the video data and the audio data according to the measured amount of data in the first buffer and the second buffer; for the selected data, reading a desired amount of data from the one or more data files in the file system; and repeating steps of measuring, selecting, and reading while playing back the video data in the first buffer and the audio data in the second buffer.
38. The process of claim 37 , wherein selecting one of the video data and the audio data comprises selecting the video data if the first buffer has a least amount of data and selecting the audio data if the second buffer has a least amount of data.
39. The process of claim 37 , wherein selecting one of the video data and the audio data further comprises selecting the video data if the first buffer has an amount of data below a predetermined minimum and selecting the audio data if the second buffer has an amount of data below a predetermined minimum.
40. The process of claim 37 , wherein selecting one of the video data and the audio data is performed independent of location of the media data on a storage medium.
41. The process of claim 37 , wherein selecting the desired amount of data to be read comprises selecting an amount of data such that the amount of data in the buffer for the selected data is roughly equivalent to the amount of data in the other buffer.
42. The process of claim 37 , wherein playing back in synchronism comprises:
signaling a one of the playback devices to play a part of the data in the buffer for the playback device; the playback device producing an output signal after playing said part; and signaling the other of the playback devices to play a part of the data in the buffer for the other playback device.
43. The process of claim 37 , wherein selecting comprises:
for each buffer, determining a state according to the determined amount of data in the buffer; selecting an action according to the state of each buffer.
44. The process of claim 43 , wherein the action is one of reading video data, reading audio data or waiting.
45. The process of claim 44 , wherein the state of a buffer is one of critical, efficient and not critical and not efficient.
46. The process of claim 43 , wherein the state of a buffer is one of critical, efficient and not critical and not efficient.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.