The present invention relates to video capture, and more particularly, to multi-stream capture.
Digital video signals are prevalent in digital television, set-top, portable consumer video equipment such as camcorder, video production, and video distribution systems. These digital video signals generally consist of video clock, video data, and corresponding video synchronization information. Sometimes, ancillary data also is included during video blanking time. The transfer of such data from one electronic device to another usually involves a synchronous transfer on a parallel or serial bus using the video clock. Often, more than one signal is transmitted at the same time.
In traditional video systems, parallel video signals are transmitted in the system using a format such as the digital data stream shown in
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
A method and apparatus for a technique to transfer two digital video signals synchronously across a bus sharing the same pixel clock and data bus. The multiplexing and transmission and corresponding de-multiplexing and reception process is shown in
As is shown in
In one embodiment, the video bus multiplexing scheme is implemented in an integrated circuit. In one embodiment, the transmitter and receivers are in a separate semiconductor chips. By utilizing this scheme a smaller form factor package can be chosen for both chips and less board routing is used. The system cost is reduced.
One embodiment of a detailed timing diagram of the dual-video multiplexed bus is shown in
The receiver of the common clock 270 and multiplexed data 265 can de-multiplex the data by sampling the data bus with different edge of the common clock 270. One embodiment of a circuit to perform the demultiplexing is shown in
In practical video systems, the video signal A 210 and video signal B 220 are not synchronized. The video clocks of signal A and signal B, 215, 225 do not have a well-defined phase relationship. Further, the two video signals 210, 220 may be generated from different sources, and thus may have a slight difference in frequencies. This mismatch is corrected using a synchronization circuit to align the video sources before sampling and multiplexing by the multiplexer. One embodiment of a block diagram of a multiplexing transmitter is shown in
The synchronization circuit consists of an asynchronous first-in first-out (FIFO) buffer 240 and associated control logic 275. In one embodiment, the input to the FIFO 240 is clocked by video clock B 225. The output of the FIFO 240 is clocked by video clock C, the common clock 270. This type of FIFO is known as an asynchronous FIFO. The FIFO 240 eliminates data phase uncertainty associated with clock A 215 and clock B 225 phase differences when their frequencies are identical.
A small frequency difference between two clocks 215, 225 cause a phase error to be accumulated over time, causing the FIFO 240 to either overflow or underflow. This difference in video frequencies also means the video frame rate is slightly different. Therefore, addressing the frequency differences can be generalized as an image re-sampling problem. In one embodiment, the video signal B 220 is being re-sampled at the frame rate of the video signal A 210—and video clock A 215 is the common clock 270. To re-sample video, the FIFO 240 must be one frame or more. In one embodiment, the minimum FIFO 240 size should be slightly larger than a video frame to account for the time overhead to correct overflow or underflow.
In one embodiment, re-sampling of the video is conducted using multi-frame memory. Each pixel can be derived from frames before or after the pixel sample, Interpolator 285 performs this type of interpolation. For example, motion estimation processing can be applied. In one embodiment, a simple form of video re-sampling is to duplicate or skip a frame. If the re-sampling used skips frames, frame selector 280 selects which frames to skip. In one embodiment, the frame selector 280 determines what to do.
If there is a frequency difference between video clock A 215 and video clock 225, the FIFO 240 may overflow. In one embodiment, underflow/overflow detector determines if an underflow or an overflow condition is about to occur. If the FIFO 240 overflows, in one embodiment a frame in the FIFO 240 is thrown away by moving the write pointer back to beginning of the video frame. Overflow recovery logic 290 monitors the FIFO 240. If an overflow is detected by overflow recovery logic 290, the overflow recovery logic 290 discards a frame. If the FIFO 240 underflows, in one embodiment underflow recovery logic 295 repeats a frame by moving the read pointer back one frame in the FIFO 240.
In another embodiment, if there is less video or blanking data than permitted by the scan time, the size of the FIFO can be reduced. In this embodiment, the FIFO may be reduced by difference between the size of the frame and the size of actual data to be stored and transmitted through the FIFO. In this instance, in one embodiment, instead of moving the read and write pointers on every clock cycle, the pointer only moves when there is validated data. The pointers are only checked when the scanning of a frame is completed.
At block 515, the process measures the frame time of video source B in terms of source A clock. This measurement is the number of clock cycles of the video source A clock it takes to completely scan a video frame of source B. In one embodiment, this can be accomplished by sampling the B vertical frame signal such as Vsync or V-indicator using the A video clock, to establish a cycle of active vertical region and blanking vertical region has been scanned at the input to the FIFO.
At block 520, the difference between the frame times, defined as delta, is computed. In one embodiment, delta is computed by subtracting the frame time of source A, in terms of source A clock period, from the frame time of source B, in terms of source A clock period.
At block 525, the sign of delta is determined and an adjusted absolute value (abs_delta) is calculated. The sign of delta is then determined—whether it is a positive value or a negative value—to identify whether an underflow or an overflow condition will be encountered. A positive delta indicates B-frame time is longer than the A-frame time. A negative delta indicates B-frame time is shorter than the A-frame time. In one embodiment, the absolute value of delta, abs_delta is adjusted by adding +1. This adjustment is intended to give margin due to measurement error when measuring the source B frame time using the source A clock.
At block 530, B-frame video and control data capture is initiated into the FIFO using B video clock. At block 535, the write FIFO pointer into the FIFO is stored and updated each clock cycle as each data sample is captured into the FIFO.
At block 540, the process determines whether delta was a positive or a negative value. If delta was positive, at block 545, the process waits an abs_delta number of Source-A clock cycles. If delta was negative, at block 550, the process waits one Source-A-clock cycle.
At block 555, B-frame video read from FIFO is started, using video clock A. At block 560, the read FIFO pointer into the FIFO is stored and updated each clock cycle as each data sample is read from the FIFO.
At block 565, the process completes read of one B video frame from FIFO.
At block 570, the process determines whether delta was positive or negative and determines the difference from the FIFO write pointer to the FIFO read pointer. If delta was positive and difference from the FIFO write pointer to the FIFO read pointer is less than the delta, then at block 575 the process subtracts the FIFO read pointer by one frame size (i.e. repeats a frame.) The process then returns to block 555, to read another B-frame video.
If delta is negative, and difference from the FIFO write pointer to the FIFO read pointer is greater than the delta (as a negative number) then at block 580, the process adds the FIFO read pointer by one frame size (i.e. skips a frame.) The process then returns to block 555, to read another B-frame video. In another embodiment, the process may use frame resampling and interpolation, instead of repeating or deleting a frame.
If neither of these conditions is correct, then the process continues directly to block 555, until all of the data has been consumed.
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
The present invention is related to, and claims the benefit of U.S. Provisional Patent Application No. 60/483,033, filed on Jun. 27, 2003, and incorporated herein in its entirety by reference.
Number | Name | Date | Kind |
---|---|---|---|
4649536 | Krinock | Mar 1987 | A |
6088360 | Amaral et al. | Jul 2000 | A |
6269136 | Hansen et al. | Jul 2001 | B1 |
6721957 | Lawrence | Apr 2004 | B1 |
20020080809 | Nicholson et al. | Jun 2002 | A1 |
20020122515 | Bodenschatz | Sep 2002 | A1 |
20030159143 | Chan | Aug 2003 | A1 |
20030169929 | Kohiyama et al. | Sep 2003 | A1 |
20040120353 | Kim et al. | Jun 2004 | A1 |
20040233938 | Yamauchi | Nov 2004 | A1 |
20050185934 | Hatanaka et al. | Aug 2005 | A1 |
20050259746 | Shinde et al. | Nov 2005 | A1 |
Number | Date | Country | |
---|---|---|---|
60483033 | Jun 2003 | US |