text:
A method of representing a development project is presented comprising identifying a plurality of sources comprising the development project, determining whether any of the sources are required simultaneously and, if not, dynamically generating a filter graph representation of the development project utilizing a segment filter to couple a source to multiple processing threads.
1. A method of generating a filter graph for a user-defined processing project, the method comprising:
analyzing the project for multiple accesses to a single source of media content;
determining that the multiple accesses cannot be combined and/or share a common processing chain; and
coupling a single instance of the media source to the one or more processing chains through a software object to satisfy the multiple accesses without invoking a commensurate number of multiple instances of the media source, wherein the software object is a segment filter and further wherein the one or more processing chains comprise:
a scalable, dynamically reconfigurable matrix switch having a plurality of inputs and a plurality of outputs;
at least one matrix switch input being communicatively linked with a first processing chain portion;
at least one other matrix switch input being communicatively linked with a second processing chain portion;
the matrix switch being configured to dynamically couple one or more of the matrix switch inputs to one or more of the matrix switch outputs.
2. A method according to
receiving a request for content at the software object; and
issuing a seek command from the software object to the media source to retrieve the media for presentation to a requesting processing chain.
3. A method according to
4. A method according to
identifying multiple simultaneous access to the media source; and
invoking a commensurate number of software objects, coupling a commensurate number of instances of the media source to processing chains to satisfy the multiple simultaneous requests.
5. A storage medium comprising a plurality of executable instructions including at least a subset of which that, when executed, implement a method according to
6. A computing system comprising:
a storage medium having stored thereon a plurality of executable instructions; and
an execution unit, coupled to the storage medium, to execute at least a subset of the plurality of executable instructions to implement a method according to
7. A method of generating a filter graph for a user-defined processing project, the method comprising:
analyzing the project for multiple accesses to a single source of media content;
determining that the multiple accesses cannot be combined and/or share a common processing chain;
coupling a single instance of the media source to the multiple processing chains through a software object to satisfy the multiple accesses without invoking a commensurate number of multiple instances of the media source, wherein the software object is a segment filter; and
ascertaining whether the multiple processing chains share common pre-processing attributes and, if so, interposing one or more associated filters between the single source of media content and the software object.
8. A method according to
receiving a request for content at the software object; and
issuing a seek command from the software object to the media source to retrieve the media for presentation to a requesting processing chain.
9. A method according to
10. A method according to
identifying multiple simultaneous access to the media source; and
invoking a commensurate number of software objects, coupling a commensurate number of instances of the media source to processing chains to satisfy the multiple simultaneous requests.
11. A storage medium comprising a plurality of executable instructions including at least a subset of which that, when executed, implement a method according to
This application is a divisional application of and claims priority to U.S. patent application Ser. No. 09/731,490, filed Dec. 6, 2000, now U.S. Pat. No. 6,983,466, the disclosure of which is incorporated by reference herein.
This invention generally relates to processing media content and, more particularly, to an interface and related methods for reducing source filter invocation during execution of a development project.
Recent advances in computing power and related technology have fostered the development of a new generation of powerful software applications. Gaming applications, communications applications, and multimedia applications have particularly benefited from increased processing power and clocking speeds. Indeed, once the province of dedicated, specialty workstations, many personal computing systems now have the capacity to receive, process and render multimedia objects (e.g., audio and video content). While the ability to display (receive, process and render) multimedia content has been around for a while, the ability for a standard computing system to support true multimedia editing applications is relatively new.
In an effort to satisfy this need, Microsoft Corporation introduced an innovative development system supporting advanced user-defined multimedia editing functions. An example of this architecture is presented in U.S. Pat. No. 5,913,038 issued to Griffiths and commonly owned by the assignee of the present invention, the disclosure of which is expressly incorporated herein by reference.
In the '038 patent, Griffiths introduced the an application program interface which, when exposed to higher-level development applications, enable a user to graphically construct a multimedia processing project by piecing together a collection of "filters" exposed by the interface. 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 software objects for communication between a filter graph and its application. According to one implementation, individual filters of a filter graph architecture are implemented as component object model (COM) objects of an operating system executing on a computer, each implementing one or more interfaces which contain 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. For each data stream that the filter handles it exposes at least one 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 accomplished by a series of "copy" operations from one filter to another.
As introduced in Griffiths, 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
Products utilizing the filter graph have been well received in the market as it has opened the door to multimedia editing using otherwise standard computing systems. It is to be appreciated, however, that the construction and implementation of the filter graphs are computationally intensive and expensive in terms of memory usage. Even the most simple of filter graphs requires and abundance of memory to facilitate the copy operations required to move data between filters. Thus, complex filter graphs can become unwieldy, due in part to the linear nature of conventional development system architecture. Moreover, it is to be appreciated that the filter graphs themselves consume memory resources, thereby compounding the issue introduced above.
Thus, what is required is a filter graph architecture which reduces the computational and memory resources required to support even the most complex of multimedia projects. Just such a solution is disclosed below.
This invention concerns a system and related interfaces supporting the processing of media content. In accordance with one aspect of the present embodiment, a method of representing a development project is presented comprising identifying a plurality of sources comprising the development project, determining whether any of the sources are required simultaneously and, if not, dynamically generating a filter graph representation of the development project utilizing a segment filter to couple a source to multiple processing threads. In this way, the source and source filter, typically coupled to each of the multiple processing threads, is shared among multiple processing threads, reducing the computational and memory requirements necessary to support execution of the development project.
The same reference numbers are used throughout the figures to reference like components and features.
Figs 31-37 graphically illustrate various matrix switch programming grid states at select points in generating and configuring the matrix switch to implement the media processing of
This application is related to the following commonly-filed U.S. Patent Applications, all of which are commonly assigned to Microsoft Corp., the disclosures of which are incorporated by reference herein:
Various described embodiments concern an application program interface associated with a development system. According to one example implementation, the interface is exposed to a media processing application to enable a user to dynamically generate complex media processing tasks, e.g., editing projects. In the discussion herein, 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. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, personal digital assistants, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. In a distributed computer environment, program modules may be located in both local and remote memory storage devices. It is noted, however, that modification to the architecture and methods described herein may well be made without deviating from spirit and scope of the present invention. Moreover, although developed within the context of a media processing system paradigm, those skilled in the art will appreciate, from the discussion to follow, that the application program interface may well be applied to other development system implementations. Thus, the media processing system described below is but one illustrative implementation of a broader inventive concept.
It is to be appreciated that 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.
In certain implementations, 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. Generally, 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. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
In accordance with the illustrated example embodiment of
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. By way of example, and not limitation, such 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.
Computer 200 may further include other removable/non-removable, volatile/non-volatile computer storage media. By way of example only,
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. Although 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. In accordance with the illustrated example embodiment of
Continuing with
A monitor 256 or other type of display device is also connected to bus 206 via an interface, such as a video adapter 244. In addition to the monitor, 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.
As shown in
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.
In a networked environment, program modules depicted relative to the personal computer 200, or portions thereof, may be stored in a remote memory storage device. By way of example, and not limitation,
Turning next to
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. According to one example implementation, interface 302 is a component object model (COM) interface, as used by operating systems offered by Microsoft Corporation. As introduced above, COM interface 302 provides a means by which the features of the render engine 222, to be described more fully below, are exposed to an application program 216.
In accordance with the illustrated example implementation of
In accordance with the example implementation of a media processing system, 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). As introduced above, 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. As shown, source filter 304 receives streaming data from the invoking application or an external source (not shown). It is to be appreciated that the streaming data can be obtained from a file on a disk, a network, a satellite feed, an Internet server, a video cassette recorder, or other source of media content. As introduced above, transform filter(s) 306 take the media content and processes it in some manner, before passing it along to render filter 310. As used herein, transform filter(s) 306 are intended to represent a wide variety of processing methods or applications that can be performed on media content. In this regard, 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, as used herein, 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.
In accordance with one aspect of the embodiment, to be described more fully below, 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 306B, 306C, 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). An example of this cascaded filter graph architecture is introduced in
Typically, media processed through source, transform and matrix switch filters are ultimately passed to render filter 310, which 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.
As introduced above, 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. Insofar as 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. According to one implementation, output 1 is generally reserved as a primary output, e.g., coupled to a rendering filter (not shown).
According to one implementation, for each input 402 and output 404, 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.
As introduced above, the matrix switch programming grid 406 is dynamically generated by render engine 222 based, at least in part, on the user-defined development project. As will be developed below, 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
Turning briefly to
Returning to
As introduced above, the filter graph is time-aware in the sense that media (source) time and project execution time are maintained. According to one implementation, 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). According to one implementation, 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. Alternatively, matrix switch 308 utilizes an integrated set of clock(s) to independently maintain project and media times.
Having introduced the architectural and operational elements of matrix switch filter 308,
According to one implementation, 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). Thus,
In addition 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. According to one implementation, 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. Alternatively, resizer filter 614 adjusts the media size to the largest size provided by any one or more media sources. That is, if, for example, 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, introduced above, 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.
In accordance with one aspect of the present invention, filter graph 600 is depicted utilizing a single, negotiated buffer 604, 608, 612, 616, etc. between adjacent filters. In this regard, render engine 222 reduces the buffer memory requirements in support of a development project.
From the point of pre-processing (filters 602, 606, 610, 614, 618), rather than continue a linear filter graph incorporating all of the transition 620 and effect 622 filter(s), 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. It will be appreciated by those skilled in the art that the ability to recursively pass media content through one or more effect and/or transition filters provided by the matrix switch filter 308 greatly reduces the perceived complexity of otherwise large filter graphs, while reducing memory and computational overhead.
Turning to
In block 704, render engine 222 facilitates generation of the editing project, identifying the number and type of media sources selected by the user. In block 706, based at least in part on the number and/or type of media sources, 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.
In block 708, reflecting user editing instructions, 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.
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.
In block 712, to reduce the buffer memory requirements for the processing project, 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
Turning briefly to
In block 804, 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. In block 808, 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.
In block 812, once the matrix switch 308 has re-established its connection to adjacent filters, 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
In block 714 (
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. And, while the 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.
In the multi-media example below, the primary output of the matrix switch is a data stream that defines an editing project that has been created by a user. Recall that 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.
Specifically, a user-defined editing project is shown generally at 900. Typically, when a user creates an editing project, they 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. In defining their project, a user can operate on sources in different ways. For example, 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. Unlike conventional effect filters, 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. In this example, 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.
In the discussion that follows, the notion of a track is introduced. 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.
In accordance with the described embodiment, the user-defined editing project 900 is translated into a data structure 910 that represents the project. In the illustrated and described example, 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. Once the data structure 910 is defined, it is processed to provide a data structure 912 that is utilized to program the matrix switch. In the illustrated and described embodiment, 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.
For purposes of explanation, consider
In this example, the following can be ascertained from the project 908 and time line: from time t=0-4 source A should be routed to the matrix switch's primary output; from t=4-12 source B should be routed to the matrix switch's primary output; from t=12-14 there should be a transition between source B and source C which should be routed to the matrix switch's primary output; and from t=14-16 source C should be routed to the matrix switch's primary output. Thus, relative to the matrix switch, each of the sources and the transition can be characterized by where it is to be routed at any given time. Consider, for example, the table just below:
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.
Recall that as a user edits or creates a project, software that comprises a part of their editing software builds a data structure that represents the project. In the
Once a data structure representing the project has been built, in this case a hierarchical tree structure, a rendering engine processes the data structure to provide another data structure that is utilized to program the matrix switch. In the
In the example about to be described below, a specific data structure in the form of a grid is utilized. In addition, certain specifics are described with respect to how the grid is processed so that the matrix switch can be programmed. It is to be understood that the specific described approach is for exemplary purposes only and is not intended to limit application of the claims. Rather, the specific approach constitutes but one way of implementing broader conceptual notions embodied by the inventive subject matter.
The way that the grid is built in this example is that the rendering engine does a traversal operation on the tree 1200. In this particular example, 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. Doing the above-mentioned traversal on tree 1200 (
At this point, 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
As alluded to above, one of the innovative aspects of the matrix switch 308 is 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.
The ability of the matrix switch 308 to seek to any point in the media content gives rise to certain performance enhancement heretofore unavailable in computer implemented media processing systems. For example, generation of a filter graph by render engine 222 may take into account certain performance characteristics of the media processing system which will execute the user-defined media processing project. In accordance with this example implementation, 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. Nonetheless, there will always be a chance that a particular instance of a filter graph will not be able to process the media stream fast enough to provide the desired output at the desired time, i.e., processing of the media stream bogs down leading to delays at the rendering filter. In such a case, 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.
Thus, for the editing project depicted in
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. In the illustrated and described embodiment, 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.
Consider project 2000 depicted in
As the user creates their project, a data structure representing the project is built.
In building the grid for project 2000, the following rule is employed for effects. An effect, in this example, is a one-input/one-output object that is applied to one object—in this case source B. When the effect is inserted into the grid, it 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. When 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.
As an example, consider
As the render engine 222 completes its traversal of tree 2100, it completes the grid.
It will be appreciated that as the software, in this case 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. Thus, for example, as the render engine 222 encounters a tree node associated with source A, in addition to adding an entry to the appropriate grid, the software builds the appropriate graphs (i.e. collection of linked filters), and associates those filters with an input of the matrix switch. Similarly, when 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. Thus, in the above examples, 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. Upon completion of the tree traversal and processing of the grid, an appropriate matrix switch has been constructed, and the programming (i.e. timing) of inputs to outputs for the matrix switch has been completed.
Treatment of "Blanks" in a Project
There may be instances in a project when a user leaves a blank in the project time line. During this blank period, no video or audio is scheduled for play.
Audio Mixing
In the examples discussed above, 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.
In the illustrated example, there is no limit on the number of audio streams that can be combined at any one time.
Suppose, for example, there is an audio project that comprises 5 tracks, A-E.
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. Specifically, whereas in the case of a video project, overlapping sources simply result in playing the higher priority source (unless the user defines a transition between them), in the audio realm, overlapping sources are treated as an implicit request to mix them. Thus, the mix element is allocated a grid row any time there are two or more overlapping sources.
Once the mix element is allocated into the grid, the grid is processed to redirect any conflicting source entries to matrix switch output pins that correspond to the mix element. In the above case, redirection of the grid entries starts with pin 3 and proceeds through to pin 7. The corresponding matrix switch is shown in
There are situations that can arise when building an editing project where it would be desirable to apply an effect or a transition on just a subset of a particular project or track. Yet, there is no practicable way to incorporate the desired effect or transition. In the past, attempts to provide added flexibility for editing projects have been made in the form of so called "bounce tracks", as will be appreciated and understood by those of skill in the art. The use of 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.
To provide added flexibility and efficiency for multi-media editing projects, the notion of a composite or composition is introduced. 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.
Consider, for example,
In accordance with the processing that is described above in connection with
Next, data structure 3000 is processed to provide a second data structure that is configured to program the matrix switch. Note that as the data structure is being programmed, a matrix switch is being built and configured at the same time. In this example, 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
When 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. Thus, 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 switchs primary output pin.
Here, an effect (noisy) 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). Hence, in this example, 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.
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
Source Combining
Having introduced the various architectural and implementation elements of the present invention, above, attention is now drawn to
In block 4004, render engine 222 identifies the number and nature of the media sources within the user-defined processing project, in preparation for generating a filter graph representation of the processing project. As introduced above, for each of the identified sources, render engine 222 determines the necessary transform filters 306 required to pre-process the source (i.e., source chain), preparing the processing chain for presentation to the matrix switch filter 308 and one or more transition/effect filters 306. Unlike conventional implementations, which would proceed to generate the entire filter graph in preparation for execution of the processing project, render engine 222 generates a list of sources and when they are required in the filter graph. According to one implementation, the list is referred to as a reuse list, and is maintained within render engine 222. An example of a data structure comprising a reuse list is presented with reference to
Turning briefly to
Upon identifying a project source and the associated filters required for pre-processing the source (i.e., the source chain), render engine 222 assigns each track an identifier which uniquely identifies the source track within the context of the filter graph. In this regard, reuse list 4100 includes a field 4102 which maintains a list of tracks utilized in the associated project. In accordance with the illustrated example paradigm of the media processing system, the track identifier is utilized to represent a media clip from a given source.
The source identifier field 4104 contains information denoting the project source associated with a particular track identifier. In this regard, the source identifier field 4104 may well contain a file name, a file handle, or any other suitable source identifier.
The project time field 4106 denotes at what point during project execution the media clip is required. The source time field 4108 denotes what portion of the source file is required to support execution of the processing project. It should be appreciated that a user may well utilize the whole source file or any part thereof, as defined by the processing project.
In accordance with the illustrated example implementation of
Returning to
In block 4008, once render engine 222 has reduced the number of source file accesses (block 4006), render engine 222 dynamically generates and manages the filter graph to support execution of the development project. In accordance with one aspect of the present invention, render engine 222 invokes only those source chains associated with sources that are necessary to support the current and/or impending execution of the filter graph. It is to be appreciated that by not opening each of the chains of a processing project, render engine 222 reduces the amount of memory required to build the filter graph, thereby reducing the amount of memory required to complete execution of the project.
Turning to
If the source clips are source aligned, render engine 222 next determines whether the clips require unique pre-processing (e.g., decoding, frame rate conversion, sizing, etc.), block 4206. If unique pre-processing is required (block 4206), or the adjacent project clips are not source aligned (block 4204), the source clips will require an independent source chain of filters and, thus cannot be source combined. Accordingly, the source clips are accessed and processed independently, block 4208.
If, in block 4206, render engine 222 determines that the clips are source aligned and each share common pre-processing requirements, render engine 222 combines the adjacent source clips into a single clip and updates the reuse list 4100 accordingly, block 4210 (e.g., clip 4114 of
In the illustrated example of
Source Filter Reuse
As introduced above, conventional media processing systems may generate an individual thread each time content was required from a source, even if the source had been accessed earlier. This redundant loading/unloading of a source is computationally expensive, and consumes precious memory resources. Extending the concept of source combining introduced above, a filter and related methods for sharing a common source and source filter among multiple processing threads will now be introduced, in accordance with yet another aspect of the present invention.
Turning to
As used herein, segment filter 4406 is designed to sit between a source filter and matrix switch 308 to provide multiple processing chains with source content from a single source, where it is impossible to combine the source clips (as introduced above). Render engine 222 invokes an instance of the segment filter 4406 after the greatest common pre-processing filter 4404 for each of the chains. That is, each of the processing chains may require the source content in a different format (e.g., size, frame rate, decode format, etc.). To the extent that the chains share common pre-processing attributes, those filter(s) (4404) are placed before the segment filter 4406 where practicable. In many instances, none of the chains share common pre-processing and the pre-processing filter(s) merely comprise the source filter.
The segment filter 4406 acts as a controller, or throttle for the source, instructing the source filter to deliver content from source 4402 at select times. According to one implementation, the segment filter 4406 is, in turn, controlled by the render engine 222 and/or the matrix switch filter 308 to provide select content at select times on select inputs of the matrix switch filter 308. According to one implementation, the segment filter 4406 issues a "seek" command to the source filter to request particular content from the source. The source filter then delivers the requested content through the segment filter 4406 and appropriate pre-processing filter(s) 4408A-N to deliver the desired content to the requesting matrix switch 308 to support processing of the development project.
As introduced above, render engine 222 is responsive to higher-level user interfaces, e.g., applications 224. In this regard, it is possible that the filter graph will receive user-commands while the filter graph is executing the development project. In accordance with the media processing system paradigm, for example, it is foreseeable that a user-invoked seek will be received by the filter graph during execution of the development project. Such user defined commands are typically serialized with commands issued by filters within the filter graph during the normal course of execution. In accordance with the illustrated example implementation, where matrix switch 308 "throttles" execution of the filter graph, matrix switch 308 issues a seek command of its own to the source filter, requesting the information desired by the user. According to an alternate embodiment, seeks received from a higher-level application (and, therefore, representative of a user command) are afforded a higher priority within the filter graph. In such an implementation, all segment filters 4406 residing within the filter graph are also notified of such high-priority seeks, so that they can identify what content they will be required to provide next and, therefore, issue a revised seek command of their own.
The remaining pre-processing transform filter(s) 4408A-N, matrix switch filter(s) 308 and rendering filter(s) 4410 each function as described above.
Turning now to
More specifically, with reference to
Turning now to
In block 4604, the source filter retrieves the requested content and passes the data to the switch until some sort of indication is received that the end of content has been received (e.g., an end-of-stream (EOS) indication, an application interrupt, etc.). As introduced above, an application interrupt may be issued when a user, through a user interface (e.g., media control application 224), wants to seek to a certain point in the development project.
In block 4606, segment filter 4406 determines whether an EOS or an application interrupt is received. If not, the process continues with block 4604. If so, segment filter 4406 identifies the next required segment and when it will be required, given the current seek location received from the matrix switch filter 308. Based, at least in part, on the current seek location, segment filter 4406 determines whether more segments of the source are required, block 4610. As introduced above, if a user-defined seek command is issued, it may be issued to a location in the development project where no further content is required from a particular source. Thus, segment filter 4406 determines whether additional segments are required in block 4610.
If no further segments are required along one of the processing chains leading from the segment filter, render engine 222 may remove (at least temporarily) that chain from the filter graph to free memory space and a matrix switch filter input for other processing chains, block 4612.
If, in block 4610 further segments are required, segment filter 4406 issues a seek instruction directing the source filter to retrieve and deliver the next segment, in accordance with the matrix switch filter instructions, block 4614. This process continues in an iterative fashion with block 4604.
Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.
Patent Citations
Non-Patent Citations
Legal Events
Original Image


text:
Quick Links
Shop All Jewelry
ERP10019 In Stock
With grace and charm found only at the bottom of the seas, these sterling silver pave faux pearl drop earrings are destined for enhancing beauty. The earrings sway easily with the smallest motion and the pearls catch the light in that special sea-like way. The cubic zirconias line the top around the pearl as well as well as above it to make the earrings practically shimmer. The rhodium finished sterling silver adds that final touch to make these sterling silver pave pearl drop earrings a great choice for pearl lovers.
Eve's Addiction.com wants you to be a happy customer. We want you to be completely satisfied with the sterling silver jewelry that you receive from us, as we only sell high quality silver and cubic zirconia cz jewelry. We do understand that you may not like your purchase for some reason.
You may return or exchange your jewelry within 60 days of purchase if you are not satisfied with it. The jewelry must be returned in its original condition for a refund or exchange. Engraved, personalized, photo, monogram, name and initial, chocolate and clearance items are not returnable or exchangeable.

subset: commoncrawl


text:
Saxx 24-Seven underwear collection is made with their original high-quality, medium-weight soft stretch cotton, designed for everyday comfort, whatever your day entails. The Saxx 24-Seven Boxer Briefs are made with their signature and highly-acclaimed ergonomic comfort pouch for a level of support and comfort like no other. Each pair of Saxx underwear features contrast stitching and a comfortable waistband with Saxx logo. Saxx offers some of the finest non-chafing men's underwear available due to their lightweight mesh side panels.
95% Cotton, 5% Spandex.
Machine wash cold on gentle cycle. Do not bleach. Tumble dry low heat on delicate cycle. Iron low heat. Do not dry clean.
|30-32 in 76-81 cm
|32-35 in 81-89 cm
|35-38 in 89-97 cm
|Extra Large
|38-42 in 97-107 cm


text: 25% Off Storewide ! DOG CAR & TRAVEL. Whatever the need to keep your dog comfortable and safe on your trip, we'll have it. From a simple dog seat to help your small dog see out a window, to dog car barriers and dog travel crates to keep your dogs safely in the rear of your car. Dog car seat covers are a must. Not only do they keep your seats clean - they allow you to buckle your dog into the car seat.We have airline approved dog carriers, too.


text:
The Department of Defense announced today recruiting and retention statistics for the active and reserve components for fiscal 2012, through January.
Active Component.
Recruiting. All four active services met or exceeded their numerical accession goals for fiscal 2012, through January.
Retention. The Army, Navy, Marine Corps, and Air Force all exhibited strong retention through the fourth month of fiscal 2012.
Reserve Component.
Recruiting. Four of the six reserve components met or exceeded their numerical accession goals for fiscal 2012, through January.
Attrition – All reserve components are on target to achieve their fiscal year attrition goals.
Detailed information on specific recruiting data can be obtained by contacting the individual military recruiting commands at 502-626-0164 for Army, 210-565-4678 for Air Force, 703-784-9454 for Marine Corps, and 901-874-9048 for Navy. The reserve components can be reached at the following numbers: National Guard Bureau 703-607-2586; Army Reserve 404-464-8490; Air Force Reserve 703-697-1761; Navy Reserve 757-322-5652; and Marine Corps Reserve 504-678-6535.


text:
Find the perfect hotel in Albion using our hotel guide provided below. Search for the cheapest discounted hotel and motel rates in or near Albion, MI for your upcoming individual or group travel. We provide the best Albion Michigan hotel rooms. Review the Albion hotel list below to find the perfect lodging. We also have a map of the Albion hotels. Coordinating a group? Get Albion Group Hotel Deals
Albion Hotels & Accommodations
Next 20 Albion Hotels > [1 - 20 of 50]
Next: See My Albion Hotels with Pricing >


text:
Millions of Americans remember Dick and Jane (and Sally and Spot, too!). Now Dick and Jane and all their pals are back with revised editions of these classic readers for a whole new generation of readers to enjoy!
Level One
Look, Dick! Look, Jane! In this easy-to-read book, Dick and Jane ride bikes, go roller skating, walk a dog, and even play dress-up together.Book: Paperback | 6.06 x 9.01in | 32 pages | ISBN 9780448434001 | 15 Sep 2003 | Grosset & Dunlap | 4 - 6 years


text: BrFaSEZIUAAwu8o (1) by Alan Duffy | 26th, June 2014 Tweet Posted in | No Comments » By Alan Duffy on June 26th, 2014 in . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site. Like Us Follow @waatpies Share this article Tweet


text:
T-Rex Engineering
T-Rex Fuel Tank ChameleonThe T-Rex Fuel Tank Chameleon provides 6 separate outlets for a pedal board with a variety of pedal power needs. The T-Rex Fuel Tank Chameleon provides clean power so you can focus on your playing, not your power supply.$149.00
T-Rex Fuel Tank JuniorThe T Rex Fuel Tank Jr. is much smaller than its big brother, but still powers up to five 9V guitar pedals, or three 9-Volt pedals and one 18-Volt pedal. It takes up way less space on a crowded pedal board too!$105.00
T-Rex Fuel Tank Pedal Power SupplyNo more batteries to change. No more tangled adapter cables to trip over. The T-Rex Engineering FuelTank is the perfect power supply unit for guitarists who want to focus on their performance, not their gear.
Reliably delivering 1500mA through ten DC plugs, FuelTank powers... read more$199.00


text:
Verify Before You Share a Lie aims to reduce harm, misinformationWritten by Danielle Stanton | | email@example.com
Thousands of us do it every day: We click a button and share a post on social media. We think it's harmless, but those shares often spread misinformation.
That's why Toledo resident Gina Fielding is asking people to "Verify Before You Share a Lie."
Her website conducts background research on people to verify whether they are really a sex offender, wanted by police or missing, as these reports are common on social media. Her research is used to help people determine whether they should share the information on Facebook, Twitter or other social media.
"People want to help and want to get this bad guy off the streets," said Fielding, a social media expert. "I call them Internet warriors. They hit that share button thinking they're doing a good thing and that makes sense. However, with everything positive, there is a negative, and that is misinformation spreads as good information."
About 35,000 people thought they were doing a good thing when they shared bad information about 23-year-old Toledo resident Chad Lesko last year. Lesko's ex-girlfriend created a fake Facebook account and posted lies about him, saying he was wanted by the Toledo Police Department for raping four children, one his own son.
The post went viral and soon Lesko was being harassed and nearly assaulted by strangers in a park. He received death threats and began having anxiety attacks that put him in the hospital several times.
"I see a lot of misinformation and it's one of my pet peeves," Fielding said. "It destroyed his life for months. He volunteers at a church every month handing out food to families. Within five minutes the police showed up and had him on the ground in front of the people he volunteers for. He's humiliated and [the police] wasted valuable time.
"Here's this kid whose life has been turned upside down and he doesn't know how to handle it," Fielding said. "He was devastated. … Kids are slitting their wrists over this kind of thing. They feel like their life is over."
After witnessing Lesko's case, Fielding and her friend Cerise Claussen got together and came up with the name Verify Before You Share a Lie.
Claussen was also deeply disturbed by Lesko's story and is pleased they can do something positive to combat negative misinformation about innocent people.
"I could not stand seeing that kid being judged … when he really didn't do what he was accused of," Claussen said. "Everybody judged wrongly and that gets me. … Occasionally, he still has problems with it."
Fielding's and Claussen's efforts grew into a full-fledged "misinformation-fighting operation."
Not everyone has the time or the access of a journalist to check out whether information is good or bad, Fielding said. That's why she spends her own time, without financial compensation, checking with police departments, court records and missing persons' organizations.
Fielding recently worked to verify a submission about a Blade article that reported a rapist at Franklin Park Mall. Turns out the article was from 2003 and police had caught the suspect days after the incident, Fielding said.
"People were sharing it and going 'This is awful.," Fielding said. "People were on the lookout and police were getting calls. It's from 2003. It's as simple as looking at the date.
"They've already caught [the suspect] within days. It's wasting police time. This is what happens [with] Internet warriors. They want to help. I think their hearts are in the right place."
When a situation has been resolved it will be posted to her website and Facebook page with a "RESOLVED" stamp on it. If the information is verified, it will be stamped with "VERIFIED" for true or listed as "DEBUNKED" if false. If Fielding could not verify whether the information was true or false, she will advise her client to use caution when sharing.
"We will do all the work and you will be able to check back to the site within minutes to hours to see if the post is true or not," Fielding said. "Then you can be comfortable in your sharing and not take part in potentially ruining someone's life."
Fielding said it's difficult to know how prevalent misinformation is on social media because there is so much information out there in so many different forms. One of the biggest issues she sees is outdated information. For example, two girls from Wood County were recently reported missing but were found within days. People continued to share the story even after it was resolved.
"I don't know why it happens or how it happens, but things resurface a lot," she said. "There's a picture going on for a year now. It's an old lady standing with a poster board. She's looking for her son. It gives her name and her email address. He was found last July and he just moved back in with his mother and they continue to get emails. He's flustered because his picture keeps circulating. People think it's just recent and they share it."
Police departments are grateful for Fielding's efforts, she said. While testing the logistics of her system at the Chicago Police Department, Fielding said she explained what she was doing to officers there and they said "Thank you."
"I said, 'You probably waste a lot of time on these calls' and they said 'You have no idea,'" Fielding said.
Fielding has been working on the website since April.
"It's not as easy as a Google search," she said. "What will set our website apart is the accuracy. Our information has to be accurate. It has to be 100 percent sure. There's no room for mistakes. Our credibility is our name. That's why we use only credible sources. I check my sources and my sources' sources."
Sharing is important and helpful, she said, but needs to be done in a responsible manner. If misinformation can be stopped, "We should stop it," she said.
"We have a very powerful tool at our fingertips: social media," Fielding said. "But with great power comes great responsibility. If you're not careful you can inadvertently hurt people or waste time.
"We're getting people to rethink before they click that button."
For more information, visit verifybeforeyousharealie.com.
Tags: Cerise Claussen, Chad Lesko, Chicago Police Department, Gina Fielding, Google search, misinformation, social media, Toledo Police Department, Verify Before You Lie


text:
Find accommodations in Levelland with the hotel list provided below. Search for cheap and discounted hotel and motel rates in or near Levelland, TX for your business or personal leisure travel. Explore the most favored Levelland Texas hotel/motel rooms. Review the Levelland hotel list below to find the perfect lodging. We also have a map of the Levelland hotels.The Levelland center is approximately 1 mile from Levelland High School and 23 miles from Texas Water Rampage.
Levelland Hotels, Motels & Accommodations
Next 20 Levelland Hotels > [1 - 20 of 49]
Next: See My Levelland Hotels with Pricing >


text:
Out of Stock
Item # REW0047
Don't worry though, we have a lot more Interchangeable Sunglasses in stock than that.View Similar Products
Ryders Eyewear Hijack Sunglasses - Interchangeable $0.00
Instead of shelling out big bucks for three different sunglasses, buy one pair that works for pretty much everything. The Ryders Eyewear Hijack Interchangeable Sunglasses let you quickly plug in the right lens for the conditions.
- Polycarbonate lenses are lightweight and tough
- Interchangeable lens system means you'll have the right shade for every condition
- TR90 Switzerland frames are tough, flexible, and lightweight
- Hydrophilic nose pads and temple tips prevent these sunglasses from sliding around on your face
- Scratch-resistant coating protects your sunglasses from abrasion
- Optically correct design won't distort your view
- Use the grey tint for medium to very bright light, orange tint for low to medium light, and clear for very low light
Tech Specs
TR90 Switzerland
Interchangeable Lens:
yes, 3 pairs included
Lenses Included:
grey, orange, clear
Face Size:
Frame Measurements:
134 x 45 x 169 mm
Nose Pads:
yes, hydrophilic
Temple Pads:
yes, hydrophilic
Recommended Use:
cycling, streetwear
Manufacturer Warranty:
Reviews & Community
What do you think of the
Ryders Eyewear Hijack Sunglasses - Interchangeable
? Share a...
Mike Traslin
Awesome price!
Awesome price! Interchangeable lenses.... And good quality that looks good. These are my favourite glasses for mountain biking.
Mike Traslin
Durable shades.... Still use the same shades for mountain biking.


text:
But I wasn't telling myself, as you might expect, that I'd never race again once I finished that day. I was thinking just the opposite: that I couldn't wait to do this again—because while we were racing as hard as I ever had back when I took it all too seriously, we were having more fun than I'd ever had in that era.
The Rapha Gentlemen's Race was a 137-mile, unsanctioned, invite-only contest to ride from Oregon's northern coast to downtown Portland as quickly as possible. Formally there was no race at all. The waiver we signed to gain entry mentioned only "the Activity," and Slate Olson, the founder of the Gentlemen's Race and Rapha's U.S. general manager, said those of us on the road were to be referred to as a "coincidence." (During last year's version, Olson says, a police officer who stopped and questioned him was highly skeptical that so many groups of cyclists riding in such an organized fashion could really be construed as a coincidence, but ultimately waved him on.) There were no road closures, just hot-pink hashes marking the course. There were no marshals or rules. The only obligations—outside of riding safely—were that each team had to pass through two checkpoints along the course and fill up a disposable camera, issued at the start, with snapshots from the road. Twenty-three teams showed up, from around the Pacific Northwest and from as far afield as Oklahoma and California. Every rider paid a $20 entry fee and got a T-shirt and a Rapha-branded church key. Every team had to contribute a six-pack of beer to the prize pool, which also included Rapha jerseys for the winners but nothing else.
Thanks to Rapha's significant alternative marketing savvy, the Gentlemen's Race is a well-documented example of the recent groundswell in similar events. Their very nature makes an objective and accurate count impossible, but unsanctioned, informal, underground races outside the governance of any officiating body are occurring with more frequency in every state and discipline—from road and mountain bike events to mixed-terrain adventures and the by-now classic urban, messenger-style alley cats.
Many demand far more of the rider than the average four-corner criterium or short-track circuit. The Trans-Iowa Race and the Dirty Kanza 200 stack multiple centuries on gravel-strewn country roads, while the Tour Divide spans weeks and two countries. Some unsanctioned races, like the Singlespeed World Championships and Single Speed Cyclocross World Championships, are as much about the party as the competition. But despite—or because of—this, top-level pros still partake. Giant's Adam Craig has podiumed at both singlespeed events. And team Kona's Twin Towers, Ryan Trebon and Barry Wicks, are stalwarts of the singlespeed cyclocross race (the latter in a gold-lame Speedo). Winners at both championships are rewarded with a trademark tattoo—better not win if you want to keep your hide pristine.


text:
These shades are perfect for our sliding glass doors. We wanted an alternative to traditional verticals. The shades are a soft light filtering fabric and they give us privacy in the evening. When they are up they give a seamless, clean look on our sliding glass doors. Visitors in the home do not even notice the shades, which is exactly what we wanted, a clean look.
Levolor's best-selling Accordia Light-Filtering Cellular Shades are stylish money savers. With all of the designer trimmings like single or double cell fabric, cold-blocking insulation and a bevy of rich, textural colors, these shades give you more upgrades for your dollar. Customize these light-filtering shades with different fabric sizes, control styles and more.
Install Time: 12 minutes
We Recommend:
This product complies with CPSC child safety guidelines. If you have children in your home on a regular basis, CPSC recommends the use of cordless window coverings.
This product is backed by the Levolor Pledge!
Welcome to Blinds.com
For a better mobile experience, try our mobile optimized website. You can always come back to the desktop experience whenever you'd like!


text: Items 61 to 72 of 187 total View 12 / 24 / 48 Previous 1 ... 4 / 5 / 6 / 7 / 8 ... 16 Next Amazing Growth Of Zoas! By Mario on 10/3/2013 Mario would recommend this product to a friend I bought this in hopes to help my ZOAs out who have only grown about 5 new polyps in three months. After using the chili every other day for a month I have grown over 20+ polyps and have enhanced color. Couldn't be happier and will be buying again when I run out! Fish and Corals LOVE this! By Chris on 7/19/2013 Chris would recommend this product to a friend A while ago I'd watched the BRStv video where Ryan mentions the Reef Chili and thought I'd have to try it out. Unfortunately it was out of stock at that time and now I can see why such high demand! The others are correct. This is awesome food. My corals and fish love it. I even saw my baby Mandarin picking at some pieces which got to the bottom (she already eats pellets sometimes though) Now I have to say the others liking it is good but with a fish like a Mandarin who's diet is usually so particular eating it, I doubt anything else would fuss. Great product. Your marine life will love it! Very Happy By Scott on 7/15/2013 Scott would recommend this product to a friend My corals absolutely love Reef Chili and I will not use anything else again. Great! By John on 6/28/2013 John would recommend this product to a friend Fish and coral love this stuff! easy to use! BEST CORAL PRODUCT ON THE MARKET!!! By Dolmo5000 on 6/25/2013 Dolmo5000 would recommend this product to a friend After looking for and trying many different coral foods in my sps dominated mixed reef tank I found reef chili. I have to say that I was at the time a believer that in order to provide sps and other filter feeders needing tiny particle sized you had to go with expensive refrigerated products. I was sold on the product when I saw and then read the peer reviewed article which found that reef chili works as well or better than those expensive liquids. I now feed reef chili and nothing else (for coral that is). LOVE THE PRODUCT!!!!! Corals and Fish Love it!! By Corey on 6/24/2013 Corey would recommend this product to a friend Great Polyp extinsion on all my SPS, all the corals look great. The fish really get excited when I put it in the tank. Great for corals By Shawn on 5/30/2013 Shawn would recommend this product to a friend i have had great results. you can see all the corals come alive when you put this food in your tank. Perfect! By Chris on 5/30/2013 Chris would recommend this product to a friend Spot fed everything then added remainder to the tank. Polyp extension on my LPS was incredible! Anything left over was cleaned up by my inverts and fish. Appears to be a fantastic value given how small the portions are. Very impressed and very satisfied! Great stuff By Ernie on 5/26/2013 Ernie would recommend this product to a friend Every thing in my tank goes nuts when i put the chili in, and it doesnt make a mess or cloud the water. Goodies and treats for the corals By trigger on 5/17/2013 trigger would recommend this product to a friend I feed once or twice a week and this stuff seems to go a very long way considering the small size. Would definitely buy again and recommend to others. Great food for corals By lwillis22 on 5/14/2013 lwillis22 would recommend this product to a friend I bought this as it was recommended from a fellow reefer. My corals seem to love it. I would recommend it highly. excellent By ReefDVMs on 5/13/2013 ReefDVMs would recommend this product to a friend Excellent coral food, little to no waste once dissolved in water and for spot feeding this works great due to small particle size Write Your Own Review You're reviewing: BRS Reef Chili Coral Food *How do you rate this product? *Would you recommend this product to a friend? Yes No *Nickname *Summary of Your Review *Review Submit Review


text:
Newbies, Post in Welcome Central to open up the boards
0 Members and 1 Guest are viewing this topic.
The Lord God and his Grace and Love are truly Wonderfull! Thanks for that Word my friend.
34 Now Peter opened his mouth and said, 'It is true, I am grasping that God is showing no favoritism; 35 rather, in every nation, whoever is continually having deep respect for Him and continually doing works that are right [and just], is acceptable to Him.


text:
Hollywood Movies, Trailers, Pictures, News & DVDs
Movie Description(Click Here To Hide)
In the fourth and final film in the animated adventure series, Shrek (voice of Mike Meyers) is now a married man living with his wife and three kids. Popular with the local villagers, he still misses the old days. Eventually this feeling pushes him to enter into a Faustian bargain with the trickster Rumpelstiltskin (voice of Walt Dohrn). The decision proves to be an unwise one, as Shrek finds himself thrown into an alternate reality where he must struggle for survival. Returning as main characters and Shrek friends are Donkey (voice of Eddie Murphy), Fiona (voice of Cameron Diaz) and Puss in Boots (voice of Antonio Banderas).
Previous Next
New Releases
Popular Movies
Movie News
Movie Picture for Shrek Forever After
Photo Credit: Paramount Pictures
Tags: Shrek Forever After
Scenes from the animated family adventure film Shrek Forever After (2010)


text:
Learn more about Patriot Memory Xporter 32GB Rage USB - 32 GB - USB:
Manufacturer: Patriot
Mfg Part#: PEF32GRUSB
Sku: 217233297
See more in USB/FireWire Devices
|The Patriot Extreme Performance Xporter XT Rage is a USB Flash Drive withboth performance and functionality. Featuring an innovative QuadChannel configuration, data is intelligently managed and transferredsimultaneously to 4 NAND chips resulting in vastly enhanced performance,particularly write speeds: Rage improves on traditional USB 2.0 FlashDrives to offer up to 27MB/s read and 25MB/s write transfer speeds.Functionality and durability is designed in to the Rage with its rubbercoating on the housing and retractable USB connector: the Rage is easier tohold and use, more durable to drops and daily abuse and the connector isprotected when not in use. The Patriot Xporter Rage is available in 8GB,16GB, 32GB and 64GB capacities and carries a 5 year warranty.


text:
Tag: HIRE Education
Part 2: Training for a Trade
Now it's time to continue with Part 2 of a three-part series, Training for a Trade. In this report, Gina DiPietro takes us to a new Criminal Justice program offered by the University of Maine at Fort Kent. And as she explains, you don't have to live in the Valley to take the course.


text:
Questions? 503.552.1660 / Toll-free 877.669.8737 or firstname.lastname@example.com
For nearly 60 years, NCNM has been preparing students for powerful and exciting careers in the rapidly emerging field of natural medicine.
Schools & Programs
The National College of Natural Medicine offers graduate degrees and certificates through the schools of Chinese Medicine, Naturopathic Medicine, Research & Graduate Studies and Undergraduate & Part-Time Studies.
Degrees Offered
NCNM's diverse degree programs offer a range of options for post graduates who seek fulfilling careers in the field of natural health: Doctor of Naturopathic Medicine; Master of Science degrees in Oriental Medicine; Integrative Medicine Research; Nutrition; Global Health; and Integrative Mental Health. NCNM also provides students a variety of natural medicines certificates.
Master of Science in Oriental Medicine
Doctor of Naturopathic Medicine
Master of Science in Integrative Medicine Research
Master of Science in Integrative Mental Health
Master of Science in Global Health
Master of Science in Nutrition
Bachelor of Science in Integrative Health Sciences
Bachelor of Science in Nutrition
Academic Calendar & College Catalog
Acquaint yourself with NCNM. View the academic calendar, the college catalog, with information about courses and curricula, and connect directly with the Registrar's Office.
Natural Medicine Residency Program
The college has a well-established residency program which is certified by the Council on Naturopathic Medical Education (CNME).
Continuing Education
Keep informed of the latest developments in the field and meet your CE licensure requirements.


text:
UTG Airsoft Master Sniper Black
4.5(34 reviews)
From: UTG
TSD Tactical Series SD700 - OD Green
5.0(15 reviews)
From: TSD
30-day limited warranty
Average Customer Review3.5 (3 reviews)
Create an online reviewand share your thoughts with other customers
Things I liked:weight, comes with bi-pod, good FPS,
Things I would have changed:hop up setup, I like the stock, it's plastic but sturdy the scope is decent, the sling is garbage.
What others should know:the hop up , when you shoot it, the gun vibrates witch causes the hop up to move down.I read one review on it and the guy said that it would happen and also said it wasn't a biiigg deal but it kind is.plus if you get it you will want some .25 .28 bbs
Things I liked:it is very reliable, extremely accurate (if you take it out of the box and use .20gram bb's, don't expect anything special. you have to take the time to sight in the scope with heavier bb's, and adjust the hop-up), massively powerful, fairly rugged, and very affordable.
Things I would have changed:well, the hex screw that holds the back of the bolt comes slightly loose, but only after many shots, and there is a hex wrench in the box to tighten it after playing. overall it's not an issue. the hop up does not always stay adjusted, but again it's not a big deal. i just made a notch on the stock in the place where i had adjusted the hop up tab, so i can easily reset it. other than that, I can't think of anything.
What others should know:be very careful-if you try and fail to cock it, (pull the bolt not all the way back and then let it forward again) when you really cock it, another bb will be loaded into the chamber and can damage the hop up. if you do fail to cock it, just remove the mag, and cock it. now the mag can be re-inserted without harm. uh, the sling is junk, but I don't hold it against the gun, as it was free. i just got a surplus one at my local army-navy store.
Things I liked:the gun is very accurate for the money. the blot cocks very well and fast. the scope is great and the bipod is great
Things I would have changed:the plastic trigger guard should be made of metal because if you hit the dirt fast with the bipod up it migh break.
What others should know:if a shot is off do not mess with our scope fire a few more shots because some times it might just be the wind and your scope will be off so caution!
Show Other ReviewsCreate an online review and share your thoughts with other customers
Compatible with TSD Sniper Series SD700 Airsoft Rifle in 4 colors
CheckoutSubtotal (USD):
does not include shipping and tax


text:
A 21-Year-Old in Mississippi, 1964
In June 1964, a 21-year-old Yale student named Joel Katz arrived in Jackson, Mississippi—just days before the brutal murder of three Council of Federated Organizations (COFO) volunteers working to register black voters in the area. Their work was part of a summer campaign that sought to combat black disenfranchisement in the region, and the national attention it attracted would later pressure Congress to pass the Voting Rights Act of 1965. But the murder of the three civil rights workers underscored the deep popular resistance to the movement. Those months would later be called Freedom Summer, and Katz had come to photograph it.
"I believed it was a very important summer," Katz, who is now 70, says in explaining his decision to travel to Jackson as part of a Yale University program. But instead of focusing on the politically charged and confrontational scenes that other photographers were documenting, Katz wanted to show the day-to-day quality of his Mississippi subjects' lives. "I believed that beneath the fears, anger, frustration and rhetoric of both sides were individual lives, black and white, worthy of witness," he writes in a new book showcasing the photos, And I Said No Lord, out on May 15. The images here let us see for ourselves what Joel Katz saw 50 years ago: a community poised on the edge of radical change, during an otherwise typical summer in Jackson, Mississippi.
Above, two boys stand in line at the Streamline Café, next door to the Council of Federated Organizations (COFO) office on Lynch Street in Jackson, Mississippi. A July 1964 Village Voice article described the café as the outer limit of the COFO "citadel"—Mississippi being in a "state of siege."


text:
Police are searching for a man they say robbed the State Credit Union on Beaufort Street this afternoon.
Around 12:15 p.m., a man entered the bank, located at 210 Beaufort St., approached a teller and demanded money, according to Sgt. Jake Mahoney of the Aiken Department of Public Safety.
"Upon receiving an unknown amount of money, he left the business," Mahoney said.
The man did not present a weapon, and investigators do not believe he was armed, Mahoney said. The man fled the scene in a red or burgundy colored Ford Tempo heading east.
The man is described as a black male, about 6 feet tall, and between 200 and 225 pounds, Mahoney said. He was wearing a red, long-sleeved shirt, light-colored pants and white tennis shoes, and was covering his face with what appeared to be a gray tank top.
There were no injuries reported. Investigators now are working to recover surveillance photos and video from the bank.
The State Credit Union was robbed less than two months ago on Sept. 21. No arrests have been made in that case.
Anyone with information about this crime is asked to contact Aiken Public Safety at 642-7620. Individuals also should call CrimeStoppers of the Midlands at 1-888-CRIME–SC. Callers can remain anonymous and will be eligible for a cash reward of between $50 and $1,000.
A shot taken from surveillance video at the bank during the hold-up.×
Police are searching for a man they say robbed the State Credit Union on Beaufort Street this afternoon. (Photo by Teddy Kulmala)×
Notice about comments:
Aiken Standard is pleased to offer readers the enhanced ability to comment on stories. Some of the comments may be reprinted elsewhere in the site or in the newspaper. We ask that you refrain from profanity, hate speech, personal comments and remarks that are off point.
We do not edit user submitted statements and we cannot promise that readers will not occasionally find offensive or inaccurate comments posted in the comments area. If you find a comment that is objectionable, please click the X that appears in the upper right corner when you hover over a comment. This will send the comment to Facebook for review. Please be reminded, however, that in accordance with our Terms of Use and federal law, we are under no obligation to remove any third party comments posted on our website. Read our full terms and conditions.


text:
Written by Administrator Tuesday, 20 March 2012 18:02
Date: Aug 18-25, 2012 + 2-3 days of home hospitality
Country: Ukraine Host: National Organization of Scouts of Ukraine
Age: 15-18 (Boy Scouts, Venture Scouts) & Adults
Contingent size: 8 youths + 2 adults
Contingent gathering: Aug 16, 2012
Location: Ukrainian Theological Seminary in Lviv, the cultural capital of Ukraine
Cost: $2000 (includes travel [round trip, US-Ukraine], lodging, food, event fee,
tent, patches, bags and more fun!!)
Interested Boy Scouts, Venture Scouts and adults must be nominated by International Representatives and local councils.
Written by Administrator Tuesday, 07 February 2012 17:58
Date: Aug 2-8, 2012
Country: Korea Host: Korea Scout Association
Age: 14-18 (Boy Scouts, Venturers & Adults)
Contingent size: 24 Scouts/Venturers + 6 adults
Contingent gathering: July 30, 2012
Location: Jamboree site in Goseong 17th World Scout Jamboree campsite,
Gangwon Province, Korea (4 hours-247km by bus from Incheon Int'l Airport)
Cost: $2500 (includes travel, lodging, food, event fee, tent, patches, bags and
more fun!!)
Written by Administrator Thursday, 24 February 2011 21:45