Wireless devices that establish a wireless connection with a mobile information apparatus by wirelessly detecting, within physical proximity, the mobile information apparatus
Summary by NHIP
Proximity-Based Wireless Connection Method
The method establishes a wireless link between a device and a smartphone by detecting physical proximity via direct short range communication. The device receives first information from the smartphone through this direct short range wireless communication to facilitate future connections.
Claim Score by NHIP
Abstract
Wireless devices that establish a wireless connection with a mobile device (e.g., smart phone) by wirelessly detecting the mobile device within a physical proximity, are herein disclosed and enabled. To set up a wireless device (e.g., Bluetooth devices, audio output devices, television controllers, Internet appliances, digital cameras, etc.) for connecting with a smart phone, the wireless device and the smart phone are simply placed within physical proximity of each other for short range wireless detection. During the wireless detection, the smart phone and the wireless device may exchange, transmit, or receive device or security information to facilitate future wireless connections. Subsequent to the short range wireless detection, the wireless device and the smart phone are connected or locked for future wireless communications (e.g., Bluetooth or IEEE802.11), and future wireless connections between the wireless device and the smart phone can be established without having to repeat the short range wireless detection.

Term
Term ended
Expired 1 November 2021, 4.9 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
20 claims: 3 independent, 17 dependent
- 1A wireless connection method for a wireless device to establish a wireless connection with a smart phone, the wireless device being a distinct device from the smart phone, and the wireless device includes wireless communication circuitry, memory, and one or more processors or controllers, wherein the wireless connection method, at the wireless device, comprises:(1) wirelessly detecting, using the wireless communication circuitry of the wireless device, the smart phone, the wireless detection is based, at least in part, on physical proximity between the wireless device and the smart phone, and the wireless detection includes either the wireless device wirelessly detecting the smart phone or the smart phone wirelessly detecting the wireless device, and the wireless detection, using the wireless communication circuitry, is further based on direct short range wireless communication between the wireless device and the smart phone;(2) wirelessly receiving, using the wireless communication circuitry of the wireless device, first information from the smart phone wirelessly detected in (1), the wireless receiving of the first information is via direct short range wireless communication between the wireless device and the smart phone, the first information includes at least one of identification information, identity information, device information, a name, a PIN, security information, biometrics information, or authentication information, individually or in any combination;and(3) storing, by the wireless device, information related to the smart phone in the memory of the wireless device as part of a control list of approved identities or approved devices for accessing the wireless device;and wherein, subsequent to having wirelessly detected the smart phone in (1) and having stored at least part of the information related to the smart phone in the memory of the wireless device in (3), the wireless connection method at the wireless device further comprises:(4) wirelessly receiving, using the wireless communication circuitry of the wireless device, second information from the smart phone, the second information includes at least one of identification information, identity information, device information, a name, a PIN, biometrics information, security information, or authentication information, individually or in any combination;(5) verifying, comparing, or authenticating, at the wireless device, at least part of the second information wirelessly received from the smart phone in (4) with respect to the control list of approved identities or approved devices in (3);and(6) providing service, using the wireless communication circuitry of the wireless device, to the smart phone via a wireless communication link between the wireless device and the smart phone, the providing of the service is based, at least in part, on a successful verification, comparison, or authentication in (5), andwherein the wireless device is further operable to repeat at least part of step (4) to step (6) for establishing wireless communication between the wireless device and the smart phone without the need for repeating at least part of step (1) and step (2).
- 8Broadest claimClaim Score 24, narrow(NHIP)A wireless device for establishing a wireless connection with a mobile information apparatus, the wireless device being a distinct device from the mobile information apparatus, and the wireless device includes wireless communication circuitry and memory storing device information related to the wireless device, wherein the wireless device:(1) uses the wireless communication circuitry of the wireless device to wirelessly detect the mobile information apparatus, the wireless detection is based, at least in part, on physical distance between the wireless device and the mobile information apparatus, and the wireless detection of the mobile information apparatus includes either one of (i) the wireless device wirelessly detecting the mobile information apparatus or (ii) the mobile information apparatus wirelessly detecting the wireless device, and the wireless detection is further based, at least in part, on short range direct wireless communication between the wireless device and the mobile information apparatus;(2) uses the wireless communication circuitry of the wireless device to wirelessly transmit at least part of the device information that is stored in the memory of the wireless device, from the wireless device to the mobile information apparatus, the wireless transmission of the device information is based on the wireless device having wirelessly detected the mobile information apparatus in (1), and the wireless transmission of the device information is based, at least in part, on short range direct wireless communication between the wireless device and the mobile information apparatus;(3) uses the wireless communication circuitry of the wireless device to wirelessly receive a service request or a connection request from the mobile information apparatus;(4) uses the wireless communication circuitry of the wireless device to wirelessly establish a wireless communication link between the wireless device and the mobile information apparatus in response to having wirelessly received the service request or the connection request from the mobile information apparatus in (3), and the establishing of the wireless communication link being subsequent to having wirelessly transmitted at least part of the device information from the wireless device to the mobile information apparatus in (2);and(5) uses the wireless communication circuitry of the wireless device to wirelessly receive, via the established wireless communication link in (4), data or information from the mobile information apparatus;andwherein, subsequent to the wireless detection in step (1) or subsequent to having wirelessly transmitted the device information, related to the wireless device, from the wireless device to the mobile information apparatus in step (2), the wireless device is operable to repeat one or more other steps that include step (3), step (4), or step (5), without the need to repeat at least part of step (1) and step (2).
- 16A wireless connection method for a wireless device to establish wireless connections with one or more client devices, the one or more client devices include a smart phone, the wireless device includes wireless communication circuitry and memory storing device information related to the wireless device, wherein the wireless connection method at the wireless device, comprises:(1) wirelessly detecting, via the wireless communication circuitry of the wireless device, the smart phone, the wireless detection includes either the wireless device wirelessly detecting the smart phone or the smart phone wirelessly detecting the wireless device, and the wireless detection is based, at least in part, on physical proximity between the wireless device and the smart phone;(2) wirelessly transmitting to the smart phone, via the wireless communication circuitry of the wireless device, the device information that is stored in the memory of the wireless device, the wireless transmission of the device information is subsequent to the wireless device having wirelessly detected the smart phone or having been wirelessly detected by the smart phone in (1), and the wireless transmission of the device information is further based, at least in part, on physical proximity between the wireless device and the smart phone, and the device information is to facilitate the one or more client devices identifying or selecting the wireless device for service;(3) wirelessly receiving, via the wireless communication circuitry of the wireless device, a service request or a connection request from a client device that has identified or that has selected the wireless device for service, the service request or the connection request from the client device is based, at least in part, on the device information that was wirelessly transmitted from the wireless device to the smart phone in (2), the client device being a distinct device from the smart phone, and the client device is a device from among the one or more client devices that the smart phone has shared, over a network, information or digital files;(4) wirelessly establishing, via the wireless communication circuitry of the wireless device, a wireless communication link between the wireless device and the client device in response to having received the service request or the connection request in (3) from the client device;and(5) providing service, via the wireless communication circuitry of the wireless device and over the established wireless communication link in (4), to the client device;andwherein, subsequent to the wireless detection of the smart phone in step (1) and the wireless transmission of the device information from the wireless device to the smart phone in step (2), the wireless device is operable to provide service to the client device, without the need for the wireless device to setup a connection with the client device by wirelessly detecting the client device based, at least in part, on physical proximity to the client device.
Independent claims3
216 paragraphs in 6 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 10/053,765 filed Jan. 18, 2002, which claims priority to U.S. Provisional Patent Application Ser. No. 60/262,764, filed Jan. 19, 2001. Additionally, this application is a continuation-in-part of U.S. patent application Ser. No. 09/992,413 filed Nov. 18, 2001, which claims benefit of U.S. Provisional Patent Application Ser. No. 60/252,682 filed Nov. 20, 2000. Moreover, this application is a continuation-in-part of U.S. patent application Ser. No. 13/710,299 filed Dec. 10, 2012, which is a continuation of U.S. patent application Ser. No. 12/903,048 filed Oct. 12, 2010 and now issued as U.S. Pat. No. 8,332,521, which is a continuation of U.S. patent application Ser. No. 10/016,223 filed Nov. 1, 2001 and now issued as U.S. Pat. No. 7,941,541, and which claims benefit of U.S. Provisional Patent Application Ser. No. 60/245,101, filed Nov. 1, 2000. The complete disclosures of the above patent applications are hereby incorporated by reference for all purposes.
TECHNICAL FIELD OF THE INVENTION
Present invention relates to providing content to an output device and, in particular, to providing universal output in which an information apparatus can pervasively output content to an output device without the need to install a dedicated device dependent driver or applications for each output device.
BACKGROUND OF THE DISCLOSURE
The present invention relates to universal data output and, in particular, to providing a new data output method and a new raster image process for information apparatuses and output devices.
As described herein, information apparatuses refer generally to computing devices, which include both stationary computers and mobile computing devices (pervasive devices). Examples of such information apparatuses include, without limitation, desktop computers, laptop computers, networked computers, palmtop computers (hand-held computers), personal digital assistants (PDAs), Internet enabled mobile phones, smart phones, pagers, digital capturing devices (e.g., digital cameras and video cameras), Internet appliances, e-books, information pads, and digital or web pads. Output devices may include, without limitation, fax machines, printers, copiers, image and/or video display devices (e.g., televisions, monitors and projectors), and audio output devices.
For simplicity and convenience, hereafter, the following descriptions may refer to an output device as a printer and an output process as printing. However, it should be understood that the term printer and printing used in the discussion of present invention refer to one embodiment used as a specific example to simplify the description of the invention. The references to printer and printing used here are intended to be applied or extended to the larger scope and definition of output devices and should not be construed as restricting the scope and practice of present invention.
Fueled by an ever-increasing bandwidth, processing power, wireless mobile devices, and wireless software applications, millions of users are or will be creating, downloading, and transmitting content and information using their pervasive or mobile computing devices. As a result, there is a need to allow users to conveniently output content and information from their pervasive computing devices to any output device. As an example, people need to directly and conveniently output from their pervasive information apparatus, without depending on synchronizing with a stationary computer (e.g., desktop personal computer) for printing.
To illustrate, a mobile worker at an airport receiving e-mail in his hand-held computer may want to walk up to a nearby printer or fax machine to have his e-mail printed. In addition, the mobile worker may also want to print a copy of his to-do list, appointment book, business card, and his flight schedule from his mobile device. As another example, a user visiting an e-commerce site using his mobile device may want to print out transaction confirmation. In still another example, a user who takes a picture with a digital camera may want to easily print it out to a nearby printer. In any of the above cases, the mobile user may want to simply walk up to a printer and conveniently print a file (word processing document, PDF, HTML etc) that is stored on the mobile device or downloaded from a network (e.g., Internet, corporate network).
Conventionally, an output device (e.g., a printer) is connected to an information apparatus via a wired connection such as a cable line. A wireless connection is also possible by using, for example, radio communication or infrared communication. Regardless of wired or wireless connection, a user must first install in the information apparatus an output device driver (e.g., printer driver in the case the output device is a printer) corresponding to a particular output device model and make. Using a device-dependent or specific driver, the information apparatus may process output content or digital document into a specific output device's input requirements (e.g., printer input requirements). The output device's input requirements correspond to the type of input that the output device (e.g., a printer) understands. For example, a printer's input requirement may include printer specific input format (e.g., one or more of an image, graphics or text format or language). Therefore, an output data (or print data in the case the output device is a printer) herein refers to data that is acceptable for input to an associated output device. Examples of input requirements may include, without limitation, audio format, video format, file format, data format, encoding, language (e.g., page description language, markup language etc), instructions, protocols or data that can be understood or used by a particular output device make and model.
Input requirements may be based on proprietary or published standards or a combination of the two. An output device's input requirements are, therefore, in general, device dependent. Different output device models may have their own input requirements specified, designed or adopted by the output device manufacturer (e.g., the printer manufacturer) according to a specification for optimal operation. Consequently, different output devices usually require use of specific output device drivers (e.g., printer drivers) for accurate output (e.g., printing). Sometimes, instead of using a device driver (e.g., printer driver), the device driving feature may be included as part of an application software.
Installation of a device driver (e.g., printer driver) or application may be accomplished by, for example, manual installation using a CD or floppy disk supplied by the printer manufacturer. Or alternatively, a user may be able to download a particular driver or application from a network. For a home or office user, this installation process may take anywhere from several minutes to several hours depending on the type of driver and user's sophistication level with computing devices and networks. Even with plug-and-play driver installation, the user is still required to execute a multi-step process for each printer or output device.
This installation and configuration process adds a degree of complexity and work to end-users who may otherwise spend their time doing other productive or enjoyable work. Moreover, many unsophisticated users may be discouraged from adding new peripherals (e.g., printers, scanners, etc.) to their home computers or networks to avoid the inconvenience of installation and configuration. It is therefore desirable that an information apparatus can output to more than one output device without the inconvenience of installing multiple dedicated device dependent drivers.
In addition, conventional output or printing methods may pose significantly higher challenges and difficulties for mobile device users than for home and office users. The requirement for pre-installation of a device-dependent driver diminishes the benefit and concept of mobile (pervasive) computing and output. For example, a mobile user may want to print or output e-mail, PowerPoint® presentation documents, web pages, or other documents at an airport, gas station, convenience store, kiosk, hotel, conference room, office, home, etc. It is highly unlikely that the user would find at any of these locations a printer of the same make and model as is at the user's base station. As a consequence, under the conventional printing method, the user would have to install and configure a printer driver each time at each such remote location before printing. It is usually not a viable option given the hundreds, or even thousands of printer models in use, and the limited storage, memory space, and processing power of the information apparatus.
Moreover, the user may not want to be bothered with looking for a driver or downloading it and installing it just to print out or display one page of email at the airport. This is certainly an undesirable and discouraging process to promote pervasive or mobile computing. Therefore, a more convenient printing method is needed in support of the pervasive computing paradigm where a user can simply walk up to an output device (e.g., printer or display device) and easily output a digital document without having to install or pre-install a particular output device driver (e.g., printer driver).
Another challenge for mobile users is that many mobile information apparatuses have limited memory space, processing capacity and power. These limitations are more apparent for small and low-cost mobile devices including, for example, PDAs, mobile phones, screen phones, pagers, e-books, Internet Pads, Internet appliances etc. Limited memory space poses difficulties in installing and running large or complex printer or device drivers, not to mention multiple drivers for a variety of printers and output devices. Slow processing speed and limited power supply create difficulties driving an output device. For example, processing or converting a digital document into output data by a small mobile information apparatus may be so slow that it is not suitable for productive output. Intensive processing may also drain or consume power or battery resources. Therefore, a method is needed so that a small mobile device, with limited processing capabilities, can still reasonably output content to various output devices.
To output or render content (e.g. digital document) to an output device, a raster image processing (RIP) operation on the content is usually required. RIP operation can be computationally intensive and may include (1) a rasterization operation, (2) a color space conversion, and (3) a halftoning operation. RIP may also include other operations such as scaling, segmentation, color matching, color correction, GCR (Grey component replacement), Black generation, image enhancement compression/decompression, encoding/decoding, encryption/decryption GCR, image enhancement among others.
Rasterization operation in RIP involves converting objects and descriptions (e.g. graphics, text etc) included in the content into an image form suitable for output. Rasterization may include additional operations such as scaling and interpolation operations for matching a specific output size and resolution. Color space conversion in RIP includes converting an input color space description into a suitable color space required for rendering at an output device (e.g. RGB to CMYK conversion). Digital halftoning is an imaging technique for rendering continuous tone images using fewer luminance and chrominance levels. Halftoning operations such as error diffusion can be computationally intensive and are included when the output device's bit depth (e.g. bits per pixel) is smaller than the input raster image bit depth.
Conventionally, RIP operations are included either in an information apparatus, or as part of an output device or output system (e.g. in a printer controller). <figref idref="DRAWINGS">FIG. 1A</figref> illustrates a flow diagram of a conventional data output method <b>102</b> in which RIP <b>110</b> is implemented in the information apparatus. Output devices that do not include a printer controller to perform complex RIP operations, such as a lower-cost, lower speed inkjet printer, normally employ data output method <b>102</b>. In data output method <b>102</b>, an information apparatus obtains content (e.g. a digital document) in step <b>100</b> for rendering or output at an output device. The information apparatus may includes an application (e.g. device driver), which implements RIP operation <b>110</b>. The information apparatus generates an output data in step <b>120</b> and transmits the output data to the output device in step <b>130</b> for rendering. The output data relating to the content is in an acceptable form (e.g. in an appropriate output size and resolution) to the output engine (e.g. display engine, printer engine etc.) included in the output device. The output data in a conventional output method <b>102</b> is usually device dependent.
One drawback for the data output method <b>102</b> of <figref idref="DRAWINGS">FIG. 1A</figref> is that the information apparatus performs most if not the entire raster image processing operations <b>110</b> required for output. The RIP operations may require intensive computation. Many information apparatus such as mobile information device might have insufficient computing power and/or memory to carry out at an acceptable speed the RIP operations <b>110</b> required in an output process.
Another drawback for the conventional data output method <b>102</b> of <figref idref="DRAWINGS">FIG. 1A</figref> is that the generated output data is device dependent and therefore is typically not very portable to other output devices. As a result, the information apparatus may need to install multiple applications or device drivers for multiple output devices, which may further complicate its feasibility for use in information apparatuses with limited memory, storage and processing power.
<figref idref="DRAWINGS">FIG. 1B</figref> illustrates a flow diagram of another conventional data output method <b>104</b> in which the RIP is implemented in an output device. An example of an output device that implements process <b>104</b> is a high-speed laser printer which includes a printer controller for performing RIP operations and an output engine (e.g. printer engine) for rendering content. Printer controller may be internally installed or externally connected to an output device (printer in this example). In data output method <b>104</b>, an information apparatus obtains content for output in step <b>100</b> and generates in step <b>160</b> an output data or print data for transmitting to the output device in step <b>170</b>. Print data includes information related to the content and is usually encoded in a page description language (PDL) such as PostScript and PCL etc. In step <b>180</b>, the printer receives the output data or print data (in a PDL). In step <b>190</b>, a printer controller included in the printer interprets the PDL, performs RIP operations, and generates a printer-engine print data that is in a form acceptable to the printer engine (e.g. a raster image in an appropriate output size, bit depth, color space and resolution). In step <b>150</b> the printer engine renders the content with the printer-engine print data.
It will be understood that a reference to print data or output data including a language, such as PDL, should be interpreted as meaning that the print data or output data is encoded using that language. Correspondingly, a reference to a data output process generating a language, such as PDL, should be interpreted as meaning that the data output process encodes data using that language.
There are many drawbacks in the conventional data output method <b>104</b> shown in <figref idref="DRAWINGS">FIG. 1B</figref>. These drawbacks are especially apparent for mobile computing devices with limited processing power and memory. One such drawback is that the output data or print data, which include a page description language (PDL) such as PostScript or PCL, can be very complex. Generating complex PDL may increase memory and processing requirements for an information apparatus. Furthermore, interpreting, decoding and then raster image processing complex PDL can increase computation, decrease printing speed, and increase the cost of the output device or its printer controller.
Another drawback is that the output data that includes PDL can creates a very large file size that would increase memory and storage requirements for the information apparatus, the output device and/or the printer controller etc. Large file size may also increase the bandwidth required in the communication link between the information apparatus and the output device.
Finally, to rasterize text in an output device, a printer controller may need to include multiple fonts. When a special font or international characters is not included or missing in the printer controller, the rendering or output can potentially become inaccurate or inconsistent.
SUMMARY OF THE INVENTION
Accordingly, this invention provides a convenient universal data output method in which an information apparatus and an output device or system share the raster image processing operations. Moreover, the new data output method eliminates the need to install a plurality of device-dependent dedicated drivers or applications in the information apparatus in order to output to a plurality of output devices.
In accordance with present invention, an electronic system and method of pervasive and universal output allow an information apparatus to output content conveniently to virtually any output device. The information apparatus may be equipped with a central processing unit, input/output control unit, storage unit, memory unit, and wired or wireless communication unit or adapters. The information apparatus preferably includes a client application that may be implemented as a software application, a helper application, or a device driver (a printer driver in case of a printer). The client application may include management and control capabilities with hardware and software components including, for example, one or more communication chipsets residing in its host information apparatus.
The client application in the information apparatus may be capable of communicating with, managing and synchronizing data or software components with an output device equipped with an output controller of present invention.
Rendering content in an output device refers to printing an image of the content onto an substrate in the case of a printing device; displaying an image of the content in the case of a displaying device; playing an audio representation of the content in a voice or sound output device or system.
An output controller may be a circuit board, card or software components residing in an output device. Alternatively, the output controller may be connected externally to an output device as an external component or “box.” The output controller may be implemented with one or more combinations of embedded processor, software, firmware, ASIC, DSP, FPGA, system on a chip, special chipsets, among others. In another embodiment, the functionality of the output controller may be provided by application software running on a PC, workstation or server connected externally to an output device.
In conventional data output method <b>102</b> as described with reference to <figref idref="DRAWINGS">FIG. 1A</figref>, an information apparatus transmits output data to an output device for rendering. Output data corresponds to content intended for output and is mostly raster image processed (RIPed) and therefore is device dependent because raster image processing is a typical device dependent operation. Output data may be encoded or compressed with one or more compression or encoding techniques. In present invention, an information apparatus generates an intermediate output data for transmitting to an output device. The intermediate output data includes a rasterized image corresponding to the content; however, device dependent image processing operations of a RIP (e.g. color matching and halftoning) have not been performed. As a result, an intermediate output data is more device independent and is more portable than the output data generated by output method with reference to <figref idref="DRAWINGS">FIG. 1A</figref>.
In one implementation of this invention, the intermediate output data includes MRC (Mixed raster content) format, encoding and compression techniques, which further provides improved image quality and compression ratio compared to conventional image encoding and compression techniques.
In an example of raster image process and data output method of the present invention, a client application such as a printer driver is included in an information apparatus and performs part of raster image processing operation such as rasterization on the content. The information apparatus generates an intermediate output data that includes an output image corresponding to the content and sends the intermediate output data to an output device or an output system for rendering. An output controller application or component included in the output device or output system implements the remaining part of the raster image processing operations such as digital halftoning, color correction among others.
Unlike conventional raster image processing methods, this invention provides a more balanced distribution of the raster image processing computational load between the Information apparatus and the output device or the output system. Computational intensive image processing operations such as digital halftoning and color space conversions can be implemented in the output device or output system. Consequently, this new raster image processing method reduces the processing and memory requirements for the information apparatus when compared to conventional data output methods described with reference to <figref idref="DRAWINGS">FIG. 1A</figref> in which the entire raster image process is implemented in the information apparatus. Additionally, in this invention, a client application or device driver included in the information apparatus, which performs part of the raster image processing operation, can have a smaller size compared to a conventional output application included in the information apparatus, which performs raster image processing operation.
In another implementation, the present invention provides an information apparatus with output capability that is more universally accepted by a plurality of output devices. The information apparatus, which includes a client application, generates an intermediate output data that may include device independent attributes. An output controller includes components to interpret and process the intermediate output data. The information apparatus can output content to different output devices or output systems that include the output controller even when those output devices are of different brand, make, model and with different output engine and input data requirements. Unlike conventional output methods, a user does not need to preinstall in the information apparatus multiple dedicated device dependent drivers or applications for each output device.
The combination of a smaller-sized client application, a reduced computational requirement in the information apparatus, and a more universal data output method acceptable for rendering at a plurality of output devices enable mobile devices with less memory space and processing capabilities to implement data output functions which otherwise would be difficulty to implement with conventional output methods.
In addition, this invention can reduce the cost of an output device or an output system compared to conventional output methods <b>104</b> that include a page description language (PDL) printer controller. In the present invention, an information apparatus generates and sends an intermediate output data to an output device or system. The intermediate output data in one preferred embodiment includes a rasterized output image corresponding to the content intended for output. An output controller included in an output device or an output system decodes and processes the intermediate output data for output, without performing complex interpretation and rasterization compared to conventional methods described in process <b>104</b>. In comparison, the conventional data output process <b>104</b> generates complex PDL and sends this PDL from an information apparatus to an output device that includes a printer controller (e.g. a PostScript controller or a PCL5 controller among others). Interpretation and raster image processing of a PDL have much higher computational requirements compared to decoding and processing the intermediate output data of this invention that include rasterized output image or images. Implementing a conventional printer controller with, for example, PDL increases component cost (e.g. memories, storages, ICs, software and processors etc.) when compared to using the output controller included in the data output method of this present invention.
Furthermore, an output data that includes PDL can create a large file size compared to an intermediate output data that includes rasterized output image. The data output method for this invention comparatively transmits a smaller output data from an information apparatus to an output device. Smaller output data size can speed up transmission, lower communication bandwidth, and reduce memory requirements. Finally, this invention can provide a convenient method to render content at an output device with or without connection to a static network. In conventional network printing, both information apparatus and output device must be connected to a static network. In this invention, through local communication and synchronization between an information apparatus and an output device, installation of hardware and software to maintain static network connectivity may not be necessary to enable the rendering of content to an output device.
According to the several aspects of the present invention there is provided the subject matter defined in the appended independent claims.
Additional objects and advantages of the present invention will be apparent from the detailed description of the preferred embodiment thereof, which proceeds with reference to the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
<figref idref="DRAWINGS">FIG. 1A</figref> is a flow diagram of a conventional data output method and its corresponding raster image process in accordance with prior art.
<figref idref="DRAWINGS">FIG. 1B</figref> is a flow diagram of a second conventional data output method and its corresponding raster image process for an output device that includes a conventional printer controller in accordance with prior art.
<figref idref="DRAWINGS">FIGS. 2A and 2B</figref> are block diagrams illustrating components of an operating environment that can implement the process and apparatus of the present invention.
<figref idref="DRAWINGS">FIG. 3A</figref> is a schematic block diagram illustrating hardware/software components of an information apparatus implementation in accordance with the present invention. The information apparatus includes an operating system.
<figref idref="DRAWINGS">FIG. 3B</figref> is a second schematic block diagram illustrating hardware/software components of an information apparatus implementation in accordance with the present invention.
<figref idref="DRAWINGS">FIG. 4A</figref> is a block diagram of a conventional printing system or printer with a conventional printer controller.
<figref idref="DRAWINGS">FIG. 4B</figref> is a block diagram of a second conventional output system or output device.
<figref idref="DRAWINGS">FIG. 5A</figref> is a schematic block diagram of a printing system or printer with a conventional printer controller and an output controller in accordance with present invention.
<figref idref="DRAWINGS">FIG. 5B</figref> is a schematic block diagram of a second output system or output device that includes an output controller in accordance with present invention.
<figref idref="DRAWINGS">FIG. 6A</figref> is a schematic block diagram illustrating hardware/software components of an output controller in accordance with present invention. The output controller includes an operating system.
<figref idref="DRAWINGS">FIG. 6B</figref> is a second schematic block diagram illustrating hardware/software components of an output controller in accordance with present invention. The output controller does not include an operating system.
<figref idref="DRAWINGS">FIG. 6C</figref> is a third schematic block diagram illustrating hardware/software components of an output controller in accordance with present invention. The output controller combines the functionality of a printer controller and an output controller of present invention.
<figref idref="DRAWINGS">FIGS. 7A-7F</figref> illustrate various configurations and implementations of output controller with respect to an output device such as a printer.
<figref idref="DRAWINGS">FIG. 8A</figref> is a block diagram illustrating an exemplary implementation of hardware/software components of wireless communication unit.
<figref idref="DRAWINGS">FIG. 8B</figref> is block diagram illustrating a second exemplary implementation of hardware/software components of wireless communication unit.
<figref idref="DRAWINGS">FIG. 9</figref> is a flow diagram of a universal data output method and its corresponding raster imaging process of the present invention.
<figref idref="DRAWINGS">FIG. 10</figref> is a block diagram of a universal data output method of the present invention with respect to the components, system and apparatus described with reference to <figref idref="DRAWINGS">FIG. 2</figref>.
<figref idref="DRAWINGS">FIG. 11</figref> is a flow diagram illustrating one way of implementing a discovery process optionally included in the output process of <figref idref="DRAWINGS">FIG. 10</figref>.
<figref idref="DRAWINGS">FIGS. 12A and 12B</figref> are flow diagrams of exemplary client application process included in the output process of <figref idref="DRAWINGS">FIG. 10</figref>.
<figref idref="DRAWINGS">FIGS. 13A and 13B</figref> are flow diagrams of exemplary output device or output system process included in the output process of <figref idref="DRAWINGS">FIG. 10</figref>.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
Sets forth below are definitions of terms that are used in describing implementations of the present invention. These definitions are provided to facilitate understanding and illustration of implementations of the present invention and should in no way be construed as limiting the scope of the invention to a particular example, class, or category.
Output Device Profile (or Object)
An output device profile (or object) includes software and data entity, which encapsulates within itself both data and attributes describing an output device and instructions for operating that data and attributes. An output device profile may reside in different hardware environments or platforms or applications, and may be transported in the form of a file, a message, a software object or component among other forms and techniques. For simplicity of discussion, a profile or object may also include, for example, the concept of software components that may have varying granularity and can consist of one class, a composite of classes, or an entire application.
The term profile or object used herein is not limited to software or data as its media. Any entity containing information, descriptions, attributes, data, instructions etc. in any computer-readable form or medium such as hardware, software, files based on or including voice, text, graphics, image, or video information, etc., are all valid forms of profile and object definition.
A profile or object may also contain in one of its fields or attributes a reference or pointer to another profile or object, or a reference or pointer to data and or content. A reference to a profile or object may include one or more, or a combination of pointers, identifiers, names, paths, addresses or any descriptions relating to a location where an object, profile, data, or content can be found.
An output device profile may contain one or more attributes that may identify and describe, for example, the capabilities and functionalities of a particular output device such as a printer. An output device profile may be stored in the memory component of an output device, an information apparatus or in a network node. A network node includes any device, server or storage location that is connected to the network. As described below in greater detail, an information apparatus requesting output service may communicate with an output device. During such local service negotiation, at least a partial output device profile may be uploaded to the information apparatus from the output device. By obtaining the output device profile (or printer profile in the case of a printer), the information apparatus may learn about the capability, compatibility, identification, and service provided by the output device.
As an example, an output device profile may contain one or more of the following fields and or attribute descriptions. Each of following fields may be optional, and furthermore, each of the following fields or attributes may or may not exist in a particular implementation (e.g., may be empty or NULL):
Identification of an output device (e.g., brand, model, registration, IP address etc.) <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0068">Services and feature sets provided by an output device (e.g., color or grayscale output, laser or inkjet, duplex, output quality, price per page, quality of service, etc.)</li><li id="ul0002-0002" num="0069">Type of input languages, formats, output data and/or input requirements (e.g., PostScript, PCL, XML, RTL, etc.) supported by an output device.</li><li id="ul0002-0003" num="0070">Device specific or dependent parameters and information (e.g., communication protocols, color space, color management methods and rendering intents, resolution, halftoning methods, dpi (dots-per-inch), bit depth, page size, printing speed, number of independent colors channels or ink etc.)</li><li id="ul0002-0004" num="0071">Data and tables needed for image processing such as color table, halftone table, scale factor, encoding/decoding parameters and methods, compression and decompression parameters and method etc.</li><li id="ul0002-0005" num="0072">Another profile which contain parameters and information about the output device and its service (e.g. color profiles, halftoning profiles, communication profiles, rasterization profiles, quality of service etc.).</li><li id="ul0002-0006" num="0073">Payment information on a plurality of services provided by an output device.</li><li id="ul0002-0007" num="0074">Information or security requirements and type of authentication an output device supports.</li><li id="ul0002-0008" num="0075">Date and version of the output device profile, history of its modification and updates.</li><li id="ul0002-0009" num="0076">Software components containing algorithms or instructions or data, which may be uploaded to run in an information apparatus. For example, a graphical user interface (GUI) software component may be uploaded to an information apparatus. The software component may be incorporated into or launched in the information apparatus by a client application of present invention to capture a user's preferences (e.g., print quality, page layout, number of copies, number of cards per page, etc.). In another example, software components may include methods, instructions or executables for compression/decompression, encoding/decoding, color matching or correction, segmentation, scaling, halftoning, encryption/decryption among others.</li><li id="ul0002-0010" num="0077">Pointer or reference to one or more output device parameters, including one or more of the above described output device profile or object fields and or attribute descriptions. For example, a more up-to-date or original version of output device parameters may sometimes be stored in a network node (any device, server or storage location that is connected to the network), or within the information apparatus where it can be obtained by the client application. An output device profile may include pointer or pointers to these output device parameters.</li></ul></li></ul>
Content (or Data Content, Digital Content, Output Content)
Content (or data content, digital content, output content) is the data intended for output, which may include texts, graphics, images, forms, videos, audio among other content types. Content may include the data itself or a reference to that data. Content may be in any format, language, encoding or combination, and it can be in a format, language or encoding that is partially or totally proprietary. A digital document is an example of content that may include attributes and fields that describe the digital document itself and or reference or references to the digital document or documents. Examples of a digital document may be any one or combination of file types: HTML, VHTML, PostScript, PCL, XML, PDF, MS Word, PowerPoint, JPEG, MPEG, GIF, PNG, WML, VWML, CHTML, HDML, ASCII, 2-byte international coded characters, etc. Content may be used interchangeably with the term data content, output content or digital content in the descriptions of present invention.
Intermediate Output Data
Output data (or print data in case of a printer) is the electronic data sent from an information apparatus to an output device. Output data is related to the content intended for output and may be encoded in a variety of formats and languages (e.g. postscript, PCL, XML), which may include compressed or encrypted data. Some output device manufacturers may also include in the output data (or print data) a combination of proprietary or non-proprietary languages, formats, encoding, compression, encryption etc.
Intermediate output data is the output data of the present invention, and it includes the broader definition of an output file or data generated by an information apparatus, or a client application or device driver included in the information apparatus. An intermediate output data may contain text, vector graphics, images, video, audio, symbols, forms or combination and can be encoded with one or more of a page description language, a markup language, a graphics format, an imaging format, a metafile among others. An intermediate output data may also contain instructions (e.g. output preferences) and descriptions (e.g. data layout) among others. Part or all of an intermediate output data may be compressed, encrypted or tagged.
In a preferred embodiment of this invention, intermediate output data contains rasterized image data. For example, vector graphics and text information or objects that are not in image form included in content can be rasterized or conformed into image data in an information apparatus and included in an intermediate output data. Device dependent image processing operations of a RIP such as digital halftoning and color space conversions can be implemented at an output device or an output system.
The intermediate output data can be device dependent or device independent. In one implementation, the rasterized output image is device dependent if the rasterization parameters used, such as resolution, scale factor, bit depth, output size and or color space are device dependent. In another implementation of this invention, the rasterized image may be device independent if the rasterization parameters used are device independent. Rasterization parameter can become device independent when those parameters include a set of predetermined or predefined rasterization parameters based on a standard or a specification. With predefined or device independent rasterization parameters, a client application of present invention can rasterize at least a portion of the content and generate a device independent image or images included in the intermediate output data. By doing so, the intermediate output data may become device independent and therefore, become universally acceptable with output devices that have been pre-configured to accept the intermediate output data.
One advantage of rasterizing or converting text and graphics information into image data at the information apparatus is that the output device or printer controller no longer needs to perform complex rasterization operation nor do they need to include multiple fonts. Therefore, employing the intermediate output data and the data output method described herein could potentially reduce the cost and complexity of an output controller, printer controller and or output device.
One form of image data encoding is known as mixed raster content, or MRC. Typically, an image stored in MRC includes more than one image or bitmap layers. In MRC, an image can be segmented in different layers based on segmentation criteria such as background and foreground, luminance and chrominance among others. For example, an MRC may include three layers with a background layer, a foreground layer and a toggle or selector layer. The three layers are coextensive and may include different resolution, encoding and compression. The foreground and background layers may each contain additional layers, depending on the manner in which the respective part of the image is segmented based on the segmentation criteria, component or channels of a color model, image encoding representation (HLS, RGB, CMYK, YCC, LAB etc) among others. The toggle layer may designate, for each point, whether the foreground or background layer is effective. Each layer in a MRC can have different bit depths, resolution, color space, which allow, for example, the foreground layer to be compressed differently from the background layer. The MRC form of image data has previously been used to minimize storage requirements. Further, an MRC format has been proposed for use in color image fax transmission.
In one embodiment of present invention, the intermediate output data includes one or more rasterized output images that employ MRC format, encoding and or related compression method. In this implementation, different layers in the output image can have different resolutions and may include different compression techniques. Different information such as chrominance and luminance and or foreground and background information in the original content (e.g. digital document) can be segmented and compressed with different compression or encoding techniques. Segmented elements or object information in the original content can also be stored in different image layers and with different resolution. Therefore, with MRC, there is opportunity to reduce output data file size, retain greater image information, increase compression ratio, and improve image quality when compared to other conventional image encoding and compression techniques. Implementations of rasterization, raster image processing and intermediate output data that include MRC encoding in the present invention are described in more detail below.
Rasterization
Rasterization is an operation by which graphics and text in a digital document are converted to image data. For image data included in the digital document, rasterization may include scaling and interpolation. The rasterization operation is characterized by rasterization parameters including, among others bit depth and resolution. A given rasterization operation may be characterized by several more rasterization parameters, including output size, color space, color channels etc. Values of one or more of the rasterization parameters employed in a rasterization operation may be specified by default; values of one or more of the rasterization parameters may be supplied to the information apparatus as components of a rasterization vector. In a given application, the rasterization vector may specify a value of only one rasterization parameter, default values being employed for other rasterization parameters used in the rasterization operation. In another application the rasterization vector may specify values of more than one, but less than all, rasterization parameters, default values being employed for at least one other rasterization parameter used in the rasterization operation. And in yet another application the rasterization vector may specify values of all the rasterization parameters used in the rasterization operation.
<figref idref="DRAWINGS">FIGS. 2A and 2B</figref> are block diagrams illustrating components of an operating environment that can implement the process and apparatus of present invention. <figref idref="DRAWINGS">FIG. 2A</figref> shows an electronic system which includes an information apparatus <b>200</b> and an output device <b>220</b>. The output device <b>220</b> includes an output controller <b>230</b>. <figref idref="DRAWINGS">FIG. 2B</figref> illustrates a second implementation of an electronic system that includes an information apparatus <b>200</b> and an output system <b>250</b>. The output system <b>250</b> includes an output device <b>220</b> and an output controller <b>230</b> which may be externally connected to, or otherwise associated with, the output device <b>220</b> in the output system <b>250</b>.
Information apparatus <b>200</b> is a computing device with processing capability. In one embodiment, information apparatus <b>200</b> may be a mobile computing device such as palmtop computer, handheld device, laptop computer, personal digital assistant (PDA), smart phone, screen phone, e-book, Internet pad, communication pad, Internet appliance, pager, digital camera, etc. It is possible that information apparatus <b>200</b> may also include a static computing device such as a desktop computer, workstation, server, etc.
<figref idref="DRAWINGS">FIGS. 3A and 3B</figref> are block diagrams illustrating examples of hardware/software components included in an information apparatus <b>200</b> of present invention.
Information apparatus <b>200</b> may contain components such as a processing unit <b>380</b>, a memory unit <b>370</b>, an optional storage unit <b>360</b> and an input/output control unit (e.g. communication manager <b>330</b>). Information apparatus <b>200</b> may include an interface (not shown) for interaction with users. The interface may be implemented with software or hardware or a combination. Examples of such interfaces include, without limitation, one or more of a mouse, a keyboard, a touch-sensitive or non-touch-sensitive screen, push buttons, soft keys, a stylus, a speaker, a microphone, etc.
Information apparatus <b>200</b> typically contains one or more network communication unit <b>350</b> that interfaces with other electronic devices such as network node (not shown), output device <b>220</b>, and output system <b>230</b>. The network communication unit may be implemented with hardware (e.g., silicon chipsets, antenna), software (e.g., protocol stacks, applications) or a combination.
In one embodiment of the present invention, communication interface <b>240</b> between information apparatus <b>200</b> and output device <b>220</b> or output system <b>250</b> is a wireless communication interface such as a short-range radio interface including those implemented according to the Bluetooth or IEEE 802.11 standard. The communication interface may also be realized by other standards and/or means of wireless communication that may include radio, infrared, cellular, ultrasonic, hydrophonic among others for accessing one or more network node and/or devices. Wired line connections such as serial or parallel interface, USB interface and fire wire (IEEE 1394) interface, among others, may also be included. Connection to a local network such as an Ethernet or a token Ring network, among others, may also be implemented in the present invention for local communication between information apparatus <b>200</b> and output device <b>220</b>. Examples of hardware/software components of communication units <b>350</b> that may be used to implement wireless interface between the information apparatus <b>200</b> and the output device <b>220</b> are described in more detail with reference to <figref idref="DRAWINGS">FIGS. 8A and 8B</figref> below.
For simplicity, <figref idref="DRAWINGS">FIG. 3</figref> illustrates one implementation where an information apparatus <b>200</b> includes one communication unit <b>350</b>. However, it should be noted that an information apparatus <b>200</b> may contain more than one communication unit <b>350</b> in order to support different interfaces, protocols, and/or communication standards with different devices and/or network nodes. For example, information apparatus <b>200</b> may communicate with one output device <b>220</b> through a Bluetooth standard interface or through an IEEE 802.11 standard interface while communicating with another output device <b>220</b> through a parallel cable interface. The information apparatus <b>200</b> may also be coupled to a wired or wireless network (e.g. the Internet or corporate network) to send, receive and/or download information.
Information apparatus <b>200</b> may be a dedicated device (e.g., email terminal, web terminal, digital camera, e-book, web pads, Internet appliances etc.) with functionalities that are pre-configured by manufacturers. Alternatively, information apparatus <b>200</b> may allow users to install additional hardware components and or application software <b>205</b> to expand its functionality.
Information apparatus <b>200</b> may contain a plurality of applications <b>205</b> to implement its feature sets and functionalities. As an example, a document browsing or editing application may be implemented to help user view and perhaps edit, partially or entirely, digital documents written in certain format or language (e.g., page description language, markup language, etc.). Digital documents may be stored locally in the information apparatus <b>200</b> or in a network node (e.g., in content server). An example of a document browsing application is an Internet browser such as Internet Explorer, Netscape Navigator, or a WAP browser. Such browsers may retrieve and display content (e.g. digital content) written in mark-up languages such as HTML, WML, XML, CHTML, HDML, among others. Other examples of software applications in the information apparatus <b>200</b> may include a document editing software such as Microsoft Word™ which also allows users to view and or edit digital documents that have various file extensions (e.g., doc, rtf, html, XML etc.) whether stored locally in the information apparatus <b>200</b> or in a network node. Still, other example of software applications <b>205</b> may include image acquisition and editing software.
As illustrated previously with reference to <figref idref="DRAWINGS">FIG. 1</figref>, there are many difficulties in providing output capability to an information apparatus <b>200</b> that has limited memory and processing capability. To address theses difficulties, information apparatus <b>200</b> includes a client application <b>210</b> that helps provide the universal data output capability of the present invention. Client application <b>210</b> may include software and data that can be executed by the processing unit <b>380</b> of information apparatus <b>200</b>. Client application <b>210</b> may be implemented as a stand-alone software application or as a part of or feature of another software application, or in the form of a device driver, which may be invoked, shared and used by other application software <b>205</b> in the information apparatus <b>200</b>. Client application <b>210</b> may also include components to invoke other applications <b>205</b> (e.g., a document browsing application, editing application, data and/or image acquisition application, a communication manager, a output manager etc.) to provide certain feature sets, as described below. <figref idref="DRAWINGS">FIG. 3</figref> illustrates a configuration where the client application <b>210</b> is a separate application from the other application <b>205</b> such as the case when the client application is a device driver; however, it should be noted that the client application <b>210</b> can be combined or being part of the other application not shown in <figref idref="DRAWINGS">FIG. 3</figref>. Client application <b>210</b> may be variously implemented in an information apparatus <b>200</b> and may run on different operating systems or platforms. The client application <b>210</b> may also run in an environment with no operating system. For example, <figref idref="DRAWINGS">FIG. 3A</figref> illustrates an implementation where the information apparatus <b>200</b>A includes an operating system <b>340</b>A; while <figref idref="DRAWINGS">FIG. 3B</figref> illustrates an implementation where the information apparatus <b>200</b>B does not include an operating system.
Client application <b>210</b> includes a rasterization component <b>310</b> to conform content into one or more raster output images according to one or more rasterization parameters; an intermediate output data generator component <b>320</b> that generates and/or encodes intermediate output data that includes the one or more output images; and a communications manager <b>330</b> that manages the communication and interaction with an output device <b>220</b> or system <b>250</b> or output controller <b>230</b>. Communications manager can be implemented as part of the client application <b>210</b> (shown in <figref idref="DRAWINGS">FIG. 3</figref>) or as a separate application (not shown). Components in a client application can be implemented in software, hardware or combination. As an example, client application <b>210</b> may include or utilize one or more of the following: <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0101">Components or operations to obtain content (e.g. digital document) for output. The client application <b>210</b> may obtain a digital document from other applications <b>205</b> (e.g. document browsing application, content creation and editing application, etc.), or the client application <b>210</b> may provide its own capability for user to browse, edit and or select a digital document.</li><li id="ul0004-0002" num="0102">Components or operations to rasterize content that includes text, graphics and images among others objects or elements into one or more raster images according to a set of rasterization parameters such as scale factor, output size, bit depth, color space and resolution. The rasterization parameters may be obtained in various ways, for example, from an output device profile uploaded from an output device <b>220</b>, or stored locally in information apparatus <b>200</b>, or manually inputted by a user. Alternatively, rasterization parameters may be based on a predefined standard or specification stored in the information apparatus <b>200</b> as a set of defaults, or hard-coded in the client application <b>210</b>, or calculated by the client application <b>210</b> after communicating with an output device <b>220</b>, output controller <b>230</b>, and/or a user.</li><li id="ul0004-0003" num="0103">Components or operations to generate intermediate output data that includes at least one rasterized output image corresponding to the content (e.g. digital document). This process may further include one or combination of compression, encoding, encryption and color correction among others. The intermediate output data may include, for example, images, instructions, documents and or format descriptions, color profiles among others.</li><li id="ul0004-0004" num="0104">Components or operations to transmit the intermediate output data to an output device <b>220</b> or system <b>250</b> through wired or wireless communication link <b>240</b>.</li></ul></li></ul>
The client application <b>210</b> may also optionally include or utilize one or more of the following components or operations: <ul id="ul0005" list-style="none"><li id="ul0005-0001" num="0000"><ul id="ul0006" list-style="none"><li id="ul0006-0001" num="0106">Components or operations to communicate with one or more output devices <b>220</b> to upload an output device profile.</li><li id="ul0006-0002" num="0107">Components or operations to communicate directly or indirectly (such as through an operating system or component or object model, messages, file transfer etc.) with other applications <b>205</b> residing in the same information apparatus <b>200</b> to obtain objects, data, and or content needed, or related to the pervasive output process of present invention (e.g. obtain a digital document for printing).</li><li id="ul0006-0003" num="0108">Components or operations to manage and utilize directly or indirectly functionalities provided by hardware components (e.g. communication unit <b>350</b>) residing in its host information apparatus <b>200</b>.</li><li id="ul0006-0004" num="0109">Components or operations to provide a graphical user interface (GUI) in host information apparatus to interact with user.</li><li id="ul0006-0005" num="0110">Components or operations to obtain user preferences. For example, a user may directly input his or her preferences through a GUI. A set of default values may also be employed. Default values may be pre-set or may be obtained by information apparatus <b>200</b> as result of communicating and negotiating with an output device <b>220</b> or output controller <b>230</b>.</li></ul></li></ul>
The above functionalities and process of client application <b>210</b> of present invention are described in further detail in the client application process with reference to <figref idref="DRAWINGS">FIG. 12</figref>.
Output device <b>220</b> is an electronic system capable of outputting digital content regardless of whether the output medium is substrate (e.g., paper), display, projection, or sound. A typical example of output device <b>220</b> is a printer, which outputs digital documents containing text, graphics, image or any combination onto a substrate. Output device <b>220</b> may also be a display device capable of displaying still images or video, such as, without limitation, televisions, monitors, and projectors. Output device <b>220</b> can also be a device capable of outputting sound. Any device capable of playing or reading digital content in audio (e.g., music) or data (e.g., text or document) formats is also a possible output device <b>220</b>.
A printer is frequently referred to herein as an example of an output device to simplify discussion or as the primary output device <b>220</b> in a particular implementation. However, it should be recognized that present invention applies also to other output devices <b>220</b> such as fax machines, digital copiers, display screens, monitors, televisions, projectors, voice output devices, among others.
Rendering content with an output device <b>220</b> refers to outputting the content on a specific output medium (e.g., papers, display screens etc). For example, rendering content with a printer generates an image on a substrate; rendering content with a display device generates an image on a screen; and rendering content with an audio output device generates sound.
A conventional printing system in general includes a raster image processor and a printer engine. A printer engine includes memory buffer, marking engine among other components. The raster image processor converts content into an image form suitable for printing; the memory buffer holds the rasterized image ready for printing; and the marking engine transfers colorant to substrate (e.g., paper).
The raster image processor may be located within an output device (e.g. included in a printer controller <b>410</b>) or externally implemented (in an information apparatus <b>200</b>, external controller, servers etc). Raster image processor can be implemented as hardware, software, or a combination (not shown). As an example, raster image processor may be implemented in a software application or device driver in the information apparatus <b>200</b>. Examples of raster image processing operations include image and graphics interpretation, rasterization, scaling, segmentation, color space transformation, image enhancement, color correction, halftoning, compression etc.
<figref idref="DRAWINGS">FIG. 4A</figref> illustrates a block diagram of one conventional printing system or printer <b>400</b>A that includes a printer controller <b>410</b> and a printer engine <b>420</b>A. The printer controller <b>410</b> includes an interpreter <b>402</b> and a raster image processor <b>406</b>, and the printer engine <b>420</b> includes memory buffer <b>424</b>A and a marking engine <b>426</b>A.
Marking engine may use any of a variety of different technologies to transfer a rasterized image to paper or other media or, in other words, to transfer colorant to a substrate. The different marking or printing technologies that may be used include both impact and non-impact printing. Examples of impact printing may include dot matrix, teletype, daisywheel, etc. Non-impact printing technologies may include inkjet, laser, electrostatic, thermal, dye sublimation, etc.
The marking engine <b>426</b> and memory buffer <b>424</b> of a printer form its printer engine <b>420</b>, which may also include additional circuitry and components, such as firmware, software or chips or chipsets for decoding and signal conversion, etc. Input to a printer engine <b>420</b> is usually a final rasterized printer-engine print data generated by a raster image processor <b>406</b>. Such input is usually device dependent and printer or printer engine specific. The printer engine <b>420</b> may take this device dependent input and generate or render output pages (e.g. with ink on a substrate).
When a raster image processor is located inside an output device <b>220</b>, it is usually included in a printer controller <b>410</b> (as shown in <figref idref="DRAWINGS">FIG. 4A</figref>). A printer controller <b>410</b> may interpret, rasterize, and convert input print data in the form of a page description language (e.g., PostScript, PCL), markup language (e.g., XML, HTML) or other special document format or language (e.g. PDF, EMF) into printer-engine print data which is a final format, language or instruction that printer engine <b>420</b>A can understand.
Print data sent to a printer with printer controller <b>410</b> is usually in a form (e.g. postscript) that requires further interpretation, processing or conversion. A printer controller <b>410</b> receives the print data, interprets, process, and converts the print data into a form that can be understood by the printer engine <b>420</b>A. Regardless of the type of print data, conventionally, a user may need a device-specific driver in his or her information apparatus <b>200</b> in order to output the proper language, format, or file that can be accepted by a specific printer or output device <b>220</b>.
<figref idref="DRAWINGS">FIG. 4B</figref> illustrates another conventional output device <b>400</b>B. Output device <b>400</b>B may be a printing device, a display device, a projection device, or a sound device. In the case that the output device is a printing device or a printer, the printer with reference to <figref idref="DRAWINGS">FIG. 4B</figref> does not include a printer controller <b>410</b>. As an example, printer <b>400</b>B may be a low-cost printer such as a desktop inkjet printer. RIP operations in this example may be implemented in a software application or in a device driver included in an information apparatus <b>200</b>. The information apparatus <b>200</b> generates device dependent output data (or print data in case of a printer) by rasterizing and converting a digital document into output data (e.g. into a compressed CMKY data with one or more bits per pixel) that can be understood by an output engine (or printer engine in case of a printer) <b>420</b>B.
Regardless of type or sophistication level, different output device <b>220</b> conventionally needs different printer drivers or output management applications in an information apparatus <b>200</b> to provide output capability. Some mobile devices with limited memory and processing power may have difficulty storing multiple device drivers or perform computational intensive RIP operations. It may also be infeasible to install a new device dependent or specific printer driver each time there is a need to print to a new printer. To overcome these difficulties, present invention provides several improvements to output device <b>220</b> or output system <b>250</b> as described in detail next.
In present invention, output device <b>220</b> may include an output controller <b>230</b> to help managing communication and negotiation processes with an information apparatus <b>200</b> and to process output data. Output controller <b>230</b> may include dedicated hardware or software or combination of both for at least one output device <b>220</b>. Output controller <b>230</b> may be internally installed, or externally connected to one or more output devices <b>220</b>. The output controller <b>230</b> is sometimes referred to as a print server or output server.
<figref idref="DRAWINGS">FIGS. 5A and 5B</figref> illustrate two exemplary internal implementations of the output controller <b>230</b> of present invention. <figref idref="DRAWINGS">FIG. 5A</figref> illustrates the implementation of an output controller <b>230</b> inside a conventional printer with reference to <figref idref="DRAWINGS">FIG. 4A</figref>, which includes a conventional printer controller <b>410</b>(<b>5</b>A). The output controller <b>230</b>(<b>5</b>A) includes an interpreter <b>510</b>A component for decoding the intermediate output data of present invention; and a converter component <b>530</b>A for converting one or more decoded output images into a printer-controller print data that is suitable for input to the printer controller <b>410</b>(<b>5</b>A). An optional image processing component <b>520</b>A may be included in the output controller <b>230</b>(<b>5</b>A).
<figref idref="DRAWINGS">FIG. 5B</figref> illustrates the implementation of an output controller <b>230</b> included internally in a conventional output device <b>220</b> with reference to <figref idref="DRAWINGS">FIG. 4B</figref>, which does not include a printer controller. The output controller <b>230</b>(<b>5</b>B) includes an interpreter <b>510</b>B component for decoding the intermediate output data of present invention; an image processor <b>520</b>B component for performing one or more image processing operations such as color space conversion, color matching and digital halftoning; and an optional encoder <b>530</b>B component to conform the processed output images into an output-engine output data that is suitable for input to the output engine <b>420</b>B if the result of the image processing is not already in required form suitable for the output engine <b>420</b>B.
In one implementation, output device <b>220</b> may include a communication unit <b>550</b> or adapter to interface with information apparatus <b>200</b>. Output device <b>220</b> may sometimes include more than one communication unit <b>550</b> in order to support different interfaces, protocols, or communication standards with different devices. For example, output device <b>220</b> may communicate with a first information apparatus <b>200</b> through a Bluetooth interface while communicating with a second information apparatus <b>200</b> through a parallel interface. Examples of hardware components of a wireless communication unit are described in greater detail below with reference to <figref idref="DRAWINGS">FIGS. 8A and 8B</figref>.
In one embodiment, output controller <b>230</b> does not include a communication unit, but rather utilizes or manages a communication unit residing in the associated output device <b>220</b> such as the illustration in <figref idref="DRAWINGS">FIG. 5</figref>. In another embodiment, output controller <b>230</b> may include or provide a communication unit to output device <b>220</b> as shown in <figref idref="DRAWINGS">FIG. 6</figref>. For example, an output controller <b>230</b> with a wireless communication unit may be installed internally or connected externally to a legacy printer to provide it with wireless communication capability that was previously lacking.
<figref idref="DRAWINGS">FIG. 6</figref> includes three functional block diagrams illustrating the hardware/software components of output controller <b>230</b> in three different implementations. Each components of an output controller <b>230</b> may include software, hardware, or combination. For example, an output controller <b>230</b> may include components using one or more or combinations of an application-specific integrated circuit (ASIC), a digital signal processor (DSP), a field programmable gate array (FPGA), firmware, system on a chip, and various communication chip sets. Output controller <b>230</b> may also contain embedded processors <b>670</b> A with software components or embedded application software to implement its feature sets and functionalities.
Output controller <b>230</b> may contain an embedded operating system <b>680</b>. With an operating system, some or all functionalities and feature sets of the output controller <b>230</b> may be provided by application software managed by the operating system. Additional application software may be installed or upgraded to newer versions in order to, for example, provide additional functionalities or bug fixes. <figref idref="DRAWINGS">FIG. 6A</figref> and <figref idref="DRAWINGS">FIG. 6C</figref> illustrates examples of implementation with an operating system <b>680</b> while <figref idref="DRAWINGS">FIG. 6B</figref> illustrates an example without the operating system <b>680</b> or the optional embedded processor <b>670</b>.
Output controller <b>230</b> typically includes a memory unit <b>640</b>, or may share a memory unit with, for example, printer controller <b>410</b>. The memory unit and storage unit, such as ROM, RAM, flash memory and disk drive among others, may provide persistent or volatile storage. The memory unit or storage unit may store output device profiles, objects, codes, instructions or data (collectively referred to as software components) that implement the functionalities of the output controller <b>230</b>. Part of the software components (e.g., output device profile) may be uploaded to information apparatus <b>200</b> during or before a data output operation.
An output controller <b>230</b> may include a processor component <b>670</b>A and <b>670</b>C, a memory component <b>650</b>, an optional storage component <b>640</b>, and an optional operating system component <b>680</b>. <figref idref="DRAWINGS">FIG. 6</figref> shows one architecture or implementation where the memory <b>650</b>, storage <b>640</b>, processor <b>670</b>, and operating system <b>680</b> components, if exist, can be share or accessed by other operational components in the output controller <b>230</b> such as the interpreter <b>610</b> and image processor <b>650</b>. <figref idref="DRAWINGS">FIG. 6</figref> shows two communication units <b>660</b>A and <b>660</b>B included in the output controller <b>230</b>; however, the output controller <b>230</b> of present invention may include any number of communication units <b>660</b>. It is also possible that the output controller does not contain any communication unit but rather utilizes the communication unit of an output device.
The output controller <b>230</b> may be connected externally to an output device <b>220</b> or integrated internally into the output device <b>220</b>. <figref idref="DRAWINGS">FIGS. 5A and 5B</figref> illustrate implementations of output controller <b>230</b> inside an output device <b>220</b>. The output controller <b>230</b>, however, may also be implemented as an external box or station that is wired or wirelessly connected to an output device <b>220</b>. An output controller <b>230</b> implemented as an external box or station to an output device <b>220</b> may contain its own user interface. One example of such an implementation is a print server connected to an output device <b>220</b> in an output system <b>250</b>. Another configuration and implementation is to integrate or combine the functionalities of an output controller <b>230</b> with an existing printer controller <b>410</b> (referred to as “combined controller”) if the output device <b>220</b> is a printer as shown with reference to <figref idref="DRAWINGS">FIG. 7C or 7F</figref>. A combined controller can also be internally integrated or externally connected to output device <b>220</b>, and include functionalities of both printer controller <b>410</b> (e.g., input interpretation and or raster image processing) and output controller <b>230</b> of present invention. One advantage of this configuration is that the functionalities or components of output controller <b>230</b> and printer controller <b>410</b> may share the same resources, such as processing unit, memory unit, etc. <figref idref="DRAWINGS">FIG. 6C</figref> illustrates an example of a combined controller implementation or output controller <b>230</b> where the printer controller <b>410</b>C, interpreter <b>610</b>C and converter <b>630</b>C shares the use of the processor <b>670</b>C, memory <b>650</b>C and storage <b>640</b>C, managed by an operating system <b>680</b>C. Various exemplary implementations and configurations of an output controller <b>230</b> with respect to an output device <b>220</b> or output system <b>250</b> are illustrated in further detail with reference to <figref idref="DRAWINGS">FIG. 7</figref>.
Other possible implementations of output controller <b>230</b> may include, for example, a conventional personal computer (PC), a workstation, and an output server or print server. In these cases, the functionalities of output controller <b>230</b> may be implemented using application software installed in a computer (e.g., PC, server, or workstation), with the computer connected with a wired or wireless connection to an output device <b>220</b>. Using a PC, server, workstation, or other computer to implement the feature sets of output controller <b>230</b> with application software is just another possible embodiment of the output controller <b>230</b> and in no way departs from the spirit, scope and process of the present invention.
The difference between output controller <b>230</b> and printer controller <b>410</b> should be noted. Printer controller <b>410</b> and output controller <b>230</b> are both controllers and are both dedicated hardware and or software for at least one output device <b>220</b>. Output controller <b>230</b> refers to a controller with feature sets, capabilities, and functionalities of the present invention. A printer controller <b>410</b> may contain functions such as interpreting an input page description language, raster image processing, and queuing, among others. An output controller <b>230</b> may include part or all of the features of a printer controller <b>410</b> in addition to the feature sets, functionalities, capabilities, and processes of present invention.
Functionalities and components of output controller <b>230</b> for the purpose of providing universal data output may include or utilize: <ul id="ul0007" list-style="none"><li id="ul0007-0001" num="0000"><ul id="ul0008" list-style="none"><li id="ul0008-0001" num="0137">Components and operations to receive output data from a plurality of information apparatus <b>200</b>; the output data may include an intermediate output data containing at least one rasterized image related to the data content intended for output.</li><li id="ul0008-0002" num="0138">Components and operations to interpret and/or decode the intermediate output data.</li><li id="ul0008-0003" num="0139">Components and operations to process the intermediate output data. Such components and operations may include image processing functions such as scaling, segmentation, color correction, color management, GCR, image enhancement, decompression, decryption, and or halftoning among others.</li><li id="ul0008-0004" num="0140">Components and operations to generate an output-engine output data, the output-engine output data being in an output data format acceptable for input to an output engine.</li><li id="ul0008-0005" num="0141">Components and operations to send the output-engine output data to the output engine.</li></ul></li></ul>
When associated with an output device <b>220</b> that includes a printer controller <b>410</b>, the output controller of present invention may further include or utilize: <ul id="ul0009" list-style="none"><li id="ul0009-0001" num="0000"><ul id="ul0010" list-style="none"><li id="ul0010-0001" num="0143">Components and operations to convert the intermediate output data into a printer-controller print data (e.g. a PDL such as PostScript and PCL), the printer-controller print data being in a format acceptable to a printer controller.</li><li id="ul0010-0002" num="0144">Components and operations to send printer-controller print data to one or more printer controllers.</li></ul></li></ul>
In addition to the above components and functionalities, output controller <b>230</b> may further include one or more of the following: <ul id="ul0011" list-style="none"><li id="ul0011-0001" num="0000"><ul id="ul0012" list-style="none"><li id="ul0012-0001" num="0146">Components and operations to communicate with one or more information apparatus <b>200</b> through a wired or wireless interface.</li><li id="ul0012-0002" num="0147">Components and operations to communicate and or manage a communication unit included in the output controller <b>230</b> or output device <b>220</b>.</li><li id="ul0012-0003" num="0148">Components and operations to store at least part of an output device profile (a printer profile in case of a printer) in a memory component.</li><li id="ul0012-0004" num="0149">Components and operations to respond to service request from an information apparatus <b>200</b> by transmitting at least part of an output device profile to the information apparatus requesting service. The output controller <b>230</b> may transmit the output device profiles or object in one or multiple sessions.</li><li id="ul0012-0005" num="0150">Components and operations to broadcast or advertise the services provided by a host output device <b>220</b> to one or more information apparatus <b>200</b> that may request such services.</li><li id="ul0012-0006" num="0151">Components and operations to implement payment processing and management functions by, for example, calculating and processing payments according to the services requested or rendered to a client (information apparatus <b>200</b>).</li><li id="ul0012-0007" num="0152">Components and operations to provide a user interface such as display screen, touch button, soft key, etc.</li><li id="ul0012-0008" num="0153">Components and operations to implement job management functions such as queuing and spooling among others.</li><li id="ul0012-0009" num="0154">Components and operations to implement security or authentication procedures. For example, the output controller <b>230</b> may store in its memory component (or shared memory component) an access control list, which specifies what device or user may obtain service from its host (or connected) output device <b>220</b>. Therefore, an authorized information apparatus <b>200</b> may gain access after confirming with the control list.</li></ul></li></ul>
When output controller <b>230</b> is implemented as firmware, or an embedded application, the configuration and management of the functionalities of output controller <b>230</b> may be optionally accomplished by, for example, using controller management software in a host computer. A host computer may be a desktop personal computer (PC), workstation, or server. The host computer may be connected locally or through a network to the output device <b>220</b> or the controller <b>230</b>. Communication between the host computer and the output controller <b>230</b> can be accomplished through wired or wireless communication. The management application software in the host computer can manage the settings, configurations, and feature sets of the output controller <b>230</b>. Furthermore, host computer's configuration application may download and or install application software, software components and or data to the output controller <b>230</b> for the purpose of upgrading, updating, and or modifying the features and capabilities of the output controller <b>230</b>.
Output device <b>220</b> in one implementation includes or is connected to output controller <b>230</b> described above. Therefore, functionalities and feature sets provided by output controller <b>230</b> are automatically included in the functionalities of output device <b>220</b>. The output device <b>220</b> may, however, implement or include other controllers and/or applications that provide at least partially the features and functionalities of the output controller <b>230</b>.
Therefore, the output device <b>220</b> may include some or all of the following functionalities: <ul id="ul0013" list-style="none"><li id="ul0013-0001" num="0000"><ul id="ul0014" list-style="none"><li id="ul0014-0001" num="0158">Components and operations to receive multiple service requests or queries (e.g., a service request, a data query, an object or component query etc.) from a plurality of information apparatus <b>200</b> and properly respond to them by returning components, which may contain data, software, instructions and/or objects.</li><li id="ul0014-0002" num="0159">Components and operations to receive output data from a plurality of information apparatus <b>200</b>; the output data may include an intermediate output data containing one or more rasterized image related to the content intended for output.</li><li id="ul0014-0003" num="0160">Components and operations to interpret and/or decoding the intermediate output data.</li><li id="ul0014-0004" num="0161">Components and operations to process and/or convert the intermediate output data into a form (e.g. output-engine print data) suitable for rendering at an output engine associated with the output device.</li><li id="ul0014-0005" num="0162">Components and operations to render a representation or an image related to the content onto an output medium (e.g. substrate or a display screen).</li></ul></li></ul>
An output device <b>220</b> may further comprise optionally one or more of the following functionalities: <ul id="ul0015" list-style="none"><li id="ul0015-0001" num="0000"><ul id="ul0016" list-style="none"><li id="ul0016-0001" num="0164">Components and operations for establishing and managing a communication link with an information apparatus <b>200</b> requesting service; the communication link may include wired or wireless communication.</li><li id="ul0016-0002" num="0165">Components and operations for storing at least part of an output device profile (e.g. printer profile) in a memory component.</li><li id="ul0016-0003" num="0166">Components and operations to provide at least part of an output device profile (e.g., printer profile in case of a printer) to one or more information apparatus <b>200</b> requesting service. The output device <b>220</b> may transmit the output device profile in one or multiple sessions.</li><li id="ul0016-0004" num="0167">Components and operations to advertise or broadcast services provided or available to one or more information apparatus <b>200</b>.</li><li id="ul0016-0005" num="0168">Components and operations to implement payment processing and management functions by, for example, calculating and processing payments according to the services requested by or rendered to a client (information apparatus <b>200</b>).</li><li id="ul0016-0006" num="0169">Components and operations to implement job management functionalities such as queuing and spooling among others.</li><li id="ul0016-0007" num="0170">Components and operations to provide a user interface such as display screen touch button, soft key, power switch, etc.</li><li id="ul0016-0008" num="0171">Components and operations to implement security or authentication procedures. For example, the output device <b>220</b> may store in its memory component (or a shared memory component) an access control list, which specifies what device or user may obtain service from it. Therefore, an authorized information apparatus <b>200</b> may gain access after confirming with the control list.</li></ul></li></ul>
<figref idref="DRAWINGS">FIGS. 7A-7F</figref> illustrate various alternative configurations and implementations of output controller <b>230</b> with respect to an output device <b>230</b>. Printer is sometimes used as an exemplary output device <b>230</b> to demonstrate the various configurations. It should be understood, however, the output device <b>230</b> of present invention is not limited to printers.
As described with reference to <figref idref="DRAWINGS">FIG. 4</figref>, a printer may or may not contain a printer controller <b>410</b>. Printer <b>400</b>A that includes a printer controller <b>410</b> typically has higher speed and is more expensive than printer <b>400</b>B which does not include a printer controller <b>410</b>.
<figref idref="DRAWINGS">FIG. 7A</figref> shows that output controller <b>230</b> may be cascaded externally to one or more printers (only one shown). Information apparatus <b>200</b> communicates with output controller <b>230</b>A, which then communicates with output device <b>220</b> such as a printer <b>220</b>A. The communication link between the output controller <b>230</b>A and the printer <b>220</b>A may be a wired link or a wireless link, as described above. <figref idref="DRAWINGS">FIGS. 6A and 6B</figref> illustrates two examples of functional component design of the output controller that can implement the configuration illustrated in <figref idref="DRAWINGS">FIG. 7A</figref>. The Image processor <b>620</b> in this implementation is optional.
<figref idref="DRAWINGS">FIG. 7B</figref> shows another implementation in which output controller <b>230</b>B is installed as one or more circuit boards or cards internally inside printer <b>220</b>B. The output controller <b>230</b>B may co-exist with printer controller <b>410</b> and other components of the printer <b>220</b>B. One example of this implementation is to connect output controller <b>230</b>B sequentially with the printer controller <b>310</b>. <figref idref="DRAWINGS">FIG. 5A</figref> shows as an example of an implementation.
<figref idref="DRAWINGS">FIG. 7C</figref> shows another implementation in which the functionalities of output controller <b>230</b> and printer controller <b>410</b> are combined into a single controller (referred to as “combined controller”) <b>230</b>C. In this implementation, it is possible to reduce the cost of material when compared to implementing two separate controllers as shown in <figref idref="DRAWINGS">FIG. 7B</figref>. As an example, the combined controller <b>230</b>C may share the same processors, memories, and storages to run the applications and functionalities of the two types of controllers and therefore, may have lower component costs when compared to providing two separate controllers. <figref idref="DRAWINGS">FIG. 6C</figref> illustrates an example of a combined controller functional component implementation.
Some printers do not include a raster image processor or printer controller <b>410</b>, as illustrated in <figref idref="DRAWINGS">FIG. 4B</figref>. An example of this type of printer is a lower cost desktop inkjet printer. Input to an inkjet printer may consist of a compressed CMYK data (proprietary or published) with one or more bits per pixel input. To output to a printer that does not include a printer controller, a device specific software application or a printer driver is typically required in an information apparatus <b>200</b> to perform raster image processing operations. Accordingly, output controller <b>230</b> can be implemented into a variety of output devices <b>220</b> and/or output systems <b>250</b> including printers that do not have printer controllers for performing raster image processing operations.
<figref idref="DRAWINGS">FIG. 7D</figref> and <figref idref="DRAWINGS">FIG. 7E</figref> illustrate two implementations of output controller <b>230</b> in an output device <b>220</b> or system <b>250</b>. The output device <b>230</b> or system <b>250</b> may include a display device, a projection device, an audio output device or a printing device. In the case when the output device <b>220</b>D or <b>220</b>E is a printer, it does not include a printer controller. <figref idref="DRAWINGS">FIG. 7D</figref> illustrates an implementation of an output controller <b>230</b>D installed as an external component or “box” to output device <b>220</b>D. For example, the output controller <b>230</b> may be implemented as an application in a print server or as a standalone box or station. In this configuration, some or all of raster image processing operations may be implemented in the output controller <b>230</b>D. Output controller <b>230</b>D receives intermediate output data from an information apparatus <b>200</b> and generates output-engine output data that is acceptable to the output engine included in the output device <b>220</b>D. The output controller <b>230</b>D may send the output data to the output device <b>220</b>D through a wired or wireless communication link or connection. <figref idref="DRAWINGS">FIGS. 6A and 6B</figref> illustrates two example of functional component design of the output controller that can implement the configurations for both <figref idref="DRAWINGS">FIGS. 7D and 7E</figref>.
<figref idref="DRAWINGS">FIG. 7E</figref> shows a fifth implementation of output controller <b>230</b>E in which the output controller <b>230</b>E is incorporated within output device <b>220</b>E as one or more circuit boards or cards and may contain software and applications running on an embedded processor. As with output device <b>220</b>D (<figref idref="DRAWINGS">FIG. 7D</figref>), output device <b>220</b>E does not include a printer controller <b>410</b>. Accordingly, the output controller <b>230</b>E implements the functionalities and capabilities of present invention that may include part of or complete raster imaging processing operation.
<figref idref="DRAWINGS">FIG. 7F</figref> shows a sixth implementation, an external combined controller <b>230</b>F that integrates the functionalities of a printer controller <b>310</b> and an output controller into a single external combined controller component or “box” <b>230</b>F. The two controller functions may share a common processor as well as a common memory space to run applications of the two types of controllers. Under this configuration, either information apparatus <b>200</b> or the combined controller <b>230</b>F could perform or share at least part of raster image processing functionality. <figref idref="DRAWINGS">FIG. 6C</figref> shows an example of functional components of a combined controller <b>230</b>F.
Another implementation of the combined controller <b>230</b>F shown in <figref idref="DRAWINGS">FIG. 7F</figref> is to use an external computing device (PC, workstation, or server) running one or more applications that include the functionality of output controller <b>230</b> and printer controller <b>410</b>.
The above are examples of different implementations and configurations of output controller <b>230</b>. Other implementations are also possible. For example, partial functionalities of output controller <b>230</b> may be implemented in an external box or station while the remaining functionalities may reside inside an output device <b>220</b> as a separate board or integrated with a printer controller <b>410</b>. As another example, the functionalities of output controller <b>230</b> may be implemented into a plurality of external boxes or stations connected to the same output device <b>220</b>. As a further example, the same output controller <b>230</b> may be connected to service a plurality of output devices <b>220</b>
<figref idref="DRAWINGS">FIGS. 8A and 8B</figref> are block diagrams illustrating two possible configurations of hardware/software components of wireless communication units. These wireless communication units can be implemented and included in information apparatus <b>200</b>, in output controller <b>230</b> and in output device <b>220</b>. Referring to <figref idref="DRAWINGS">FIG. 8A</figref>, a radio adapter <b>800</b> may be implemented to enable data/voice transmission among devices (e.g., information apparatus <b>200</b> and output device <b>220</b>) through radio links. An RF transceiver <b>814</b> coupled with antenna <b>816</b> is used to receive and transmit radio frequency signals. The RF transceiver <b>814</b> also converts radio signals into and from electronic signals. The RF transceiver <b>814</b> is connected to an RF link controller <b>810</b> by an interface <b>812</b>. The interface <b>812</b> may perform functions such as analog-to-digital conversion, digital-to-analog conversion, modulation, demodulation, compression, decompression, encoding, decoding, and other data or format conversion functions.
RF link controller <b>810</b> implements real-time lower layer (e.g., physical layer) protocol processing that enables the hosts (e.g., information apparatus <b>200</b>, output controller <b>230</b>, output device <b>220</b>, etc.) to communicate over a radio link. Functions performed by the link controller <b>810</b> may include, without limitation, error detection/correction, power control, data packet processing, data encryption/decryption and other data processing functions.
A variety of radio links may be utilized. A group of competing technologies operating in the 2.4 GHz unlicensed frequency band is of particular interest. This group currently includes Bluetooth, Home radio frequency (Home RF) and implementations based on IEEE 802.11 standard. Each of these technologies has a different set of protocols and they all provide solutions for wireless local area networks (LANs). Interference among these technologies could limit deployment of these protocols simultaneously. It is anticipated that new local area wireless technologies may emerge or that the existing ones may converge. Nevertheless, all these existing and future wireless technologies may be implemented in the present invention without limitation, and therefore, in no way depart from the scope of present invention.
Among the currently available wireless technologies, Bluetooth may be advantageous because it requires relatively lower power consumption and Bluetooth-enabled devices operate in piconets, in which several devices are connected in a point-to-multipoint system. Referring to <figref idref="DRAWINGS">FIG. 8B</figref>, one or more infrared (IR) adapters <b>820</b> may be implemented to enable data transmission among devices through infrared transmission. The IR adapters <b>820</b> may be conveniently implemented in accordance with the Infrared Data Association (IrDA) standards and specifications. In general, the IrDA standard is used to provide wireless connectivity technologies for devices that would normally use cables for connection. The IrDA standard is a point-to-point (vs. point-to-multipoint as in Bluetooth), narrow angle, ad-hoc data transmission standard.
Configuration of infrared adapters <b>820</b> may vary depending on the intended rate of data transfer. <figref idref="DRAWINGS">FIG. 8B</figref> illustrates one embodiment of infrared adapter <b>820</b>. Transceiver <b>826</b> receives/emits IR signals and converts IR signals to/from electrical signals. A UART (universal asynchronous receiver/transmitter) <b>822</b> performs the function of serialization/deserialization, converting serial data stream to/from data bytes. The UART <b>822</b> is connected to the IR transceiver <b>826</b> by encoder/decoder (ENDEC) <b>824</b>. This configuration is generally suitable for transferring data at relatively low rate. Other components (e.g., packet framer, phase-locked loop) may be needed for higher data transfer rates.
<figref idref="DRAWINGS">FIGS. 8A and 8B</figref> illustrate exemplary hardware configurations of wireless communication units. Such hardware components may be included in devices (e.g., information apparatus <b>200</b>, output controller <b>230</b>, output device <b>220</b>, etc.) to support various wireless communications standards. Wired links, however, such as parallel interface, USB, Firewire interface, Ethernet and token ring networks may also be implemented in the present invention by using appropriate adapters and configurations.
<figref idref="DRAWINGS">FIG. 9</figref> is a logic flow diagram of an exemplary raster imaging process (RIP) <b>902</b> that can implement the universal output method of present invention. Content (e.g. digital document) <b>900</b> may be obtained and/or generated by an application running in an information apparatus <b>200</b>. For example, a document browsing application may allow a user to download and or open digital document <b>900</b> stored locally or in a network node. As another example, a document creating or editing application may allow a user to create or edit digital documents in his/her information apparatus <b>200</b>.
A client application <b>210</b> in the information apparatus may be in the form of a device driver, invoked by other applications residing in the information apparatus <b>200</b> to provide output service. Alternatively, the client application <b>210</b> of present invention may be an application that includes data output and management component, in addition of other functionalities such as content acquisitions, viewing, browsing, and or editing etc. For example, a client application <b>210</b> in an information apparatus <b>200</b> may itself include components and functions for a user to download, view and or edit digital document <b>900</b> in addition of the output management function described herein.
Raster image process method <b>902</b> allows an information apparatus <b>200</b> such as a mobile device to pervasively and conveniently output content (e.g. a digital document) to an output device <b>220</b> or system <b>250</b> that includes an output controller <b>230</b>. A client application <b>210</b> in an information apparatus <b>200</b> may perform part of raster image processing operations (e.g. rasterization operation). Other operations of raster image processing such as halftoning can be completed by the output device <b>220</b> or by the output controller <b>230</b>. In conventional data output methods, raster image processing is either implemented entirely in an information apparatus (e.g. a printer that does not include a printer controller with reference to <figref idref="DRAWINGS">FIG. 1A</figref>) or in an output device (e.g. a printer that includes a printer controller with reference to <figref idref="DRAWINGS">FIG. 1B</figref>). Present invention provides a more balanced approach where raster image process operations are shared between an information apparatus <b>200</b> and an output device <b>220</b> or system <b>250</b>. For example, content <b>600</b> may be processed (e.g. raster image processed) by different components or parts of an overall output system from a client application <b>210</b> to an output controller <b>230</b> before being sent to an output engine or a printer engine for final output in step <b>960</b>. Because the raster image processing operations are not completely implemented in the information apparatus <b>200</b>, there is less processing demand on the information apparatus <b>200</b>. Therefore, present RIP process may enable additional mobile devices with less memory and processing capability to have data output capability.
In step <b>910</b>, rasterization operation, a content (e.g. digital document), which may include text, graphics, and image objects, is conformed or rasterized to image form according to one or more rasterization parameters such as output size, bit depth, color space, resolution, number of color channels etc. During the rasterization operation, text and vector graphics information in the content are rasterized or converted into image or bitmap information according to a given set of rasterization parameters. Image information in the content or digital document may be scaled and or interpolated to fit a particular output size, resolution and bit depth etc. The rasterization parameters are in general device dependent, and therefore may vary according to different requirements and attributes of an output device <b>220</b> and its output engine. There are many ways to obtain device dependent rasterization parameters, as described in more detail below with reference to <figref idref="DRAWINGS">FIG. 12A</figref>. Device dependent rasterization parameters, in one example, may be obtained from an output device profile stored in an information apparatus <b>200</b>, an output device <b>220</b> or an output controller <b>230</b>.
In an alternative implementation, rasterization parameters may be predetermined by a standard or specification. In this implementation, in step <b>910</b> the content <b>900</b> is rasterized to fit or match this predefined or standard rasterization parameters. Therefore, the rasterized output image becomes device independent. One advantage of being device independent is that the rasterized output image is acceptable with controllers, devices and/or output devices implemented or created with the knowledge of such standard or specification. A rasterized image with predefined or standardized attributes is usually more portable. For example, both the client application <b>210</b> and output device <b>220</b> or its output controller <b>230</b> may be preprogrammed to receive, interpret, and or output raster images based on a predefined standard and/or specification.
Occasionally, a predefined standard or specification for rasterization parameters may require change or update. One possible implementation for providing an easy update or upgrade is to store information and related rasterization parameters in a file or a profile instead of hard coding these parameters into programs, components or applications. Client application <b>210</b>, output controller <b>230</b>, and/or the output device <b>220</b> can read a file or a profile to obtain information related to rasterization parameters. To upgrade or update the standard specification or defaults requires only replacing or editing the file or the profile instead of replacing a software application or component such as the client application <b>210</b>.
In step <b>920</b> the rasterized content in image form is encoded into an intermediate output data. The intermediate output data, which describes the output content, may include image information, instructions, descriptions, and data (e.g. color profile). The rasterized output image may require further processing including one or more of compression, encoding, encryption, smoothing, image enhancement, segmentation, color correction among others before being stored into the intermediate output data. The output image in the intermediate output data may be encoded in any image format and with any compression technique such as JPEG, BMP, TIFF, JBIG etc. In one preferred embodiment, a mixed raster content (MRC) format and its related encoding and/or compression methods are used to generate the output image. The advantages of using MRC over other image formats and techniques may include, for example, better compression ratio, better data information retention, smaller file size, and or relatively better image quality among others.
In step <b>930</b>, the intermediate output data is transmitted to the output device <b>220</b> or output system <b>250</b> for further processing and final output. The transmission of the intermediate output data may be accomplished through wireless or wired communication links between the information apparatus <b>200</b> and the output device <b>220</b> and can be accomplished through one or multiple sessions.
In step <b>940</b>, the output device <b>220</b> or output system <b>250</b> receives the transmitted intermediate output data. The output device <b>220</b> or output system <b>250</b> may include an output controller <b>230</b> to assist communicating with the information apparatus <b>200</b> and/or processing the intermediate output data. Output controller <b>230</b> may have a variety of configurations and implementations with respect to output device <b>220</b> as shown in <figref idref="DRAWINGS">FIG. 7A-7F</figref>. Interpretation process <b>940</b> may include one or more of parsing, decoding, decompression, decryption, image space conversion among other operations if the received intermediate output data requires such processing. An output image is decoded or retrieved from the intermediate output data and may be temporarily stored in a buffer or memory included in the output device/output system (<b>220</b>/<b>250</b>) or output controller <b>230</b> for further processing.
If the intermediate output data includes components with MRC format or encoding techniques, it may contain additional segmented information (e.g. foreground and background), which can be used to enhance image quality. For example, different techniques or algorithms in scaling, color correction, color matching, image enhancement, anti-aliasing and or digital halftoning among others may be applied to different segments or layers of the image information to improve output quality or maximize retention or recovery of image information. Multiple layers may later be combined or mapped into a single layer. These image processing and conversion components and/or operations can be included in the output controller <b>230</b> of present invention.
In step <b>950</b>, the decoded or retrieved output image from the intermediate output data may require further processing or conversion. This may include one or more of scaling, segmentation, interpolation, color correction, GCR, black generation, color matching, color space transformation, anti-aliasing, image enhancement, image smoothing and or digital halftoning operations among others.
In an embodiment where the output device <b>220</b> does not include a printer controller, an output controller <b>230</b> or an output device <b>220</b> that includes output controller, after performing the remaining portion of RIP operations (e.g. color space conversion and halftoning) on the output image, may further convert the output data in step <b>950</b> into a form that is acceptable for input to a printer engine for rendering.
In an alternative embodiment where the output device <b>220</b> or the output system <b>250</b> includes a conventional printer controller, the output controller may simply decodes and or converts the intermediate output data (print data in this example) into format or language acceptable to the printer controller. For example, a printer controller may require as input a page description language (e.g. PostScript, PCL, PDF, etc.), a markup language (HTML, XML etc) or other graphics or document format. In these cases, the output controller <b>230</b> may interpret, decompress and convert the intermediate print data into an output image that has optimal output resolution, bit depth, color space, and output size related to the printer controller input requirements. The output image is then encoded or embedded into a printer-controller print data (e.g. a page description language) and sent to the printer controller. A printer-controller print data is a print data that is acceptable or compatible for input to the printer controller. After the printer controller receives the printer-controller print data, the printer controller may further perform operations such as parsing, rasterization, scaling, color correction, image enhancement, halftoning etc on the output image and generate an appropriate printer-engine print data suitable for input to the printer engine.
In step <b>960</b>, the output-engine output data or printer-engine print data generated by the output controller <b>230</b> or the printer controller in step <b>950</b> is sent to the output engine or printer engine of the output device for final output.
<figref idref="DRAWINGS">FIG. 10</figref> illustrates a flow diagram of a universal data output process of the present invention that includes the raster image processing illustrated with reference to <figref idref="DRAWINGS">FIG. 9</figref>. A universal data output process allows an information apparatus <b>200</b> to pervasively output content or digital document to an output device. The data output process may include or utilize: <ul id="ul0017" list-style="none"><li id="ul0017-0001" num="0000"><ul id="ul0018" list-style="none"><li id="ul0018-0001" num="0204">A user interface component and operation where a user initiates an output process and provides an indication of the selected output content (e.g. digital document) for output.</li><li id="ul0018-0002" num="0205">A client application component or operation that processes the content indicated for output, and generates an intermediate output data. The intermediate output data may include at least partly a raster output image description related to the content.</li><li id="ul0018-0003" num="0206">An information apparatus component or operation that transmits the intermediate output data to one or more selected output device <b>220</b>.</li><li id="ul0018-0004" num="0207">An output device component (e.g. output controller) or operation that interprets the intermediate output data and may further process or convert the output data into a form more acceptable to an output engine for rendering of the content.</li></ul></li></ul>
With reference to <figref idref="DRAWINGS">FIG. 10</figref>, a user in step <b>1000</b> may initiate the universal output method or process <b>1002</b>. Typically, a user initiates the output process by invoking a client application <b>210</b> in his/her information apparatus <b>200</b>. The client application <b>210</b> may be launched as an independent application or it may be launched from other applications <b>205</b> (such as from a document browsing, creating or editing application) or as part of or component of or a feature of another application <b>205</b> residing in the same information apparatus <b>200</b>. When launched from another application <b>205</b>, such as the case when the client application is a device driver or helper application, the client application <b>210</b> may obtain information, such as the content (e.g. digital document) from that other application <b>205</b>. This can be accomplished, for example, by one or combinations of messages or facilitated through an operating system or a particular object or component model etc.
During output process <b>1002</b>, a user may need to select one or more output devices <b>220</b> for output service. An optional discovery process step <b>1020</b> may be implemented to help the user select an output device <b>220</b>. During the discovery process step <b>1020</b>, a user's information apparatus <b>200</b> may (1) search for available output devices <b>220</b>; (2) provide the user with a list of available output devices <b>220</b>; and (3) provide means for the user to choose one or more output devices <b>220</b> to take the output job. An example of a discovery process <b>1020</b> is described below in greater detail with reference to <figref idref="DRAWINGS">FIG. 11</figref>.
The optional discovery process <b>1020</b> may sometimes be unnecessary. For example, a user may skip the discovery process <b>1020</b> if he or she already knows the output device (e.g., printer) <b>220</b> to which the output is to be directed. In this case, the user may simply connect the information apparatus <b>200</b> to that output device <b>220</b> by wired connections or directly point to that output device <b>220</b> in a close proximity such as in the case of infrared connectivity. As another example, a user may pre-select or set the output device or devices <b>220</b> that are used frequently as preferred defaults. As a result, the discovery process <b>1020</b> may be partially or completely skipped if the default output device <b>220</b> or printer is found to be available.
In stage <b>1030</b>, the client application may interact with output device <b>220</b>, the user, and/or other applications <b>205</b> residing in the same information apparatus <b>200</b> to (1) obtain necessary output device profile and/or user preferences, (2) perform functions or part of raster image processing operations such as rasterization, scaling and color correction, and/or (3) convert or encode at least partially the rasterized content (e.g. digital document) into an intermediate output data. The processing and generation of the intermediate output data may reflect in part a relationship to an output device profile and/or user preferences obtained, if any. The intermediate output data generated by the client application <b>210</b> is then transmitted through wired or wireless local communication link(s) <b>240</b> to the output controller <b>230</b> included or associated with the selected output device <b>220</b> or output system <b>250</b>. An exemplary client application process is described in greater detail with reference to <figref idref="DRAWINGS">FIG. 12</figref>.
In step <b>1040</b>, the output controller <b>230</b> of present invention receives the intermediate output data. In the case where the selected output device <b>230</b> does not include a printer controller, the output controller <b>230</b> of present invention may further perform processing functions such as parsing, interpreting, decompressing, decoding, color correction, image enhancement, GCR, black generation and halftoning among others. In addition, the output controller <b>230</b> may further convert or conform the intermediate output data into a form or format suitable for the output engine (e.g. printer engine in the case of a printer). The generated output-engine output data from the output controller is therefore, in general, device dependent and acceptable for final output with the output engine (or the printer engine in case of a printer) included in the selected output device <b>220</b> or output system <b>250</b>.
In the case where the selected output device <b>220</b> is a printer, and when the printer includes or is connected to a printer controller, the output controller <b>230</b> may generate the proper language or input format required to interface with the printer controller (referred to as printer-controller print data). The printer controller may for example require a specific input such as a page description language (PDL), markup language, or a special image or graphics format. In these cases, the output controller <b>230</b> in step <b>1040</b> may interpret and decode the intermediate output data, and then convert the intermediate output data into the required printer-controller print data (e.g. PDL such as PostScript or PCL). The printer-controller print data generated by the output controller is then sent to the printer controller for further processing. The printer controller may perform interpretation and raster image processing operations among other operations. After processing, the printer controller generates a printer-engine print data suitable for rendering at the printer engine.
In either case, the output controller <b>230</b> or printer controller generates an output-engine output data that is suitable for sending to or interfacing with the output engine or the printer engine included in the output device for rendering. The output data may be temporarily buffered in components of the output device <b>220</b>. An implementation of the output device process <b>1040</b> is described in greater detail with reference to <figref idref="DRAWINGS">FIG. 13</figref>.
The steps included in the universal pervasive output process <b>1002</b> may proceed automatically when a user requests output service. Alternatively, a user may be provided with options to proceed, cancel, or input information at each and every step. For example, a user may cancel the output service at any time by, for example, indicating a cancellation signal or command or by terminating the client application <b>210</b> or by shutting down the information apparatus <b>200</b> etc
<figref idref="DRAWINGS">FIG. 11</figref> is a flow diagram of an example of a discovery process <b>720</b>, which may be an optional step to help a user locate one or more output devices <b>220</b> for an output job. The discovery process <b>1020</b> may, however, be skipped partially or entirely. Implementation of discovery process <b>1020</b> may require compatible hardware and software components residing in both the information apparatus <b>200</b> and the output device <b>220</b>. The information apparatus <b>200</b> may utilize the client application <b>210</b> or other application <b>205</b> in this process. The discovery process <b>1020</b> may include: <ul id="ul0019" list-style="none"><li id="ul0019-0001" num="0000"><ul id="ul0020" list-style="none"><li id="ul0020-0001" num="0217">An information apparatus <b>200</b> communicating with available output devices <b>220</b> to obtain information and attributes relating to the output device <b>220</b> and or its services such as output device capability, feature sets, service availability, quality of service, condition.</li><li id="ul0020-0002" num="0218">An Information apparatus <b>200</b> provides the user information on each available and or compatible output devices <b>220</b>.</li><li id="ul0020-0003" num="0219">A user selects or the client application <b>210</b> (automatically or not) selects one or more output devices <b>220</b> for the output service from the available or compatible output devices <b>220</b>.</li></ul></li></ul>
Various protocols and or standards may be used during discovery process <b>1020</b>. Wireless communication protocols are preferred. Wired communication, on the other hand, may also be implemented. Examples of applicable protocols or standards may include, without limitation, Bluetooth, HAVi, Jini, Salutation, Service Location Protocol, and Universal Plug-and-play among others. Both standard and proprietary protocols or combination may be implemented in the discovery process <b>1020</b>. However, these different protocols, standards, or combination shall not depart from the spirit and scope of present invention.
In one implementation an application (referred here for simplicity of discussion as a “communication manager,” not shown) residing in the information apparatus <b>200</b> helps communicate with output device <b>220</b> and manages service requests and the discovery process <b>1020</b>. The communication manager may be a part of or a feature of the client application <b>210</b>. Alternatively or in combination, the communication manager may also be a separate application. When the communication manager is a separate application, the client application <b>210</b> may have the ability to communicate, manage or access functionalities of the communication manager.
The discovery process <b>1020</b> may be initiated manually by a user or automatically by a communication manager when the user requests an output service with information apparatus <b>200</b>.
In the optional step <b>1100</b>, a user may specify searching or matching criteria. For example, a user may indicate to search for color printers and or printers that provide free service. The user may manually specify such criteria each time for the discovery process <b>1020</b>. Alternatively or in combination, a user may set default preferences that can be applied to a plurality of discovery processes <b>1020</b>. Sometimes, however, no searching criteria are required: the information apparatus <b>200</b> may simply search for all available output devices <b>220</b> that can provide output service.
In step <b>1101</b>, information apparatus <b>200</b> searches for available output devices <b>220</b>. The searching process may be implemented by, for example, an information apparatus <b>200</b> (e.g. with the assistance of a communication manager) multi-casting or broadcasting or advertising its service requests and waiting for available output devices <b>220</b> to respond. Alternatively or in combination, an information apparatus <b>200</b> may “listen to” service broadcasts from one or more output devices <b>220</b> and then identify the one or more output devices <b>220</b> that are needed or acceptable. It is also possible that multiple output devices <b>220</b> of the same network (e.g., LAN) register their services with a control point (not shown). A control point is a computing system (e.g., a server) that maintains records on all service devices within the same network. An information apparatus <b>200</b> may contact the control point and search or query for the needed service
In step <b>1102</b>, if no available output device <b>220</b> is found, the communication manager or the client application <b>210</b> may provide the user with alternatives <b>1104</b>. Such alternatives may include, for example, aborting the discovery process <b>1020</b>, trying discovery process <b>1020</b> again, temporarily halting the discovery process <b>1020</b>, or being notified when an available output device <b>220</b> is found. As an example, the discovery process <b>1020</b> may not detect any available output device <b>220</b> in the current wired/wireless network. The specified searching criteria (if any) are then saved or registered in the communication manager. When the user enters a new network having available output devices <b>220</b>, or when new compatible output devices <b>220</b> are added to the current network, or when an output device <b>220</b> becomes available for any reason, the communication manager may notify the user of such availability.
In step <b>1106</b>, if available output devices <b>220</b> are discovered, the communication manager may obtain some basic information, or part of or the entire output device profile, from each discovered output device <b>220</b>. Examples of such information may include, but not limited to, device identity, service charge, subscription, service feature, device capability, operating instructions, etc. Such information is preferably provided to the user through the user interface (e.g., display screen, speaker, etc.) of information apparatus <b>200</b>.
In step <b>1108</b>, the user may select one or more output devices <b>220</b> based on information provided, if any, to take the output job. If the user is not satisfied with any of the available output device <b>220</b>, the user may decline the service. In this case, the user may be provided with alternatives such as to try again in step <b>1110</b> with some changes made to the searching criteria. The user may choose to terminate the service request at any time. In step <b>1112</b>, with one or more output devices <b>220</b> selected or determined, the communication link between information apparatus <b>200</b> and the selected output device or devices <b>220</b> may be “locked”. Other output devices <b>220</b> that are not selected may be dropped. The output process <b>1020</b> may then proceed to the client application process of step <b>1030</b> of <figref idref="DRAWINGS">FIG. 10</figref>.
<figref idref="DRAWINGS">FIG. 12A</figref> is a flow diagram of an exemplary client application process with reference to step <b>1030</b> of <figref idref="DRAWINGS">FIG. 10</figref>. A client application process <b>1202</b> for universal output may include or utilize: <ul id="ul0021" list-style="none"><li id="ul0021-0001" num="0000"><ul id="ul0022" list-style="none"><li id="ul0022-0001" num="0229">A client application <b>210</b> that obtains content (e.g. digital document) intended for output.</li><li id="ul0022-0002" num="0230">A client application <b>210</b> that obtains output device parameters (e.g. rasterization parameters, output job parameters). One example of implementation is to obtain the output device parameters from an output device profile (e.g. printer profile), which includes device dependent parameters. Such profile may be stored in an output controller <b>230</b>, output device <b>220</b> or information apparatus <b>200</b>.</li><li id="ul0022-0003" num="0231">A client application <b>210</b> that may optionally obtain user preferences through (1) user's input (automatic or manual) or selections or (2) based on preset preference or pre-defined defaults or (3) combination of the above.</li><li id="ul0022-0004" num="0232">A client application <b>210</b> that rasterizes at least part of the content intended for output (e.g. a digital document) according to one or more rasterization parameters obtained from previous steps such as through output device profile, user selection, predefined user preferences, predefined default or standard etc.</li><li id="ul0022-0005" num="0233">A client application <b>210</b> that generates an intermediate output data containing at least part of the rasterized image related at least partly to the content intended for output.</li><li id="ul0022-0006" num="0234">A client application that transmits the intermediate output data to an output device <b>220</b> or output controller <b>230</b> for further processing and or final output.</li></ul></li></ul>
A client application <b>210</b> may obtain content (e.g. digital document) <b>900</b> or a pointer or reference to the content in many ways. In a preferred embodiment, the client application <b>210</b> is in the form of a device driver or an independent application, and the content or its reference can be obtained by the client application <b>210</b> from other applications <b>205</b> in the same information apparatus <b>200</b>. To illustrate an example, a user may first view or download or create a digital document by using a document browsing, viewing and or editing application <b>205</b> in his/her information apparatus <b>200</b>, and then request output service by launching the client application <b>210</b> as a device driver or helper application. The client application <b>210</b> communicates with the document browsing or editing application to obtain the digital document or reference to the digital document. As another example, the client application <b>210</b> is an independent application and it launches another application to help locate and obtain the digital document for output. In this case, a user may first launch the client application <b>210</b>, and then invoke another application <b>205</b> (e.g. document editing and or browsing application) residing in the same information apparatus <b>200</b> to view or download a digital document. The client application <b>210</b> then communicates with the document browsing or editing application to obtain the digital document for output.
In another embodiment, the client application <b>210</b> itself provides multiple functionalities or feature sets including the ability for a user to select the content (e.g. digital document) for output. For example, the client application <b>210</b> of present invention may provide a GUI where a user can directly input or select the reference or path of a digital document that the user wants to output.
In order to perform rasterization operation on content (e.g. digital document) <b>900</b>, the client application <b>210</b> in step <b>1210</b> needs to obtain device dependent parameters of an output device <b>220</b> such as the rasterization parameters. Device dependent parameters may be included in an output device profile. A client application <b>210</b> may obtain an output device profile or rasterization parameters in various ways. As an example, an output device profile or rasterization parameters can be obtained with one or combination of the following: <ul id="ul0023" list-style="none"><li id="ul0023-0001" num="0000"><ul id="ul0024" list-style="none"><li id="ul0024-0001" num="0238">The client application communicates with an output device <b>220</b> to upload output device profile or information related to one or more rasterization parameters.</li><li id="ul0024-0002" num="0239">The client application <b>210</b> obtains the output device profile from a network node (e.g. server).</li><li id="ul0024-0003" num="0240">A user selects an output device profile stored in the user's information apparatus <b>200</b>.</li><li id="ul0024-0004" num="0241">The client application <b>210</b> automatically retrieves or uses a default profile, predefined standard values or default values among others.</li><li id="ul0024-0005" num="0242">The client application <b>210</b> obtains output device parameters by calculating, which may include approximation, based at least partly on the information it has obtained from one or combination of an output device <b>220</b>, a user, default values, and a network node.</li></ul></li></ul>
It is important to note that step <b>1210</b> is an optional step. In some instance, part of or the entire output device profile or related device dependent information may have been already obtained by the client application <b>210</b> during the prior optional discovery process (step <b>1020</b> in <figref idref="DRAWINGS">FIG. 10</figref>). In this case, step <b>1210</b> may be partially or entirely skipped.
In one implementation, the client application <b>210</b> communicates with one or more output devices <b>220</b> to upload output device profiles stored in the memory or storage components of those one or more output devices <b>220</b> or their associated one or more output controllers <b>230</b>. In some instance, the uploaded output device profile may contain partially or entirely references or pointers to device parameters instead of the device parameters themselves. The actual output device parameters may be stored in a network node or in the information apparatus <b>200</b>, where they can be retrieved by the client application <b>210</b> or by other applications <b>205</b> using the references or pointers. It should be noted that a plurality of information apparatuses <b>200</b> may request to obtain output device profile or profiles from the same output device <b>220</b> at the same time or at least during overlapping periods. The output device <b>220</b> or its associated output controller <b>230</b> may have components or systems to manage multiple communication links and provide the output device profile or profiles concurrently or in an alternating manner to multiple information apparatuses <b>200</b>. Alternatively, an output device <b>220</b> may provide components or systems to queue the requests from different information apparatuses <b>200</b> and serve them in a sequential fashion according to a scheme such as first come first served, quality of service, etc. Multi-user communication and service management capability with or without queuing or spooling functions may be implemented by, for example, the output controller <b>230</b> as optional feature sets.
In another implementation, one or more output device profiles may be stored locally in the information apparatus <b>200</b>. The client application <b>210</b> may provide a GUI where a user can select a profile from a list of pre-stored profiles. As an example, the GUI may provide the user with a list of output device names (e.g. makes and models), each corresponding to an output device profile stored locally. When the user selects an output device <b>220</b>, the client application <b>210</b> can then retrieve the output device profile corresponding to the name selected by the user.
In certain cases, during a discovery or communication process described earlier, the client application <b>210</b> may have already obtained the output device ID, name, or reference or other information in a variety of ways described previously. In this case, the client application <b>210</b> may automatically activate or retrieve an output device profile stored in the information apparatus <b>200</b> based on the output device ID, name, or reference obtained without user intervention.
In yet another implementation, the client application <b>210</b> may use a set of pre-defined default values stored locally in a user's information apparatus <b>200</b>. Such defaults can be stored in one or more files or tables. The client application <b>210</b> may access a file or table to obtain these default values. The client application <b>210</b> may also create or calculate certain default values based on the information it has obtained during previous steps (e.g. in optional discovery process, based on partial or incomplete printer profile information obtained, etc). A user may or may not have an opportunity to change or overwrite some or all defaults.
Finally, if, for any reason, no device dependent information is available, the client application <b>210</b> may use standard output and rasterization parameters or pre-defined default parameters. The above illustrates many examples and variations of implementation, these and other possible variations in implementation do not depart from the scope of the present invention.
In step <b>1220</b>, the client application <b>210</b> may optionally obtain user preferences. In one exemplary implementation, the client application <b>210</b> may obtain user preferences with a GUI (graphical user interface). For simplicity, a standard GUI form can be presented to the user independent of the make and model of the output device <b>220</b> involved in the output process. Through such an interface, the user may specify some device independent output parameters such as page range, number of cards per page, number of copies, etc. Alternatively or in combination, the client application <b>210</b> may also incorporate output device-dependent features and preferences into the GUI presented to the user. The device-dependent portion of the GUI may be supported partly or entirely by information contained in the output device profile obtained through components and processes described in previous steps. To illustrate, device dependent features and capabilities may include print quality, color or grayscale, duplex or single sided, output page size among others.
It is preferred that some or all components, attributes or fields of user preferences have default values. Part or all default values may be hard-coded in software program in client application <b>210</b> or in hardware components. Alternatively, the client application <b>210</b> may also access a file to obtain default values, or it may calculate certain default values based on the information it has obtained during previous steps or components (e.g. from an output device profile). A user may or may not have the ability to pre-configure, or change or overwrite some or all defaults. The client application <b>210</b> may obtain and use some or all defaults with or without user intervention or knowledge.
In step <b>1230</b>, the client application <b>210</b> of present invention performs rasterization operation to conform a content (e.g. a digital document), which may includes objects and information in vector graphics, text, and images, into one or more output images in accordance with the rasterization parameters obtained in previous steps. During rasterization process, text and vector graphics object or information in the content is rasterized or converted into image or bitmap form according to the given set of rasterization parameters. Image information in the content may require scaling and interpolation operations to conform the rasterization parameters. Rasterization process may further include operations such as scaling, interpolation, segmentation, image transformation, image encoding, color space transformation etc. to fit or conform the one or more output images to the given set of rasterization parameters such as target output size, resolution, bit depth, color space and image format etc.
In step <b>1240</b>, the client application <b>210</b> generates an intermediate output data that includes the rasterized one or more output images. The intermediate output data of the present invention may contain image information, instructions, descriptions, and data such as color profile among others. Creating and generating intermediate output data may further include operations such as compression, encoding, encryption, smoothing, segmentation, scaling and or color correction, among others. The image or images contained in an intermediate output data may be variously encoded and/or implemented with different image formats and/or compression methods (e.g. JPEG, BMP, TIFF, JBIG etc or combination). One preferred implementation is to generate or encode the output image in the intermediate output data with mixed raster content (MRC) description. The use of MRC in the data output process of present invention provides opportunities to improve the compression ratio by applying different compression techniques to segmented elements in the content. In addition, MRC provides opportunities to maintain more original content information during the encoding process of the output image and, therefore, potentially improve output quality.
In step <b>1250</b>, the client application <b>210</b> transmits intermediate output data to an output device <b>220</b> through local communication link <b>240</b>. The communication link may be implemented with wired or wireless technologies and the transmission may include one or multiple sessions.
It should be recognized that <figref idref="DRAWINGS">FIG. 12A</figref> illustrates one example of a client application process <b>1030</b> in the data output method <b>1002</b> of present invention. Other implementations with more or less steps are possible, and several additional optional processes not shown in <figref idref="DRAWINGS">FIG. 12</figref> may also be included in the client application process <b>1030</b>. Use of these different variations, however, does not result in a departure from the scope of the present invention. As an example, an optional authentication step may be included when the selected output device <b>220</b> provides service to a restricted group of users. Various authentication procedures may be added in step <b>1210</b> when client application <b>210</b> obtains output device profile by communicating with an output device or an output controller. As another example, authentication procedures may also be implemented in step <b>1250</b> when the client application transmits intermediate output data to one or more output devices <b>220</b> or output controllers <b>230</b>. A simple authentication may be implemented by, for example, comparing the identity of an information apparatus <b>200</b> with an approved control list of identities stored in the output device <b>220</b> or output controller <b>230</b>. Other more complex authentication and encryption schemes may also be used. Information such as user name, password, ID number, signatures, security keys (physical or digital), biometrics, fingerprints, voice among others, may be used separately or in combination as authentication means. Such identification and or authentication information may be manually provided by user or automatically detected by the selected output device or devices <b>220</b> or output controller <b>230</b>. With successful authentication, a user may gain access to all or part of the services provided by the output device <b>220</b>. The output device profile that the client application <b>210</b> obtains may vary according to the type or quality of service requested or determined. If authentication fails, it is possible that a user may be denied partially or completely access to the service. In this case, the user may be provided with alternatives such as selecting another output device <b>220</b> or alternative services.
Another optional process is that a user may be asked to provide payment or deposit or escrow before, during or after output service such as step <b>1210</b> or <b>1250</b> with reference to <figref idref="DRAWINGS">FIG. 12</figref>. Examples of payment or deposit may include cash, credit card, bankcard, charge card, smart card, electronic cash, among others. The output controller <b>220</b> may provide payment calculation or transaction processing as optional feature sets of present invention.
<figref idref="DRAWINGS">FIG. 12B</figref> illustrates another exemplary client application output process <b>1030</b> with which an information apparatus <b>200</b> can pervasively and universally output content to one or more output devices <b>220</b> associated with or equipped with an output controller <b>230</b> of present invention.
The process illustrated in <figref idref="DRAWINGS">FIG. 12B</figref> is similar to the process described in <figref idref="DRAWINGS">FIG. 12A</figref> except that step <b>1210</b>, obtaining output device profile, is skipped. In this embodiment, the client application <b>210</b> utilizes a set of hard-coded, standard or predefined output device parameters including rasterization parameters with which the client application <b>210</b> can perform rasterization operation and other required image processing functions. Users may be provided with the option of changing these parameters or inputting alternative parameters. Rasterization parameters include output size, output resolution, bit depth, color space, color channels, scale factors etc. These pre-defined parameters typically comply with a specification or a standard. The same specification and standard may also defined or describe at least partly the intermediate output data. Predefined standard parameters can be stored in a file or profile in an information apparatus <b>200</b>, an output controller <b>230</b>, and/or in an output device <b>220</b> for easy update or upgrade.
In client output process <b>1204</b>, since the rasterization parameters are predefined, the client application <b>210</b> may not need to upload printer profiles from the selected output device <b>230</b>. Consequently, no two-way communication between the information apparatus <b>200</b> and the output device or devices <b>220</b> is necessary in this process <b>1204</b> when compared with process <b>1202</b> illustrated in <figref idref="DRAWINGS">FIG. 12A</figref>. The client application <b>210</b> performs rasterization operation <b>1225</b> based on standard and/or predefined parameters and generates a rasterized output image with predefined or standard properties of those rasterization parameters. The resulting intermediate output data, which includes at least one rasterized output image, is transmitted from the information apparatus <b>200</b> to an output device <b>220</b> in step <b>1250</b> or to its associated output controller <b>230</b> for rendering or output. The intermediate output data generated in process <b>1202</b> in general is less device dependent compared to the intermediate output data generated in the process <b>1202</b> shown in <figref idref="DRAWINGS">FIG. 12A</figref>. The output controller <b>230</b> included or associated with the output device <b>220</b> may be preprogrammed to interpret the raster output image, which includes properties or attributes that correspond to those standard or predefined parameters.
The standard or predefined rasterization parameters may be hard coded or programmed into the client application <b>210</b> and/or the output controller <b>230</b>. However, instead of hard coding those parameters, one technique to facilitate updates or changes is to store those standard parameters in a default file or profile. The standard or predefined parameters contained in the file or profile can be retrieved and utilized by applications in an information apparatus <b>200</b> (e.g. client application <b>210</b>) and/or by applications or components in an output device <b>220</b> or the output controller <b>230</b>. In this way, any necessary updates, upgrades or required changes to those predefined or standard parameters can be easily accomplished by replacing or modifying the file or profile instead of modifying or updating the program, application or components in the information apparatus <b>200</b>, output device <b>220</b> and/or output controller <b>230</b>.
A client application process <b>1204</b> providing universal output capability to information apparatus <b>200</b> may include or utilize: <ul id="ul0025" list-style="none"><li id="ul0025-0001" num="0000"><ul id="ul0026" list-style="none"><li id="ul0026-0001" num="0261">A client application <b>210</b> that obtains content (e.g. digital document) intended for output.</li><li id="ul0026-0002" num="0262">A client application <b>210</b> that optionally obtains user preferences (in step <b>1220</b>) through (1) user's input (automatic or manual) or selections or (2) based on preset preference or predefined defaults or (3) combination of the above.</li><li id="ul0026-0003" num="0263">A client application <b>210</b> that rasterizes content (in step <b>1230</b> or <b>1225</b>) according to pre-defined or standard rasterization parameters.</li><li id="ul0026-0004" num="0264">A client application <b>210</b> that generates intermediate output data (in step <b>1240</b>) for rendering or output at an output device <b>220</b>; the intermediate output data containing at least partially a rasterized image related to the content intended for output.</li><li id="ul0026-0005" num="0265">A client application <b>210</b> that transmits the intermediate output data to an output device <b>220</b> (in step <b>1250</b>) for further processing and final output.</li></ul></li></ul>
One advantage of the client output process <b>1204</b> of <figref idref="DRAWINGS">FIG. 12B</figref> compared to the process <b>1202</b> illustrated in <figref idref="DRAWINGS">FIG. 12A</figref> is that the generated intermediate output data is in general less device dependent. The device independent attribute allows the intermediate output data to be more portable and acceptable to more output devices equipped or associated with output controllers. Both data output processes (<b>1202</b> and <b>1204</b>) enable universal output; allowing a user to install a single client application <b>210</b> or components in an information apparatus <b>200</b> to provide output capability to more than one output device <b>220</b>.
<figref idref="DRAWINGS">FIG. 13A</figref> illustrates one example of an output device process <b>1302</b> and its associated raster imaging method of present invention. In this output device process <b>1302</b>, an output device <b>220</b> is capable of receiving an intermediate output data from an information apparatus <b>200</b>. The output device process <b>1302</b> and its operations may include or utilize: <ul id="ul0027" list-style="none"><li id="ul0027-0001" num="0000"><ul id="ul0028" list-style="none"><li id="ul0028-0001" num="0268">An output device/system or output controller that receives intermediate output data (in step <b>1300</b>). The intermediate output data includes at least partially a raster output image describing at least part of the content for rendering at the output device <b>220</b> or system <b>250</b>.</li><li id="ul0028-0002" num="0269">An output device/system or output controller that interprets (in step <b>1310</b>) the intermediate output data; in one preferred embodiment, the intermediate output data includes an output image utilizing one or more MRC formats or components.</li><li id="ul0028-0003" num="0270">An output device/system or output controller that performs image processing operation (in step <b>1320</b>) on the raster image. The image processing operation may include but not limited to image decompression, scaling, halftoning, color matching, among others.</li><li id="ul0028-0004" num="0271">An output device/system or output controller that converts and or generates (in step <b>1330</b>) output-engine output data that is in a format or description suitable for input to an output engine (e.g. printer engine in case of a printer) included in an output device <b>220</b>.</li><li id="ul0028-0005" num="0272">An output engine in an output device <b>220</b> that renders or generates a final output (e.g. the output-engine output data) in step <b>1370</b>.</li></ul></li></ul>
The output device <b>220</b> or output system <b>250</b> may include an output controller <b>230</b> internally or externally to assist the management and operation of the output process <b>1302</b>. As shown in <figref idref="DRAWINGS">FIG. 7</figref>, there are many possible configurations and implementations of an output controller <b>230</b> associated to an output device <b>220</b> Herein and after, output controller <b>230</b> is regarded as an integral part of the output device to which it is attached. Hence, the following described output device operations may be partially or completely performed by the output controller associated with it.
In step <b>1300</b>, output device process <b>1302</b> is initiated by client application <b>210</b> transmitting an intermediate output data to output device <b>220</b> or output system <b>250</b>. In step <b>1310</b>, the output device <b>220</b> reads and interprets the intermediate output data, containing at least one raster output image relating to the content intended for output. During the reading and interpretation process <b>1310</b>, the output device <b>220</b> may include components that parse the intermediate output data and perform operations such as decompression, decoding, and decryption among others. The output image may be variously encoded and may include one or more compression methods.
In the event that the method of image encoding includes MRC format, then, in one example implementation, during decoding and mapping of the output image in step <b>1310</b>, the lower resolution layer and information in an image that includes MRC may be mapped, scaled or interpolated to a higher-resolution output image to produce a better image quality. Therefore, step <b>1310</b>, in the event that the intermediate output data includes MRC component, each layer in an MRC image can be decompressed, processed, mapped and combined into a single combined output image layer. Step <b>1310</b> may also include scaling, color space transformation, and/or interpolation among others. In addition to the possibility of mapping methods using different scaling and interpolation ratio with different layers, another advantage of using MRC is that segmentation information contained in MRC can be utilized to apply different image processing and enhancement techniques to data in different layers of an MRC image in step <b>1320</b>.
In step <b>1320</b>, the output device <b>220</b> may further perform image processing operations on the decoded output image. These image processing operations may include, for example, color correction, color matching, image segmentation, image enhancement, anti-aliasing, image smoothing, digital watermarking, scaling, interpolation, and halftoning among others. The image processing operations <b>1320</b> may be combined or operated concurrently with step <b>1310</b>. For example, while each row, pixel, or portion of the image is being decoded and or decompressed, image processing operations <b>1320</b> is applied. In another implementation, the image processing <b>1320</b> may occur after the entire output image or a large portion of the image has been decoded or decompressed.
If the intermediate output data includes MRC component, then in step <b>1320</b>, there are additional opportunities to improve image quality. An image encoded in MRC contains segmented information that a traditional single layer image format does not usually have. As an example, foreground can be in one layer, and background in another. As another example, chrominance information may be in one layer and luminance may be in another. This segmented information in MRC may be used to apply different or selective image processing methods and algorithms to different layers or segments to enhance image quality or retain or recover image information. Different image processing techniques or algorithms may include color matching, color correction, black generation, halftoning, scaling, interpolation, anti-aliasing, smoothing, digital watermarking etc. For example, one can apply calorimetric color matching to foreground information and perceptual color matching to background information or vice versa. As another example, error diffusion halftoning can be applied to foreground and stochastic halftoning can be applied to background or vice versa. As yet another example, bi-cubic interpolation can be applied to a layer and bi-linear or minimum distance interpolation can be applied to a different layer.
In step <b>1330</b>, the output device <b>220</b> or the output controller <b>230</b> may convert the processed image (e.g. halftoned) into a form acceptable to the output engine of output device <b>220</b>. This conversion step is optional, depending on the type, format and input requirement of a particular output device engine (e.g. printer engine in case of a printer). Different output engines may have different input raster image input requirements. As an example different output engines may require different input image formats, number of bits or bytes per pixel, compression or uncompressed form, or different color spaces (e.g. such as RGB, CMY, CMYK, or any combination of Hi-Fi color such as green, orange, purple, red etc). Incoming raster image data can be encoded in a row, in a column, in multiple rows, in multiple columns, in a chunk, in a segment, or a combination at a time for sending the raster data to the output engine. In some cases, step <b>1330</b> may be skipped if the result of step <b>1320</b> is already in a form acceptable to the output device engine. In other cases, however, further conversion and or processing may be required to satisfy the specific input requirement of a particular output device engine.
It is important to note that the above described processing from step <b>1310</b> to step <b>1330</b> may require one or more memory buffers to temporarily store processed results. The memory buffer can store or hold a row, a column, a portion, or a chunk, of the output image in any of the steps described above. Storing and retrieving information into and from the memory buffer may be done sequentially, in an alternating fashion, or in an interlaced or interleaved fashion among other possible combinations. Step <b>1310</b> to step <b>1330</b> operations can be partially or completely implemented with the output controller <b>230</b>.
In step <b>1370</b>, the output device engine included in the output device <b>220</b> or output system <b>250</b> receives the output-engine output data generated in step <b>1330</b> or step <b>1320</b>. The output-engine output data is in a form that satisfies the input requirements and attributes of the output engine, such as color space, color channel, bit depth, output size, resolution, etc. The output engine then takes this output-engine output data and outputs or renders the data content through its marking engine or display engine.
One advantage of data output method <b>1002</b> that includes output device process <b>1302</b> is that it has less processing requirements on an information apparatus <b>200</b> compared to conventional process with reference to <figref idref="DRAWINGS">FIG. 1A</figref>, and therefore, enables more information apparatus <b>200</b> with relatively lower processing power and memory space to have output capability.
For example, some image processing functions, such as halftoning (e.g. error diffusion) may require substantial processing and computing power. In data output process <b>1002</b> that includes output device process <b>1302</b>, halftoning is performed in step <b>1320</b> by an output device component (e.g. the output controller <b>230</b>) included in the output device <b>220</b> or the output system <b>250</b>, not in the information apparatus <b>200</b>; therefore reducing the computational requirements for the information apparatus <b>200</b>. Another advantage of data output <b>1302</b> is that the intermediate output data is less device dependent than the output data generated by conventional output method <b>102</b> with reference to <figref idref="DRAWINGS">FIG. 1A</figref>. The device independence provides opportunity to allow a single driver or application in an information apparatus <b>200</b> to output intermediate output data to a plurality of output devices <b>220</b> that include output controllers <b>230</b>.
Some output devices <b>220</b> may contain a printer controller <b>410</b>. An example of this type of output device or printer is a PostScript printer or PCL printer among others. <figref idref="DRAWINGS">FIG. 13B</figref> illustrates an example of an output device process <b>1304</b> with a printer that includes a printer controller <b>410</b>. As discussed in <figref idref="DRAWINGS">FIG. 1</figref>, a printer with a printer controller requires input such as page description language (e.g. PostScript, PCL etc.), markup language (HTML, XML etc), special image format, special graphics format, or a combination, depending on the type of the printer controller.
There are many printing system configurations for providing the data output capability and process to a printer or a printing system that includes a printer controller. In one example, the existing printer controller in the output device <b>220</b> may incorporate the feature sets provided by the output controller to form a “combined controller” as described previously with reference to <figref idref="DRAWINGS">FIGS. 7C and 7F</figref>. In another example, the output controller <b>230</b> of present invention may be connected sequentially or cascaded to an existing printer controller; the output controller <b>230</b> can be internally installed (with reference to <figref idref="DRAWINGS">FIG. 7B</figref>) or externally connected (with reference to <figref idref="DRAWINGS">FIG. 7A</figref>) to the output device <b>220</b>. For output device <b>220</b> that includes a printer controller, the output controller <b>230</b> may simply decode the intermediate output data in step <b>1310</b> and then convert it into a form acceptable for input to the printer controller in step <b>1350</b>.
An output device process <b>1304</b> and operations for an output device <b>220</b> or system <b>250</b> that includes a printer controller <b>410</b> may include or utilize: <ul id="ul0029" list-style="none"><li id="ul0029-0001" num="0000"><ul id="ul0030" list-style="none"><li id="ul0030-0001" num="0286">An output controller <b>230</b> or components in an output device <b>220</b> or system <b>250</b> that receives an intermediate print data or output data (with reference to step <b>1300</b>), the intermediate print data includes at least a raster image related at least in part to the content for rendering at the output device <b>220</b>.</li><li id="ul0030-0002" num="0287">An output controller <b>230</b> or components in an output device <b>220</b> or system <b>250</b> that interprets the intermediate output data (with reference to step <b>1310</b>); in one preferred embodiment, the intermediate output data includes an output image utilizing one or more MRC format or components.</li><li id="ul0030-0003" num="0288">An output controller <b>230</b> or components in an output device <b>220</b> or system <b>250</b> that converts the intermediate output data into a printer-controller print data (with reference to step <b>1350</b>); the printer-controller print data includes a format or language (e.g. PDL, PDF, HTML, XML etc.) that is acceptable or compatible to the input requirement of a printer controller.</li><li id="ul0030-0004" num="0289">A printer controller or components in an output device <b>220</b> or system <b>250</b> that receives a printer controller print data; the printer controller may parse, interpret and further process (e.g. rasterization, scaling, image enhancement, color correction, color matching, halftoning etc.) and convert the printer-controller print data into a printer-engine print data (with reference to step <b>1360</b>); the printer-engine print data comprising of a format or description acceptable for input to a printer engine in the output device <b>220</b> or the output system <b>250</b>.</li><li id="ul0030-0005" num="0290">A printer engine or components in an output device <b>220</b> or system <b>250</b> that renders or generates a final output (with reference to step <b>1370</b>) with the input printer engine print data.</li></ul></li></ul>
In output device process <b>1304</b>, step <b>1300</b> (receiving intermediate output data) and step <b>1310</b> (interpret intermediate output data) are identical to step <b>1300</b> and step <b>1310</b> in output device process <b>1302</b>, which have been described in previous sections with reference to <figref idref="DRAWINGS">FIG. 13A</figref>.
In step <b>1350</b>, the output controller <b>230</b> converts the intermediate print data into a printer-controller print data that is in a form compatible or acceptable for input to a printer controller. For example, a printer controller may require as input a specific page description language (PDL) such as PostScript. The output controller <b>230</b> then creates a PostScript file and embeds the output image generated or retrieved in step <b>1310</b> into the PostScript file. The output controller <b>230</b> can also create and embed the output image from step <b>1310</b> into other printer controller print data formats, instructions or languages.
In step <b>1360</b>, the printer controller receives printer-controller print data generated in step <b>1350</b> that includes an acceptable input language or format to the printer controller. The printer controller may parse, interpret, and decode the input printer-controller print data. The printer controller may further perform raster image processing operations such as rasterization, color correction, black generation, GCR, anti-aliasing, scaling, image enhancement, and halftoning among others on the output image. The printer controller may then generate a printer-engine print data that is suitable for input to the printer engine. The type and or format of printer-engine print data may vary according to the requirement of a particular printer engine.
It is important to note that the above described process from step <b>1310</b> to step <b>1360</b> may require one or more memory buffer to temporarily store processed results. The memory buffer can store or hold a row, a column, a portion, or a chunk, of the output image in any of the steps described above. Storing and retrieving information into and from the memory buffer may be done sequentially, alternated, or in an interlaced or interleaved fashion among other possible combinations. Process and operations of step <b>1310</b> to step <b>1360</b> can be implemented with output controller <b>230</b>.
In step <b>1370</b>, the printer engine included in the output device <b>220</b> or output system <b>250</b> generates or renders the final output based on the printer-engine print data generated in step <b>1360</b>. For example, the printer-engine print data may be in CMY, CMYK, and RGB etc, and this may be in one or more bits per pixel format, satisfying the size and resolution requirement of the printer engine. The printer engine included the output device <b>220</b> may take this print data and generate or render an output page through its marking engine.
Having described and illustrated the principles of our invention with reference to an illustrated embodiment, it will be recognized that the illustrated embodiment can be modified in arrangement and detail without departing from such principles. In view of the many possible embodiments to which the principles of our invention may be applied, it should be recognized that the detailed embodiments are illustrative only and should not be taken as limiting the scope of our invention. Rather, I claim as my invention all such embodiments as may come within the scope of the following claims and equivalents thereto.
Unless the context indicates otherwise, a reference in a claim to the number of instances of an element, be it a reference to one instance or more than one instance, requires at least the stated number of instances of the element but is not intended to exclude from the scope of the claim a structure or method having more instances of that element than stated. Specifically, but without limitation, a reference in a claim to an or one output device or system, to an or one image, or to a or one rasterization parameter is not intended to exclude from the scope of the claim a structure or method having, including, employing or supplying two or more output devices or system, images or rasterization parameters.
Contents6
15 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15
Every citation, both waysCites: the store holds 690 of 691
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US11467856B2 | Cited by | United States of America | Applicant |
| US10303411B2 | Cited by | United States of America | Applicant |
| USRE48088E | Cited by | United States of America | Applicant |
| US10768871B2 | Cited by | United States of America | Applicant |
| US10387087B2 | Cited by | United States of America | Applicant |
| US10481847B2 | Cited by | United States of America | Applicant |
| US11966656B2 | Cited by | United States of America | Applicant |
| US10592201B2 | Cited by | United States of America | Applicant |
| USRE48066E | Cited by | United States of America | Applicant |
| US10642576B2 | Cited by | United States of America | Applicant |
| US10915296B2 | Cited by | United States of America | Applicant |
| US10606535B2 | Cited by | United States of America | Applicant |
| US11662918B2 | Cited by | United States of America | Applicant |
| US11204729B2 | Cited by | United States of America | Applicant |
| US10860290B2 | Cited by | United States of America | Applicant |
| US10359957B2 | Cited by | United States of America | Applicant |
| US10761791B2 | Cited by | United States of America | Applicant |
| US10346114B2 | Cited by | United States of America | Applicant |
| US10489096B2 | Cited by | United States of America | Applicant |
| USRE49176E | Cited by | United States of America | Applicant |
| US11829776B2 | Cited by | United States of America | Applicant |
| US10841798B2 | Cited by | United States of America | Search report |
| US11029903B2 | Cited by | United States of America | Applicant |
| US11096056B2 | Cited by | United States of America | Applicant |
| US10592202B2 | Cited by | United States of America | Applicant |
| US10481846B2 | Cited by | United States of America | Applicant |
| US10866773B2 | Cited by | United States of America | Applicant |
| US10740066B2 | Cited by | United States of America | Applicant |
| US10873856B2 | Cited by | United States of America | Applicant |
| US10963169B2 | Cited by | United States of America | Applicant |
| US11169756B2 | Cited by | United States of America | Applicant |
| US10846031B2 | Cited by | United States of America | Applicant |
| US11416197B2 | Cited by | United States of America | Applicant |
| WO0195096A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO0195097A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| WO02084928A2 | Cites | World Intellectual Property Organization (WIPO) | Applicant |
| EP0691619B1 | Cites | European Patent Office (EPO) | Applicant |
| EP0738949B1 | Cites | European Patent Office (EPO) | Applicant |
| EP0952513B1 | Cites | European Patent Office (EPO) | Applicant |
| CN100334577C | Cites | China | Applicant |
| US10037178B2 | Cites | United States of America | Applicant |
| CN101825996B | Cites | China | Applicant |
| CN101833430A | Cites | China | Applicant |
| CN101834892A | Cites | China | Applicant |
| CN1217503A | Cites | China | Applicant |
| CN1488106A | Cites | China | Applicant |
| CN1541370B | Cites | China | Applicant |
| US2001011302A1 | Cites | United States of America | Applicant |
| US2001012281A1 | Cites | United States of America | Applicant |
| US2001015717A1 | Cites | United States of America | Search report |
| US2001029531A1 | Cites | United States of America | Applicant |
| US2001032254A1 | Cites | United States of America | Applicant |
| US2001034222A1 | Cites | United States of America | Applicant |
| US2001055492A1 | Cites | United States of America | Applicant |
| US2001055951A1 | Cites | United States of America | Applicant |
| US2002009988A1 | Cites | United States of America | Applicant |
| US2002012329A1 | Cites | United States of America | Applicant |
| US2002017827A1 | Cites | United States of America | Applicant |
| US2002026492A1 | Cites | United States of America | Applicant |
| US2002038612A1 | Cites | United States of America | Applicant |
| US2002042263A1 | Cites | United States of America | Applicant |
| US2002049839A1 | Cites | United States of America | Applicant |
| US2002051200A1 | Cites | United States of America | Applicant |
| US2002057452A1 | Cites | United States of America | Applicant |
| US2002059489A1 | Cites | United States of America | Applicant |
| US2002062398A1 | Cites | United States of America | Applicant |
| US2002062406A1 | Cites | United States of America | Applicant |
| US2002065873A1 | Cites | United States of America | Applicant |
| US2002077980A1 | Cites | United States of America | Applicant |
| US2002078101A1 | Cites | United States of America | Applicant |
| US2002081993A1 | Cites | United States of America | Applicant |
| US2002087622A1 | Cites | United States of America | Search report |
| US2002090912A1 | Cites | United States of America | Search report |
| US2002092029A1 | Cites | United States of America | Applicant |
| US2002097408A1 | Cites | United States of America | Applicant |
| US2002097415A1 | Cites | United States of America | Applicant |
| US2002097416A1 | Cites | United States of America | Applicant |
| US2002097417A1 | Cites | United States of America | Applicant |
| US2002097418A1 | Cites | United States of America | Applicant |
| US2002097419A1 | Cites | United States of America | Applicant |
| US2002097433A1 | Cites | United States of America | Applicant |
| US2002099884A1 | Cites | United States of America | Applicant |
| US2002178272A1 | Cites | United States of America | Applicant |
| US2002194302A1 | Cites | United States of America | Applicant |
| US2003002072A1 | Cites | United States of America | Search report |
| US2003013483A1 | Cites | United States of America | Applicant |
| US2003013484A1 | Cites | United States of America | Applicant |
| US2003028481A1 | Cites | United States of America | Applicant |
| US2003061606A1 | Cites | United States of America | Applicant |
| US2003120754A1 | Cites | United States of America | Applicant |
| US2003122934A1 | Cites | United States of America | Applicant |
| US2003128272A1 | Cites | United States of America | Applicant |
| US2003160993A1 | Cites | United States of America | Search report |
| US2004057075A1 | Cites | United States of America | Applicant |
| US2004127254A1 | Cites | United States of America | Applicant |
| US2005125664A1 | Cites | United States of America | Applicant |
| US2005204176A1 | Cites | United States of America | Applicant |
| US2005210120A1 | Cites | United States of America | Applicant |
| US2005222963A1 | Cites | United States of America | Applicant |
| US2007125860A1 | Cites | United States of America | Applicant |
243 members in 9 offices
Priority claims34
| Document | Office | Kind | Date |
|---|---|---|---|
| 24510100 | United States of America | P | |
| 24510100 | United States of America | P | |
| 25268200 | United States of America | P | |
| 25268200 | United States of America | P | |
| 26276401 | United States of America | P | |
| 26276401 | United States of America | P | |
| 1622301 | United States of America | A | |
| 1622301 | United States of America | A | |
| 99241301 | United States of America | A | |
| 99241301 | United States of America | A | |
| 5376502 | United States of America | A | |
| 5376502 | United States of America | A | |
| 90304810 | United States of America | A | |
| 90304810 | United States of America | A | |
| 201213710299 | United States of America | A | |
| 201213710299 | United States of America | A | |
| 201715627197 | United States of America | A | |
| 09992413 | – | – | – |
| 10016223 | – | – | – |
| 10053765 | – | – | – |
| 12903048 | – | – | – |
| 13710299 | – | – | – |
| 60245101 | – | – | – |
| 60252682 | – | – | – |
| 60262764 | – | – | – |
| US20000245101P | – | – | – |
| US20000252682P | – | – | – |
| US20010016223 | – | – | – |
| US20010262764P | – | – | – |
| US20010992413 | – | – | – |
| US20020053765 | – | – | – |
| US20100903048 | – | – | – |
| US201213710299 | – | – | – |
| US201715627197 | – | – | – |
Members243
| Document | Office | Kind | |
|---|---|---|---|
| US2002051200A1 | United States of America | A1 | |
| US2002055984A1 | United States of America | A1 | |
| US2002059415A1 | United States of America | A1 | |
| US2002062397A1 | United States of America | A1 | |
| US2002062398A1 | United States of America | A1 | |
| US2002062406A1 | United States of America | A1 | |
| WO0241107A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO0241118A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU3519302A | Australia | A | |
| AU3932502A | Australia | A | |
| WO0242896A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU2694802A | Australia | A | |
| WO0246867A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU4327902A | Australia | A | |
| US2002077980A1 | United States of America | A1 | |
| US2002078101A1 | United States of America | A1 | |
| US2002078149A1 | United States of America | A1 | |
| US2002083121A1 | United States of America | A1 | |
| US2002097408A1 | United States of America | A1 | |
| US2002097415A1 | United States of America | A1 | |
| US2002097416A1 | United States of America | A1 | |
| US2002097417A1 | United States of America | A1 | |
| US2002097418A1 | United States of America | A1 | |
| US2002097419A1 | United States of America | A1 | |
| US2002097433A1 | United States of America | A1 | |
| US2002099884A1 | United States of America | A1 | |
| WO0246867A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO0241107A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO02084928A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU2002316351A1 | Australia | A1 | |
| WO02084928A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO0241118A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP1340131A2 | European Patent Office (EPO) | A2 | |
| EP1366462A2 | European Patent Office (EPO) | A2 | |
| CN1488106A | China | A | |
| US2004125782A1 | United States of America | A1 | |
| US2004127254A1 | United States of America | A1 | |
| WO2004055638A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU2003300880A1 | Australia | A1 | |
| AU2003300880A8 | Australia | A8 | |
| CN1541370A | China | A | |
| WO2004093149A2 | World Intellectual Property Organization (WIPO) | A2 | |
| US2005083741A1 | United States of America | A1 | |
| WO2004055638A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US6947995B2 | United States of America | B2 | |
| EP1618598A2 | European Patent Office (EPO) | A2 | |
| CN100334577C | China | C | |
| WO2004093149A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US7318086B2 | United States of America | B2 | |
| US2008049253A1 | United States of America | A1 | |
| US2008049651A1 | United States of America | A1 | |
| CN101208657A | China | A | |
| EP1618598A4 | European Patent Office (EPO) | A4 | |
| EP1340131A4 | European Patent Office (EPO) | A4 | |
| US2008278746A1 | United States of America | A1 | |
| US2008318602A1 | United States of America | A1 | |
| US2009002760A1 | United States of America | A1 | |
| US2009070411A1 | United States of America | A1 | |
| US7609402B2 | United States of America | B2 | |
| US2010039660A1 | United States of America | A1 | |
| US2010039669A1 | United States of America | A1 | |
| CN1541370B | China | B | |
| US2010201996A1 | United States of America | A1 | |
| US2010203824A1 | United States of America | A1 | |
| CN101825996A | China | A | |
| US2010227550A1 | United States of America | A1 | |
| CN101833430A | China | A | |
| CN101834892A | China | A | |
| US7805720B2 | United States of America | B2 | |
| US2011016280A1 | United States of America | A1 | |
| US2011034150A1 | United States of America | A1 | |
| US2011035682A1 | United States of America | A1 | |
| US7908401B2 | United States of America | B2 | |
| US7941541B2 | United States of America | B2 | |
| US7944577B2 | United States of America | B2 | |
| US7953818B2 | United States of America | B2 | |
| US2011138378A1 | United States of America | A1 | |
| US2011167166A1 | United States of America | A1 | |
| US2011167175A1 | United States of America | A1 | |
| HK1146960A1 | Hong Kong, China | A1 | |
| US2011211226A1 | United States of America | A1 | |
| HK1148620A1 | Hong Kong, China | A1 | |
| USRE42725E | United States of America | E | |
| US2011279829A1 | United States of America | A1 | |
| US2011279863A1 | United States of America | A1 | |
| US8169649B2 | United States of America | B2 | |
| CN101825996B | China | B | |
| US8184324B2 | United States of America | B2 | |
| US2012230315A1 | United States of America | A1 | |
| US8285802B2 | United States of America | B2 | |
| US2012258700A1 | United States of America | A1 | |
| US8296757B2 | United States of America | B2 | |
| US8332521B2 | United States of America | B2 | |
| HK1145554A1 | Hong Kong, China | A1 | |
| US2013095887A1 | United States of America | A1 | |
| US2013103775A1 | United States of America | A1 | |
| US2013104052A1 | United States of America | A1 | |
| US2013109353A1 | United States of America | A1 | |
| US2013222618A1 | United States of America | A1 | |
| US8533352B2 | United States of America | B2 |
83 transactions on the USPTO file
Allowed after 2 RCEs.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 2
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Termination or Final Written DecisionTRIALFWD | TRIALFWD | |
| Petition Requesting TrialTRIALPET | TRIALPET | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Petition Requesting TrialTRIALPET | TRIALPET | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Printer Rush- No mailingTCPB | TCPB | |
| Printer Rush- No mailingTCPB | TCPB | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Amendment after Notice of Allowance (Rule 312)AllowedA.NA | A.NA | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Response to Reasons for AllowanceREAS | REAS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTR | EML_NTR | |
| Email NotificationEML_NTR | EML_NTR | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Interview Summary - Examiner Initiated - TelephonicMEXET | MEXET | |
| Mail Reasons for AllowanceMEX.R | MEX.R | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Interview Summary - Examiner Initiated - TelephonicEXET | EXET | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Supplemental ResponseSA.. | SA.. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Email NotificationEML_NTR | EML_NTR | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Email NotificationEML_NTR | EML_NTR | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Sent to Classification ContractorPGPC | PGPC | |
| FITF set to NO - revise initial settingFTFI | FTFI | |
| Cleared by OIPE CSRL194 | L194 | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| PTO/SB/69-Authorize EPO Access to Search ResultsSREXR141 | SREXR141 | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedLAPS | LAPS | |
| Information on status: patent discontinuationSTCH | STCH | |
| Aia trial proceeding filed before the patent and appeal board: inter partes reviewAppealIPR | IPR | |
| Fee payment procedureFEPP | FEPP | |
| AssignmentAS | AS |
Numbers
- Publication
- 10140073
- Publication, DOCDB
- 10140073
- Publication, EPODOC
- US10140073
- Application
- 15627197
- Application, DOCDB
- 201715627197
- Application, EPODOC
- US201715627197
Titles
- English
- Wireless devices that establish a wireless connection with a mobile information apparatus by wirelessly detecting, within physical proximity, the mobile information apparatus
Patent term adjustment
- Applicant delay
- −212 days
- Net adjustment
- 0 days
Classification
- CPC, 64
- G06F3/1236
- H04W12/08
- G06F3/1208
- G06F3/122
- G06F3/1203
- G06F3/1226
- G06F3/1205
- G06F3/1245
- G06F3/1247
- G06F3/128
- G06F3/1284
- G06F3/1285
- G06F3/1228
- G06F3/1288
- G06F3/1229
- G06F3/1238
- G06F3/1292
- G06K15/02
- G06Q20/10
- G06F3/1253
- G06K15/181
- G06F3/1258
- H04L67/303
- H04W76/10
- H04W4/80
- G06F3/1286
- H04N1/4413
- H04N1/442
- H04N1/00244
- H04N1/00283
- G06K15/1836
- H04N1/00411
- H04N1/00854
- H04L67/16
- H04N1/00938
- H04N1/32534
- H04N1/32582
- H04W76/14
- H04N1/00307
- H04N1/00403
- H04N1/00488
- Y02D10/00
- H04W12/068
- H04L67/51
- H04N7/16
- H04W8/005
- H04W12/06
- H04W84/12
- Y02D10/1592
- G06F3/0481
- G06F3/167
- G10L15/22
- G10L15/30
- G10L2015/223
- H04N2201/0039
- H04N2201/0041
- H04N2201/0053
- H04N2201/0055
- H04N2201/0082
- G06F3/04842
- G06F3/0488
- G06F3/14
- G06F3/162
- H04N2201/0094
- IPC, 14
- G06F3 12
- H04N1 32
- G06K15 02
- G06Q20 10
- H04L29 08
- H04N1 44
- H04N7 16
- H04W8 00
- H04W12 06
- H04W12 08
- H04N1 00
- H04W76 10
- H04W84 12
- H04W4 80
- USPC, 1
- 355027000