US20020089602A1 - Compressed timing indicators for media samples - Google Patents
Compressed timing indicators for media samples Download PDFInfo
- Publication number
- US20020089602A1 US20020089602A1 US09/982,128 US98212801A US2002089602A1 US 20020089602 A1 US20020089602 A1 US 20020089602A1 US 98212801 A US98212801 A US 98212801A US 2002089602 A1 US2002089602 A1 US 2002089602A1
- Authority
- US
- United States
- Prior art keywords
- data
- timestamp
- frame
- recited
- frames
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/4302—Content synchronisation processes, e.g. decoder synchronisation
- H04N21/4305—Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/66—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission for reducing bandwidth of signals; for improving efficiency of transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/23608—Remultiplexing multiplex streams, e.g. involving modifying time stamps or remapping the packet identifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/242—Synchronization processes, e.g. processing of PCR [Program Clock References]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
- H04N21/4344—Remultiplexing of multiplex streams, e.g. by modifying time stamps or remapping the packet identifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/24—Systems for the transmission of television signals using pulse code modulation
- H04N7/52—Systems for transmission of a pulse code modulated video signal with one or more other pulse code modulated signals, e.g. an audio signal or a synchronizing signal
Definitions
- the present invention relates to video processing systems and, more particularly, to the compression of timing indicators associated with media samples.
- Timing information is fundamental to the needs of multimedia applications. Pictures, video, text, graphics, and sound need to be recorded with some understanding of the time associated with each sample of the media stream. This is useful for synchronizing different multimedia streams with each other, for carrying information to preserve the original timing of the media when playing a media stream, for identifying specific locations within a media stream, and for recording the time associated with the media samples to create a scientific or historical record. For example, if audio and video are recorded together but handled as separate streams of media data, then timing information is necessary to coordinate the synchronization of these two (or more) streams.
- a media stream (such as a recorded audio track or recorded video or film shot) is represented as a sequence of media samples, each of which is associated (implicitly or explicitly) with timing information.
- a good example of this is video and motion picture film recording, which is typically created as a sequence of pictures, or frames, each of which represents the camera view for a particular short interval of time (e.g., typically ⁇ fraction (1/24) ⁇ seconds for each frame of motion picture film).
- this sequence of pictures is played back at the same number of frames per second (known as the “frame rate”) as used in the recording process, an illusion of natural movement of the objects depicted in the scene can be created for the viewer.
- FIG. 1 illustrates a conventional system 100 for processing and distributing video content.
- the video content is captured using a video camera 102 (or any other video capture device) that transfers the captured video content onto video tape or another storage medium. Later, the captured video content may be edited using a video editor 104 .
- a video encoder 106 encodes the video content to reduce the storage space required for the video content or to reduce the transmission bandwidth required to transmit the video content.
- Various encoding techniques may be used to compress the video content, such as the MPEG-2 (Moving Picture Experts Group 2nd generation) compression format.
- the encoded video content is provided to a transmitter 108 , which transmits the encoded video content to one or more receivers 110 across a communication link 112 .
- Communication link 112 may be, for example, a physical cable, a satellite link, a terrestrial broadcast, an Internet connection, a physical medium (such as a digital versatile disc (DVD)) or a combination thereof.
- a video decoder 114 decodes the signal received by receiver 110 using an appropriate decoding technique.
- the decoded video content is then displayed on a video display 116 , such as a television or a computer monitor.
- Receiver 110 may be a separate component (such as a set top box) or may be integrated into video display 116 .
- video decoder 114 may be a separate component or may be integrated into the receiver 110 or the video display 116 .
- Timing information Proper recording and control of timing information is needed to coordinate multiple streams of media samples, such as for synchronizing video and associated audio content. Even the use of media which does not exhibit a natural progression of samples through time will often require the use of timing information in a multimedia system. For example, if a stationary picture (such as a photograph, painting, or document) is to be displayed along with some audio (such as an explanatory description of the content or history of the picture), then the timing of the display of the stationary picture (an entity which consists of only one frame or sample in time) may need to be coordinated with the timing of the associated audio track.
- a stationary picture such as a photograph, painting, or document
- some audio such as an explanatory description of the content or history of the picture
- timing information include being able to record the date or time of day at which a photograph was taken, or being able to specify editing or viewing points within media streams (e.g., five minutes after the camera started rolling).
- a sample or group of samples in time of a media stream can be identified as a frame, or fundamental processing unit. If a frame consists of more than one sample in time, then a convention can be established in which the timing information represented for a frame corresponds to the time of some reference point in the frame such as the time of the first, last or middle sample.
- a frame can be further subdivided into even smaller processing units, which can be called fields.
- fields One example of this is in the use of interlaced-scan video, in which the sampling of alternating lines in a picture are separated so that half of the lines of each picture are sampled as one field at one instant in time, and the other half of the lines of the picture are then sampled as a second field a short time later.
- lines 1, 3, 5, etc. may be sampled as one field of picture, and then lines 0, 2, 4, etc. of the picture may be sampled as the second field a short time later (for example ⁇ fraction (1/50) ⁇ th of a second later).
- each frame can be typically separated into two fields.
- frames or fields may consist of overlapping sets of samples or transformations of overlapping sets of samples.
- Two examples of this behavior are the use of lapped orthogonal transforms [1) Henrique Sarmento Malvar, Signal Processing with Lapped Transforms, Boston, Mass., Artech House, 1992; 2) H. S. Malvar and D. H. Staelin, “The LOT: transform coding without blocking effects,” IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 37, pp. 553-559, Apr. 1989; 3) H. S. Malvar, Method and system for adapting a digitized signal processing system for block processing with minimal blocking artifacts, U.S. Pat. No.
- the sampling pattern will be very regular in time, such as in typical audio processing in which all samples are created at rigidly-stepped times controlled by a precise clock signal. In other cases, however, the time between adjacent samples in a sequence may differ from location to location in the sequence.
- One example of such behavior is when sending audio over a packet network with packet losses, which may result in some frames not being received by the decoder while other frames should be played for use with their original relative timing.
- Another example of such behavior is in low-bit-rate videoconferencing, in which the number of frames sent per second is often varied depending on the amount of motion in the scene (since small changes take less data to send than large changes, and the overall channel data rate in bits per second is normally fixed).
- the underlying sampling structure is such that there is understood to be a basic frame or field processing unit sampling rate (although some processing units may be skipped), then it is useful to be able to identify a processing unit as a distinct counting unit in the time representation. If this is incorporated into the design, the occurrence of a skipped processing unit may be recognized by a missing value of the counting unit (e.g., if the processing unit count proceeds as 1, 2, 3, 4, 6, 7, 8, 9, . . . , then it is apparent that count number 5 is missing).
- Timing information may require different sampling rates. If timing information is always stored with the same precision, a certain amount of rounding error may be introduced by the method used for representing time. It is desirable for the recorded time associated with each sample to be represented precisely in the system with little or no such rounding error. For example, if a media stream operates at 30,000/1001 frames per second (the typical frame rate of North American standard NTSC broadcast video-approximately 29.97 frames per second) and the precision of the time values used in the system is to one part in 10 ⁇ 6 seconds, then although the time values may be very precise in human terms, it may appear to processing elements within the system that the precisely-regular sample timing (e.g. 1001/30,000 seconds per sample) is not precisely regular (e.g. 33,366 clock increment counts between samples, followed by 33,367 increments, then 33,367 increments, and then 33,366 increments again). This can cause difficulties in determining how to properly handle the media samples in the system.
- precisely-regular sample timing e.g.
- Another problem in finding a method to represent time is that the representation may “drift” with respect to true time as would be measured by a perfectly ideal “wall clock”. For example, if the system uses a precisely-regular sample timing of 1001/30,000 seconds per sample and all samples are represented with incremental time intervals being 33,367 increments between samples, the overall time used for a long sequence of such samples will be somewhat longer than the true time interval—a total of about one frame time per day and accumulating more than five minutes of error after a year of duration.
- drift is defined as any error in a timecode representation of sampling times that would (if uncorrected) tend to increase in magnitude as the sequence of samples progresses.
- SMPTE timecode Society of Motion Picture and Television Engineers, Recommended Practice 12M: 1999
- SMPTE timecodes are typically used for television video data with timing specified in the United States by the National Television Standards Committee (NTSC) television transmission format, or in Europe, by the Phase Alternating Line (PAL) television transmission format.
- NTSC National Television Standards Committee
- PAL Phase Alternating Line
- SMPTE timecode is a synchronization signaling method originally developed for use in the television and motion picture industry to deal with video tape technology.
- the challenge originally faced with videotape was that there was no “frame accurate” way to synchronize devices for video or sound-track editing.
- a number of methods were employed in the early days, but because of the inherent slippage and stretching properties of tape, frame accurate synchronization met with limited success.
- the introduction of SMPTE timecode provided this frame accuracy and incorporated additional functionality. Additional sources on SMPTE include “The Time Code Handbook” by Cipher Digital Inc. which provides a complete treatment of the subject, as well as an appendix containing ANSI Standard SMPTE 12M-1986. Additionally, a text entitled “The Sound Reinforcement Handbook” by Gary Davis and Ralph Jones for Yamaha contains a section on timecode theory and applications.
- SMPTE timecode The chief purpose of SMPTE timecode is to synchronize various pieces of equipment.
- the timecode signal is formatted to provide a system wide clock that is referenced by everything else.
- the signal is usually encoded directly with the video signal or is distributed via standard audio equipment.
- SMPTE timecode uses many references from video terminology, it may also be used for audio-only applications.
- a timecode source provides the signal while the rest of the devices in the system synchronize to it and follow along.
- the source can be a dedicated timecode generator, or it can be (and often is) a piece of the production equipment that provides timecode in addition to its primary function.
- An example of this is a multi-track audio tape deck that provides timecode on one track and sound for the production on other tracks. Video tape often makes similar use of a cue track or one of its audio sound tracks to record and play back timecode.
- the equipment uses timecode internally to synchronize multiple timecode sources into one.
- An example would be a video editor that synchronizes with timecode from a number of prerecorded scenes. As each scene is combined with the others to make the final product, their respective timecodes are synchronized with new timecode being recorded to the final product.
- SMPTE timecode provides a unique address for each frame of a video signal. This address is an eight digit number, based on the 24 hour clock and the video frame rate, representing Hours, Minutes, Seconds and Frames in the following format:
- the values of these fields range from 00 to 23 for HH, 00 to 59 for MM, 00 to 59 for SS, and 00 to 24 or 29 for FF (where 24 is the maximum for PAL 25 frame per second video and 29 is the maximum for NTSC 30,000/1001 frame per second video).
- 24 is the maximum for PAL 25 frame per second video
- 29 is the maximum for NTSC 30,000/1001 frame per second video.
- the first frame of a day is considered to be marked as 00:00:00:01 and the last is 00:00:00:00 (one frame past the frame marked 23:59:59:24 for PAL and 23:59:59:29 for NTSC).
- This format represents a nominal clock time, the nominal duration of scene or program material and makes approximate time calculations easy and direct.
- the frame is the smallest unit of measure within SMPTE timecode and is a direct reference to the individual “picture” of film or video.
- the frame rate is the number of times per second that pictures are displayed to provide a rendition of motion.
- the 25 frame per second rate is based on European video, also known as SMPTE EBU (PAL/SECAM color and b&w).
- SMPTE EBU European video
- the 30,000/1001 frame per second rate (sometimes loosely referred to as 30 frame per second) is based on U.S. NTSC color video broadcasting.
- a frame counter advances one count for every frame of film or video, allowing the user to time events down to ⁇ fraction (1/25) ⁇ th, or ⁇ fraction (1001/30,000) ⁇ th of a second.
- SMPTE timecode is also sometimes used for a frame rate of exactly 30 frames per second. However, the user must take care to distinguish this use from lo the slightly slower 30,000/1001 frames per second rate of U.S. NTSC color broadcast video. (The adjustment factor of 1000/1001 originates from the method by which television signals were adjusted to provide compatibility between modern color video and the previous design for broadcast of monochrome video at 30 frames per second.)
- the SMPTE timecode consists of the recording of an integer number for each of the following parameters for a video picture: Hours, Minutes, Seconds, and Frames.
- Each increment of the frame counter is understood to represent an increment of time of 1001/30,000 seconds in the NTSC system and ⁇ fraction (1/25) ⁇ seconds in the PAL system.
- the SMPTE timecode has been widely used in the video production industry (for example, it is incorporated into the design of many video tape recorders). It is therefore very useful if any general media timecode design is maximally compatible with this SMPTE timecode. If such compatibility can be achieved, this will enable equipment designed for the media timecode to work well with other equipment designed specifically to use the SMPTE timecode.
- a timecode describes the data used for representing the time associated with a media sample, frame, or field. It is useful to separate the data of a timecode into two distinct types: the timebase and the timestamp.
- the timestamp includes the information that is used to represent the timing for a specific processing unit (a sample, frame, or field).
- the timebase contains the information that establishes the basis of the measurements units used in the timestamp. In other words, the timebase is the information necessary to properly interpret the timestamps.
- the timebase for a media stream normally remains the same for the entire sequence of samples, or at least for a very large set of samples.
- the timestamps then consist of the representations of the parameters Hours, Minutes, Seconds, and Frames for each particular video frame.
- Timing indicators that convey timing information using a reduced amount of data.
- a full timestamp includes complete timing information, such as hour information, minute information, second information, and a frame number
- a compressed timestamp includes a portion of the complete timing information, such as the frame number.
- a first frame of data is encoded.
- a first timestamp is generated and associated with the first frame of data.
- the first timestamp includes complete timing information.
- the first frame of data and the associated first timestamp is then transmitted to a destination.
- a second frame of data is encoded and a second timestamp associated with the second frame of data is generated.
- the second timestamp includes a portion of the complete timing information.
- the second frame of data and the associated second timestamp is transmitted to the destination.
- multimedia content to be encoded is identified.
- the identified multimedia content is encoded into multiple frames of data.
- Full timestamps are generated and associated with a portion of the frames of data.
- Each full timestamp contains complete time information.
- Compressed timestamps are generated and associated with frames of data that are not associated with a full timestamp.
- Each compressed timestamp contains a portion of the complete time information.
- the full timestamps include hour information, minute information, second information, and a frame number.
- the compressed timestamps include a frame number.
- FIG. 1 illustrates a conventional system for processing and distributing video content.
- FIG. 2 illustrates an example multimedia encoding system and an example multimedia decoding system.
- FIG. 3 is a flow diagram illustrating a procedure for encoding multimedia content and transmitting timestamps and associated multimedia content frames.
- FIG. 4 is a flow diagram illustrating a procedure for decoding multimedia content that includes multiple time stamps and associated content frames.
- FIG. 5 illustrates an example of a suitable operating environment in which the systems and methods described herein may be implemented.
- the systems and methods described herein utilize different types of timing indicators (referred to as timestamps) to communicate timing information along with frames of data.
- timestamps include different types of timing indicators (referred to as timestamps) to communicate timing information along with frames of data.
- a full timestamp includes all timing information and is sent occasionally (e.g., a few times each second or once every X frames of data).
- a series of compressed timestamps are communicated with the frames of data.
- the compressed timestamps contain a subset of the complete timing information contained in the full timestamps.
- the compressed timestamp contains the timing information that has changed since the last full timestamp was sent.
- FIG. 2 illustrates an example multimedia encoding system and an example multimedia decoding system.
- a multimedia content source 202 provides multimedia content (e.g., audio content, video content, or combined audio and video content) to an encoder 204 .
- Multimedia content source may be, for example, a video camera, microphone or other capture device, or a storage device that stores previously captured multimedia content.
- Encoder 204 includes a clock 206 and a frame counter 208 .
- Clock 206 is used to determine timestamp information and synchronize operation of encoder 204 .
- Frame counter 208 keeps track of consecutive frame numbers associated with frames of data.
- Encoder 204 also includes an encoding engine 210 , which encodes multimedia content and other data (such as timestamp information) into multiple frames.
- transmitter 212 The output of encoder 204 is communicated to a transmitter 212 , which transmits the encoded content to one or more receivers.
- transmitter 212 may be a storage device that stores the encoded content (e.g., on a DVD, magnetic tape, or other storage device).
- Receiver 220 receives an encoded signal including one or more frames and communicates the received signal to a decoder 222 .
- receiver 220 may be a device (such as a audio player and/or a video player) capable of reading stored encoded content (e.g., stored on a DVD or other storage device).
- Decoder 222 includes a clock 224 and a counter 226 .
- Clock 224 aids in synchronizing decoder 222 .
- Counter 226 is used to assign frame identifiers to received frames of data.
- Decoder 222 also includes a decoding engine 228 which decodes the received signal.
- decoder 222 After decoding the received signal, decoder 222 communicates the decoded content to a multimedia player 230 which renders the multimedia content defined by the decoded signal.
- Multimedia player may be an audio player (e.g., a CD player), a video player (e.g., a DVD player), or a combination audio player and video player.
- Decoder 222 may be a separate device or may be incorporated into another device, such as a television or a DVD player.
- FIG. 3 is a flow diagram illustrating a procedure 300 for encoding multimedia content and transmitting timestamps and associated multimedia content frames.
- procedure 300 identifies a number of basic units per second in a reference clock (block 302 ), which is represented by a parameter labeled “base_ups”.
- the reference clock has 30,000 basic units per second (also referred to as 30,000 hertz).
- the procedure then identifies a number of basic units of the reference clock per media sample period (block 304 ), which is represented by a parameter labeled “base_upp”.
- each increment of a counter (such as a frame counter) occurs after 1001 increments of the reference clock.
- the reference clock advances by 5005. This example reduces the amount of data that needs to be communicated regarding the clock (i.e., sending “5” instead of “5005”).
- the procedure 300 then identifies a counting type that defines the manner in which samples (or frames) are counted (block 306 ). Additional details regarding the various counting types are provided below.
- the base_ups, base_upp, and counting type data is transmitted to one or more receivers. These data values allow each receiver to understand and properly decode subsequent frames of data.
- the procedure receives multimedia content to be encoded and creates a first content frame (block 310 ).
- the first content frame is created by encoding a portion of the received multimedia content.
- the procedure then transmits a full timestamp along with the first content frame (block 312 ).
- the full timestamp may be embedded within the first content frame or transmitted separately, but along with the full timestamp.
- the full timestamp includes the hour, minutes, seconds, and frame number associated with the first content frame.
- the procedure then creates the next content frame by encoding the next portion of the received multimedia content (block 314 ).
- the procedure determines whether to transmit a full timestamp or a compressed timestamp.
- a full timestamp includes all time-related information (i.e., the hour, minute, second, and frame number associated with the first content frame).
- the compressed timestamp includes a subset of the information required for a full timestamp.
- the compressed timestamp contains the information that has changed since the last timestamp (either full or compressed) was transmitted to the receivers.
- the compressed timestamp includes the frame number associated with the current content frame being transmitted.
- the compressed timestamp reduces the amount of data that must be transmitted when compared with the full timestamp.
- the full timestamp is sent several times each second.
- the full timestamp is sent every X frames, where X is approximately 15.
- the decision of whether to send a full timestamp or compressed timestamp is adjusted dynamically based on an estimate of the reliability of the communication link between transmitter and receiver. If the estimated reliability of the communication link is high, then full timestamps may be sent less frequently. However, if the communication link is not expected to be reliable, the full timestamps are sent more frequently.
- a full timestamp is transmitted along with the next content frame (block 318 ). Otherwise, a compressed timestamp is transmitted along with the next content frame (block 320 ). The procedure continues by returning to block 314 to create the next content frame and determine whether a full timestamp or a compressed timestamp is to be transmitted along with the next content frame.
- sequence header information For this particular embodiment, a full timestamp is included in each sequence header.
- sequence headers may not contain a full timestamp. Instead, the data contained in a full timestamp is retrieved from the full timestamp associated with the first frame of data following the sequence header.
- full_timestamp_sequence_flag Indicates whether every timestamp in the following sequence of timestamps shall be fully specified or whether some timestamps (referred to as compressed timestamps) may only contain partial information (depending on memory of values sent previously in the sequence header or in a frame timestamp). If full_timestamp_sequence flag is “1”, then full_timestamp_flag must be “1” in the timestamp information for every frame in the following sequence.
- discontinuity_flag Indicates whether the time difference that can be calculated between the starting time of the sequence and the time indicated for the last previous transmitted frame can be interpreted as a true time difference. Shall be “1” if no previous frame has been transmitted.
- count_dropped Indicates, if discontinuity_flag is “0”, whether some value of frames_value was skipped after the last previous transmitted frame to reduce drift between the time passage indicated in the seconds_value, minutes_value, and hours_value parameters and those of a true clock.
- frames_value, offset_value, seconds_value, minutes_value, and hours_value Indicate the parameters to be used in calculating an equivalent timestamp for the first frame in the sequence. Shall be equal to the corresponding values of these parameters in the header of the first frame after the sequence header, if present in the sequence header.
- offset_value an extra signed-integer parameter used in addition to the unsigned integer frames_value, seconds_value, minutes_value, and hours_value parameters that are used by the SMPTE timecode's timestamp, in order to relate the time of a sample precisely relative to true time, as shown in a formula below.
- any timestamp is incomplete (i.e., full_timestamp_flag is zero and at least one of seconds_flag, minutes_flag, hours_flag, and offset_value_flag is present and zero) the last prior sent value for each missing parameter is used.
- An equivalent time specifying the time of a media sample (in units of seconds) may be computed as follows:
- equivalent_time 60 ⁇ (60 ⁇ hours_value+minutes_value)+seconds_value+(base_upp ⁇ frames_value+offset_value)/base_ups
- a derived parameter is defined as:
- cell (x) is defined as the function of an argument x, which, for non-negative values of x, is equal to x if x is an integer and is otherwise equal to the smallest integer greater than x.
- the value of frames_value should not exceed max_pps.
- counting_type if counting_type is ‘100’, frames_value shall be ‘2’ and the seconds_value shall be zero and minutes_value shall not be an integer multiple of ten and frames_value for the last previous transmitted frame shall not be equal to ‘0’ or ‘1’ unless a sequence header is present between the two frames with discontinuity_flag equal to ‘1’.
- frames_value shall not be equal to one plus the value of frames_value for the last previous transmitted frame modulo max_pps unless a sequence header is present between the two frame with discontinuity_flag equal to ‘1’.
- the inclusion of the further information needed to place the timestamp within the more global scale is optional. Any coarse-level context information that is not sent is implied to have the same value as the last transmitted parameter of the same type. The finely-detailed information necessary to locate the precise sample time relative to that of neighboring samples is included with every timestamp, but as the degree of coarseness of the time specification becomes higher, the inclusion of further more coarse context information is optional in order to reduce the average amount of information that is required to be communicated.
- FIG. 4 is a flow diagram illustrating a procedure 400 for decoding multimedia content that includes multiple time stamps and associated content frames.
- the procedure receives base_ups, base_upp, and counting type data associated with a multimedia stream from a transmitting device. This information allows the receiving system to properly interpret and decode the subsequently received content.
- a full timestamp and an associated first multimedia content frame are received (block 404 ).
- the full timestamp provides the hours, minutes, seconds, and frame number associated with the first received frame, and, in a particular embodiment, a time offset number allowing a drift-free precise relation to be determined between the time computed from the other parameters and the true time of the sample.
- the procedure 400 then receives a next multimedia content frame and an associated timestamp.
- An associated flag (full_timestamp_flag) will indicate whether the timestamp is a full timestamp or a compressed timestamp.
- the procedure decodes the multimedia content frame (block 408 ) and determines (based on the full timestamp flag) whether the timestamp is a full timestamp or a compressed timestamp (block 410 ). If the timestamp is a full timestamp, the procedure updates all timing parameters provided by the full timestamp (block 412 ). If the timestamp is a compressed timestamp, the procedure updates the frame parameter (block 414 ). The system uses the values from the most recent full timestamp for all other timing parameter values. Alternatively, if a compressed timestamp is received, the procedure updates all timing parameters contained in the compressed timestamp.
- the procedure After updating one or more timing parameters, the procedure returns to block 406 to receive and process the next multimedia content frame and associated timestamp.
- FIG. 5 illustrates an example of a suitable computing environment 500 within which the video encoding and decoding procedures may be implemented (either fully or partially).
- the computing environment 500 may be utilized in the computer and network architectures described herein.
- the exemplary computing environment 500 is only one example of a computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the computer and network architectures. Neither should the computing environment 500 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing environment 500 .
- video encoding and decoding systems and methods described herein may be implemented with numerous other general purpose or special purpose computing system environments or configurations.
- Examples of well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, multiprocessor systems, microprocessor-based systems, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and so on.
- Compact or subset versions may also be implemented in clients of limited resources.
- the computing environment 500 includes a general-purpose computing device in the form of a computer 502 .
- the components of computer 502 can include, by are not limited to, one or more processors or processing units 504 , a system memory 506 , and a system bus 508 that couples various system components including the processor 504 to the system memory 506 .
- the system bus 508 represents one or more of several possible types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
- bus architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
- Computer 502 typically includes a variety of computer readable media. Such media can be any available media that is accessible by computer 502 and includes both volatile and non-volatile media, removable and non-removable media.
- the system memory 506 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 510 , and/or non-volatile memory, such as read only memory (ROM) 512 .
- RAM random access memory
- ROM read only memory
- a basic input/output system (BIOS) 514 containing the basic routines that help to transfer information between elements within computer 502 , such as during start-up, is stored in ROM 512 .
- BIOS basic input/output system
- RAM 510 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by the processing unit 504 .
- Computer 502 may also include other removable/non-removable, volatile/non-volatile computer storage media.
- FIG. 5 illustrates a hard disk drive 516 for reading from and writing to a non-removable, non-volatile magnetic media (not shown), a magnetic disk drive 518 for reading from and writing to a removable, non-volatile magnetic disk 520 (e.g., a “floppy disk”), and an optical disk drive 522 for reading from and/or writing to a removable, non-volatile optical disk 524 such as a CD-ROM, DVD-ROM, or other optical media.
- a hard disk drive 516 for reading from and writing to a non-removable, non-volatile magnetic media (not shown)
- a magnetic disk drive 518 for reading from and writing to a removable, non-volatile magnetic disk 520 (e.g., a “floppy disk”)
- an optical disk drive 522 for reading from and/or writing to a removable, non-volatile optical disk
- the hard disk drive 516 , magnetic disk drive 518 , and optical disk drive 522 are each connected to the system bus 508 by one or more data media interfaces 526 .
- the hard disk drive 516 , magnetic disk drive 518 , and optical disk drive 522 can be connected to the system bus 508 by one or more interfaces (not shown).
- the disk drives and their associated computer-readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for computer 502 .
- a hard disk 516 a removable magnetic disk 520 , and a removable optical disk 524
- other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like, can also be utilized to implement the exemplary computing system and environment.
- Any number of program modules can be stored on the hard disk 516 , magnetic disk 520 , optical disk 524 , ROM 512 , and/or RAM 510 , including by way of example, an operating system 526 , one or more application programs 528 , other program modules 530 , and program data 532 .
- Each of the operating system 526 , one or more application programs 528 , other program modules 530 , and program data 932 may include elements of the video encoding and/or decoding algorithms and systems.
- a user can enter commands and information into computer 502 via input devices such as a keyboard 534 and a pointing device 536 (e.g., a “mouse”).
- Other input devices 538 may include a microphone, joystick, game pad, satellite dish, serial port, scanner, and/or the like.
- input/output interfaces 540 are coupled to the system bus 508 , but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).
- a monitor 542 or other type of display device can also be connected to the system bus 508 via an interface, such as a video adapter 544 .
- other output peripheral devices can include components such as speakers (not shown) and a printer 546 which can be connected to computer 502 via the input/output interfaces 540 .
- Computer 502 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computing device 548 .
- the remote computing device 548 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and so on.
- the remote computing device 548 is illustrated as a portable computer that can include many or all of the elements and features described herein relative to computer 502 .
- Logical connections between computer 502 and the remote computer 548 are depicted as a local area network (LAN) 550 and a general wide area network (WAN) 552 .
- LAN local area network
- WAN wide area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
- the computer 502 When implemented in a LAN networking environment, the computer 502 is connected to a local network 550 via a network interface or adapter 554 . When implemented in a WAN networking environment, the computer 502 typically includes a modem 556 or other means for establishing communications over the wide network 552 .
- the modem 556 which can be internal or external to computer 502 , can be connected to the system bus 508 via the input/output interfaces 540 or other appropriate mechanisms. It is to be appreciated that the illustrated network connections are exemplary and that other means of establishing communication link(s) between the computers 502 and 548 can be employed.
- remote application programs 558 reside on a memory device of remote computer 548 .
- application programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device 502 , and are executed by the data processor(s) of the computer.
- Computer readable media can be any available media that can be accessed by a computer.
- Computer readable media may comprise “computer storage media” and “communications media.”
- “Computer storage media” include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data.
- Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data s signal, such as carrier wave or other transport mechanism.
- Communication media also includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
- portions of the systems and methods described herein may be implemented in hardware or a combination of hardware, software, and/or firmware.
- ASICs application specific integrated circuits
- PLDs programmable logic devices
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
A first frame of data is encoded and a first timestamp associated with the first frame of data is generated. The first timestamp includes complete timing information. The first frame of data and the associated first timestamp is transmitted to a destination. A second frame of data is encoded and a second timestamp associated with the second frame of data is generated. The second timestamp includes a portion of the complete timing information. The second frame of data and the associated second timestamp is then transmitted to the destination. Additional frames of data are encoded and additional timestamps associated with the additional frames of data are generated. The majority of the additional timestamps include a portion of the complete timing information.
Description
- This application claims the benefit of U.S. Provisional Application No. 60/241,407 filed Oct. 18, 2000, the disclosure of which is incorporated by reference herein.
- The present invention relates to video processing systems and, more particularly, to the compression of timing indicators associated with media samples.
- The concept of recording and using timing information is fundamental to the needs of multimedia applications. Pictures, video, text, graphics, and sound need to be recorded with some understanding of the time associated with each sample of the media stream. This is useful for synchronizing different multimedia streams with each other, for carrying information to preserve the original timing of the media when playing a media stream, for identifying specific locations within a media stream, and for recording the time associated with the media samples to create a scientific or historical record. For example, if audio and video are recorded together but handled as separate streams of media data, then timing information is necessary to coordinate the synchronization of these two (or more) streams.
- Typically, a media stream (such as a recorded audio track or recorded video or film shot) is represented as a sequence of media samples, each of which is associated (implicitly or explicitly) with timing information. A good example of this is video and motion picture film recording, which is typically created as a sequence of pictures, or frames, each of which represents the camera view for a particular short interval of time (e.g., typically {fraction (1/24)} seconds for each frame of motion picture film). When this sequence of pictures is played back at the same number of frames per second (known as the “frame rate”) as used in the recording process, an illusion of natural movement of the objects depicted in the scene can be created for the viewer.
- Similarly, sound is often recorded by regularly sampling an audio waveform to create a sequence of digital samples (for example, using 48,000 samples per second) and grouping sets of these samples into processing units called frames (e.g., 64 samples per frame) for further processing such as digital compression encoding or packet-network transmission (such as Internet transmission). A receiver of the audio data will then reassemble the frames of audio that it has received, decode them, and convert the resulting sequence of digital samples back into sound using electro-acoustic technology.
- FIG. 1 illustrates a
conventional system 100 for processing and distributing video content. The video content is captured using a video camera 102 (or any other video capture device) that transfers the captured video content onto video tape or another storage medium. Later, the captured video content may be edited using avideo editor 104. Avideo encoder 106 encodes the video content to reduce the storage space required for the video content or to reduce the transmission bandwidth required to transmit the video content. Various encoding techniques may be used to compress the video content, such as the MPEG-2 (Moving Picture Experts Group 2nd generation) compression format. - The encoded video content is provided to a
transmitter 108, which transmits the encoded video content to one ormore receivers 110 across acommunication link 112.Communication link 112 may be, for example, a physical cable, a satellite link, a terrestrial broadcast, an Internet connection, a physical medium (such as a digital versatile disc (DVD)) or a combination thereof. Avideo decoder 114 decodes the signal received byreceiver 110 using an appropriate decoding technique. The decoded video content is then displayed on avideo display 116, such as a television or a computer monitor.Receiver 110 may be a separate component (such as a set top box) or may be integrated intovideo display 116. Similarly,video decoder 114 may be a separate component or may be integrated into thereceiver 110 or thevideo display 116. - Proper recording and control of timing information is needed to coordinate multiple streams of media samples, such as for synchronizing video and associated audio content. Even the use of media which does not exhibit a natural progression of samples through time will often require the use of timing information in a multimedia system. For example, if a stationary picture (such as a photograph, painting, or document) is to be displayed along with some audio (such as an explanatory description of the content or history of the picture), then the timing of the display of the stationary picture (an entity which consists of only one frame or sample in time) may need to be coordinated with the timing of the associated audio track.
- Other examples of the usefulness of such timing information include being able to record the date or time of day at which a photograph was taken, or being able to specify editing or viewing points within media streams (e.g., five minutes after the camera started rolling).
- In each of the above cases, a sample or group of samples in time of a media stream can be identified as a frame, or fundamental processing unit. If a frame consists of more than one sample in time, then a convention can be established in which the timing information represented for a frame corresponds to the time of some reference point in the frame such as the time of the first, last or middle sample.
- In some cases, a frame can be further subdivided into even smaller processing units, which can be called fields. One example of this is in the use of interlaced-scan video, in which the sampling of alternating lines in a picture are separated so that half of the lines of each picture are sampled as one field at one instant in time, and the other half of the lines of the picture are then sampled as a second field a short time later. For example, lines 1, 3, 5, etc. may be sampled as one field of picture, and then lines 0, 2, 4, etc. of the picture may be sampled as the second field a short time later (for example {fraction (1/50)}th of a second later). In such interlaced-scan video, each frame can be typically separated into two fields.
- Similarly, one could view a grouping of 64 samples of an audio waveform for purposes of data compression or packet-network transmission to be a frame, and each group of eight samples within that frame to be a field. In this example, there would be eight fields in each frame, each containing eight samples.
- In some methods of using sampled media streams that are well known in the art, frames or fields may consist of overlapping sets of samples or transformations of overlapping sets of samples. Two examples of this behavior are the use of lapped orthogonal transforms [1) Henrique Sarmento Malvar,Signal Processing with Lapped Transforms, Boston, Mass., Artech House, 1992; 2) H. S. Malvar and D. H. Staelin, “The LOT: transform coding without blocking effects,” IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 37, pp. 553-559, Apr. 1989; 3) H. S. Malvar, Method and system for adapting a digitized signal processing system for block processing with minimal blocking artifacts, U.S. Pat. No. 4,754,492, June 1988.] and audio redundancy coding [1) J. C. Bolot, H. Crepin, A. Vega-Garcia: “Analysis of Audio Packet Loss in the Internet”, Proceedings of the 5th International Workshop on Network and Operating System Support for Digital Audio and Video, pp. 163-174, Durham, April 1995; 2) C. Perkins, I. Kouvelas, O. Hodson, V. Hardman, M. Handley, J. C. Bolot, A. Vega-Garcia, S. Fosse-Parisis: “RTP Payload for Redundant Audio Data”, Internet Engineering Task Force Request for Comments RFC2198, 1997.]. Even in such cases it is still possible to establish a convention by which a time is associated with a frame or field of samples.
- In some cases, the sampling pattern will be very regular in time, such as in typical audio processing in which all samples are created at rigidly-stepped times controlled by a precise clock signal. In other cases, however, the time between adjacent samples in a sequence may differ from location to location in the sequence.
- One example of such behavior is when sending audio over a packet network with packet losses, which may result in some frames not being received by the decoder while other frames should be played for use with their original relative timing. Another example of such behavior is in low-bit-rate videoconferencing, in which the number of frames sent per second is often varied depending on the amount of motion in the scene (since small changes take less data to send than large changes, and the overall channel data rate in bits per second is normally fixed).
- If the underlying sampling structure is such that there is understood to be a basic frame or field processing unit sampling rate (although some processing units may be skipped), then it is useful to be able to identify a processing unit as a distinct counting unit in the time representation. If this is incorporated into the design, the occurrence of a skipped processing unit may be recognized by a missing value of the counting unit (e.g., if the processing unit count proceeds as 1, 2, 3, 4, 6, 7, 8, 9, . . . , then it is apparent that count number 5 is missing).
- If the underlying sampling structure is such that the sampling is so irregular that there is no basic processing unit sampling rate, then what is needed is simply a good representation of true time for each processing unit. Normally however, in such a case there should at least be a common time clock against which the location of the processing unit can be referenced.
- In either case (with regular or irregular sampling times), it is useful for a multimedia system to record and use timing information for the samples or frames or fields of each processing unit of the media content.
- Different types of media may require different sampling rates. If timing information is always stored with the same precision, a certain amount of rounding error may be introduced by the method used for representing time. It is desirable for the recorded time associated with each sample to be represented precisely in the system with little or no such rounding error. For example, if a media stream operates at 30,000/1001 frames per second (the typical frame rate of North American standard NTSC broadcast video-approximately 29.97 frames per second) and the precision of the time values used in the system is to one part in 10−6 seconds, then although the time values may be very precise in human terms, it may appear to processing elements within the system that the precisely-regular sample timing (e.g. 1001/30,000 seconds per sample) is not precisely regular (e.g. 33,366 clock increment counts between samples, followed by 33,367 increments, then 33,367 increments, and then 33,366 increments again). This can cause difficulties in determining how to properly handle the media samples in the system.
- Another problem in finding a method to represent time is that the representation may “drift” with respect to true time as would be measured by a perfectly ideal “wall clock”. For example, if the system uses a precisely-regular sample timing of 1001/30,000 seconds per sample and all samples are represented with incremental time intervals being 33,367 increments between samples, the overall time used for a long sequence of such samples will be somewhat longer than the true time interval—a total of about one frame time per day and accumulating more than five minutes of error after a year of duration.
- Thus, “drift” is defined as any error in a timecode representation of sampling times that would (if uncorrected) tend to increase in magnitude as the sequence of samples progresses.
- One example of a method of representing timing information is found in the SMPTE 12M design [Society of Motion Picture and Television Engineers, Recommended Practice 12M: 1999] (hereinafter called “SMPTE timecode”). SMPTE timecodes are typically used for television video data with timing specified in the United States by the National Television Standards Committee (NTSC) television transmission format, or in Europe, by the Phase Alternating Line (PAL) television transmission format.
- SMPTE timecode is a synchronization signaling method originally developed for use in the television and motion picture industry to deal with video tape technology. The challenge originally faced with videotape was that there was no “frame accurate” way to synchronize devices for video or sound-track editing. A number of methods were employed in the early days, but because of the inherent slippage and stretching properties of tape, frame accurate synchronization met with limited success. The introduction of SMPTE timecode provided this frame accuracy and incorporated additional functionality. Additional sources on SMPTE include “The Time Code Handbook” by Cipher Digital Inc. which provides a complete treatment of the subject, as well as an appendix containing ANSI Standard SMPTE 12M-1986. Additionally, a text entitled “The Sound Reinforcement Handbook” by Gary Davis and Ralph Jones for Yamaha contains a section on timecode theory and applications.
- The chief purpose of SMPTE timecode is to synchronize various pieces of equipment. The timecode signal is formatted to provide a system wide clock that is referenced by everything else. The signal is usually encoded directly with the video signal or is distributed via standard audio equipment. Although SMPTE timecode uses many references from video terminology, it may also be used for audio-only applications.
- In many applications, a timecode source provides the signal while the rest of the devices in the system synchronize to it and follow along. The source can be a dedicated timecode generator, or it can be (and often is) a piece of the production equipment that provides timecode in addition to its primary function. An example of this is a multi-track audio tape deck that provides timecode on one track and sound for the production on other tracks. Video tape often makes similar use of a cue track or one of its audio sound tracks to record and play back timecode.
- In other applications, namely video, the equipment uses timecode internally to synchronize multiple timecode sources into one. An example would be a video editor that synchronizes with timecode from a number of prerecorded scenes. As each scene is combined with the others to make the final product, their respective timecodes are synchronized with new timecode being recorded to the final product.
- SMPTE timecode provides a unique address for each frame of a video signal. This address is an eight digit number, based on the 24 hour clock and the video frame rate, representing Hours, Minutes, Seconds and Frames in the following format:
- HH:MM:SS:FF
- The values of these fields range from 00 to 23 for HH, 00 to 59 for MM, 00 to 59 for SS, and 00 to 24 or 29 for FF (where 24 is the maximum for PAL 25 frame per second video and 29 is the maximum for NTSC 30,000/1001 frame per second video). By convention, the first frame of a day is considered to be marked as 00:00:00:01 and the last is 00:00:00:00 (one frame past the frame marked 23:59:59:24 for PAL and 23:59:59:29 for NTSC). This format represents a nominal clock time, the nominal duration of scene or program material and makes approximate time calculations easy and direct.
- The frame is the smallest unit of measure within SMPTE timecode and is a direct reference to the individual “picture” of film or video. The frame rate is the number of times per second that pictures are displayed to provide a rendition of motion. There are two standard frame rates (frames/sec) that typically use SMPTE timecode: 25 frames per second and 30,000/1001 frames per second (approximately 29.97 frames per second). The 25 frame per second rate is based on European video, also known as SMPTE EBU (PAL/SECAM color and b&w). The 30,000/1001 frame per second rate (sometimes loosely referred to as 30 frame per second) is based on U.S. NTSC color video broadcasting. Within the 29.97 frame per second use, there are two methods of using SMPTE timecode that are commonly used: “Non-Drop” and “Drop Frame”.
- A frame counter advances one count for every frame of film or video, allowing the user to time events down to {fraction (1/25)}th, or {fraction (1001/30,000)}th of a second.
- SMPTE timecode is also sometimes used for a frame rate of exactly 30 frames per second. However, the user must take care to distinguish this use from lo the slightly slower 30,000/1001 frames per second rate of U.S. NTSC color broadcast video. (The adjustment factor of 1000/1001 originates from the method by which television signals were adjusted to provide compatibility between modern color video and the previous design for broadcast of monochrome video at 30 frames per second.)
- Thus, the SMPTE timecode consists of the recording of an integer number for each of the following parameters for a video picture: Hours, Minutes, Seconds, and Frames. Each increment of the frame counter is understood to represent an increment of time of 1001/30,000 seconds in the NTSC system and {fraction (1/25)} seconds in the PAL system.
- However, since the number of frames per second in the NTSC system (30,000/1001) is not an integer, there is a problem of drift between the SMPTE 12M timecode representation of time and true “wall clock” time. This drift can be greatly reduced by a special frame counting method known as SMPTE “drop frame” counting. Without SMPTE drop frame counting, the drift between the SMPTE timecode's values of Hours, Minutes, and Seconds and the value measured by a true “wall clock” will accumulate more than 86 seconds of error per day. When using SMPTE drop frame counting, the drift accumulation magnitude can be reduced by about a factor of about 1,000 (although the drift is still not entirely eliminated and the remaining drift is still more than two frame sampling periods).
- The SMPTE timecode has been widely used in the video production industry (for example, it is incorporated into the design of many video tape recorders). It is therefore very useful if any general media timecode design is maximally compatible with this SMPTE timecode. If such compatibility can be achieved, this will enable equipment designed for the media timecode to work well with other equipment designed specifically to use the SMPTE timecode.
- Within this document, the following terminology is used. A timecode describes the data used for representing the time associated with a media sample, frame, or field. It is useful to separate the data of a timecode into two distinct types: the timebase and the timestamp. The timestamp includes the information that is used to represent the timing for a specific processing unit (a sample, frame, or field). The timebase contains the information that establishes the basis of the measurements units used in the timestamp. In other words, the timebase is the information necessary to properly interpret the timestamps. The timebase for a media stream normally remains the same for the entire sequence of samples, or at least for a very large set of samples.
- For example, we may interpret the SMPTE timecode as having a timebase that consists of:
- Knowledge of (or an indication of) whether the system is NTSC or PAL, and
- Knowledge of (or an indication of) whether or not the system uses SMPTE “drop frame” counting in order to partially compensate for drift.
- Given this, the timestamps then consist of the representations of the parameters Hours, Minutes, Seconds, and Frames for each particular video frame.
- Many existing systems transmit all parameters of the timestamp with each frame. Since many of the parameters (e.g., hours and minutes) do not typically change from one frame to the next, transmitting all parameters of the timestamp with each frame results in the transmission of a significant amount of redundant data. This transmission of redundant data results in the transmission of more data than is necessary to communicate the current timing information.
- The systems and methods described herein provide for the communication of timing indicators that convey timing information using a reduced amount of data.
- The systems and methods described herein provide for two different types of timestamps to be transmitted along with frames of data. A full timestamp includes complete timing information, such as hour information, minute information, second information, and a frame number, A compressed timestamp includes a portion of the complete timing information, such as the frame number. When a receiving device receives a compressed timestamp, the receiving device maintains the previous values of the timing parameters that are not contained in the compressed timestamp. Since the most of the information in a full timestamp is redundant from one frame to the next, sending a significant number of compressed timestamps between full timestamps reduces the amount of data that is transmitted, but does not result in a loss of timing information.
- In one embodiment, a first frame of data is encoded. A first timestamp is generated and associated with the first frame of data. The first timestamp includes complete timing information. The first frame of data and the associated first timestamp is then transmitted to a destination. A second frame of data is encoded and a second timestamp associated with the second frame of data is generated. The second timestamp includes a portion of the complete timing information. The second frame of data and the associated second timestamp is transmitted to the destination.
- In another embodiment, multimedia content to be encoded is identified. The identified multimedia content is encoded into multiple frames of data. Full timestamps are generated and associated with a portion of the frames of data. Each full timestamp contains complete time information. Compressed timestamps are generated and associated with frames of data that are not associated with a full timestamp. Each compressed timestamp contains a portion of the complete time information.
- In a described embodiment, the full timestamps include hour information, minute information, second information, and a frame number.
- In a particular implementation, the compressed timestamps include a frame number.
- FIG. 1 illustrates a conventional system for processing and distributing video content.
- FIG. 2 illustrates an example multimedia encoding system and an example multimedia decoding system.
- FIG. 3 is a flow diagram illustrating a procedure for encoding multimedia content and transmitting timestamps and associated multimedia content frames.
- FIG. 4 is a flow diagram illustrating a procedure for decoding multimedia content that includes multiple time stamps and associated content frames.
- FIG. 5 illustrates an example of a suitable operating environment in which the systems and methods described herein may be implemented.
- The systems and methods described herein utilize different types of timing indicators (referred to as timestamps) to communicate timing information along with frames of data. The use of both full timestamps and compressed timestamps reduces the amount of timing information that must be communicated with the frames of data. A full timestamp includes all timing information and is sent occasionally (e.g., a few times each second or once every X frames of data). Between full timestamps, a series of compressed timestamps are communicated with the frames of data. The compressed timestamps contain a subset of the complete timing information contained in the full timestamps. The compressed timestamp contains the timing information that has changed since the last full timestamp was sent.
- FIG. 2 illustrates an example multimedia encoding system and an example multimedia decoding system. A
multimedia content source 202 provides multimedia content (e.g., audio content, video content, or combined audio and video content) to anencoder 204. Multimedia content source may be, for example, a video camera, microphone or other capture device, or a storage device that stores previously captured multimedia content.Encoder 204 includes aclock 206 and aframe counter 208.Clock 206 is used to determine timestamp information and synchronize operation ofencoder 204.Frame counter 208 keeps track of consecutive frame numbers associated with frames of data.Encoder 204 also includes anencoding engine 210, which encodes multimedia content and other data (such as timestamp information) into multiple frames. The output ofencoder 204 is communicated to atransmitter 212, which transmits the encoded content to one or more receivers. Alternatively,transmitter 212 may be a storage device that stores the encoded content (e.g., on a DVD, magnetic tape, or other storage device). -
Receiver 220 receives an encoded signal including one or more frames and communicates the received signal to adecoder 222. Alternatively,receiver 220 may be a device (such as a audio player and/or a video player) capable of reading stored encoded content (e.g., stored on a DVD or other storage device).Decoder 222 includes aclock 224 and acounter 226.Clock 224 aids in synchronizingdecoder 222.Counter 226 is used to assign frame identifiers to received frames of data.Decoder 222 also includes adecoding engine 228 which decodes the received signal. After decoding the received signal,decoder 222 communicates the decoded content to amultimedia player 230 which renders the multimedia content defined by the decoded signal. Multimedia player may be an audio player (e.g., a CD player), a video player (e.g., a DVD player), or a combination audio player and video player.Decoder 222 may be a separate device or may be incorporated into another device, such as a television or a DVD player. - FIG. 3 is a flow diagram illustrating a
procedure 300 for encoding multimedia content and transmitting timestamps and associated multimedia content frames. Initially,procedure 300 identifies a number of basic units per second in a reference clock (block 302), which is represented by a parameter labeled “base_ups”. In a particular example, the reference clock has 30,000 basic units per second (also referred to as 30,000 hertz). The procedure then identifies a number of basic units of the reference clock per media sample period (block 304), which is represented by a parameter labeled “base_upp”. In a particular example, each increment of a counter (such as a frame counter) occurs after 1001 increments of the reference clock. In this example, if the counter advances by five, the reference clock advances by 5005. This example reduces the amount of data that needs to be communicated regarding the clock (i.e., sending “5” instead of “5005”). - The
procedure 300 then identifies a counting type that defines the manner in which samples (or frames) are counted (block 306). Additional details regarding the various counting types are provided below. Atblock 308, the base_ups, base_upp, and counting type data is transmitted to one or more receivers. These data values allow each receiver to understand and properly decode subsequent frames of data. - Next, the procedure receives multimedia content to be encoded and creates a first content frame (block310). The first content frame is created by encoding a portion of the received multimedia content. The procedure then transmits a full timestamp along with the first content frame (block 312). The full timestamp may be embedded within the first content frame or transmitted separately, but along with the full timestamp. The full timestamp includes the hour, minutes, seconds, and frame number associated with the first content frame.
- The procedure then creates the next content frame by encoding the next portion of the received multimedia content (block314). At
block 316, the procedure determines whether to transmit a full timestamp or a compressed timestamp. As mentioned above, a full timestamp includes all time-related information (i.e., the hour, minute, second, and frame number associated with the first content frame). The compressed timestamp includes a subset of the information required for a full timestamp. In a particular implementation, the compressed timestamp contains the information that has changed since the last timestamp (either full or compressed) was transmitted to the receivers. Typically, the compressed timestamp includes the frame number associated with the current content frame being transmitted. The compressed timestamp reduces the amount of data that must be transmitted when compared with the full timestamp. In a particular implementation, the full timestamp is sent several times each second. In an alternate implementation, the full timestamp is sent every X frames, where X is approximately 15. - In another implementation, the decision of whether to send a full timestamp or compressed timestamp is adjusted dynamically based on an estimate of the reliability of the communication link between transmitter and receiver. If the estimated reliability of the communication link is high, then full timestamps may be sent less frequently. However, if the communication link is not expected to be reliable, the full timestamps are sent more frequently.
- If the procedure determines that a full timestamp should be transmitted, a full timestamp is transmitted along with the next content frame (block318). Otherwise, a compressed timestamp is transmitted along with the next content frame (block 320). The procedure continues by returning to block 314 to create the next content frame and determine whether a full timestamp or a compressed timestamp is to be transmitted along with the next content frame.
- In a particular embodiment, the data that specifies the timebase and the starting timestamp of a sequence of data samples (or frames) is sent using the following pseudo-code:
send (base_ups) // unsigned integer send (base_upp) // unsigned integer send (counting_type) // defined in Table 1 send (full_timestamp_sequence_flag) // boolean send (discontinuity_flag) // boolean send (count_dropped) // boolean send (frames_value) // integer if (counting_type != ‘000’) // integer send (offset_value) send (seconds_value) // integer send (minutes_value) // integer send (hours_value) // integer - These data specify the time of the first sample of a sequence of frames and specify the timebase necessary for interpretation of the parameters of each individual timestamp. Since these data specify both the timebase and the initial timestamp for an entire sequence of frames, they are referred to herein as the sequence header information for this particular embodiment. In one embodiment, a full timestamp is included in each sequence header. Alternatively, the sequence headers may not contain a full timestamp. Instead, the data contained in a full timestamp is retrieved from the full timestamp associated with the first frame of data following the sequence header.
- The base_ups, base_upp, and counting type parameters are discussed above. Table 1 below defines the various counting_type values.
TABLE 1 Value Meaning 000 No dropping of frames_value count values and no use of offset_value 001 No dropping of frames_value count values 010 Dropping of individual zero values of frames_value count 011 Dropping of individual max_pps values of frames_value count 100 Dropping of the two lowest (values 0 and 1) frames_value counts when seconds_value is zero and minutes_value is not an integer multiple of ten 101 Dropping of unspecified individual frames_value count values 110 Dropping of unspecified numbers of unspecified frames_value count values 111 Reserved - Particular parameters are defined as follows:
- full_timestamp_sequence_flag: Indicates whether every timestamp in the following sequence of timestamps shall be fully specified or whether some timestamps (referred to as compressed timestamps) may only contain partial information (depending on memory of values sent previously in the sequence header or in a frame timestamp). If full_timestamp_sequence flag is “1”, then full_timestamp_flag must be “1” in the timestamp information for every frame in the following sequence.
- discontinuity_flag: Indicates whether the time difference that can be calculated between the starting time of the sequence and the time indicated for the last previous transmitted frame can be interpreted as a true time difference. Shall be “1” if no previous frame has been transmitted.
- count_dropped: Indicates, if discontinuity_flag is “0”, whether some value of frames_value was skipped after the last previous transmitted frame to reduce drift between the time passage indicated in the seconds_value, minutes_value, and hours_value parameters and those of a true clock.
- frames_value, offset_value, seconds_value, minutes_value, and hours_value: Indicate the parameters to be used in calculating an equivalent timestamp for the first frame in the sequence. Shall be equal to the corresponding values of these parameters in the header of the first frame after the sequence header, if present in the sequence header.
- In this embodiment, an extra signed-integer parameter called offset_value is used in addition to the unsigned integer frames_value, seconds_value, minutes_value, and hours_value parameters that are used by the SMPTE timecode's timestamp, in order to relate the time of a sample precisely relative to true time, as shown in a formula below.
- In a particular embodiment, the timestamp structure sending process for the timestamps on individual media samples (or frames) is implemented using the following pseudo-code:
send (full_timestamp_flag) // boolean send (frames_value) // unsigned integer if (counting_type!=‘000’) { if (full_timestamp_flag) send (offset_value) // signed integer else { send (offset_value_flag) // boolean if (offset_value_flag) send (offset_value) // signed integer } if (counting_type!=‘001’) send (count_dropped_flag) // boolean } if (full_timestamp_flag) { send (seconds_value) // unsigned integer 0..59 send (minutes_value) // unsigned integer 0..59 send (hours_value) // unsigned integer } else { send (seconds_flag) // boolean if (seconds_flag) { send (seconds_value) // unsigned integer 0..59 send (minutes_flag) // boolean if (minutes_flag) { send (minutes_value) // unsigned integer 0..59 send (hours_flag) // boolean if (hours_flag) send (hours_value) // unsigned integer } } } - If any timestamp is incomplete (i.e., full_timestamp_flag is zero and at least one of seconds_flag, minutes_flag, hours_flag, and offset_value_flag is present and zero) the last prior sent value for each missing parameter is used. An equivalent time specifying the time of a media sample (in units of seconds) may be computed as follows:
- equivalent_time=60×(60×hours_value+minutes_value)+seconds_value+(base_upp×frames_value+offset_value)/base_ups
- Using the timebase parameters, a derived parameter is defined as:
- max_pps=ceil(base_ups/base_upp)
- where cell (x) is defined as the function of an argument x, which, for non-negative values of x, is equal to x if x is an integer and is otherwise equal to the smallest integer greater than x. The value of frames_value should not exceed max_pps.
- If count dropped flag is ‘1’, then:
- if counting_type is ‘010’, frames_value shall be ‘1’ and the value of frames_value for the last previous transmitted frame shall not be equal to ‘0’ unless a sequence header is present between the two frames with discontinuity_flag equal to ‘1’.
- if counting_type is ‘011’, frames_value shall be ‘0’ and the value of frames_value for the last previous transmitted frame shall not be equal to max_pps unless a sequence header is present
- between the two frames with discontinuity_flag equal to ‘1’.
- if counting_type is ‘100’, frames_value shall be ‘2’ and the seconds_value shall be zero and minutes_value shall not be an integer multiple of ten and frames_value for the last previous transmitted frame shall not be equal to ‘0’ or ‘1’ unless a sequence header is present between the two frames with discontinuity_flag equal to ‘1’.
- if counting_type is ‘101’ or ‘110’, frames_value shall not be equal to one plus the value of frames_value for the last previous transmitted frame modulo max_pps unless a sequence header is present between the two frame with discontinuity_flag equal to ‘1’.
- As the degree of precision for the various parameters of each media sample timestamp becomes coarser, the inclusion of the further information needed to place the timestamp within the more global scale is optional. Any coarse-level context information that is not sent is implied to have the same value as the last transmitted parameter of the same type. The finely-detailed information necessary to locate the precise sample time relative to that of neighboring samples is included with every timestamp, but as the degree of coarseness of the time specification becomes higher, the inclusion of further more coarse context information is optional in order to reduce the average amount of information that is required to be communicated.
- FIG. 4 is a flow diagram illustrating a
procedure 400 for decoding multimedia content that includes multiple time stamps and associated content frames. Atblock 402, the procedure receives base_ups, base_upp, and counting type data associated with a multimedia stream from a transmitting device. This information allows the receiving system to properly interpret and decode the subsequently received content. Next, a full timestamp and an associated first multimedia content frame are received (block 404). The full timestamp provides the hours, minutes, seconds, and frame number associated with the first received frame, and, in a particular embodiment, a time offset number allowing a drift-free precise relation to be determined between the time computed from the other parameters and the true time of the sample. - The
procedure 400 then receives a next multimedia content frame and an associated timestamp. An associated flag (full_timestamp_flag) will indicate whether the timestamp is a full timestamp or a compressed timestamp. The procedure decodes the multimedia content frame (block 408) and determines (based on the full timestamp flag) whether the timestamp is a full timestamp or a compressed timestamp (block 410). If the timestamp is a full timestamp, the procedure updates all timing parameters provided by the full timestamp (block 412). If the timestamp is a compressed timestamp, the procedure updates the frame parameter (block 414). The system uses the values from the most recent full timestamp for all other timing parameter values. Alternatively, if a compressed timestamp is received, the procedure updates all timing parameters contained in the compressed timestamp. - After updating one or more timing parameters, the procedure returns to block406 to receive and process the next multimedia content frame and associated timestamp.
- FIG. 5 illustrates an example of a
suitable computing environment 500 within which the video encoding and decoding procedures may be implemented (either fully or partially). Thecomputing environment 500 may be utilized in the computer and network architectures described herein. - The
exemplary computing environment 500 is only one example of a computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the computer and network architectures. Neither should thecomputing environment 500 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in theexemplary computing environment 500. - The video encoding and decoding systems and methods described herein may be implemented with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, multiprocessor systems, microprocessor-based systems, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and so on. Compact or subset versions may also be implemented in clients of limited resources.
- The
computing environment 500 includes a general-purpose computing device in the form of acomputer 502. The components ofcomputer 502 can include, by are not limited to, one or more processors orprocessing units 504, asystem memory 506, and asystem bus 508 that couples various system components including theprocessor 504 to thesystem memory 506. - The
system bus 508 represents one or more of several possible types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus. -
Computer 502 typically includes a variety of computer readable media. Such media can be any available media that is accessible bycomputer 502 and includes both volatile and non-volatile media, removable and non-removable media. - The
system memory 506 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 510, and/or non-volatile memory, such as read only memory (ROM) 512. A basic input/output system (BIOS) 514, containing the basic routines that help to transfer information between elements withincomputer 502, such as during start-up, is stored inROM 512.RAM 510 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by theprocessing unit 504. -
Computer 502 may also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example, FIG. 5 illustrates ahard disk drive 516 for reading from and writing to a non-removable, non-volatile magnetic media (not shown), amagnetic disk drive 518 for reading from and writing to a removable, non-volatile magnetic disk 520 (e.g., a “floppy disk”), and anoptical disk drive 522 for reading from and/or writing to a removable, non-volatileoptical disk 524 such as a CD-ROM, DVD-ROM, or other optical media. Thehard disk drive 516,magnetic disk drive 518, andoptical disk drive 522 are each connected to thesystem bus 508 by one or more data media interfaces 526. Alternatively, thehard disk drive 516,magnetic disk drive 518, andoptical disk drive 522 can be connected to thesystem bus 508 by one or more interfaces (not shown). - The disk drives and their associated computer-readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for
computer 502. Although the example illustrates ahard disk 516, a removablemagnetic disk 520, and a removableoptical disk 524, it is to be appreciated that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like, can also be utilized to implement the exemplary computing system and environment. - Any number of program modules can be stored on the
hard disk 516,magnetic disk 520,optical disk 524,ROM 512, and/orRAM 510, including by way of example, anoperating system 526, one ormore application programs 528,other program modules 530, andprogram data 532. Each of theoperating system 526, one ormore application programs 528,other program modules 530, and program data 932 (or some combination thereof) may include elements of the video encoding and/or decoding algorithms and systems. - A user can enter commands and information into
computer 502 via input devices such as akeyboard 534 and a pointing device 536 (e.g., a “mouse”). Other input devices 538 (not shown specifically) may include a microphone, joystick, game pad, satellite dish, serial port, scanner, and/or the like. These and other input devices are connected to theprocessing unit 504 via input/output interfaces 540 that are coupled to thesystem bus 508, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB). - A
monitor 542 or other type of display device can also be connected to thesystem bus 508 via an interface, such as avideo adapter 544. In addition to themonitor 542, other output peripheral devices can include components such as speakers (not shown) and aprinter 546 which can be connected tocomputer 502 via the input/output interfaces 540. -
Computer 502 can operate in a networked environment using logical connections to one or more remote computers, such as aremote computing device 548. By way of example, theremote computing device 548 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and so on. Theremote computing device 548 is illustrated as a portable computer that can include many or all of the elements and features described herein relative tocomputer 502. - Logical connections between
computer 502 and theremote computer 548 are depicted as a local area network (LAN) 550 and a general wide area network (WAN) 552. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. - When implemented in a LAN networking environment, the
computer 502 is connected to alocal network 550 via a network interface oradapter 554. When implemented in a WAN networking environment, thecomputer 502 typically includes amodem 556 or other means for establishing communications over thewide network 552. Themodem 556, which can be internal or external tocomputer 502, can be connected to thesystem bus 508 via the input/output interfaces 540 or other appropriate mechanisms. It is to be appreciated that the illustrated network connections are exemplary and that other means of establishing communication link(s) between thecomputers - In a networked environment, such as that illustrated with
computing environment 500, program modules depicted relative to thecomputer 502, or portions thereof, may be stored in a remote memory storage device. By way of example,remote application programs 558 reside on a memory device ofremote computer 548. For purposes of illustration, application programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of thecomputing device 502, and are executed by the data processor(s) of the computer. - An implementation of the system and methods described herein may result in the storage or transmission of data, instructions, or other information across some form of computer readable media. Computer readable media can be any available media that can be accessed by a computer. By way of example, and not limitation, computer readable media may comprise “computer storage media” and “communications media.” “Computer storage media” include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
- “Communication media” typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data s signal, such as carrier wave or other transport mechanism. Communication media also includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
- Alternatively, portions of the systems and methods described herein may be implemented in hardware or a combination of hardware, software, and/or firmware. For example, one or more application specific integrated circuits (ASICs) or programmable logic devices (PLDs) could be designed or programmed to implement one or more portions of the video encoding or video decoding systems and procedures.
- Although the description above uses language that is specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the invention.
Claims (31)
1. A method comprising:
encoding a first frame of data;
generating a first timestamp associated with the first frame of data, wherein the first timestamp includes complete timing information;
transmitting the first frame of data and the associated first timestamp to a destination;
encoding a second frame of data;
generating a second timestamp associated with the second frame of data, wherein the second timestamp includes a portion of the complete timing information; and
transmitting the second frame of data and the associated second timestamp to the destination.
2. A method as recited in claim 1 further comprising:
encoding a third frame of data;
generating a third timestamp associated with the third frame of data, wherein the third timestamp includes a portion of the complete timing information; and
transmitting the third frame of data and the associated third timestamp to the destination.
3. A method as recited in claim 1 further comprising:
identifying timing information related to transmitting the first and second frames of data; and
transmitting the timing information to the destination.
4. A method as recited in claim 1 wherein the first timestamp includes hour information, minute information, second information, and a frame number.
5. A method as recited in claim 1 wherein the first timestamp includes an offset value that is used to relate the time associated with a frame of data to true time.
6. A method as recited in claim 1 wherein the second timestamp includes a frame number.
7. A method as recited in claim 1 further comprising:
encoding a plurality of frames of data; and
generating additional timestamps associated with each of the plurality of frames of data, wherein the majority of the additional timestamps include a portion of the complete timing information.
8. A method as recited in claim 1 further comprising:
encoding a plurality of frames of data;
generating a full timestamp associated with one of the plurality of frames of data, wherein the full timestamp includes the complete timing information; and
generating a plurality of compressed timestamps associated with the frames of data that are not associated with the full timestamp, wherein the compressed timestamps include a portion of the complete timing information.
9. One or more computer-readable memories containing a computer program that is executable by a processor to perform the method recited in claim 1 .
10. A method comprising:
identifying multimedia content to be encoded;
encoding the identified multimedia content into a plurality of frames of data;
generating a plurality of full timestamps associated with a portion of the frames of data, wherein each full timestamp contains complete time information; and
generating a plurality of compressed timestamps associated with frames of data that are not associated with a full timestamp, wherein each compressed timestamp contains a portion of the complete time information.
11. A method as recited in claim 10 wherein the full timestamps are associated with every Xth frame of data.
12. A method as recited in claim 10 wherein the full timestamps are associated with frames of data spaced apart by a predetermined time period.
13. A method as recited in claim 10 wherein the full timestamps include hour information, minute information, second information, and a frame number.
14. A method as recited in claim 10 wherein the full timestamps include an offset value that is used to relate the time associated with a frame of data to true time.
15. A method as recited in claim 10 wherein the compressed timestamps include a frame number.
16. A method as recited in claim 10 further comprising storing the frames of data and the associated timestamps.
17. A method as recited in claim 10 further comprising transmitting the frames of data and the associated timestamps to a plurality of destinations.
18. One or more computer-readable memories containing a computer program that is executable by a processor to perform the method recited in claim 10 .
19. A method comprising:
receiving a first frame of data;
receiving a first timestamp associated with the first frame of data, wherein the first timestamp includes complete timing information for the first frame of data;
receiving a second frame of data; and
receiving a second timestamp associated with the second frame of data, wherein the second timestamp includes a portion of the timing information.
20. A method as recited in claim 19 further comprising decoding the first frame of data and the second frame of data.
21. A method as recited in claim 19 further comprising:
receiving a third frame of data;
receiving a third timestamp associated with the third frame of data, wherein the third timestamp includes a portion of the timing information; and
decoding the third frame of data.
22. A method as recited in claim 19 further comprising receiving timing information related to the manner in which frames of data are transmitted from a data source.
23. A method as recited in claim 19 wherein the first timestamp is a full timestamp and the second timestamp is a compressed timestamp.
24. A method as recited in claim 19 wherein receiving the first timestamp includes updating all timing parameters with the information contained in the first timestamp.
25. A method as recited in claim 19 wherein receiving the second timestamp includes updating timing parameters with the information contained in the second timestamp.
26. One or more computer-readable memories containing a computer program that is executable by a processor to perform the method recited in claim 19 .
27. One or more computer-readable media having stored thereon a computer program that, when executed by one or more processors, causes the one or more processors to:
encode a first frame of data;
generate a first timestamp associated with the first frame of data, wherein the first timestamp includes complete time information;
encode a plurality of subsequent frames of data; and
generate a plurality of subsequent timestamps, wherein each of the subsequent timestamps includes a portion of the time information.
28. One or more computer-readable media as recited in claim 27 wherein the complete time information includes hour information, minute information, second information, and a frame number.
29. One or more computer-readable media as recited in claim 27 wherein each of the subsequent timestamps includes a frame number.
30. An apparatus comprising:
an encoded multimedia content source; and
a decoder coupled to receive encoded multimedia content from the encoded multimedia content source, wherein the video content includes a first frame of data having an associated first timestamp, such that the first timestamp includes complete timing information for the first frame of data, and wherein the encoded multimedia content includes a second frame of data having an associated second timestamp, such that the second timestamp includes a subset of the timing information included in the first timestamp.
31. An apparatus as recited in claim 30 wherein the decoder is configured to decode the first frame of data and the second frame of data.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/982,128 US20020089602A1 (en) | 2000-10-18 | 2001-10-18 | Compressed timing indicators for media samples |
US11/029,159 US7242437B2 (en) | 2000-10-18 | 2005-01-04 | Compressed timing indicators for media samples |
US11/379,025 US7633551B2 (en) | 2000-10-18 | 2006-04-17 | Compressed timing indicators for media samples |
US11/903,369 US8269891B2 (en) | 2000-10-18 | 2007-09-21 | Compressed timing indicators for media samples |
US13/606,602 US8698955B2 (en) | 2000-10-18 | 2012-09-07 | Compressed timing indicators for media samples |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US24140700P | 2000-10-18 | 2000-10-18 | |
US09/982,128 US20020089602A1 (en) | 2000-10-18 | 2001-10-18 | Compressed timing indicators for media samples |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/029,159 Continuation US7242437B2 (en) | 2000-10-18 | 2005-01-04 | Compressed timing indicators for media samples |
Publications (1)
Publication Number | Publication Date |
---|---|
US20020089602A1 true US20020089602A1 (en) | 2002-07-11 |
Family
ID=26934275
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/982,128 Abandoned US20020089602A1 (en) | 2000-10-18 | 2001-10-18 | Compressed timing indicators for media samples |
US11/029,159 Expired - Lifetime US7242437B2 (en) | 2000-10-18 | 2005-01-04 | Compressed timing indicators for media samples |
US11/379,025 Expired - Lifetime US7633551B2 (en) | 2000-10-18 | 2006-04-17 | Compressed timing indicators for media samples |
US11/903,369 Active 2025-04-15 US8269891B2 (en) | 2000-10-18 | 2007-09-21 | Compressed timing indicators for media samples |
US13/606,602 Expired - Lifetime US8698955B2 (en) | 2000-10-18 | 2012-09-07 | Compressed timing indicators for media samples |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/029,159 Expired - Lifetime US7242437B2 (en) | 2000-10-18 | 2005-01-04 | Compressed timing indicators for media samples |
US11/379,025 Expired - Lifetime US7633551B2 (en) | 2000-10-18 | 2006-04-17 | Compressed timing indicators for media samples |
US11/903,369 Active 2025-04-15 US8269891B2 (en) | 2000-10-18 | 2007-09-21 | Compressed timing indicators for media samples |
US13/606,602 Expired - Lifetime US8698955B2 (en) | 2000-10-18 | 2012-09-07 | Compressed timing indicators for media samples |
Country Status (1)
Country | Link |
---|---|
US (5) | US20020089602A1 (en) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030198257A1 (en) * | 2002-04-23 | 2003-10-23 | Gateway, Inc. | Method of manually fine tuning audio synchronization of a home network |
WO2004088990A2 (en) * | 2003-04-04 | 2004-10-14 | Bbc Technology Holdings Limited | Media storage control |
US20060072495A1 (en) * | 2004-09-29 | 2006-04-06 | Mundra Satish K M | Increasing the throughput of voice over internet protocol data on wireless local area networks |
US7702909B2 (en) * | 2003-12-22 | 2010-04-20 | Klimenty Vainstein | Method and system for validating timestamps |
US7913311B2 (en) | 2001-12-12 | 2011-03-22 | Rossmann Alain | Methods and systems for providing access control to electronic data |
US7921284B1 (en) | 2001-12-12 | 2011-04-05 | Gary Mark Kinghorn | Method and system for protecting electronic data in enterprise environment |
US7921288B1 (en) | 2001-12-12 | 2011-04-05 | Hildebrand Hal S | System and method for providing different levels of key security for controlling access to secured items |
US7921450B1 (en) | 2001-12-12 | 2011-04-05 | Klimenty Vainstein | Security system using indirect key generation from access rules and methods therefor |
US7950066B1 (en) | 2001-12-21 | 2011-05-24 | Guardian Data Storage, Llc | Method and system for restricting use of a clipboard application |
US20110191111A1 (en) * | 2010-01-29 | 2011-08-04 | Polycom, Inc. | Audio Packet Loss Concealment by Transform Interpolation |
US8006280B1 (en) | 2001-12-12 | 2011-08-23 | Hildebrand Hal S | Security system for generating keys from access rules in a decentralized manner and methods therefor |
US8065713B1 (en) | 2001-12-12 | 2011-11-22 | Klimenty Vainstein | System and method for providing multi-location access management to secured items |
US20120030499A1 (en) * | 2010-07-30 | 2012-02-02 | Arm Limited | Distribution of an incrementing count value |
US8127366B2 (en) | 2003-09-30 | 2012-02-28 | Guardian Data Storage, Llc | Method and apparatus for transitioning between states of security policies used to secure electronic documents |
US8266674B2 (en) | 2001-12-12 | 2012-09-11 | Guardian Data Storage, Llc | Method and system for implementing changes to security policies in a distributed security system |
US8327138B2 (en) | 2003-09-30 | 2012-12-04 | Guardian Data Storage Llc | Method and system for securing digital assets using process-driven security policies |
USRE43906E1 (en) | 2001-12-12 | 2013-01-01 | Guardian Data Storage Llc | Method and apparatus for securing digital assets |
US8543827B2 (en) | 2001-12-12 | 2013-09-24 | Intellectual Ventures I Llc | Methods and systems for providing access control to secured data |
US8707034B1 (en) | 2003-05-30 | 2014-04-22 | Intellectual Ventures I Llc | Method and system for using remote headers to secure electronic files |
US8943316B2 (en) | 2002-02-12 | 2015-01-27 | Intellectual Ventures I Llc | Document security system that permits external users to gain access to secured files |
US20150249846A1 (en) * | 2009-10-07 | 2015-09-03 | At&T Intellectual Property I, Lp | Synchronization of user interactive events with on-screen events during playback of multimedia stream |
US10033700B2 (en) | 2001-12-12 | 2018-07-24 | Intellectual Ventures I Llc | Dynamic evaluation of access rights |
US10360545B2 (en) | 2001-12-12 | 2019-07-23 | Guardian Data Storage, Llc | Method and apparatus for accessing secured electronic data off-line |
US20210409473A1 (en) * | 2017-07-20 | 2021-12-30 | Disney Enterprises, Inc. | Frame-accurate video seeking via web browsers |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020089602A1 (en) * | 2000-10-18 | 2002-07-11 | Sullivan Gary J. | Compressed timing indicators for media samples |
TW200506841A (en) * | 2003-08-06 | 2005-02-16 | Compal Electronics Inc | Method for processing video and audio signals |
KR100782835B1 (en) * | 2005-01-29 | 2007-12-06 | 삼성전자주식회사 | A method of controlling presentation time and output priority of caption information and an apparatus thereof |
WO2007050259A2 (en) * | 2005-10-21 | 2007-05-03 | Thomson Licensing | Method and apparatus for audio and video synchronization timestamp rollover correction |
CN100531382C (en) * | 2006-01-18 | 2009-08-19 | 华为技术有限公司 | Device and method for transmitting visual telephone video-audio signal |
JP4926648B2 (en) * | 2006-10-27 | 2012-05-09 | 富士通セミコンダクター株式会社 | In-vehicle gateway device |
US7767967B2 (en) * | 2006-11-01 | 2010-08-03 | Sony Corporation | Capturing motion using quantum nanodot sensors |
EP2356817B1 (en) * | 2008-12-08 | 2017-04-12 | Telefonaktiebolaget LM Ericsson (publ) | Device and method for synchronizing received audio data with video data |
WO2010093351A1 (en) * | 2009-02-13 | 2010-08-19 | Thomson Licensing | Depth map coding to reduce rendered distortion |
US8736700B2 (en) * | 2010-09-30 | 2014-05-27 | Apple Inc. | Techniques for synchronizing audio and video data in an image signal processing system |
US9241049B2 (en) * | 2011-04-27 | 2016-01-19 | Thomas E. Darcie | System and method for efficient networking for large file transactions |
JP6184408B2 (en) * | 2011-08-12 | 2017-08-23 | サムスン エレクトロニクス カンパニー リミテッド | Receiving apparatus and receiving method thereof |
US9014504B2 (en) | 2012-05-31 | 2015-04-21 | Apple Inc. | Systems and methods for highlight recovery in an image signal processor |
US9332239B2 (en) | 2012-05-31 | 2016-05-03 | Apple Inc. | Systems and methods for RGB image processing |
US9105078B2 (en) | 2012-05-31 | 2015-08-11 | Apple Inc. | Systems and methods for local tone mapping |
US11089247B2 (en) | 2012-05-31 | 2021-08-10 | Apple Inc. | Systems and method for reducing fixed pattern noise in image data |
US9031319B2 (en) | 2012-05-31 | 2015-05-12 | Apple Inc. | Systems and methods for luma sharpening |
US9743057B2 (en) | 2012-05-31 | 2017-08-22 | Apple Inc. | Systems and methods for lens shading correction |
US8817120B2 (en) | 2012-05-31 | 2014-08-26 | Apple Inc. | Systems and methods for collecting fixed pattern noise statistics of image data |
US9025867B2 (en) | 2012-05-31 | 2015-05-05 | Apple Inc. | Systems and methods for YCC image processing |
US8872946B2 (en) | 2012-05-31 | 2014-10-28 | Apple Inc. | Systems and methods for raw image processing |
US9142012B2 (en) | 2012-05-31 | 2015-09-22 | Apple Inc. | Systems and methods for chroma noise reduction |
US9077943B2 (en) | 2012-05-31 | 2015-07-07 | Apple Inc. | Local image statistics collection |
US8953882B2 (en) | 2012-05-31 | 2015-02-10 | Apple Inc. | Systems and methods for determining noise statistics of image data |
US8917336B2 (en) | 2012-05-31 | 2014-12-23 | Apple Inc. | Image signal processing involving geometric distortion correction |
TW201409224A (en) * | 2012-08-16 | 2014-03-01 | Hon Hai Prec Ind Co Ltd | Video processing system and method |
US9664539B2 (en) * | 2012-11-30 | 2017-05-30 | Blackberry Limited | Time stamping a sensor sample |
US20140226683A1 (en) * | 2013-02-14 | 2014-08-14 | Silicom Ltd. | Network adapter with high performance in-line timestamp |
US9929824B2 (en) | 2015-01-26 | 2018-03-27 | Timecode Systems Limited | Networked programmable master clock base stations |
US10063637B2 (en) | 2015-10-12 | 2018-08-28 | Timecode Systems Limited | Synchronizing data between personal and timecode devices |
US10742733B2 (en) | 2015-10-12 | 2020-08-11 | Timecode Systems Limited | Synchronizing data between media devices |
EP3157241B1 (en) | 2015-10-12 | 2020-02-12 | Timecode Systems Limited | Synchronizing data between personal and timecode devices |
US9866732B2 (en) | 2015-10-12 | 2018-01-09 | Timecode Systems Limited | Synchronizing data between personal and timecode devices |
SG11201909772RA (en) * | 2017-05-09 | 2019-11-28 | Echo360 Inc | Methods and apparatus for ordered serial synchronization of multimedia streams upon sensor changes |
JP7121277B2 (en) * | 2018-09-28 | 2022-08-18 | 日本電信電話株式会社 | Information Synchronization Device, Information Synchronization Method and Information Synchronization Program |
US11138970B1 (en) * | 2019-12-06 | 2021-10-05 | Asapp, Inc. | System, method, and computer program for creating a complete transcription of an audio recording from separately transcribed redacted and unredacted words |
CN111585684B (en) * | 2020-05-14 | 2021-08-10 | 武汉大学 | Multi-path camera time alignment method and system for networked monitoring video analysis |
US11757744B2 (en) | 2020-12-01 | 2023-09-12 | Cisco Technology, Inc. | Micro segment identifier instructions for path tracing optimization |
WO2022119749A1 (en) * | 2020-12-01 | 2022-06-09 | Cisco Technology, Inc. | Telemetry data optimization for path tracing and delay measurement |
US11521639B1 (en) | 2021-04-02 | 2022-12-06 | Asapp, Inc. | Speech sentiment analysis using a speech sentiment classifier pretrained with pseudo sentiment labels |
US11763803B1 (en) | 2021-07-28 | 2023-09-19 | Asapp, Inc. | System, method, and computer program for extracting utterances corresponding to a user problem statement in a conversation between a human agent and a user |
US12067363B1 (en) | 2022-02-24 | 2024-08-20 | Asapp, Inc. | System, method, and computer program for text sanitization |
Citations (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4847877A (en) * | 1986-11-28 | 1989-07-11 | International Business Machines Corporation | Method and apparatus for detecting a predetermined bit pattern within a serial bit stream |
US5430485A (en) * | 1993-09-30 | 1995-07-04 | Thomson Consumer Electronics, Inc. | Audio/video synchronization in a digital transmission system |
US5469466A (en) * | 1994-01-18 | 1995-11-21 | Hewlett-Packard Company | System for highly repeatable clock parameter recovery from data modulated signals |
US5559999A (en) * | 1994-09-09 | 1996-09-24 | Lsi Logic Corporation | MPEG decoding system including tag list for associating presentation time stamps with encoded data units |
US5566174A (en) * | 1994-04-08 | 1996-10-15 | Philips Electronics North America Corporation | MPEG information signal conversion system |
US5565923A (en) * | 1993-05-13 | 1996-10-15 | Rca Licensing Corporation | Apparatus for formatting a digital signal to include multiple time stamps for system synchronization |
US5583500A (en) * | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
US5661665A (en) * | 1996-06-26 | 1997-08-26 | Microsoft Corporation | Multi-media synchronization |
US5828416A (en) * | 1996-03-29 | 1998-10-27 | Matsushita Electric Corporation Of America | System and method for interfacing a transport decoder to a elementary stream video decorder |
US5835668A (en) * | 1994-11-14 | 1998-11-10 | Sony Corporation | Transmission, recording and reproduction of digital data and time information in transport packets using a compression ratio |
US5870444A (en) * | 1996-04-23 | 1999-02-09 | Scientific-Atlanta, Inc. | Method and apparatus for performing very fast message synchronization |
US5898897A (en) * | 1996-10-18 | 1999-04-27 | Samsung Electronics Company, Ltd. | Bit stream signal feature detection in a signal processing system |
US5946043A (en) * | 1997-12-31 | 1999-08-31 | Microsoft Corporation | Video coding using adaptive coding of block parameters for coded/uncoded blocks |
US5956090A (en) * | 1996-08-15 | 1999-09-21 | Oki Electric Industry Co., Ltd. | Television standards converter with time-code conversion function |
US5955977A (en) * | 1997-03-31 | 1999-09-21 | Sharp Laboratories Of America, Inc. | System for avoiding start code emulation and long carry-over propagation |
US5970204A (en) * | 1996-06-17 | 1999-10-19 | Victor Company Of Japan, Ltd. | Method and apparatus for recording time code data |
US6069902A (en) * | 1995-06-14 | 2000-05-30 | Matsushita Electric Industrial Co., Ltd. | Broadcast receiver, transmission control unit and recording/reproducing apparatus |
US6075576A (en) * | 1996-07-05 | 2000-06-13 | Matsushita Electric Industrial Co., Ltd. | Method for display time stamping and synchronization of multiple video object planes |
US6081507A (en) * | 1998-11-04 | 2000-06-27 | Polytechnic University | Methods and apparatus for handling time stamp aging |
US6081299A (en) * | 1998-02-20 | 2000-06-27 | International Business Machines Corporation | Methods and systems for encoding real time multimedia data |
US6219067B1 (en) * | 1998-04-03 | 2001-04-17 | Sarnoff Corporation | Measures for characterizing compressed bitstreams |
US6262776B1 (en) * | 1996-12-13 | 2001-07-17 | Microsoft Corporation | System and method for maintaining synchronization between audio and video |
US6266158B1 (en) * | 1997-01-22 | 2001-07-24 | Matsushita Electric Industrial Co., Ltd. | Image encoding/decoding device and method |
US6323909B1 (en) * | 1998-10-28 | 2001-11-27 | Hughes Electronics Corporation | Method and apparatus for transmitting high definition television programming using a digital satellite system transport and MPEG-2 packetized elementary streams (PES) |
US6330214B1 (en) * | 1997-09-30 | 2001-12-11 | Sony Corporation | Signal recording/reproducing apparatus and method |
US20020042844A1 (en) * | 2000-08-04 | 2002-04-11 | Giovanni Chiazzese | Synchronized sampling on a multiprocessor backplane via a broadcast timestamp |
US20020083205A1 (en) * | 2000-09-28 | 2002-06-27 | David Leon | Enhanced header compression profile |
US6490405B1 (en) * | 1998-06-29 | 2002-12-03 | Microsoft Corporation | Timestamp modification for seamless branching |
US6519411B1 (en) * | 1996-03-05 | 2003-02-11 | Hitachi, Ltd. | Digital signal recording and reproduction apparatus suitable for recording and reproducing a compressed video signal |
US6522335B2 (en) * | 1999-05-10 | 2003-02-18 | Autodesk Canada Inc. | Supplying data to a double buffering process |
US6535925B1 (en) * | 1999-11-09 | 2003-03-18 | Telefonaktiebolaget L M Ericsson (Publ) | Packet header compression using division remainders |
US6578070B1 (en) * | 1997-10-22 | 2003-06-10 | Ncube Corporation | Method and apparatus for implementing seamless playback of continuous media feeds |
US6646655B1 (en) * | 1999-03-09 | 2003-11-11 | Webex Communications, Inc. | Extracting a time-sequence of slides from video |
US6697569B1 (en) * | 1998-09-11 | 2004-02-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Automated conversion of a visual presentation into digital data format |
US7000031B2 (en) * | 2000-04-07 | 2006-02-14 | Broadcom Corporation | Method of providing synchronous transport of packets between asynchronous network nodes in a frame-based communications network |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS627276A (en) * | 1985-07-04 | 1987-01-14 | Pioneer Video Kk | Video disk and its recorder |
DE3615468A1 (en) * | 1986-05-07 | 1987-11-12 | Bosch Gmbh Robert | TIME CODE READING DEVICE IN A MAGNETIC TAPE DEVICE FOR STORING VIDEO SIGNALS |
DE68914896T2 (en) * | 1988-02-04 | 1994-08-18 | Matsushita Electric Ind Co Ltd | ARRANGEMENT FOR STORING AND PLAYING BACK THE TIME CODE AND TIME CODE CONVERTER. |
JP2711352B2 (en) | 1988-02-04 | 1998-02-10 | 松下電器産業株式会社 | Time information recording and playback device |
US5097364A (en) * | 1988-12-12 | 1992-03-17 | Mitsubishi Denki Kabushiki Kaisha | Magnetic recording and reproducing apparatus and method of recording and reproducing |
SE9300681D0 (en) * | 1993-03-01 | 1993-03-01 | Ericsson Telefon Ab L M | A METHOD AND APPARATUS FOR HANDING OFF A MOBILE STATION FROM A FIRST TO A SECOND CHANNEL IN A MOBILE COMMUNICATION SYSTEM |
US5583600A (en) * | 1994-05-31 | 1996-12-10 | Konica Corporation | Photosensitive material processing apparatus |
US5473385A (en) * | 1994-06-07 | 1995-12-05 | Tv/Com Technologies, Inc. | Clock correction in a video data decoder using video synchronization signals |
GB9417138D0 (en) | 1994-08-23 | 1994-10-12 | Discovision Ass | Data rate conversion |
US5874997A (en) * | 1994-08-29 | 1999-02-23 | Futuretel, Inc. | Measuring and regulating synchronization of merged video and audio data |
JPH08205170A (en) | 1995-01-23 | 1996-08-09 | Matsushita Electric Ind Co Ltd | Decoding device and encoding device for dynamic image |
US5459466A (en) * | 1995-02-23 | 1995-10-17 | Tektronix, Inc. | Method and apparatus for converting a thermometer code to a gray code |
US6112226A (en) * | 1995-07-14 | 2000-08-29 | Oracle Corporation | Method and apparatus for concurrently encoding and tagging digital information for allowing non-sequential access during playback |
JP3130464B2 (en) * | 1996-02-02 | 2001-01-31 | ローム株式会社 | Data decryption device |
US5960355A (en) * | 1996-02-16 | 1999-09-28 | Telefonaktiebolaget Lm Ericsson | Method and an arrangement relating to telecommunication systems |
EP1755261A3 (en) | 1996-03-18 | 2008-04-02 | Kabushiki Kaisha Toshiba | Coding and decoding system |
KR100436649B1 (en) * | 1996-12-20 | 2004-09-08 | 소니 일렉트로닉스 인코포레이티드 | Method and apparuatus for changing phase of video program material taken from 24 frame per second film |
JP3407287B2 (en) * | 1997-12-22 | 2003-05-19 | 日本電気株式会社 | Encoding / decoding system |
US7954056B2 (en) * | 1997-12-22 | 2011-05-31 | Ricoh Company, Ltd. | Television-based visualization and navigation interface |
US6680944B1 (en) * | 1998-03-09 | 2004-01-20 | Sony Corporation | Apparatus for and method of predictive time stamping of isochronous data packets transmitted over an IEEE 1394-1995 serial bus network |
GB9807208D0 (en) | 1998-04-03 | 1998-06-03 | Nds Ltd | Method and apparatus for detecting a sequence in a bitstream |
WO1999056472A1 (en) | 1998-04-24 | 1999-11-04 | Rockwell Science Center, Llc | N-bit video coder and method of extending an 8-bit mpeg video coder |
US6326960B1 (en) * | 1998-09-04 | 2001-12-04 | National Semiconductor Corporation | Video output phase control in a decoder |
JP4069524B2 (en) | 1998-11-10 | 2008-04-02 | ソニー株式会社 | Transmission method and apparatus |
EP1018840A3 (en) | 1998-12-08 | 2005-12-21 | Canon Kabushiki Kaisha | Digital receiving apparatus and method |
US7551672B1 (en) | 1999-02-05 | 2009-06-23 | Sony Corporation | Encoding system and method, decoding system and method, multiplexing apparatus and method, and display system and method |
US6499060B1 (en) | 1999-03-12 | 2002-12-24 | Microsoft Corporation | Media coding for loss recovery with remotely predicted data units |
JP4292654B2 (en) | 1999-03-19 | 2009-07-08 | ソニー株式会社 | Recording apparatus and method, reproducing apparatus and method, and recording medium |
US6389547B1 (en) * | 1999-03-19 | 2002-05-14 | Sony Corporation | Method and apparatus to synchronize a bus bridge to a master clock |
EP1166566A2 (en) | 1999-04-01 | 2002-01-02 | Ravisent Technologies, Inc. | Memory management method for high speed streaming data processing in a computer device |
US6226158B1 (en) * | 1999-07-30 | 2001-05-01 | International Business Machines Corporation | High operating temperature gold leads for a read sensor |
US6680955B1 (en) * | 1999-08-20 | 2004-01-20 | Nokia Networks Oy | Technique for compressing a header field in a data packet |
GB2353653B (en) | 1999-08-26 | 2003-12-31 | Sony Uk Ltd | Signal processor |
JP3694888B2 (en) | 1999-12-03 | 2005-09-14 | ソニー株式会社 | Decoding device and method, encoding device and method, information processing device and method, and recording medium |
US6687752B1 (en) * | 2000-03-01 | 2004-02-03 | Ezenial Inc. | Dynamic RTP/RTCP timestamp validation |
US20020089602A1 (en) * | 2000-10-18 | 2002-07-11 | Sullivan Gary J. | Compressed timing indicators for media samples |
US20020083020A1 (en) | 2000-11-07 | 2002-06-27 | Neopost Inc. | Method and apparatus for providing postage over a data communication network |
US7424080B1 (en) * | 2003-07-31 | 2008-09-09 | Broadlogic Network Technologies, Inc. | Method and system for providing jitter-free transmissions for demodulated data stream |
US9031071B2 (en) * | 2005-08-26 | 2015-05-12 | Alcatel Lucent | Header elimination for real time internet applications |
US7937232B1 (en) * | 2006-07-06 | 2011-05-03 | Pivotal Systems Corporation | Data timestamp management |
-
2001
- 2001-10-18 US US09/982,128 patent/US20020089602A1/en not_active Abandoned
-
2005
- 2005-01-04 US US11/029,159 patent/US7242437B2/en not_active Expired - Lifetime
-
2006
- 2006-04-17 US US11/379,025 patent/US7633551B2/en not_active Expired - Lifetime
-
2007
- 2007-09-21 US US11/903,369 patent/US8269891B2/en active Active
-
2012
- 2012-09-07 US US13/606,602 patent/US8698955B2/en not_active Expired - Lifetime
Patent Citations (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4847877A (en) * | 1986-11-28 | 1989-07-11 | International Business Machines Corporation | Method and apparatus for detecting a predetermined bit pattern within a serial bit stream |
US5583500A (en) * | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
US5565923A (en) * | 1993-05-13 | 1996-10-15 | Rca Licensing Corporation | Apparatus for formatting a digital signal to include multiple time stamps for system synchronization |
US5430485A (en) * | 1993-09-30 | 1995-07-04 | Thomson Consumer Electronics, Inc. | Audio/video synchronization in a digital transmission system |
US5469466A (en) * | 1994-01-18 | 1995-11-21 | Hewlett-Packard Company | System for highly repeatable clock parameter recovery from data modulated signals |
US5566174A (en) * | 1994-04-08 | 1996-10-15 | Philips Electronics North America Corporation | MPEG information signal conversion system |
US5559999A (en) * | 1994-09-09 | 1996-09-24 | Lsi Logic Corporation | MPEG decoding system including tag list for associating presentation time stamps with encoded data units |
US5835668A (en) * | 1994-11-14 | 1998-11-10 | Sony Corporation | Transmission, recording and reproduction of digital data and time information in transport packets using a compression ratio |
US6069902A (en) * | 1995-06-14 | 2000-05-30 | Matsushita Electric Industrial Co., Ltd. | Broadcast receiver, transmission control unit and recording/reproducing apparatus |
US6519411B1 (en) * | 1996-03-05 | 2003-02-11 | Hitachi, Ltd. | Digital signal recording and reproduction apparatus suitable for recording and reproducing a compressed video signal |
US5828416A (en) * | 1996-03-29 | 1998-10-27 | Matsushita Electric Corporation Of America | System and method for interfacing a transport decoder to a elementary stream video decorder |
US5870444A (en) * | 1996-04-23 | 1999-02-09 | Scientific-Atlanta, Inc. | Method and apparatus for performing very fast message synchronization |
US5970204A (en) * | 1996-06-17 | 1999-10-19 | Victor Company Of Japan, Ltd. | Method and apparatus for recording time code data |
US5661665A (en) * | 1996-06-26 | 1997-08-26 | Microsoft Corporation | Multi-media synchronization |
US6075576A (en) * | 1996-07-05 | 2000-06-13 | Matsushita Electric Industrial Co., Ltd. | Method for display time stamping and synchronization of multiple video object planes |
US5956090A (en) * | 1996-08-15 | 1999-09-21 | Oki Electric Industry Co., Ltd. | Television standards converter with time-code conversion function |
US5898897A (en) * | 1996-10-18 | 1999-04-27 | Samsung Electronics Company, Ltd. | Bit stream signal feature detection in a signal processing system |
US6262776B1 (en) * | 1996-12-13 | 2001-07-17 | Microsoft Corporation | System and method for maintaining synchronization between audio and video |
US6266158B1 (en) * | 1997-01-22 | 2001-07-24 | Matsushita Electric Industrial Co., Ltd. | Image encoding/decoding device and method |
US5955977A (en) * | 1997-03-31 | 1999-09-21 | Sharp Laboratories Of America, Inc. | System for avoiding start code emulation and long carry-over propagation |
US6330214B1 (en) * | 1997-09-30 | 2001-12-11 | Sony Corporation | Signal recording/reproducing apparatus and method |
US6578070B1 (en) * | 1997-10-22 | 2003-06-10 | Ncube Corporation | Method and apparatus for implementing seamless playback of continuous media feeds |
US5946043A (en) * | 1997-12-31 | 1999-08-31 | Microsoft Corporation | Video coding using adaptive coding of block parameters for coded/uncoded blocks |
US6081299A (en) * | 1998-02-20 | 2000-06-27 | International Business Machines Corporation | Methods and systems for encoding real time multimedia data |
US6219067B1 (en) * | 1998-04-03 | 2001-04-17 | Sarnoff Corporation | Measures for characterizing compressed bitstreams |
US6490405B1 (en) * | 1998-06-29 | 2002-12-03 | Microsoft Corporation | Timestamp modification for seamless branching |
US6697569B1 (en) * | 1998-09-11 | 2004-02-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Automated conversion of a visual presentation into digital data format |
US6323909B1 (en) * | 1998-10-28 | 2001-11-27 | Hughes Electronics Corporation | Method and apparatus for transmitting high definition television programming using a digital satellite system transport and MPEG-2 packetized elementary streams (PES) |
US6081507A (en) * | 1998-11-04 | 2000-06-27 | Polytechnic University | Methods and apparatus for handling time stamp aging |
US6646655B1 (en) * | 1999-03-09 | 2003-11-11 | Webex Communications, Inc. | Extracting a time-sequence of slides from video |
US6522335B2 (en) * | 1999-05-10 | 2003-02-18 | Autodesk Canada Inc. | Supplying data to a double buffering process |
US6535925B1 (en) * | 1999-11-09 | 2003-03-18 | Telefonaktiebolaget L M Ericsson (Publ) | Packet header compression using division remainders |
US7000031B2 (en) * | 2000-04-07 | 2006-02-14 | Broadcom Corporation | Method of providing synchronous transport of packets between asynchronous network nodes in a frame-based communications network |
US20020042844A1 (en) * | 2000-08-04 | 2002-04-11 | Giovanni Chiazzese | Synchronized sampling on a multiprocessor backplane via a broadcast timestamp |
US20020083205A1 (en) * | 2000-09-28 | 2002-06-27 | David Leon | Enhanced header compression profile |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8341407B2 (en) | 2001-12-12 | 2012-12-25 | Guardian Data Storage, Llc | Method and system for protecting electronic data in enterprise environment |
US9129120B2 (en) | 2001-12-12 | 2015-09-08 | Intellectual Ventures I Llc | Methods and systems for providing access control to secured data |
US10769288B2 (en) | 2001-12-12 | 2020-09-08 | Intellectual Property Ventures I Llc | Methods and systems for providing access control to secured data |
US10360545B2 (en) | 2001-12-12 | 2019-07-23 | Guardian Data Storage, Llc | Method and apparatus for accessing secured electronic data off-line |
US10229279B2 (en) | 2001-12-12 | 2019-03-12 | Intellectual Ventures I Llc | Methods and systems for providing access control to secured data |
US10033700B2 (en) | 2001-12-12 | 2018-07-24 | Intellectual Ventures I Llc | Dynamic evaluation of access rights |
US9542560B2 (en) | 2001-12-12 | 2017-01-10 | Intellectual Ventures I Llc | Methods and systems for providing access control to secured data |
USRE43906E1 (en) | 2001-12-12 | 2013-01-01 | Guardian Data Storage Llc | Method and apparatus for securing digital assets |
US7921284B1 (en) | 2001-12-12 | 2011-04-05 | Gary Mark Kinghorn | Method and system for protecting electronic data in enterprise environment |
US7921288B1 (en) | 2001-12-12 | 2011-04-05 | Hildebrand Hal S | System and method for providing different levels of key security for controlling access to secured items |
US7921450B1 (en) | 2001-12-12 | 2011-04-05 | Klimenty Vainstein | Security system using indirect key generation from access rules and methods therefor |
US8918839B2 (en) | 2001-12-12 | 2014-12-23 | Intellectual Ventures I Llc | System and method for providing multi-location access management to secured items |
US8543827B2 (en) | 2001-12-12 | 2013-09-24 | Intellectual Ventures I Llc | Methods and systems for providing access control to secured data |
US8006280B1 (en) | 2001-12-12 | 2011-08-23 | Hildebrand Hal S | Security system for generating keys from access rules in a decentralized manner and methods therefor |
US8065713B1 (en) | 2001-12-12 | 2011-11-22 | Klimenty Vainstein | System and method for providing multi-location access management to secured items |
US7913311B2 (en) | 2001-12-12 | 2011-03-22 | Rossmann Alain | Methods and systems for providing access control to electronic data |
US8341406B2 (en) | 2001-12-12 | 2012-12-25 | Guardian Data Storage, Llc | System and method for providing different levels of key security for controlling access to secured items |
US8266674B2 (en) | 2001-12-12 | 2012-09-11 | Guardian Data Storage, Llc | Method and system for implementing changes to security policies in a distributed security system |
US7950066B1 (en) | 2001-12-21 | 2011-05-24 | Guardian Data Storage, Llc | Method and system for restricting use of a clipboard application |
US8943316B2 (en) | 2002-02-12 | 2015-01-27 | Intellectual Ventures I Llc | Document security system that permits external users to gain access to secured files |
US20030198257A1 (en) * | 2002-04-23 | 2003-10-23 | Gateway, Inc. | Method of manually fine tuning audio synchronization of a home network |
US7333519B2 (en) * | 2002-04-23 | 2008-02-19 | Gateway Inc. | Method of manually fine tuning audio synchronization of a home network |
USRE47443E1 (en) | 2002-09-30 | 2019-06-18 | Intellectual Ventures I Llc | Document security system that permits external users to gain access to secured files |
WO2004088990A2 (en) * | 2003-04-04 | 2004-10-14 | Bbc Technology Holdings Limited | Media storage control |
WO2004088990A3 (en) * | 2003-04-04 | 2004-11-18 | Bbc Technology Holdings Ltd | Media storage control |
US8707034B1 (en) | 2003-05-30 | 2014-04-22 | Intellectual Ventures I Llc | Method and system for using remote headers to secure electronic files |
US8127366B2 (en) | 2003-09-30 | 2012-02-28 | Guardian Data Storage, Llc | Method and apparatus for transitioning between states of security policies used to secure electronic documents |
US8739302B2 (en) | 2003-09-30 | 2014-05-27 | Intellectual Ventures I Llc | Method and apparatus for transitioning between states of security policies used to secure electronic documents |
US8327138B2 (en) | 2003-09-30 | 2012-12-04 | Guardian Data Storage Llc | Method and system for securing digital assets using process-driven security policies |
US7702909B2 (en) * | 2003-12-22 | 2010-04-20 | Klimenty Vainstein | Method and system for validating timestamps |
US7356021B2 (en) * | 2004-09-29 | 2008-04-08 | Texas Instruments Incorporated | Increasing the throughput of voice over internet protocol data on wireless local area networks |
US20060072495A1 (en) * | 2004-09-29 | 2006-04-06 | Mundra Satish K M | Increasing the throughput of voice over internet protocol data on wireless local area networks |
US20150249846A1 (en) * | 2009-10-07 | 2015-09-03 | At&T Intellectual Property I, Lp | Synchronization of user interactive events with on-screen events during playback of multimedia stream |
CN105895107A (en) * | 2010-01-29 | 2016-08-24 | 宝利通公司 | Audio packet loss concealment by transform interpolation |
US8428959B2 (en) * | 2010-01-29 | 2013-04-23 | Polycom, Inc. | Audio packet loss concealment by transform interpolation |
TWI420513B (en) * | 2010-01-29 | 2013-12-21 | Polycom Inc | Audio packet loss concealment by transform interpolation |
US20110191111A1 (en) * | 2010-01-29 | 2011-08-04 | Polycom, Inc. | Audio Packet Loss Concealment by Transform Interpolation |
US8966309B2 (en) * | 2010-07-30 | 2015-02-24 | Arm Limited | Distribution of an incrementing count value |
US20120030499A1 (en) * | 2010-07-30 | 2012-02-02 | Arm Limited | Distribution of an incrementing count value |
US11722542B2 (en) * | 2017-07-20 | 2023-08-08 | Disney Enterprises, Inc. | Frame-accurate video seeking via web browsers |
US20210409473A1 (en) * | 2017-07-20 | 2021-12-30 | Disney Enterprises, Inc. | Frame-accurate video seeking via web browsers |
Also Published As
Publication number | Publication date |
---|---|
US20070009049A1 (en) | 2007-01-11 |
US20050151880A1 (en) | 2005-07-14 |
US20080088737A1 (en) | 2008-04-17 |
US7633551B2 (en) | 2009-12-15 |
US20130063660A1 (en) | 2013-03-14 |
US8698955B2 (en) | 2014-04-15 |
US7242437B2 (en) | 2007-07-10 |
US8269891B2 (en) | 2012-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7633551B2 (en) | Compressed timing indicators for media samples | |
US7024097B2 (en) | Methods, systems and data structures for timecoding media samples | |
KR101777908B1 (en) | Method of processing a sequence of coded video frames | |
US20030095790A1 (en) | Methods and apparatus for generating navigation information on the fly | |
JP3666625B2 (en) | Data recording method and data recording apparatus | |
JP2006528859A (en) | Fingerprint generation and detection method and apparatus for synchronizing audio and video | |
US8045836B2 (en) | System and method for recording high frame rate video, replaying slow-motion and replaying normal speed with audio-video synchronization | |
US20050238316A1 (en) | Hybrid video on demand using mpeg2 transport | |
US6754273B1 (en) | Method for compressing an audio-visual signal | |
JP3144285B2 (en) | Video processing equipment | |
KR0181082B1 (en) | Pts coder of mpeg system | |
JP2001094907A (en) | Partial reproduction method for video/audio signal in storage type digital broadcast and receiver | |
JP4164295B2 (en) | Information recording apparatus and information recording method, information processing apparatus and information processing method, information reproducing apparatus and information reproducing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SULLIVAN, GARY J.;REEL/FRAME:012543/0811 Effective date: 20011127 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001 Effective date: 20141014 |