US7103677B2 - Methods and systems for efficiently processing compressed and uncompressed media content - Google Patents
Methods and systems for efficiently processing compressed and uncompressed media content Download PDFInfo
- Publication number
- US7103677B2 US7103677B2 US09/732,089 US73208900A US7103677B2 US 7103677 B2 US7103677 B2 US 7103677B2 US 73208900 A US73208900 A US 73208900A US 7103677 B2 US7103677 B2 US 7103677B2
- Authority
- US
- United States
- Prior art keywords
- output
- switch
- pins
- compressed
- data stream
- 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.)
- Expired - Fee Related, expires
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/02—Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
- G11B27/031—Electronic editing of digitised analogue information signals, e.g. audio or video signals
- G11B27/034—Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
Definitions
- This invention generally relates to processing media content and, more particularly, to a system and related interfaces facilitating the processing of media content.
- the interface described therein is referred to as a filter graph manager.
- the filter graph manager controls the data structure of the filter graph and the way data moves through the filter graph.
- the filter graph manager provides a set of component object model (COM) interfaces for communication between a filter graph and its application.
- Filters of a filter graph architecture are preferably implemented as COM objects, each implementing one or more interfaces, each of which contains a predefined set of functions, called methods. Methods are called by an application program or other component objects in order to communicate with the object exposing the interface.
- the application program can also call methods or interfaces exposed by the filter graph manager object.
- Filter graphs work with data representing a variety of media (or non-media) data types, each type characterized by a data stream that is processed by the filter components comprising the filter graph.
- a filter positioned closer to the source of the data is referred to as an upstream filter, while those further down the processing chain is referred to as a downstream filter.
- a virtual pin i.e., distinguished from a physical pin such as one might find on an integrated circuit.
- a virtual pin can be implemented as a COM object that represents a point of connection for a unidirectional data stream on a filter.
- Input pins represent inputs and accept data into the filter, while output pins represent outputs and provide data to other filters.
- Each of the filters include at least one memory buffer, wherein communication of the media stream between filters is often accomplished by a series of “copy” operations from one filter to another.
- a filter graph has three different types of filters: source filters, transform filters, and rendering filters.
- a source filter is used to load data from some source; a transform filter processes and passes data; and a rendering filter renders data to a hardware device or other locations (e.g., saved to a file, etc.).
- An example of a filter graph for a simplistic media rendering process is presented with reference to FIG. 1 .
- FIG. 1 graphically illustrates an example filter graph for rendering media content.
- the filter graph 100 is comprised of a plurality of filters 102 – 114 , which read, process (transform) and render media content from a selected source file.
- the filter graph includes each of the types of filters described above, interconnected in a linear fashion.
- Methods and systems are described that permit efficient processing of user-defined multi-media editing projects that combine multiple different source data streams into a single compressed data stream that represents the project.
- the described approaches are directed to ensuring that those compressed source data stream portions that need to be uncompressed for processing are uncompressed and processed, while those compressed source data stream portions that do not need to be uncompressed are not uncompressed.
- a unique switch assembly comprising one or more switches each of which being configured to process data streams.
- the switch assembly is configured to process both compressed and uncompressed data streams to provide the single compressed output data stream.
- three software-implemented switches are provided—one for handling uncompressed source data streams, one for handling compressed source data streams, and one for processing the output of the first two switches to provide the single compressed data stream.
- FIG. 1 is a graphical representation of a conventional filter graph representing a user-defined development project.
- FIG. 2 is a block diagram of a computing system incorporating the teachings of the described embodiment.
- FIG. 3 is a block diagram of an example software architecture incorporating the teachings of the described embodiment.
- FIG. 4 is a graphical illustration of an example software-enabled matrix switch, according to an exemplary embodiment.
- FIG. 5 is a graphical representation of a data structure comprising a programming grid to selectively couple one or more of a scalable plurality of input pins to a scalable plurality of output pins of the matrix switch filter, in accordance with one aspect of the described embodiment.
- FIG. 6 is a graphical illustration denoting shared buffer memory between filters, according to one aspect of the described embodiment.
- FIG. 7 is a flow chart of an example method for generating a filter graph, in accordance with one aspect of the described embodiment.
- FIG. 8 is a flow chart of an example method for negotiating buffer requirements between at least two adjacent filters, according to one aspect of the described embodiment.
- FIG. 9 graphically illustrates an overview of a process that takes a user-defined editing project and composites a data structure that can be used to program the matrix switch.
- FIG. 10 graphically illustrates the project of FIG. 9 in greater detail.
- FIG. 11 shows an exemplary matrix switch dynamically generated in support of the project developed in FIGS. 9 and 10 , according to one described embodiment.
- FIG. 12 illustrates a graphic representation of an exemplary data structure that represents the project of FIG. 10 , according to one described embodiment.
- FIGS. 13–18 graphically illustrate various states of a matrix switch programming grid at select points in processing the project of FIGS. 9 and 10 through the matrix switch, in accordance with one described embodiment.
- FIG. 19 is a flow chart of an example method for processing media content, in accordance with one described embodiment.
- FIG. 20 illustrates an example project with a transition and an effect, in accordance with one described embodiment.
- FIG. 21 shows an exemplary data structure in the form of a hierarchical tree that represents the project of FIG. 20 .
- FIGS. 22 and 23 graphically illustrate an example matrix switch programming grid associated with the project of FIG. 20 at select points in time, according to one described embodiment.
- FIG. 24 shows an example matrix switch dynamically generated and configured as the grid of FIGS. 22 and 23 was being processed, in accordance with one described embodiment.
- FIG. 25 shows an exemplary project in accordance with one described embodiment.
- FIG. 26 graphically illustrates an example audio editing project, according to one described embodiment.
- FIG. 27 depicts an example matrix switch programming grid associated with the project of FIG. 26 .
- FIG. 28 shows an example matrix switch dynamically generated and configured in accordance with the programming grid of FIG. 27 to perform the project of FIG. 26 , according to one described embodiment.
- FIG. 29 illustrates an exemplary media processing project incorporating another media processing project as a composite, according to yet another described embodiment.
- FIG. 30 graphically illustrates an example data structure in the form of a hierarchical tree structure that represents the project of FIG. 29 .
- FIGS. 31–36 graphically illustrate various matrix switch programming grid states at select points in generating and configuring the matrix switch to implement the media processing of FIG. 29 .
- FIG. 38 illustrates an example matrix switch suitable for use in the media processing project of FIG. 29 , according to one described embodiment.
- FIG. 38 a graphically illustrates an example data structure in the form of a hierarchical tree structure that represents a project that is useful in understanding composites in accordance with the described embodiments.
- FIG. 39 is a flow diagram that describes steps in a method in accordance with one described embodiment.
- Various described embodiments concern an application program interface associated with a development system.
- the interface is exposed to a media processing application to enable a user to dynamically generate complex media processing tasks, e.g., editing projects.
- aspects of the invention are developed within the general context of computer-executable instructions, such as program modules, being executed by one or more conventional computers.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- FIG. 2 illustrates an example of a suitable computing environment 200 on which the system and related methods for processing media content may be implemented.
- computing environment 200 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the media processing system. Neither should the computing environment 200 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing environment 200 .
- the media processing system is operational 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 with the media processing system include, but are not limited to, personal computers, server computers, thin clients, thick clients, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
- the system and related methods for processing media content may well be described in the general context of computer-executable instructions, such as program modules, being executed by a computer.
- program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
- the media processing system may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote computer storage media including memory storage devices.
- computing system 200 comprising one or more processors or processing units 202 , a system memory 204 , and a bus 206 that couples various system components including the system memory 204 to the processor 202 .
- Bus 206 is intended to represent one or more of any of several 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 include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) buss also known as Mezzanine bus.
- Computer 200 typically includes a variety of computer readable media. Such media may be any available media that is locally and/or remotely accessible by computer 200 , and it includes both volatile and non-volatile media, removable and non-removable media.
- the system memory 204 includes computer readable media in the form of volatile, such as random access memory (RAM) 210 , and/or non-volatile memory, such as read only memory (ROM) 208 .
- RAM random access memory
- ROM read only memory
- a basic input/output system (BIOS) 212 containing the basic routines that help to transfer information between elements within computer 200 , such as during start-up, is stored in ROM 208 .
- BIOS basic input/output system
- RAM 210 typically contains data and/or program modules that are immediately accessible to and/or presently be operated on by processing unit(s) 202 .
- Computer 200 may further include other removable/non-removable, volatile/non-volatile computer storage media.
- FIG. 2 illustrates a hard disk drive 228 for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”), a magnetic disk drive 230 for reading from and writing to a removable, non-volatile magnetic disk 232 (e.g., a “floppy disk”), and an optical disk drive 234 for reading from or writing to a removable, non-volatile optical disk 236 such as a CD-ROM, DVD-ROM or other optical media.
- the hard disk drive 228 , magnetic disk drive 230 , and optical disk drive 234 are each connected to bus 206 by one or more interfaces 226 .
- the drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules, and other data for computer 200 .
- the exemplary environment described herein employs a hard disk 228 , a removable magnetic disk 232 and a removable optical disk 236 , it should be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROM), and the like, may also be used in the exemplary operating environment.
- a number of program modules may be stored on the hard disk 228 , magnetic disk 232 , optical disk 236 , ROM 208 , or RAM 210 , including, by way of example, and not limitation, an operating system 214 , one or more application programs 216 (e.g., multimedia application program 224 ), other program modules 218 , and program data 220 .
- operating system 214 includes an application program interface embodied as a render engine 222 .
- render engine 222 is exposed to higher-level applications (e.g., 216 ) to automatically assemble filter graphs in support of user-defined development projects, e.g., media processing projects.
- render engine 222 utilizes a scalable, dynamically reconfigurable matrix switch to reduce filter graph complexity, thereby reducing the computational and memory resources required to complete a development project.
- Various aspects of the innovative media processing system represented by a computer 200 implementing the innovative render engine 222 will be developed further, below.
- a user may enter commands and information into computer 200 through input devices such as keyboard 238 and pointing device 240 (such as a “mouse”).
- Other input devices may include a audio/video input device(s) 253 , a microphone, joystick, game pad, satellite dish, serial port, scanner, or the like (not shown).
- input interface(s) 242 is coupled to bus 206 , 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 256 or other type of display device is also connected to bus 206 via an interface, such as a video adapter 244 .
- a monitor or other type of display device is also connected to bus 206 via an interface, such as a video adapter 244 .
- personal computers typically include other peripheral output devices (not shown), such as speakers and printers, which may be connected through output peripheral interface 246 .
- Computer 200 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 250 .
- Remote computer 250 may include many or all of the elements and features described herein relative to computer 200 including, for example, render engine 222 and one or more development applications 216 utilizing the resources of render engine 222 .
- computing system 200 is communicatively coupled to remote devices (e.g., remote computer 250 ) through a local area network (LAN) 251 and a general wide area network (WAN) 252 .
- remote devices e.g., remote computer 250
- 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 200 When used in a LAN networking environment, the computer 200 is connected to LAN 251 through a suitable network interface or adapter 248 . When used in a WAN networking environment, the computer 200 typically includes a modem 254 or other means for establishing communications over the WAN 252 .
- the modem 254 which may be internal or external, may be connected to the system bus 206 via the user input interface 242 , or other appropriate mechanism.
- FIG. 2 illustrates remote application programs 216 as residing on a memory device of remote computer 250 . It will be appreciated that the network connections shown and described are exemplary and other means of establishing a communications link between the computers may be used.
- development system 300 is shown comprising one or more application program(s) 216 coupled to render engine 222 via an appropriate communications interface 302 .
- application program(s) 216 are intended to represent any of a wide variety of applications which may benefit from use of render engine 222 such as, for example a media processing application 224 .
- the communications interface 302 is intended to represent any of a number of alternate interfaces used by operating systems to expose application program interface(s) to applications.
- interface 302 is a component object model (COM) interface, as used by operating systems offered by Microsoft Corporation.
- COM interface 302 provides a means by which the features of the render engine 222 , to be more fully below, are exposed to an application program 216 .
- render engine 222 is presented comprising source filter(s) 304 A–N, transform filter(s) 306 A–N and render filter 310 , coupled together utilizing virtual pins to facilitate a user-defined media processing project.
- the filters of system 300 are similar to the filters exposed in conventional media processing systems. According to one implementation, however, filters are not coupled via such interface pins. Rather, alternate implementations are envisioned wherein individual filters (implemented as objects) make calls to other objects, under the control of the render engine 222 , for the desired input.
- render engine 222 exposes a scalable, dynamically reconfigurable matrix switch filter 308 , automatically generated and dynamically configured by render engine 222 to reduce the computational and memory resource requirements often associated with development projects.
- the pins are application interface(s) designed to communicatively couple other objects (e.g., filters).
- an application communicates with an instance of render engine 222 when the application 216 wants to process streaming media content.
- Render engine 222 selectively invokes and controls an instance of filter graph manager (not shown) to automatically create a filter graph by invoking the appropriate filters (e.g., source, transform and rendering).
- filters e.g., source, transform and rendering
- the communication of media content between filters is achieved by either (1) coupling virtual output pins of one filter to the virtual input pins of requesting filter; or (2) by scheduling object calls between appropriate filters to communicate the requested information.
- source filter 304 receives streaming data from the invoking application or an external source (not shown).
- transform filter(s) 306 take the media content and processes it in some manner, before passing it along to render filter 310 .
- transform filter(s) 306 are intended to represent a wide variety of processing methods or applications that can be performed on media content.
- transform filter(s) 306 may well include a splitter, a decoder, a sizing filter, a transition filter, an effects filter, and the like. The function of each of these filters is described more fully in the Griffiths application, introduced above, and generally incorporated herein by reference.
- the transition filter is utilized by render engine 222 to transition the rendered output from a first source to a second source.
- the effect filter is selectively invoked to introduce a particular effect (e.g., fade, wipe, audio distortion, etc.) to a media stream.
- matrix switch filter 308 selectively passes media content from one or more of a scalable plurality of input(s) to a scalable plurality of output(s). Moreover, matrix switch 308 also supports implementation of a cascaded architecture utilizing feedback paths, i.e., wherein transform filters 306 B, 306 C, etc. coupled to the output of matrix switch 308 are dynamically coupled to one or more of the scalable plurality of matrix switch input(s).
- a cascaded architecture utilizing feedback paths, i.e., wherein transform filters 306 B, 306 C, etc. coupled to the output of matrix switch 308 are dynamically coupled to one or more of the scalable plurality of matrix switch input(s).
- render filter 310 typically provides the necessary interface to a hardware device, or other location that accepts the renderer output format, such as a memory or disk file, or a rendering device.
- FIG. 4 is a graphical illustration of an example software-enabled matrix switch 308 , according to one example embodiment of the present invention.
- the matrix switch 308 is comprised of a scalable plurality of input(s) 402 and a scalable plurality of output(s) 404 , wherein any one or more of the input(s) 402 may be iteratively coupled to any one or more of the output(s) 404 , based on the content of the matrix switch programming grid 406 , automatically generated by render engine 222 .
- switch matrix 308 is programmed by render engine 222 to dynamically generate object calls to communicate media content between filters.
- matrix switch 308 includes a plurality of input/output (I/O) buffers 408 , as well as means for maintaining source, or media time 410 and/or timeline, or project time 412 . It is to be appreciated, however, that in alternate implementations matrix switch 308 does not maintain both source and project times, relying on an upstream filter to convert between these times. As will be developed more fully below, matrix switch 308 dynamically couples one or more of the scalable plurality of inputs 402 to one or more of the scalable plurality of outputs 404 based, at least in part, on the media time 410 and/or the project time 412 and the content of matrix switch programming grid 406 .
- I/O input/output
- matrix switch 308 may be characterized as time-aware, supporting such advanced editing features as searching/seeking to a particular point (e.g., media time) in the media content, facilitating an innovative buffering process utilizing I/O buffers 408 to facilitate look-ahead processing of media content, and the like.
- time-aware supporting such advanced editing features as searching/seeking to a particular point (e.g., media time) in the media content, facilitating an innovative buffering process utilizing I/O buffers 408 to facilitate look-ahead processing of media content, and the like.
- the inputs 402 and outputs 404 of matrix switch 308 are interfaces which facilitate the time-sensitive routing of data (e.g., media content) in accordance with a user-defined development project.
- Matrix switch 308 has a scalable plurality of inputs 402 and outputs 404 , meaning that the number of inputs 402 and outputs 404 are individually generated to satisfy a given editing project.
- each of the inputs/outputs (I/O) has an associated transfer buffer (preferably shared with an adjacent filter) to communicate media content
- the scalability of the input/output serves to reduce the overall buffer memory consumed by an editing project.
- output 1 is generally reserved as a primary output, e.g., coupled to a rendering filter (not shown).
- matrix switch 308 attempts to be the allocator, or manager of the buffer associated with the I/O(s) shared with adjacent filters.
- One reason is to ensure that all of the buffers are of the same size and share common attributes so that a buffer associated with any input 402 may be shared with any output 404 , thereby reducing the need to copy memory contents between individual buffers associated with such inputs/outputs. If matrix switch 308 cannot be an allocator for a given output ( 404 ), communication from an input ( 402 ) to that output is performed using a conventional memory copy operation between the individual buffers associated with the select input/output.
- the matrix switch programming grid 406 is dynamically generated by render engine 222 based, at least in part, on the user-defined development project.
- render engine 222 invokes an instance of filter graph manager to assembles a tree structure of an editing project, noting dependencies between source, filters and time to dynamically generate the programming grid 406 .
- a data structure comprising an example programming grid 406 is introduced with reference to FIG. 5 , below.
- programming grid 406 is depicted as a two-dimensional data structure comprising a column along the y-axis 502 of the grid denoting input pins associated with a content chain (e.g., series of filters to process media content) of the development project.
- the top row along the x-axis 504 of the data structure denotes project time.
- the body 506 of the grid 406 is populated with output pin assignments, denoting which input pin is coupled to which output pin during execution of the development project.
- render engine 222 dynamically generates and facilitates matrix switch 308 .
- data structures of greater or lesser complexity may well be used in support of the programming grid 406 without deviating from the spirit and scope of the present invention.
- matrix switch 308 is also depicted with a plurality of input/output buffers 408 , shared among all of the input(s)/ouptut(s) ( 402 , 404 ) to facilitate advanced processing features. That is, while not required to implement the core features of matrix switch 308 , I/O buffers 408 facilitate a number of innovative performance enhancing features to improve the performance (or at least the user's perception of performance) of the processing system, thereby providing an improved user experience. According to one implementation, I/O buffers 408 are separate from the buffers assigned to each individual input and output pin in support of communication through the switch. According to one implementation, I/O buffers 408 are primarily used to foster look-ahead processing of the project.
- Implementation of the shared I/O buffers 408 enable filter graph manager to execute tasks ahead of schedule and buffer this content in the shared I/O buffers 408 until required.
- the processing system can continue to supply content from the buffers 408 , while the system completes execution of the CPU-intensive tasks. If enough shared buffer space is provided, the user should never know that some tasks were not performed in real-time.
- shared buffers 408 are dynamically split into two groups by render engine 222 , a first group supports the input(s) 402 , while a second (often smaller) group is used in support of a primary output (e.g., output pin 1 ) to facilitate a second, independent output processing thread.
- a primary output e.g., output pin 1
- the filter graph is time-aware in the sense that media (source) time and project execution time are maintained.
- matrix switch 308 maintains at least the project clock, while an upstream filter maintains the source time, converting between source and project time for all downstream filters (i.e., including the matrix switch 308 ).
- the frame rate converter filter of a filter graph is responsible for converting source time to project time, and vice versa, i.e., supporting random seeks, etc.
- matrix switch 308 utilizes an integrated set of clock(s) to independently maintain project and media times.
- FIG. 6 graphically illustrates an example filter graph implementation incorporating the innovative matrix switch 308 .
- filter graph 600 is generated by render engine 222 in response to a user defined development project.
- filter graph 600 is shown incorporating a matrix switch filter 308 to recursively route the pre-processed content (e.g., through filters 602 , 606 , 610 , 614 and 618 , described more fully below) through a user-defined number of transform filters including, for example, transition filter(s) 620 and effects filter(s) 622 .
- the scalable nature of matrix switch filter 308 facilitates such iterative processing for any number of content threads, tracks or compositions.
- a matrix switch filter 308 can only process one type of media content, of the same size and at the same frame-rate (video) or modulation type/schema (audio).
- FIG. 6 is depicted comprising pre-processing filters with a parser filter 606 to separate, independent content type(s) (e.g., audio content and video content), wherein one of the media types would be processed along a different path including a separate instance of matrix switch 308 .
- processing multimedia content including audio and video would utilize two (2) matrix switch filters 308 , one dedicated to audio processing (not shown) and one dedicated to video processing.
- multiple switch filters 308 could not be used (e.g., two each for audio and video) for each content type in alternate implementations.
- a matrix switch 308 that accepts multiple media types could well be used without deviating from the spirit and scope of the present invention.
- filter graph 600 includes a decoder filter 610 to decode the media content.
- Resize filter 614 is employed when matrix switch 308 is to receive content from multiple sources, ensuring that the size of the received content is the same, regardless of the source.
- resize filter 614 is selectively employed in video processing paths to adjust the media size of content from one or more sources to a user-defined level.
- resizer filter 614 adjusts the media size to the largest size provided by any one or more media sources.
- render engine 222 identifies the largest required media size (e.g., 1270 ⁇ 1040 video pixels per frame) and, for any content source not providing content at this size, the content is modified (e.g., stretched, packed, etc.) to fill this size requirement.
- the frame rate converter (FRC) and pack filter 618 ensures that video content from the multiple sources is arriving at the same frame rate, e.g., ten (10) frames per second. As introduced above, the FRC also maintains the distinction between source time and project time.
- filter graph 600 is depicted utilizing a single, negotiated buffer 604 , 608 , 612 , 616 , etc. between adjacent filters.
- render engine 222 reduces the buffer memory requirements in support of a development project.
- render engine 222 utilizes a cascade architecture, recursively passing media content through the matrix switch 308 to apply to the transform filter(s) (e.g., 620 , 622 , etc.) to complete the execution of the development project.
- the transform filter(s) e.g., 620 , 622 , etc.
- FIG. 7 a flow chart of an example method for generating a filter graph is presented, in accordance with one aspect of the present invention.
- the method 700 begins with block 702 wherein render engine 222 receives an indication to generate a filter graph representing a user-defined development project (e.g., a media editing project).
- the indication is received from an application 224 via COM interface(s) 302 .
- render engine 222 facilitates generation of the editing project, identifying the number and type of media sources selected by the user.
- filter graph manger 222 exposes source, transform and rendering filter(s) to effect a user defined media processing project, while beginning to establish a programming grid 406 for the matrix switch filter 308 .
- render engine 222 completes the programming grid 406 for matrix switch 308 , identifying which inputs 402 are to be coupled to which outputs 404 at particular project times.
- render engine 222 Based, at least in part, on the programming grid 406 render engine 222 generates a matrix switch filter 308 with an appropriate number of input 402 and output 404 pins to effect the project, and assembles the filter graph, block 710 .
- the render engine 222 instructs the filters populating the filter graph to (re)negotiate buffer memory requirements between filters. That is, adjacent filters attempt to negotiate a size and attribute standard so that a single buffer can be utilized to couple each an output pin of one filter to an input pin of a downstream filter.
- An example implementation of the buffer negotiation process of block 712 is presented in greater detail with reference to FIG. 8 .
- matrix switch 308 identifies the maximum buffer requirements for any filter coupled to any of its pins (input 402 and/or output 404 ), block 802 .
- the maximum buffer requirements are defined as the lowest common multiple of buffer alignment requirements, and the maximum of all the pre-fix requirements of the filter buffers.
- matrix switch 308 selectively removes one or more existing filter connections to adjacent filters. Matrix switch 308 then reconnects all of its pins to adjacent filters using a common buffer size between each of the pins, block 806 .
- matrix switch 308 negotiates to be the allocator for all of its pins ( 402 , 404 ). If the matrix switch 308 cannot, for whatever reason, be the allocator for any of its input pins 402 minimal loss to performance is encountered, as the buffer associated with the input pin will still be compatible with any downstream filter (i.e., coupled to an output pin) and, thus, the buffer can still be passed to the downstream filter without requiring a memory copy operation. If, however, matrix switch 308 cannot be an allocator for one of its output pins 404 , media content must then be transferred to at least the downstream filter associated with that output pin using a memory copy operation, block 810 .
- render engine 222 restores the connection in remaining filters using negotiated buffer requirements emanating from the matrix switch filter 308 buffer negotiations. Once the connections throughout the filter graph have been reconnected, the process continues with block 714 of FIG. 7 .
- render engine 222 is ready to implement a user's instruction to execute the media processing project.
- the matrix switch described above is quite useful in that it allows multiple inputs to be directed to multiple outputs at any one time. These input can compete for a matrix switch output.
- the embodiments described below permit these competing inputs to be organized so that the inputs smoothly flow through the matrix switch to provide a desired output.
- inventive programming techniques are described in connection with the matrix switch as such is employed in the context of multi-media editing projects, it should be clearly understood that application of the inventive programming techniques and structures should not be so limited only to application in the field of multi-media editing projects or, for that matter, multi-media applications or data streams. Accordingly, the principles about to be discussed can be applied to other fields of endeavor in which multiple inputs can be characterized as competing for a particular output during a common time period.
- the primary output of the matrix switch is a data stream that defines an editing project that has been created by a user.
- this editing project can include multiple different sources that are combined in any number of different ways, and the sources that make up a project can comprise audio sources, video sources, or both.
- the organization of the inputs and outputs of the matrix switch are made manageable, in the examples described below, by a data structure that permits the matrix switch to be programmed.
- FIG. 9 shows an overview of a process that takes a user-defined editing project and renders from it a data structure that can be used to program the matrix switch.
- a user-defined editing project is shown generally at 900 .
- a user can select from a number of different multimedia clips that they can then assemble into a unique presentation.
- Each individual clip represents a source of digital data or a source stream (e.g., multimedia content).
- Projects can include one or more sources 902 .
- sources 902 can be used in defining their project.
- a user can operate on sources in different ways.
- video sources can have transitions 904 and effects 906 applied on them.
- a transition object is a way to change between two or more sources. As discussed above, a transition essentially receives as input, two or more streams, operates on them in some way, and produces a single output stream.
- An exemplary transition can comprise, for example, fading from one source to another.
- An effect object can operate on a single source or on a composite of sources.
- An effect essentially receives a single input stream, operates on it in some way, and produces a single output stream.
- An exemplary effect can comprise a black-and-white effect in which a video stream that is configured for presentation in color format is rendered into a video stream that is configured for presentation in black and white format.
- effect object 906 may well perform multiple effect tasks. That is, in accordance with one implementation, an effect object (e.g., 906 ) may actually perform multiple tasks on the received input stream, wherein said tasks would require multiple effect filters in a conventional filter graph system.
- An exemplary user interface 908 is shown and represents what a user might see when they produce a multimedia project with software executing on a computer.
- the user has selected three sources A, B, and C, and has assembled the sources into a project timeline.
- the project timeline defines when the individual sources are to be rendered, as well as when any transitions and/or effects are to occur.
- a track can contain one or more sources or source clips. If a track contains more than one source clip, the source clips cannot overlap. If source clips are to overlap (e.g. fading from one source to another, or having one source obscure another), then multiple tracks are used. A track can thus logically represent a layer on which sequential video is produced.
- User interface 908 illustrates a project that utilizes three tracks, each of which contains a different source. In this particular project source A will show for a period of time. At a defined time in the presentation, source A is obscured by source B. At some later time, source B transitions to source C.
- the user-defined editing project 900 is translated into a data structure 910 that represents the project.
- this data structure 910 comprises a tree structure. It is to be understood, however, that other data structures could be used. The use of tree structures to represent editing projects is well-known and is not described here in any additional detail.
- data structure 912 comprises a grid from which the matrix switch can be programmed. It is to be understood and appreciated that other data structures and techniques could, however, be used to program the matrix switch without departing from the spirit and scope of the claimed subject matter.
- the processing that takes place to define data structures 910 and 912 can take place using any suitable hardware, software, firmware, or combination thereof. In the examples set forth below, the processing takes place utilizing software in the form of a video editing software package that is executable on a general purpose computer.
- FIG. 10 shows project 908 from FIG. 9 in a little additional detail.
- a time line containing numbers 0–16 is provided adjacent the project to indicate when particular sources are to be seen and when transitions and effects (when present) are to occur.
- a priority exists for video portions of the project such that as one proceeds from top to bottom, the priority increases.
- source A has the lowest priority followed by source B and source C.
- each of the sources and the transition can be characterized by where it is to be routed at any given time.
- FIG. 11 shows an exemplary matrix switch 1100 that can be utilized in the presentation of the user's project.
- Matrix switch 1100 comprises multiple inputs and multiple outputs. Recall that a characteristic of the matrix switch 1100 is that any of the inputs can be routed to any of the outputs at any given time.
- a transition element 1102 is provided and represents the transition that is to occur between sources B and C. Notice that the matrix switch includes four inputs numbered 0 – 3 and three outputs numbered 0 – 2 . Inputs 0 – 2 correspond respectively to sources A–C, while input 3 corresponds to the output of the transition element 1102 . Output 0 corresponds to the switch's primary output, while outputs 1 and 2 are routed to the transition element 1102 .
- the information that is contained in the table above is the information that is utilized to program the matrix switch.
- the discussion presented below describes but one implementation in which the information contained in the above table can be derived from the user's project time line.
- the software that comprises a part of their editing software builds a data structure that represents the project. In the FIG. 9 overview, this was data structure 910 .
- the software also builds and configures a matrix switch that is to be used to define the output stream that embodies the project. Building and configuring the matrix switch can include building the appropriate graphs (e.g., a collection of software objects, or filters) that are associated with each of the sources and associating those graphs with the correct inputs of the matrix switch.
- building and configuring the matrix switch can also include obtaining and incorporating additional appropriate filters with the matrix switch, e.g. filters for transitions, effects, and mixing (for audio streams). This will become more apparent below.
- FIG. 12 shows a graphic representation of an exemplary data structure 1200 that represents the project of FIG. 10 .
- the data structure comprises a traditional hierarchical tree structure. Any suitable data structure can, however, be utilized.
- the top node 1202 constitutes a group node.
- a group encapsulates a type of media.
- the media type comprises video.
- Another media type is audio.
- the group node can have child nodes that are either tracks or composites.
- three track nodes 1204 , 1206 , and 1208 are shown. Recall that each track can have one or more sources. If a track comprises more than one source, the sources cannot overlap. Here, all of the sources (A, B, and C) overlap. Hence, three different tracks are utilized for the sources.
- a transition object in this example, defines a two-input/one output operation. When applied to a track or a composition (discussed below in more detail), the transition object will operate between the track to which it has been applied, and any objects that are beneath it in priority and at the same level in the tree.
- a “tree level” has a common depth within the tree and belongs to the same parent. Accordingly, in this example, the transition 1210 will operate on a source to the left of the track on which source C resides, and beneath it in priority, i.e. source B. If the transition is applied to any object that has nothing beneath it in the tree, it will transition from blackness (and/or silence if audio is included).
- a rendering engine processes the data structure to provide another data structure that is utilized to program the matrix switch.
- this additional data structure is represented at 912 .
- This meta information is utilized to build the data structure that is, in turn, utilized to program the matrix switch.
- FIGS. 13–18 represent a process through which the inventive grid is built.
- the x axis represents time
- the y axis represents layers in terms of priority that go from lowest (at the top of the grid) to highest (at the bottom of the grid). Every row in the grid represents the video layer. Additionally, entries made within the grid represent output pins of the matrix switch. This will become apparent below.
- the way that the grid is built in this example is that the rendering engine does a traversal operation on the tree 1200 .
- the traversal operation is known as a “depth-first, left-to-right” traversal. This operation will layerize the nodes so that the leftmost track or source has the lowest priority and so on.
- the first node encountered is node 1204 which is associated with source A. This is the lowest priority track or source.
- a first row is defined for the grid and is associated with source A. After the first grid row is defined, a grid entry is made and represents the time period for which source A desires to be routed to the matrix switch's primary output.
- the traversal encounters node 1206 ( FIG. 12 ) which is associated with source B. A second row is thus defined for the grid and is associated with source B. After the second grid row is defined, a grid entry is made and represents the time period for which source B desires to be routed to the matrix switch's primary output.
- the traversal encounters node 1208 ( FIG. 12 ) which is associated with source C.
- node 1208 FIG. 12
- a third row is thus defined for the grid and is associated with source C. After the third row is defined, a grid entry is made and represents the time period for which source C desires to be routed to the matrix switch's primary output.
- the transition is a special grid entry. Recall that the transition is programmed to operate on two inputs and provide a single output. Accordingly, starting at the transition entry in the grid and working backward, each of the entries corresponding to the same tree level are examined to ascertain whether they contain entries that indicate that they want to be routed to the output during the same time that the transition is to be routed to the output. If grid entries are found that conflict with the transition's grid entry, the conflicting grid entry is changed to a value to corresponds to an output pin that serves as an input to the transition element 1102 ( FIG. 11 ).
- FIG. 17 shows the state of the grid at this point in the processing.
- a pruning function is implemented which removes any other lower priority entry that is contending for the output with a higher priority entry.
- FIG. 18 shows the grid with a cross-hatched area that signifies that portion of A's grid entry that has been removed.
- the grid is in a state in which it can be used to program the matrix switch.
- the left side entries—A, B, C, and TRANS represent input pin numbers 0 , 1 , 2 , and 3 (as shown) respectively, on the matrix switch shown in FIG. 11 .
- the output pin numbers of the matrix switch are designated at 0 , 1 , and 2 both on the switch in FIG. 11 and within the grid in FIG. 18 .
- matrix switch 308 has its ability to seek to any point in a source, without having to process the intervening content serially through the filter. Rather, matrix switch 308 identifies an appropriate transition point and dumps at least a subset of the intervening content, and continues processing from the seeked point in the content.
- render engine 222 may take into account certain performance characteristics of the media processing system which will execute the user-defined media processing project.
- render engine 222 may access and analyze the system registry of the operating system, for example, to ascertain the performance characteristics of hardware and/or software elements of the computing system implementing the media processing system, and adjust the filter graph construction to improve the perceived performance of the media processing system by the user.
- matrix switch 308 will recognize that it is not receiving media content at the appropriate project time, and may skip certain sections of the project in an effort to “catch-up” and continue the remainder of the project in real time. According to one implementation, when matrix switch 308 detects such a lag in processing, it will analyze the degree of the lag and issue a seek command to the source (through the source processing chain) to a future point in the project, where processing continues without processing any further content prior to the seeked point.
- the processing described above first builds a data structure (i.e. data structure 1200 in FIG. 12 ) that represents the project in hierarchical space, and then uses this data structure to define or create another data structure that can be utilized to program the matrix switch.
- a data structure i.e. data structure 1200 in FIG. 12
- FIG. 19 is a flow diagram that describes steps in a method in accordance with the described embodiment.
- the method can be implemented in any suitable hardware, software, firmware, or combination thereof. In the illustrated and described embodiment, the method is implemented in software.
- Step 1900 provides a matrix switch.
- An exemplary matrix switch is described above.
- Step 1902 defines a first data structure that represents the editing project. Any suitable data structure can be used, as will be apparent to those of skill in the art.
- the data structure comprises a hierarchical tree structure having nodes that can represent tracks (having one or more sources), composites, transitions and effects.
- Step 1904 processes the first data structure to provide a second data structure that is configured to program the matrix switch. Any suitable data structure can be utilized to implement the second data structure. In the illustrated and described embodiment, a grid structure is utilized. Exemplary processing techniques for processing the first data structure to provide the second data structure are described above.
- Step 1906 then uses the second data structure to program the matrix switch.
- FIG. 21 shows an exemplary data structure in the form of a hierarchical tree 2100 that represents project 2000 .
- the data structure includes three tracks, each of which contains one of the sources.
- the sources are arranged in the tree structure in the order of their priority, starting with the lowest priority source on the left and proceeding to the right.
- Fx effect
- An effect in this example, is a one-input/one-output object that is applied to one object—in this case source B.
- the effect looks for any one object beneath it in priority that has a desire to be routed to the primary output of the matrix switch at the same time.
- it finds a suitable object it redirects that object's output from the matrix switch's primary output to an output associated with the effect.
- the rendering engine has incorporated entries in the grid corresponding to sources A, B and the effect. It has done so by traversing the tree 2100 in the above-described way.
- the effect has already looked for an object beneath it in priority that is competing for the primary output of the matrix switch. It found an entry for source B and then redirected B's grid entry to a matrix switch output pin that corresponds to the effect—here output pin 1 .
- FIG. 23 shows a completed grid 2200 .
- the grid is examined to find two entries, lower in priority than the transition and located at the same tree level as the transition, that compete for the primary output of the matrix switch.
- These grid entries are thus redirected to output pins of the matrix switch 308 that correspond to the transition—here pins 2 and 3 as indicated.
- FIG. 24 shows the resultant matrix switch that has been built and configured as the grid was being processed above. At this point, the grid can be used to program the matrix switch. From the grid picture, it is very easy to see how the matrix switch 308 is going to be programmed.
- the render engine 222 traverses the tree structure that represents a project, it also builds the appropriate graphs and adds the appropriate filters and graphs to the matrix switch.
- the software builds the appropriate graphs (i.e. collection of linked filters), and associates those filters with an input of the matrix switch.
- the render engine 222 encounters an effect node in the tree, the software obtains an effect object or filter and associates it with the appropriate output of the matrix switch.
- traversal of the tree structure representing the project also enables the software to construct the appropriate graphs and obtain the appropriate objects and associate those items with the appropriate inputs/outputs of the matrix switch 308 .
- an appropriate matrix switch has been constructed, and the programming (i.e. timing) of inputs to outputs for the matrix switch has been completed.
- FIG. 25 shows a project that has such a blank incorporated therein. If there is such a blank left in a project, the software is configured to obtain a “black” source and associate the source with the matrix switch at the appropriate input pin. The grid is then configured when it is built to route the black source to the output at the appropriate times and fade from the black (and silent) source to the next source at the appropriate times. The black source can also be used if there is a transition placed on a source for which there is no additional source from which to transition.
- sources comprising video streams were discussed. In those examples, at any one time, only two video streams were combined into one video stream. However, each project can, and usually does contain an audio component. Alternately, a project can contain only an audio component. The audio component can typically comprise a number of different audio streams that are combined. The discussion below sets forth but one way of processing and combining audio streams.
- FIG. 26 shows an exemplary project.
- FIG. 27 shows the grid for this project at 2700 . Since we are dealing with this composition now, all of the effects and transitions including the audio mixing are only allowed to affect things in this composition. Thus, there is the concept of a boundary 2702 that prevents any actions or operations in this composition from affecting any other grid entries. Note that there are other entries in the grid and that the presently-illustrated entries represent only those portions of the project that relate to the audio mixing function.
- Grid 2700 is essentially set up in a manner similar to that described above with respect to the video projects. That is, for each track, a row is added to the grid and a grid entry is made for the time period during which the source on that track desires to be routed to the primary output of the matrix switch. In the present example, grid entries are made for sources A–E. Next, in the same way that a transition or effect was allocated a row in the grid, a “mix” element is allocated a row in the grid as shown and a grid entry is made to indicate that the mix element desires to be routed to the primary output of the matrix switch for a period of time during which two or more sources compete for the matrix switch's primary output. Note that in this embodiment, allocation of a grid row for the mix element can be implied.
- overlapping sources simply result in playing the higher priority source (unless the user defines a transition between them)
- overlapping sources are treated as an implicit request to mix them.
- the mix element is allocated a grid row any time there are two or more overlapping sources.
- the grid is processed to redirect any conflicting source entries to matrix switch output pins that correspond to the mix element.
- redirection of the grid entries starts with pin 3 and proceeds through to pin 7 .
- the corresponding matrix switch is shown in FIG. 28 . Notice that all of the sources are now redirected through the mix element which is a multi–input/one output element. The mix element's output is fed back around and becomes input pin 15 of the matrix switch. All of the programming of the matrix switch is now reflected in the grid 2700 . Specifically, for the indicated time period in the grid, each of the sources is routed to the mix element which, in turn, mixes the appropriate audio streams and presents them to the primary output pin 0 of the matrix switch.
- bounce tracks essentially involves processing various video layers (i.e. tracks), writing or moving the processed layers or tracks to another location, and retrieving the processed layers when later needed for additional processing with other layers or tracks. This type of processing can be slow and inefficient.
- a composite or composition can be considered as a representation of an editing project as a single track. Recall that editing projects can have one or more tracks, and each track can be associated with one or more sources that can have effects applied on them or transitions between them. In addition, compositions can be nested inside one another.
- compositions can be much more complicated than the illustrated composition, which is provided for exemplary purposes only.
- Compositions are useful because they allow the grouping of a particular set of operations on one or more tracks. The operation set is performed on the grouping, and does not affect tracks that are not within the grouping.
- a composition is similar in principle to a mathematical parenthesis. Those operations that appear within the parenthesis are carried out in conjunction with those operations that are intended to operate of the subject matter of the parenthesis. The operations within the parenthesis do not affect tracks that do not appear within the parenthesis.
- FIG. 30 shows an exemplary data structure 3000 in the form of a hierarchical tree structure.
- group node 3002 includes two children—track node 3004 and composite node 3006 .
- Track node 3004 is associated with source A.
- Composite node 3006 includes two children—track nodes 3008 and 3010 that are respectively associated with sources B ( 3008 a ) and C ( 3010 a ).
- a transition T 2 ( 3012 ) is applied on source C and a transition T 1 ( 3014 ) is applied on composition 3006 .
- data structure 3000 is processed to provide a second data structure that is configured to program the matrix switch.
- a matrix switch is being built and configured at the same time.
- the second data structure comprises a grid structure that is assembled in much the same way as was described above. There are, however, some differences and, for purposes of understanding, the complete evolution of the grid structure is described here. In the discussion that follows, the completed matrix switch is shown in FIG. 38 .
- the rendering engine initiates the depth-first, left-to-right traversal of data structure 3000 , the first node it encounters is track node 3004 which is associated with source A.
- track node 3004 which is associated with source A.
- a first row of the grid is defined and a grid entry is made that represents the time period for which source A desires to be routed to the matrix switch's primary output pin.
- FIG. 31 shows the state of a grid 3100 after this first processing step.
- the composite node is associated with two tracks—track 3008 and track 3010 .
- Track 3008 is associated with source B. Accordingly, a second row of the grid is defined and a grid entry is made that represents the time period for which source B desires to be routed to the matrix switch's primary output pin.
- B is a member of a composition
- meta-information is contained in the grid that indicates that this grid row defines one boundary of the composition. This meta-information is graphically depicted with a bracket that appears to the left of the grid row.
- FIG. 32 shows the state of grid 3100 after this processing step.
- the traversal of data structure 3000 encounters node 3010 which is associated with source C.
- node 3010 which is associated with source C.
- a third row of the grid is added and a grid entry is made that represents the time period for which source C desires to be routed to the matrix switch's primary output pin.
- FIG. 33 shows the state of grid 3100 after this processing step. Notice that the bracket designating the composition now encompasses the grid row associated with source C. The traversal next encounters node 3012 which is the node associated with the second transition T 2 . Thus, as in the above example, a grid row is added for the transition and a grid entry is made that represents the time period for which the transition desires to be routed to the matrix switch's primary output pin.
- FIG. 34 shows the state of grid 3100 after this processing step. Notice that the bracket designating the composition is now completed and encompasses grid row entries that correspond to sources B and C and the transition between them. Recall from the examples above that a transition, in this example, is programmed to operate on two inputs and provide a single output. In this instance, and because the transition occurs within a composition, the transition is constrained by a rule that does not allow it to operate on any elements outside of the composition. Thus, starting at the transition entry and working backward through the grid, entries at the same tree level and within the composition (as designated by the bracket) are examined to ascertain whether they contain entries that indicate that they want to be routed to the output during the same time that the transition is to be routed to the output.
- both of the entries for sources B and C have portions that conflict with the transition's entry. Accordingly, those portions of the grid entries for sources B and C are redirected or changed to correspond to output pins that are associated with a transition element that corresponds to transition T 2 .
- FIG. 35 shows the state of grid 3100 after this processing step.
- the traversal next encounters node 3014 which is the node that is associated with the transition that occurs between source A and composition 2902 ( FIG. 29 ).
- Processing of this transition is similar to processing of the transition immediately above except for the fact that the transition does not occur within the composition. Because the transition occurs between the composition and another source, one of the inputs for the transition will be the composition, and one of the inputs will be source A (which is outside of the composition). Thus, a grid row is added for this transition and a grid entry is made that represents the time period for which the transition desires to be routed to the matrix switch's primary output pin.
- FIG. 36 shows the state of grid 3100 after this processing step.
- the grid is examined for entries that conflict with the entry for transition T 1 .
- One conflicting grid entry is found for the row that corresponds to source B (inside the composition) and one that corresponds to source A (outside the composition). Accordingly, those portions of the grid row that conflict with transition T 1 are changed or redirected to have values that are associated with output pins of the matrix switch that are themselves associated with a transition element T 1 . In this example, redirection causes an entry of “3” and “4” to be inserted as shown.
- FIG. 37 shows the state of grid 3100 after this processing step. If necessary, a pruning operation would further ensure that the grid has no competing entries for the primary output of the matrix switch.
- the associated input pin numbers of the matrix switch are shown to the left of grid 3100 .
- FIG. 38 shows a suitably configured matrix switch that has been build in accordance with the processing described above. Recall that, as data structure 3000 ( FIG. 30 ) is processed by the rendering engine, a matrix switch is built and configured in parallel with the building and processing of the grid structure that is utilized to program the matrix switch. From the matrix switch and grid 3100 of FIG. 37 , the programming of the switch can be easily ascertained.
- FIG. 38 a shows an exemplary data structure that represents a project that illustrates the usefulness of composites.
- the project can mathematically be represented as follows: (Fx-noisy (A Tx-Blend B)) Tx-Blend C
- an effect is applied to A blended with B, the result of which is applied to a blend with C.
- the composite in this example allows the grouping of the things beneath it so that the effect (noisy), when it is applied, is applied to everything that is beneath it. Notice that without the composite node, there is no node where an effect can be applied that will affect (A Tx-Blend B).
- operations that appear within the parenthesis are carried out on tracks that appear within the parenthesis. Those operations do not affect tracks that are not within the parenthesis.
- FIG. 39 is a flow diagram that described steps in a method in accordance with one embodiment.
- the method can be implemented in any suitable hardware, software, firmware, or combination thereof. In the presently-described example, the method is implemented in software.
- Step 3900 defines a multimedia editing project that includes at least one composite.
- the composite represents multiple tracks as a single track for purposes of the processing described just below. It is important to note that, in the processing described just below, and because of the use of composites, the extra processing that is required by bounce tracks is avoided (i.e. operating on two tracks, moving the operation result to another location, and retrieving the operation result when later needed). This reduces the processing time that is required to render a multi-media project.
- Step 3902 defines a first data structure that represents the editing project. Any suitable data structure can be utilized. In the present example, a data structure in the form of a hierarchical tree is utilized. An exemplary tree is shown in FIG. 30 .
- Step 3904 processes the first data structure to provide a second data structure that is configured to program a matrix switch.
- the second data structure comprises a grid structure. Exemplary processing is described in the context of FIGS. 30–37 .
- Step 3906 then programs the matrix switch using the second data structure.
- FIG. 40 shows a simple multi-media editing project that consists of two movies or sources 4000 , 4002 that are to be displayed back-to-back, with a transition 4004 (such as a fade) between them.
- a transition 4004 such as a fade
- the user wishes to create a new movie file on disk that can be sent to their friends. Doing this can take a very long time for the following reason.
- multi-media projects such as movies are never just simply RGB data. Rather, the projects are most always compressed in some way because video data is far too huge to efficiently store or send. So, in compressing movie data, a data compressor might be used that takes as long as 1 sec/frame. For a short sixteen minute movie, this might take a couple of hours.
- uncompression using a data uncompressor is much faster. This is just the nature of data compressors and uncompressors.
- a filter chain is typically built to include a decoder filter that decodes all of the data so that it is no longer compressed—that is, the data is uncompressed so that it is regular RGB data.
- a decoder filter 610 whose job it is to decode or uncompress media data.
- Media data is uncompressed like this because, typically, a convenient and efficient way to combine two video data streams together and blend them in some way is to take two uncompressed RGB streams and combine and blend them.
- the uncompression filter e.g. decoder filter 610
- the uncompression filter “understands” the compressed video that it is to uncompress.
- two MPEG compressed frames generally cannot be provided to an effect and blended together. Rather, the uncompressed data associated with the MPEG-compressed frames is provided to an effect and blended.
- all of the data streams that have been provided to a matrix switch have been uncompressuncompressed data streams.
- each of the source streams associated with sources A and B would first be processed by their respective filter chains and uncompressed.
- the entire project would then be subject to recompression so that it could, for example, be written to disk.
- the time before and after the transition simply incorporates the source streams as they are in their original compressed state.
- the transition could then be processed by uncompressing the associated source stream portions, operating upon them, recompressing them, and adding the recompressed portion to the new project file.
- the uncompression/recompression need only be performed on two minutes of a project.
- FIG. 41 illustrates an exemplary embodiment in which those portions of a multi-media project that necessarily need to be uncompressed, operated upon, and recompressed are processed in that manner. Likewise, those portions of a multi-media project that do not need to be uncompressed and processed are left in their compressed state. The two differently-processed project portions are then combined to provide a single compressed output stream that contains both project portions.
- an object in the form of a switch assembly comprising three software-implemented matrix switches is employed—a uncompressed switch 4100 , a compressed switch 4102 , and a “smart” switch 4104 .
- a switch assembly having any suitable number of switches or objects.
- a single switch could be provided and programmed to implement the desired functionality.
- the uncompressed switch 4100 is configured to work on that part of a project that actually needs to have uncompression and various operations, i.e. transitions, effects and the like.
- the inputs to switch 4100 are uncompressed data streams that correspond to sources A and B. Accordingly, the filter chains associated with switch 4100 that correspond to sources A and B have decoder filters incorporated in them (see, e.g. decoder filter 610 in FIG. 6 ). Portions of each source are fed into the switch 4100 , processed by the transition element or filter 4100 a at the switch's output, and re-routed to the primary output of the switch as an uncompressed data stream.
- the compressed switch 4102 is configured to process portions of the data streams where nothing requiring uncompression operations is happening. Thus, switch 4102 processes those portions of the data streams where there are no transitions or effects applied, and where the data streams can remain in their compressed state
- the filter chains for each of the sources do not incorporate a decoder filter so that the switch receives compressed data streams.
- Smart switch 4104 is a smart recompression switch that is coupled to receive the primary outputs of uncompressed switch 4100 and compressed switch 4102 .
- Switch 4104 has a compressor component or element 4104 a that is configured to compress the uncompressed output of the uncompressed switch 4100 .
- the output of the compressor component is then re-routed to become an input to switch 4104 .
- the primary output of switch 4104 is now the project's primary output and constitutes a compressed data stream comprising the entire project. This compressed output can, for example, be sent to a file writer so that it can be written to a file or CD.
- This operation can take a fraction of the time (e.g. about 30 or less seconds) that the old approach took.
- the old approach (where the whole project is uncompressed, operated on, and recompressed) could take about 2 hours.
- FIG. 42 is a flow diagram that describes steps in a method in accordance with the described embodiment.
- the method can be implemented in any suitable hardware, software, firmware, or combination thereof. In the illustrated and described embodiment, the method is implemented in software.
- Step 4200 provides a first matrix switch to process one or more compressed data streams and provide a compressed output stream. In the illustrated and described embodiment, this step is implemented by providing one or more source streams to the switch utilizing a filter chain that does not include a decoder filter.
- Step 4202 provides a second matrix switch to process one or more uncompressed data streams and provide an uncompressed output stream. In the illustrated and described embodiment, this step is implemented by providing one or more source streams to the second switch utilizing a filter chain that does include a decoder filter.
- Step 4204 provides a third matrix switch to receive the compressed and uncompressed output streams (from steps 4200 , 4202 ). Step 4206 processes the compressed and uncompressed output streams with the third switch to provide a compressed project output stream.
- the above-described switch assembly is built and programmed in a manner that is similar in some respects to the way in which the matrix switch described above is built and programmed. Specifically, the same type of data structures and processes can be utilized with a few additional processing changes.
- the first step in programming the switch assembly is to build or otherwise derive a grid assembly for the entire project. Recall that in the previous examples, this was done by processing a hierarchical tree structure describing the project to derive the grid structure. The same can be said in the present case and for purposes of brevity, the entire process is not repeated here.
- Grid 4300 contains all of the data that is used to build or derive the grid for the compressed portion of the project.
- the starting point for the compressed project portion grid is a copy of the uncompressed grid 4300 .
- a determination is first made as to whether the sources are in the same format as the desired output format. This ensures that the sources do not indeed need any additional processing. If a source is not in the same format, then it is removed from the grid. For example, if the output format comprises a fixed frame rate, then the frame rates of all the sources should match.
- any of the sources have a frame rate that does not match the fixed frame rate, it is removed from the grid associated with the compressed portion of the project.
- the data rates of the sources should be less than or equal to the data rate of the desired output.
- Other exemplary formats can include, without limitation frame size for video and audio sampling rate for audio.
- the smart switch 4104 is programmed to work in the following way. Whenever data is available from compressed switch 4102 , the data is received by switch 4104 and routed to the primary output—pin 0 , since this represents exactly what is desired in the final project at that time. When data is unavailable from compressed switch 4102 for a certain time period, switch 4104 initiates a “seek” to uncompressed switch 4100 for that time period. Accordingly, uncompressed data is provided to the smart switch 4104 during this time period and sent to output pin 1 for compression and rerouting to input pin 2 . Input pin 2 is then routed to the primary output pin 0 of switch 4104 for the time period.
- the described embodiments can be used to provide improvements over previous multi-media editing systems. Various efficiencies are achieved that reduce the processing times and can thereby improve the user experience when using multi-media project editing software applications.
Abstract
Description
-
- application Ser. No. 09/731,560, issued as U.S. Pat. No. 6,774,919, entitled “An Interface and Related Methods for Reducing Source Accesses in a Development System”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/732,084, issued as U.S. Pat. No. 6,834,390, entitled “A System and Related Interfaces Supporting the Processing of Media Content”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/731,490, issued as U.S. Pat. No. 6,983,466, entitled “A System and Related Methods for Reducing Source Filter Invocation in a Development Project”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/732,452, entitled “A System and Related Methods for Reducing Memory Requirements of a Media Processing System”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/731,529, issued as U.S. Pat. No. 6,961,943, entitled “A System and Related Methods for Reducing the Instances of Source Files in a Filter Graph”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/732,087, issued as U.S. Pat. No. 6,959,438, entitled “An Interface and Related Methods for Dynamically Generating a Filter Graph in a Development System”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/732,090, issued as U.S. Pat. No. 6,611,215, entitled “A System and Related Methods for Processing Audio Content in a Filter Graph”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/732,085, entitled “A System and Methods for Generating an Managing Filter Strings in a Filter Graph”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/731,491, issued as U.S. Pat. No. 6,768,499, entitled “Methods and Systems for Processing Media Content”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/731,563, issued as U.S. Pat. No. 6,954,581, entitled “Systems for Managing Multiple Inputs and Methods and Systems for Processing Media Content”, naming Daniel J. Miller and Eric H. Rudolph as inventors;
- application Ser. No. 09/731,892, issued as U.S. Pat. No. 6,912,717, entitled “Methods and Systems for Implementing Dynamic Properties on Objects that Support Only Static Properties”, naming Daniel J. Miller and David Maymudes as inventors;
- application Ser. No. 09/731,581, entitled “Methods and Systems for Effecting Video Transitions Represented By Bitmaps”, naming Daniel J. Miller and David Maymudes as inventors;
- application Ser. No. 09/732,372, issued as U.S. Pat. No. 6,882,891, entitled “Methods and Systems for Mixing Digital Audio Signals”, naming Eric H. Rudolph as inventor;
- application Ser. No. 09/732,086, entitled “Methods and Systems for Processing Multi-media Editing Projects”, naming Eric H. Rudolph as inventor.
Object | Routing for a given time |
C | t = 0–12 (nowhere); t = 12–14 (transition); t = 14–16 (primary |
output) | |
B | t = 0–4 (nowhere); t = 4–12 (primary output); t = 12–14 |
(transition); t = 14–16 (nowhere) | |
A | t = 0–4 (primary output); t = 4–16 (nowhere) |
Transition | t = 0–12 (nowhere); t = 12–14 (primary output); t = 14–16 |
(nowhere) | |
(Fx-noisy (A Tx-Blend B)) Tx-Blend C
Claims (20)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/732,089 US7103677B2 (en) | 2000-12-06 | 2000-12-06 | Methods and systems for efficiently processing compressed and uncompressed media content |
US11/423,889 US7529848B2 (en) | 2000-12-06 | 2006-06-13 | Methods and systems for efficiently processing compressed and uncompressed media content |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/732,089 US7103677B2 (en) | 2000-12-06 | 2000-12-06 | Methods and systems for efficiently processing compressed and uncompressed media content |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/423,889 Continuation US7529848B2 (en) | 2000-12-06 | 2006-06-13 | Methods and systems for efficiently processing compressed and uncompressed media content |
Publications (2)
Publication Number | Publication Date |
---|---|
US20020103918A1 US20020103918A1 (en) | 2002-08-01 |
US7103677B2 true US7103677B2 (en) | 2006-09-05 |
Family
ID=24942144
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/732,089 Expired - Fee Related US7103677B2 (en) | 2000-12-06 | 2000-12-06 | Methods and systems for efficiently processing compressed and uncompressed media content |
US11/423,889 Expired - Fee Related US7529848B2 (en) | 2000-12-06 | 2006-06-13 | Methods and systems for efficiently processing compressed and uncompressed media content |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/423,889 Expired - Fee Related US7529848B2 (en) | 2000-12-06 | 2006-06-13 | Methods and systems for efficiently processing compressed and uncompressed media content |
Country Status (1)
Country | Link |
---|---|
US (2) | US7103677B2 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040103208A1 (en) * | 2001-03-12 | 2004-05-27 | Chung Randall M. | Re-assembly of streaming files from separate connections |
US20060055826A1 (en) * | 2003-01-29 | 2006-03-16 | Klaus Zimmermann | Video signal processing system |
US20060253857A1 (en) * | 2005-05-04 | 2006-11-09 | Ulead Systems, Inc. | Method for processing a data stream by utilizing multi-processor |
US20070177677A1 (en) * | 2006-01-30 | 2007-08-02 | Thomsen Jan H | Systems and methods for transcoding bit streams |
US20070177519A1 (en) * | 2006-01-30 | 2007-08-02 | Thomsen Jan H | Systems and methods for transcoding bit streams |
WO2008127550A2 (en) * | 2007-04-12 | 2008-10-23 | Thomson Licensing | Operational management solution for media production and distribution |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7484007B2 (en) * | 2002-02-01 | 2009-01-27 | Codekko Inc. | System and method for partial data compression and data transfer |
CN1323345C (en) * | 2004-03-22 | 2007-06-27 | 凌阳科技股份有限公司 | Data compression/uncompression apparatus and application system thereof |
US8107010B2 (en) | 2005-01-05 | 2012-01-31 | Rovi Solutions Corporation | Windows management in a television environment |
US8321041B2 (en) * | 2005-05-02 | 2012-11-27 | Clear Channel Management Services, Inc. | Playlist-based content assembly |
US9274766B2 (en) * | 2012-12-14 | 2016-03-01 | Facebook, Inc. | Treatment of layer tree as video |
US11138207B2 (en) | 2015-09-22 | 2021-10-05 | Google Llc | Integrated dynamic interface for expression-based retrieval of expressive media content |
US10303925B2 (en) * | 2016-06-24 | 2019-05-28 | Google Llc | Optimization processes for compressing media content |
US10691201B2 (en) * | 2016-12-19 | 2020-06-23 | Intel Corporation | Image stream switcher |
WO2018219452A1 (en) * | 2017-05-31 | 2018-12-06 | Huawei Technologies Co., Ltd. | Cross platform stream dataflows |
US10735882B2 (en) * | 2018-05-31 | 2020-08-04 | At&T Intellectual Property I, L.P. | Method of audio-assisted field of view prediction for spherical video streaming |
CN117391035A (en) * | 2023-12-11 | 2024-01-12 | 成都电科星拓科技有限公司 | Chip with self-defined pin function and implementation method |
Citations (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4220823A (en) | 1978-07-21 | 1980-09-02 | Stromberg-Carlson Corporation | Selectively controlled digital pad |
US5162904A (en) | 1991-03-28 | 1992-11-10 | Abekas Video Systems, Inc. | Video processing system having improved internal switching capability |
US5179552A (en) | 1990-11-26 | 1993-01-12 | Bell Communications Research, Inc. | Crosspoint matrix switching element for a packet switch |
US5252953A (en) | 1990-05-22 | 1993-10-12 | American Film Technologies, Inc. | Computergraphic animation system |
US5307456A (en) | 1990-12-04 | 1994-04-26 | Sony Electronics, Inc. | Integrated multi-media production and authoring system |
US5327227A (en) | 1992-01-23 | 1994-07-05 | Samsung Electronics Co., Ltd. | De-interleaving method and apparatus for D2 MAC audio |
US5359712A (en) | 1991-05-06 | 1994-10-25 | Apple Computer, Inc. | Method and apparatus for transitioning between sequences of digital information |
US5377313A (en) | 1992-01-29 | 1994-12-27 | International Business Machines Corporation | Computer graphics display method and system with shadow generation |
US5400187A (en) | 1993-01-28 | 1995-03-21 | U.S. Philips Corporation | Arrangement for recording a video signal and a corresponding audio signal in slant tracks on a longitudinal magnetic record carrier, and record carrier obtained by means of the arrangement |
US5421016A (en) | 1991-12-12 | 1995-05-30 | International Business Machines Corporation | System and method for dynamically invoking object methods from an application designed for static method invocation |
US5455599A (en) | 1993-11-02 | 1995-10-03 | Taligent Inc. | Object-oriented graphic system |
US5481718A (en) | 1993-05-21 | 1996-01-02 | Fujitsu Limited | Object-oriented system having object models containing plural objects with instantiation following static classification by class relationships, dynamic classification by temporal instantiation, and causality restrictions |
US5515512A (en) | 1989-12-28 | 1996-05-07 | Canon Kabushiki Kaisha | Multi-media terminal apparatus |
US5551035A (en) | 1989-06-30 | 1996-08-27 | Lucent Technologies Inc. | Method and apparatus for inter-object communication in an object-oriented program controlled system |
US5584006A (en) | 1989-12-22 | 1996-12-10 | Avid Technology, Inc. | Media storage and retrieval system including determination of media data associated with requests based on source identifiers and ranges within the media data |
US5647047A (en) | 1993-12-13 | 1997-07-08 | Sony Corporation | System for editing video reproduced from a plurality of recording media at high speed |
US5682326A (en) | 1992-08-03 | 1997-10-28 | Radius Inc. | Desktop digital video processing system |
US5760767A (en) * | 1995-10-26 | 1998-06-02 | Sony Corporation | Method and apparatus for displaying in and out points during video editing |
US5781188A (en) * | 1996-06-27 | 1998-07-14 | Softimage | Indicating activeness of clips and applying effects to clips and tracks in a timeline of a multimedia work |
US5790935A (en) | 1996-01-30 | 1998-08-04 | Hughes Aircraft Company | Virtual on-demand digital information delivery system and method |
US5818542A (en) | 1996-04-10 | 1998-10-06 | Discreet Logic, Inc. | Processing image data |
US5892506A (en) | 1996-03-18 | 1999-04-06 | Discreet Logic, Inc. | Multitrack architecture for computer-based editing of multimedia sequences |
US5896181A (en) | 1994-03-30 | 1999-04-20 | Sony Corporation | Video signal processing apparatus with matrix switching capability |
US5898780A (en) | 1996-05-21 | 1999-04-27 | Gric Communications, Inc. | Method and apparatus for authorizing remote internet access |
US5913038A (en) | 1996-12-13 | 1999-06-15 | Microsoft Corporation | System and method for processing multimedia data streams using filter graphs |
US5917730A (en) | 1995-08-17 | 1999-06-29 | Gse Process Solutions, Inc. | Computer implemented object oriented visualization system and method |
US5930797A (en) * | 1997-04-15 | 1999-07-27 | Avid Technology, Inc. | Method and system for representing hierarchical time-based data structures and to extract information therefrom |
US5930446A (en) * | 1995-04-08 | 1999-07-27 | Sony Corporation | Edition system |
EP0939516A2 (en) | 1998-01-19 | 1999-09-01 | Michael Robinson | User communication and monitoring system for computer networks |
US5960006A (en) | 1994-09-09 | 1999-09-28 | Lsi Logic Corporation | MPEG decoding system adjusting the presentation in a predetermined manner based on the actual and requested decoding time |
US5961602A (en) | 1997-02-10 | 1999-10-05 | International Business Machines Corporation | Method for optimizing off-peak caching of web data |
US5982360A (en) | 1997-06-08 | 1999-11-09 | United Microelectronics Corp. | Adaptive-selection method for memory access priority control in MPEG processor |
US5990981A (en) | 1998-02-12 | 1999-11-23 | Sensormatic Electronics Corporation | Modular video signal matrix switcher with color-coded components |
US5995505A (en) | 1996-04-17 | 1999-11-30 | Sony Corporation | Matrix switcher |
US5999173A (en) * | 1992-04-03 | 1999-12-07 | Adobe Systems Incorporated | Method and apparatus for video editing with video clip representations displayed along a time line |
US6038425A (en) * | 1998-08-03 | 2000-03-14 | Jeffrey; Ross A. | Audio/video signal redistribution system |
US6049829A (en) | 1997-07-22 | 2000-04-11 | At&T Corp. | Information access system and method |
US6064670A (en) | 1995-08-03 | 2000-05-16 | Sgs-Thomson Microelectronics S.A. | Matrix for switching between two multiplex groups |
US6069688A (en) | 1997-12-11 | 2000-05-30 | Honeywell International Inc. | Method for producing continuous in-like kappa measurements for papermaking pulps |
US6069668A (en) | 1997-04-07 | 2000-05-30 | Pinnacle Systems, Inc. | System and method for producing video effects on live-action video |
US6088018A (en) | 1998-06-11 | 2000-07-11 | Intel Corporation | Method of using video reflection in providing input data to a computer system |
US6128652A (en) | 1996-02-28 | 2000-10-03 | It Innovations Pte Ltd | System for manipulating and updating data objects with remote data sources automatically and seamlessly |
US6130676A (en) | 1998-04-02 | 2000-10-10 | Avid Technology, Inc. | Image composition system and process using layers |
US6141001A (en) | 1996-08-21 | 2000-10-31 | Alcatel | Method of synchronizing the presentation of static and dynamic components of an interactive multimedia document |
US6145002A (en) | 1997-11-14 | 2000-11-07 | Qwest Communications International Inc. | System and method for accessing an internet service provider |
US6151627A (en) * | 1998-03-25 | 2000-11-21 | 3Com Technologies | Monitoring of a communication link utilizing history-based compression algorithms |
US6167083A (en) | 1997-04-04 | 2000-12-26 | Avid Technology, Inc. | Computer system and process for capture editing and playback of motion video compressed using interframe and intraframe techniques |
US6173364B1 (en) | 1997-01-15 | 2001-01-09 | At&T Corp. | Session cache and rule caching method for a dynamic filter |
US6205492B1 (en) | 1997-04-04 | 2001-03-20 | Microsoft Corporation | Method and computer program product for interconnecting software drivers in kernel mode |
US6209041B1 (en) | 1997-04-04 | 2001-03-27 | Microsoft Corporation | Method and computer program product for reducing inter-buffer data transfers between separate processing components |
US6212574B1 (en) | 1997-04-04 | 2001-04-03 | Microsoft Corporation | User mode proxy of kernel mode operations in a computer operating system |
US6226642B1 (en) | 1997-09-11 | 2001-05-01 | International Business Machines Corporation | Content modification of internet web pages for a television class display |
US6233735B1 (en) | 1995-11-13 | 2001-05-15 | Sony Corporation | Near video-on-demand system and broadcasting method therefor |
US6237031B1 (en) | 1997-03-25 | 2001-05-22 | Intel Corporation | System for dynamically controlling a network proxy |
US6243143B1 (en) | 1999-09-21 | 2001-06-05 | Media 100 Inc. | Effecting video transitions between video streams |
US6243754B1 (en) | 1999-01-08 | 2001-06-05 | International Business Machines Corporation | Dynamic selection of network providers |
US6253288B1 (en) | 1998-04-30 | 2001-06-26 | Hewlett-Packard Company | Hybrid cache/SIRO buffer system |
US6255943B1 (en) | 1995-03-29 | 2001-07-03 | Cabletron Systems, Inc. | Method and apparatus for distributed object filtering |
US6256783B1 (en) | 1997-12-26 | 2001-07-03 | Fujitsu Limited | Object conversion apparatus, object conversion method and program storing medium |
US6269107B1 (en) | 1997-02-05 | 2001-07-31 | Lg Electronics, Inc. | Device and method for demultiplexing transport stream |
US6269195B1 (en) | 1997-04-04 | 2001-07-31 | Avid Technology, Inc. | Apparatus and methods for selectively feathering a composite image |
US6292187B1 (en) | 1999-09-27 | 2001-09-18 | Sony Electronics, Inc. | Method and system for modifying the visual presentation and response to user action of a broadcast application's user interface |
US6298234B1 (en) | 1999-05-18 | 2001-10-02 | Telefonaktiebolaget L M Ericsson (Publ) | System and method for providing access to the internet via a radio telecommunications network |
US20020002708A1 (en) | 2000-06-27 | 2002-01-03 | Bamboo Mediacasting, Inc | Multicasting transmission of multimedia information |
US6338070B1 (en) | 1998-06-20 | 2002-01-08 | Alcatel | Method of saving operating data of a network element, and controller for a network element |
US6345279B1 (en) | 1999-04-23 | 2002-02-05 | International Business Machines Corporation | Methods and apparatus for adapting multimedia content for client devices |
US6347398B1 (en) | 1996-12-12 | 2002-02-12 | Microsoft Corporation | Automatic software downloading from a computer network |
US20020026507A1 (en) | 2000-08-30 | 2002-02-28 | Sears Brent C. | Browser proxy client application service provider (ASP) interface |
US6356701B1 (en) | 1998-04-06 | 2002-03-12 | Sony Corporation | Editing system and method and distribution medium |
US6362854B1 (en) | 1999-11-16 | 2002-03-26 | Media 100 Inc. | Effecting video transitions between video streams with a border |
US6378035B1 (en) | 1999-04-06 | 2002-04-23 | Microsoft Corporation | Streaming information appliance with buffer read and write synchronization |
US6389483B1 (en) | 1995-10-17 | 2002-05-14 | Telefonaktiebolaget L M Ericsson (Publ) | System and method for reducing coupling between modules in a telecommunications environment |
US6396421B1 (en) | 2001-07-31 | 2002-05-28 | Wind River Systems, Inc. | Method and system for sampling rate conversion in digital audio applications |
US6400378B1 (en) * | 1997-09-26 | 2002-06-04 | Sony Corporation | Home movie maker |
US6411225B1 (en) | 1999-04-22 | 2002-06-25 | Koninklijke Philips Electronics N.V. | Sample rate converter |
US6421733B1 (en) | 1997-03-25 | 2002-07-16 | Intel Corporation | System for dynamically transcoding data transmitted between computers |
US20020097256A1 (en) | 2000-12-06 | 2002-07-25 | Miller Daniel J. | Methods and systems for processing media content |
US20020097257A1 (en) | 2000-12-06 | 2002-07-25 | Miller Daniel J. | Interface and related methods for reducing source accesses in a development system |
US6442658B1 (en) | 1997-01-31 | 2002-08-27 | Macromedia, Inc. | Method and apparatus for improving playback of interactive multimedia works |
US6462682B2 (en) | 2000-03-27 | 2002-10-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Sample rate conversion method and apparatus |
US6490324B1 (en) | 1998-12-08 | 2002-12-03 | Stmicroelectronics, Inc. | System, method and apparatus for a variable output video decoder |
US6499059B1 (en) | 1998-05-20 | 2002-12-24 | Alcatel | Method of controlling a network element using a service profile and apparatus of the same |
US6502137B1 (en) | 1997-10-09 | 2002-12-31 | International Business Machines Corporation | System and method for transferring information over a computer network |
US6510458B1 (en) | 1999-07-15 | 2003-01-21 | International Business Machines Corporation | Blocking saves to web browser cache based on content rating |
US20030018506A1 (en) | 2000-05-17 | 2003-01-23 | Mclean Robert I.G. | Data processing system and method for analysis of financial and non-financial value creation and value realization performance of a business enterprise for provisioning of real-time assurance reports |
US6512468B1 (en) | 2001-08-03 | 2003-01-28 | Agere Systems Inc. | System and method for increasing sample rate converter filter coefficient derivation speed |
US6519540B1 (en) * | 1994-10-04 | 2003-02-11 | Iris Technologies, Inc. | Signal router with cross-point view graphical interface |
US6519288B1 (en) | 1998-03-06 | 2003-02-11 | Mitsubishi Electric Research Laboratories, Inc. | Three-layer scaleable decoder and method of decoding |
US6518894B2 (en) | 2001-02-12 | 2003-02-11 | Rohde & Schwarz Gmbh & Co. Kg | Device and method for sampling rate conversion |
US6535920B1 (en) | 1999-04-06 | 2003-03-18 | Microsoft Corporation | Analyzing, indexing and seeking of streaming information |
US6546392B1 (en) | 1999-06-25 | 2003-04-08 | Mediaone Group, Inc. | Self service gateway |
US6544293B1 (en) | 1996-04-12 | 2003-04-08 | Avid Technology, Inc. | Media editing system with improved effect management |
US6571255B1 (en) * | 1999-04-16 | 2003-05-27 | Robert Gonsalves | Modification of media with common attributes on a digital nonlinear editing system |
US6581102B1 (en) | 1999-05-27 | 2003-06-17 | International Business Machines Corporation | System and method for integrating arbitrary isochronous processing algorithms in general media processing systems |
US6590604B1 (en) * | 2000-04-07 | 2003-07-08 | Polycom, Inc. | Personal videoconferencing system having distributed processing architecture |
US6591266B1 (en) | 2000-07-14 | 2003-07-08 | Nec Corporation | System and method for intelligent caching and refresh of dynamically generated and static web content |
US6658477B1 (en) | 1999-05-12 | 2003-12-02 | Microsoft Corporation | Improving the control of streaming data through multiple processing modules |
US6675386B1 (en) * | 1996-09-04 | 2004-01-06 | Discovery Communications, Inc. | Apparatus for video access and control over computer network, including image correction |
US6683696B1 (en) | 1998-10-27 | 2004-01-27 | Hewlett-Packard Development Company, L.P. | Filter based data imaging method for an image forming device |
US6694087B1 (en) | 1998-04-03 | 2004-02-17 | Autodesk Canada Inc. | Processing audio-visual data |
US6701316B1 (en) | 2000-04-07 | 2004-03-02 | Nec Corporation | Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh |
US6714216B2 (en) * | 1998-09-29 | 2004-03-30 | Sony Corporation | Video editing apparatus and method |
US6714826B1 (en) | 2000-03-13 | 2004-03-30 | International Business Machines Corporation | Facility for simultaneously outputting both a mixed digital audio signal and an unmixed digital audio signal multiple concurrently received streams of digital audio data |
US6882891B2 (en) | 2000-12-06 | 2005-04-19 | Microsoft Corporation | Methods and systems for mixing digital audio signals |
US6912717B2 (en) | 2000-12-06 | 2005-06-28 | Microsoft Corporation | Methods and systems for implementing dynamic properties on objects that support only static properties |
US6954581B2 (en) | 2000-12-06 | 2005-10-11 | Microsoft Corporation | Methods and systems for managing multiple inputs and methods and systems for processing media content |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5187589A (en) | 1988-07-28 | 1993-02-16 | Pioneer Electronic Corporation | Multiprogram video tape recording and reproducing device |
US5684514A (en) | 1991-01-11 | 1997-11-04 | Advanced Interaction, Inc. | Apparatus and method for assembling content addressable video |
US5194952A (en) | 1991-03-28 | 1993-03-16 | Abekas Video Systems, Inc. | Video processing system having improved transition control and display |
US6275864B1 (en) * | 1991-08-13 | 2001-08-14 | Storage Technology Corporation | Matrix switch for a network management system |
US6005560A (en) | 1992-10-01 | 1999-12-21 | Quark, Inc. | Multi-media project management and control system |
JPH07220452A (en) | 1993-12-17 | 1995-08-18 | Imix Inc | Method and device for video editing and real-time processing |
US6119151A (en) | 1994-03-07 | 2000-09-12 | International Business Machines Corp. | System and method for efficient cache management in a distributed file system |
US6243102B1 (en) * | 1994-05-16 | 2001-06-05 | Apple Computer, Inc. | Data-driven layout engine |
DE59508793D1 (en) | 1994-08-31 | 2000-11-23 | Siemens Ag | Procedure for managing dynamic objects in an object-oriented programmed facility |
JPH08115338A (en) | 1994-10-14 | 1996-05-07 | Fuji Xerox Co Ltd | Multimedia document editing device |
US5649032A (en) | 1994-11-14 | 1997-07-15 | David Sarnoff Research Center, Inc. | System for automatically aligning images to form a mosaic image |
US5963664A (en) | 1995-06-22 | 1999-10-05 | Sarnoff Corporation | Method and system for image combination using a parallax-based technique |
EP0838068B1 (en) * | 1995-07-10 | 2005-10-26 | Sarnoff Corporation | Method and system for rendering and combining images |
US5872867A (en) | 1995-08-04 | 1999-02-16 | Sarnoff Corporation | Method and apparatus for generating image textures |
US5587742A (en) | 1995-08-25 | 1996-12-24 | Panasonic Technologies, Inc. | Flexible parallel processing architecture for video resizing |
US5877781A (en) | 1995-11-29 | 1999-03-02 | Roland Kabushiki Kaisha | Memory control device for video editor |
US5852435A (en) | 1996-04-12 | 1998-12-22 | Avid Technology, Inc. | Digital multimedia editing and data management system |
US5768447A (en) | 1996-06-14 | 1998-06-16 | David Sarnoff Research Center, Inc. | Method for indexing image information using a reference model |
US6570587B1 (en) * | 1996-07-26 | 2003-05-27 | Veon Ltd. | System and method and linking information to a video |
US6956573B1 (en) * | 1996-11-15 | 2005-10-18 | Sarnoff Corporation | Method and apparatus for efficiently representing storing and accessing video information |
US6081262A (en) | 1996-12-04 | 2000-06-27 | Quark, Inc. | Method and apparatus for generating multi-media presentations |
US6948128B2 (en) * | 1996-12-20 | 2005-09-20 | Avid Technology, Inc. | Nonlinear editing system and method of constructing an edit therein |
US5815689A (en) | 1997-04-04 | 1998-09-29 | Microsoft Corporation | Method and computer program product for synchronizing the processing of multiple data streams and matching disparate processing rates using a standardized clock mechanism |
US6366988B1 (en) | 1997-07-18 | 2002-04-02 | Storactive, Inc. | Systems and methods for electronic data storage management |
EP0896481B1 (en) * | 1997-08-05 | 2006-08-23 | Micronas Semiconductor Holding AG | Adaptive filter |
US6026439A (en) | 1997-10-28 | 2000-02-15 | International Business Machines Corporation | File transfers using playlists |
JP3276596B2 (en) * | 1997-11-04 | 2002-04-22 | 松下電器産業株式会社 | Video editing device |
US6310889B1 (en) | 1998-03-12 | 2001-10-30 | Nortel Networks Limited | Method of servicing data access requests from users |
US6266053B1 (en) | 1998-04-03 | 2001-07-24 | Synapix, Inc. | Time inheritance scene graph for representation of media content |
JP3615657B2 (en) | 1998-05-27 | 2005-02-02 | 株式会社日立製作所 | Video search method and apparatus, and recording medium |
US6357042B2 (en) * | 1998-09-16 | 2002-03-12 | Anand Srinivasan | Method and apparatus for multiplexing separately-authored metadata for insertion into a video data stream |
GB2344453B (en) | 1998-12-01 | 2002-12-11 | Eidos Technologies Ltd | Multimedia editing and composition system having temporal display |
US7047554B1 (en) * | 1998-12-09 | 2006-05-16 | Intel Corporation | System and method for integrating and controlling audio/video devices |
US6282536B1 (en) * | 1998-12-17 | 2001-08-28 | Apple Computer, Inc. | System and method for interfacing index based and iterator based application programming interfaces |
US6370614B1 (en) | 1999-01-26 | 2002-04-09 | Motive Power, Inc. | I/O cache with user configurable preload |
JP4009922B2 (en) * | 1999-06-07 | 2007-11-21 | ソニー株式会社 | Editing apparatus and editing method |
US7064778B1 (en) * | 1999-09-10 | 2006-06-20 | Pelco Incorporated | Multi-camera system for implementing digital slow shutter video processing using shared video memory |
US7139719B1 (en) * | 1999-10-08 | 2006-11-21 | I2 Technologies Us, Inc. | System for scheduling product planning |
US7020351B1 (en) * | 1999-10-08 | 2006-03-28 | Sarnoff Corporation | Method and apparatus for enhancing and indexing video and audio signals |
US7016540B1 (en) * | 1999-11-24 | 2006-03-21 | Nec Corporation | Method and system for segmentation, classification, and summarization of video images |
JP4470259B2 (en) * | 2000-01-27 | 2010-06-02 | ソニー株式会社 | Video processing device |
AU2001238116A1 (en) * | 2000-02-11 | 2001-08-20 | Autolycus, Corporation | Generation and display of multi-image video streams |
US6581063B1 (en) * | 2000-06-15 | 2003-06-17 | International Business Machines Corporation | Method and apparatus for maintaining a linked list |
US6763175B1 (en) * | 2000-09-01 | 2004-07-13 | Matrox Electronic Systems, Ltd. | Flexible video editing architecture with software video effect filter components |
US6763176B1 (en) * | 2000-09-01 | 2004-07-13 | Matrox Electronic Systems Ltd. | Method and apparatus for real-time video editing using a graphics processor |
US20020038456A1 (en) * | 2000-09-22 | 2002-03-28 | Hansen Michael W. | Method and system for the automatic production and distribution of media content using the internet |
US6959438B2 (en) * | 2000-12-06 | 2005-10-25 | Microsoft Corporation | Interface and related methods for dynamically generating a filter graph in a development system |
US7287226B2 (en) * | 2000-12-06 | 2007-10-23 | Microsoft Corporation | Methods and systems for effecting video transitions represented by bitmaps |
US6961943B2 (en) * | 2000-12-06 | 2005-11-01 | Microsoft Corporation | Multimedia processing system parsing multimedia content from a single source to minimize instances of source files |
US6983466B2 (en) * | 2000-12-06 | 2006-01-03 | Microsoft Corporation | Multimedia project processing systems and multimedia project processing matrix systems |
US6694067B1 (en) * | 2001-01-05 | 2004-02-17 | Los Gatos Research | Cavity enhanced fiber optic and waveguide chemical sensor |
-
2000
- 2000-12-06 US US09/732,089 patent/US7103677B2/en not_active Expired - Fee Related
-
2006
- 2006-06-13 US US11/423,889 patent/US7529848B2/en not_active Expired - Fee Related
Patent Citations (108)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4220823A (en) | 1978-07-21 | 1980-09-02 | Stromberg-Carlson Corporation | Selectively controlled digital pad |
US5551035A (en) | 1989-06-30 | 1996-08-27 | Lucent Technologies Inc. | Method and apparatus for inter-object communication in an object-oriented program controlled system |
US5584006A (en) | 1989-12-22 | 1996-12-10 | Avid Technology, Inc. | Media storage and retrieval system including determination of media data associated with requests based on source identifiers and ranges within the media data |
US5515512A (en) | 1989-12-28 | 1996-05-07 | Canon Kabushiki Kaisha | Multi-media terminal apparatus |
US5252953A (en) | 1990-05-22 | 1993-10-12 | American Film Technologies, Inc. | Computergraphic animation system |
US5179552A (en) | 1990-11-26 | 1993-01-12 | Bell Communications Research, Inc. | Crosspoint matrix switching element for a packet switch |
US5307456A (en) | 1990-12-04 | 1994-04-26 | Sony Electronics, Inc. | Integrated multi-media production and authoring system |
US5162904A (en) | 1991-03-28 | 1992-11-10 | Abekas Video Systems, Inc. | Video processing system having improved internal switching capability |
US5359712A (en) | 1991-05-06 | 1994-10-25 | Apple Computer, Inc. | Method and apparatus for transitioning between sequences of digital information |
US5421016A (en) | 1991-12-12 | 1995-05-30 | International Business Machines Corporation | System and method for dynamically invoking object methods from an application designed for static method invocation |
US5327227A (en) | 1992-01-23 | 1994-07-05 | Samsung Electronics Co., Ltd. | De-interleaving method and apparatus for D2 MAC audio |
US5377313A (en) | 1992-01-29 | 1994-12-27 | International Business Machines Corporation | Computer graphics display method and system with shadow generation |
US5999173A (en) * | 1992-04-03 | 1999-12-07 | Adobe Systems Incorporated | Method and apparatus for video editing with video clip representations displayed along a time line |
US5682326A (en) | 1992-08-03 | 1997-10-28 | Radius Inc. | Desktop digital video processing system |
US5400187A (en) | 1993-01-28 | 1995-03-21 | U.S. Philips Corporation | Arrangement for recording a video signal and a corresponding audio signal in slant tracks on a longitudinal magnetic record carrier, and record carrier obtained by means of the arrangement |
US5481718A (en) | 1993-05-21 | 1996-01-02 | Fujitsu Limited | Object-oriented system having object models containing plural objects with instantiation following static classification by class relationships, dynamic classification by temporal instantiation, and causality restrictions |
US5455599A (en) | 1993-11-02 | 1995-10-03 | Taligent Inc. | Object-oriented graphic system |
US5647047A (en) | 1993-12-13 | 1997-07-08 | Sony Corporation | System for editing video reproduced from a plurality of recording media at high speed |
US5896181A (en) | 1994-03-30 | 1999-04-20 | Sony Corporation | Video signal processing apparatus with matrix switching capability |
US5960006A (en) | 1994-09-09 | 1999-09-28 | Lsi Logic Corporation | MPEG decoding system adjusting the presentation in a predetermined manner based on the actual and requested decoding time |
US6519540B1 (en) * | 1994-10-04 | 2003-02-11 | Iris Technologies, Inc. | Signal router with cross-point view graphical interface |
US6255943B1 (en) | 1995-03-29 | 2001-07-03 | Cabletron Systems, Inc. | Method and apparatus for distributed object filtering |
US5930446A (en) * | 1995-04-08 | 1999-07-27 | Sony Corporation | Edition system |
US6064670A (en) | 1995-08-03 | 2000-05-16 | Sgs-Thomson Microelectronics S.A. | Matrix for switching between two multiplex groups |
US5917730A (en) | 1995-08-17 | 1999-06-29 | Gse Process Solutions, Inc. | Computer implemented object oriented visualization system and method |
US6389483B1 (en) | 1995-10-17 | 2002-05-14 | Telefonaktiebolaget L M Ericsson (Publ) | System and method for reducing coupling between modules in a telecommunications environment |
US5760767A (en) * | 1995-10-26 | 1998-06-02 | Sony Corporation | Method and apparatus for displaying in and out points during video editing |
US6233735B1 (en) | 1995-11-13 | 2001-05-15 | Sony Corporation | Near video-on-demand system and broadcasting method therefor |
US5790935A (en) | 1996-01-30 | 1998-08-04 | Hughes Aircraft Company | Virtual on-demand digital information delivery system and method |
US6128652A (en) | 1996-02-28 | 2000-10-03 | It Innovations Pte Ltd | System for manipulating and updating data objects with remote data sources automatically and seamlessly |
US5892506A (en) | 1996-03-18 | 1999-04-06 | Discreet Logic, Inc. | Multitrack architecture for computer-based editing of multimedia sequences |
US5818542A (en) | 1996-04-10 | 1998-10-06 | Discreet Logic, Inc. | Processing image data |
US6544293B1 (en) | 1996-04-12 | 2003-04-08 | Avid Technology, Inc. | Media editing system with improved effect management |
US5995505A (en) | 1996-04-17 | 1999-11-30 | Sony Corporation | Matrix switcher |
US5898780A (en) | 1996-05-21 | 1999-04-27 | Gric Communications, Inc. | Method and apparatus for authorizing remote internet access |
US5781188A (en) * | 1996-06-27 | 1998-07-14 | Softimage | Indicating activeness of clips and applying effects to clips and tracks in a timeline of a multimedia work |
US6141001A (en) | 1996-08-21 | 2000-10-31 | Alcatel | Method of synchronizing the presentation of static and dynamic components of an interactive multimedia document |
US6675386B1 (en) * | 1996-09-04 | 2004-01-06 | Discovery Communications, Inc. | Apparatus for video access and control over computer network, including image correction |
US6347398B1 (en) | 1996-12-12 | 2002-02-12 | Microsoft Corporation | Automatic software downloading from a computer network |
US5913038A (en) | 1996-12-13 | 1999-06-15 | Microsoft Corporation | System and method for processing multimedia data streams using filter graphs |
US6173364B1 (en) | 1997-01-15 | 2001-01-09 | At&T Corp. | Session cache and rule caching method for a dynamic filter |
US6442658B1 (en) | 1997-01-31 | 2002-08-27 | Macromedia, Inc. | Method and apparatus for improving playback of interactive multimedia works |
US6269107B1 (en) | 1997-02-05 | 2001-07-31 | Lg Electronics, Inc. | Device and method for demultiplexing transport stream |
US5961602A (en) | 1997-02-10 | 1999-10-05 | International Business Machines Corporation | Method for optimizing off-peak caching of web data |
US6237031B1 (en) | 1997-03-25 | 2001-05-22 | Intel Corporation | System for dynamically controlling a network proxy |
US6421733B1 (en) | 1997-03-25 | 2002-07-16 | Intel Corporation | System for dynamically transcoding data transmitted between computers |
US6212574B1 (en) | 1997-04-04 | 2001-04-03 | Microsoft Corporation | User mode proxy of kernel mode operations in a computer operating system |
US6205492B1 (en) | 1997-04-04 | 2001-03-20 | Microsoft Corporation | Method and computer program product for interconnecting software drivers in kernel mode |
US6209041B1 (en) | 1997-04-04 | 2001-03-27 | Microsoft Corporation | Method and computer program product for reducing inter-buffer data transfers between separate processing components |
US6167083A (en) | 1997-04-04 | 2000-12-26 | Avid Technology, Inc. | Computer system and process for capture editing and playback of motion video compressed using interframe and intraframe techniques |
US6269195B1 (en) | 1997-04-04 | 2001-07-31 | Avid Technology, Inc. | Apparatus and methods for selectively feathering a composite image |
US6069668A (en) | 1997-04-07 | 2000-05-30 | Pinnacle Systems, Inc. | System and method for producing video effects on live-action video |
US5930797A (en) * | 1997-04-15 | 1999-07-27 | Avid Technology, Inc. | Method and system for representing hierarchical time-based data structures and to extract information therefrom |
US5982360A (en) | 1997-06-08 | 1999-11-09 | United Microelectronics Corp. | Adaptive-selection method for memory access priority control in MPEG processor |
US6049829A (en) | 1997-07-22 | 2000-04-11 | At&T Corp. | Information access system and method |
US6226642B1 (en) | 1997-09-11 | 2001-05-01 | International Business Machines Corporation | Content modification of internet web pages for a television class display |
US6400378B1 (en) * | 1997-09-26 | 2002-06-04 | Sony Corporation | Home movie maker |
US6502137B1 (en) | 1997-10-09 | 2002-12-31 | International Business Machines Corporation | System and method for transferring information over a computer network |
US6145002A (en) | 1997-11-14 | 2000-11-07 | Qwest Communications International Inc. | System and method for accessing an internet service provider |
US6069688A (en) | 1997-12-11 | 2000-05-30 | Honeywell International Inc. | Method for producing continuous in-like kappa measurements for papermaking pulps |
US6256783B1 (en) | 1997-12-26 | 2001-07-03 | Fujitsu Limited | Object conversion apparatus, object conversion method and program storing medium |
EP0939516A2 (en) | 1998-01-19 | 1999-09-01 | Michael Robinson | User communication and monitoring system for computer networks |
US5990981A (en) | 1998-02-12 | 1999-11-23 | Sensormatic Electronics Corporation | Modular video signal matrix switcher with color-coded components |
US6519288B1 (en) | 1998-03-06 | 2003-02-11 | Mitsubishi Electric Research Laboratories, Inc. | Three-layer scaleable decoder and method of decoding |
US6151627A (en) * | 1998-03-25 | 2000-11-21 | 3Com Technologies | Monitoring of a communication link utilizing history-based compression algorithms |
US6130676A (en) | 1998-04-02 | 2000-10-10 | Avid Technology, Inc. | Image composition system and process using layers |
US6694087B1 (en) | 1998-04-03 | 2004-02-17 | Autodesk Canada Inc. | Processing audio-visual data |
US6356701B1 (en) | 1998-04-06 | 2002-03-12 | Sony Corporation | Editing system and method and distribution medium |
US6253288B1 (en) | 1998-04-30 | 2001-06-26 | Hewlett-Packard Company | Hybrid cache/SIRO buffer system |
US6499059B1 (en) | 1998-05-20 | 2002-12-24 | Alcatel | Method of controlling a network element using a service profile and apparatus of the same |
US6088018A (en) | 1998-06-11 | 2000-07-11 | Intel Corporation | Method of using video reflection in providing input data to a computer system |
US6338070B1 (en) | 1998-06-20 | 2002-01-08 | Alcatel | Method of saving operating data of a network element, and controller for a network element |
US6038425A (en) * | 1998-08-03 | 2000-03-14 | Jeffrey; Ross A. | Audio/video signal redistribution system |
US6714216B2 (en) * | 1998-09-29 | 2004-03-30 | Sony Corporation | Video editing apparatus and method |
US6683696B1 (en) | 1998-10-27 | 2004-01-27 | Hewlett-Packard Development Company, L.P. | Filter based data imaging method for an image forming device |
US6490324B1 (en) | 1998-12-08 | 2002-12-03 | Stmicroelectronics, Inc. | System, method and apparatus for a variable output video decoder |
US6243754B1 (en) | 1999-01-08 | 2001-06-05 | International Business Machines Corporation | Dynamic selection of network providers |
US6535920B1 (en) | 1999-04-06 | 2003-03-18 | Microsoft Corporation | Analyzing, indexing and seeking of streaming information |
US6378035B1 (en) | 1999-04-06 | 2002-04-23 | Microsoft Corporation | Streaming information appliance with buffer read and write synchronization |
US6571255B1 (en) * | 1999-04-16 | 2003-05-27 | Robert Gonsalves | Modification of media with common attributes on a digital nonlinear editing system |
US6411225B1 (en) | 1999-04-22 | 2002-06-25 | Koninklijke Philips Electronics N.V. | Sample rate converter |
US6345279B1 (en) | 1999-04-23 | 2002-02-05 | International Business Machines Corporation | Methods and apparatus for adapting multimedia content for client devices |
US6658477B1 (en) | 1999-05-12 | 2003-12-02 | Microsoft Corporation | Improving the control of streaming data through multiple processing modules |
US6298234B1 (en) | 1999-05-18 | 2001-10-02 | Telefonaktiebolaget L M Ericsson (Publ) | System and method for providing access to the internet via a radio telecommunications network |
US6581102B1 (en) | 1999-05-27 | 2003-06-17 | International Business Machines Corporation | System and method for integrating arbitrary isochronous processing algorithms in general media processing systems |
US6546392B1 (en) | 1999-06-25 | 2003-04-08 | Mediaone Group, Inc. | Self service gateway |
US6510458B1 (en) | 1999-07-15 | 2003-01-21 | International Business Machines Corporation | Blocking saves to web browser cache based on content rating |
US6243143B1 (en) | 1999-09-21 | 2001-06-05 | Media 100 Inc. | Effecting video transitions between video streams |
US6292187B1 (en) | 1999-09-27 | 2001-09-18 | Sony Electronics, Inc. | Method and system for modifying the visual presentation and response to user action of a broadcast application's user interface |
US6362854B1 (en) | 1999-11-16 | 2002-03-26 | Media 100 Inc. | Effecting video transitions between video streams with a border |
US6714826B1 (en) | 2000-03-13 | 2004-03-30 | International Business Machines Corporation | Facility for simultaneously outputting both a mixed digital audio signal and an unmixed digital audio signal multiple concurrently received streams of digital audio data |
US6462682B2 (en) | 2000-03-27 | 2002-10-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Sample rate conversion method and apparatus |
US6590604B1 (en) * | 2000-04-07 | 2003-07-08 | Polycom, Inc. | Personal videoconferencing system having distributed processing architecture |
US6701316B1 (en) | 2000-04-07 | 2004-03-02 | Nec Corporation | Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh |
US20030018506A1 (en) | 2000-05-17 | 2003-01-23 | Mclean Robert I.G. | Data processing system and method for analysis of financial and non-financial value creation and value realization performance of a business enterprise for provisioning of real-time assurance reports |
US20020002708A1 (en) | 2000-06-27 | 2002-01-03 | Bamboo Mediacasting, Inc | Multicasting transmission of multimedia information |
US6591266B1 (en) | 2000-07-14 | 2003-07-08 | Nec Corporation | System and method for intelligent caching and refresh of dynamically generated and static web content |
US20020026507A1 (en) | 2000-08-30 | 2002-02-28 | Sears Brent C. | Browser proxy client application service provider (ASP) interface |
US20020097257A1 (en) | 2000-12-06 | 2002-07-25 | Miller Daniel J. | Interface and related methods for reducing source accesses in a development system |
US20020097256A1 (en) | 2000-12-06 | 2002-07-25 | Miller Daniel J. | Methods and systems for processing media content |
US6768499B2 (en) | 2000-12-06 | 2004-07-27 | Microsoft Corporation | Methods and systems for processing media content |
US6774919B2 (en) | 2000-12-06 | 2004-08-10 | Microsoft Corporation | Interface and related methods for reducing source accesses in a development system |
US6882891B2 (en) | 2000-12-06 | 2005-04-19 | Microsoft Corporation | Methods and systems for mixing digital audio signals |
US6912717B2 (en) | 2000-12-06 | 2005-06-28 | Microsoft Corporation | Methods and systems for implementing dynamic properties on objects that support only static properties |
US6954581B2 (en) | 2000-12-06 | 2005-10-11 | Microsoft Corporation | Methods and systems for managing multiple inputs and methods and systems for processing media content |
US6518894B2 (en) | 2001-02-12 | 2003-02-11 | Rohde & Schwarz Gmbh & Co. Kg | Device and method for sampling rate conversion |
US6396421B1 (en) | 2001-07-31 | 2002-05-28 | Wind River Systems, Inc. | Method and system for sampling rate conversion in digital audio applications |
US6512468B1 (en) | 2001-08-03 | 2003-01-28 | Agere Systems Inc. | System and method for increasing sample rate converter filter coefficient derivation speed |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040103208A1 (en) * | 2001-03-12 | 2004-05-27 | Chung Randall M. | Re-assembly of streaming files from separate connections |
US7277958B2 (en) * | 2001-03-12 | 2007-10-02 | Edgestream, Inc. | Re-assembly of streaming files from separate connections |
US20060055826A1 (en) * | 2003-01-29 | 2006-03-16 | Klaus Zimmermann | Video signal processing system |
US20060253857A1 (en) * | 2005-05-04 | 2006-11-09 | Ulead Systems, Inc. | Method for processing a data stream by utilizing multi-processor |
US20070177677A1 (en) * | 2006-01-30 | 2007-08-02 | Thomsen Jan H | Systems and methods for transcoding bit streams |
US20070177519A1 (en) * | 2006-01-30 | 2007-08-02 | Thomsen Jan H | Systems and methods for transcoding bit streams |
US8068541B2 (en) * | 2006-01-30 | 2011-11-29 | Jan Harding Thomsen | Systems and methods for transcoding bit streams |
WO2008127550A2 (en) * | 2007-04-12 | 2008-10-23 | Thomson Licensing | Operational management solution for media production and distribution |
WO2008127550A3 (en) * | 2007-04-12 | 2009-02-19 | Thomson Licensing | Operational management solution for media production and distribution |
US8744246B2 (en) | 2007-04-12 | 2014-06-03 | Gvbb Holdings S.A.R.L. | Operational management solution for media production and distribution |
US9614885B2 (en) | 2007-04-12 | 2017-04-04 | Gvbb Holding S.A.R.L. | Operational management solution for media production and distribution |
Also Published As
Publication number | Publication date |
---|---|
US7529848B2 (en) | 2009-05-05 |
US20020103918A1 (en) | 2002-08-01 |
US20060218299A1 (en) | 2006-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7571385B2 (en) | Methods and systems for processing media content | |
US7529848B2 (en) | Methods and systems for efficiently processing compressed and uncompressed media content | |
US7757240B2 (en) | System and related interfaces supporting the processing of media content | |
US7206495B2 (en) | Methods and systems for managing multiple inputs and methods and systems for processing media content | |
US7581185B2 (en) | Interface and related methods for reducing source accesses in a development system | |
US7237244B2 (en) | System and related methods for reducing memory requirements of a media processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MILLER, DANIEL H.;RUDOLPH, ERIC J.;REEL/FRAME:011375/0676 Effective date: 20001206 |
|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: RERECORD TO CORRECT ASSIGNOR'S NAMES PREVIOUSLY RECORDED AT REEL 011375, FRAME 0676.;ASSIGNORS:MILLER, DANIEL J.;RUDOLPH, ERIC H.;REEL/FRAME:011696/0386 Effective date: 20001206 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034541/0001 Effective date: 20141014 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.) |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20180905 |