Identifying character information in media content

Implementations of identifying character information in media content are described. In one implementation, a frame of media content is marked with a frame identifier including one or more known characters. These known characters can uniquely identify the frame of media content. During transmission, compression, decompression, etc., of the frame, loss can occur. This loss can affect a quality of presentation of one or more of the known characters in the frame identifier. Therefore, when the frame is subsequently examined, the frame identifier can be identified, and best matches of known characters from a character recognition library can be found for characters in the frame identifier.

BACKGROUND

In modern society, proliferation of media content, including video content, is widespread. As media content is copied and/or transferred between devices, several quality issues can arise.

One such quality issue is the loss of information in media content. Loss of information can come in several forms. For instance, loss of information can include the dropping of entire frames of media content from a file. This type of loss of information can occur in many scenarios, including when media content is coded and decoded, streamed over a network, subjected to network interruptions, etc.

Loss of information can also occur when information in a single frame of media content is dropped. For example, portions of information within a frame of media content can be lost when the frame is compressed and decompressed.

In addition to loss, media content can also experience quality issues when synchronization fails. For example, due to the various factors above, different components within the media content, such as audio content and video content, can become unsynchronized. As a result video content may be erroneously rendered before or after corresponding audio content is rendered.

SUMMARY

Implementations of identifying character information in media content are described. In one implementation, a frame of media content is marked with a frame identifier including one or more known characters. These known characters can uniquely identify the frame of media content.

During transmission, compression, decompression, etc., of the frame, loss can occur. This loss can affect a quality of presentation of one or more of the known characters in the frame identifier, transforming the known characters into characters of frame identification information.

The frame identifier can be recreated from the characters of frame identification information by comparing the characters in the frame identification information to a set of known characters in a character recognition library. Best matches from the known characters can be used to replace the characters in the frame identification information, thus recreating the frame identifier.

A degree of similarity with which the characters in the frame identification information match the known characters in the character recognition library can be used to compute a quality of resolution of the frame of media content. Moreover, if several frames of media content include frame identifiers which are sequential numbers or codes, it can be quickly established that one or more frames have been dropped when breaks are found in the sequence of frame identifiers.

DETAILED DESCRIPTION

This disclosure is directed to techniques for identifying character information in media content. More particularly, the techniques described herein involve recognizing frame identification information corresponding to a frame identifier in a frame of media content. The frame identification information can include one or more characters, which themselves are copies of known characters. However, the characters in the frame identification information can have experienced loss of information during transmission and/or rendering processes.

One or more of the characters in the frame identification information can be compared against a set of known characters from a character recognition library and matched on a best match basis. Known characters corresponding to the characters in the frame identification information can then be used to recreate the frame identifier for the frame of media content.

In one implementation, a degree of similarity between the characters in the frame identification information and the matched known characters in the frame identifier can be used to compute a quality of resolution of the frame of media content. Moreover, in another implementation, if several frames of media content include frame identifiers which are sequential numbers or codes, it can be quickly established that one or more frames have been dropped when breaks are found in the sequence of frame identifiers.

Exemplary Environment

FIG. 1illustrates an exemplary environment100in which identifying character information in media content may be implemented. Environment100includes a client device102which can be placed in communication with a variety of computing-based devices104A-N via a network106. Client device102can include any computing-based device which can be used to render media content. For example, client device102can include a server, a game console, a desktop PC, a notebook or portable computer, a workstation, a mainframe computer, an Internet appliance, a mobile phone, a personal digital assistant (PDA), a printer, and so on. Similarly media content can include any file or data structure through which information may be presented to a user. For example, media content can include files having video and/or audio components, such as motion pictures experts group (MPEG) files, windows media video (WMV) files, audio video interleaved (AVI) files, etc.

Network106can include any wired and/or wireline coupling known in the art capable of placing two or more computing-based devices in electronic communication. Examples of network106include a local area network (LAN), a wide area network (WAN), the Internet, a conventional telephone network, a cellular network, any combination thereof, etc.

Devices104A-N with which client device102may communicate (and from which client102can receive one or more files of media content) can include any computing-based devices known in the art. For example, devices104A-N can include a storage device104A, a PC104B, a server104C, and so on.

A file of media content received at client device102can be instrumented such that one or more frames108of video content within the media content can include a frame identifier110. Frame identifier110can include one or more characters which identify frame108. Characters in frame identifier110can include any symbols known in the art. In one implementation, characters in frame identifier110can include a collection of one or more numbers and/or letters, such as roman letters, uniquely identifying frame108. Further, in another possible implementation, if frame108is part of a sequence of frames, each frame108can have a sequential frame identifier108indicating a unique place frame108occupies in the sequence of frames. In such an implementation, frame108could be preceded by a frame having a frame identifier110of, for example, “A100055”. Similarly, frame108could be succeeded by a frame having a frame identifier110of, for example, “A100057”.

In another possible implementation, frame identifiers110can be placed in a same location in each frame108. Further, in another possible implementation, characters in frame identifiers110can all be of a same font and font size (i.e. same height, etc). In still another possible implementation, the characters in frame identifiers110can be defined to be of a specific color, and can be placed against a specific background color. For example, the characters in frame identifier110can be chosen to be black, while the background can be chosen to be white. In still another possible implementation, the characters in frame identifier110can be set such that kerning, that is overlap of characters, is avoided. Additionally, frame identifier110can be formed such that frame identifier110can be read by a human, such as a system administrator.

Frames108in the video content can also be instrumented to include description information112and/or presentation times114. Description information112can include any information describing a file to which frame108is a part. For example, description112can include information such as a number of frames included in the video content, a format of the video content, a length (in time or frames) of the video content, etc. In one implementation, description information112is presented in the first few frames108of the video content.

Presentation time114can include information regarding a time of presentation of frame108. For example, presentation time114can include a time of recordation of frame108. In one implementation, presentation time114can be given in units of 100 nanoseconds. As will be discussed in more detail below, presentation time114can be used in conjunction with frame identifier110to determine if frame108is being rendered correctly.

Each of frame identifier110, description information112, and presentation time114can be shown on a display of client device102when frame108is rendered. Alternately, either or both of frame identifier110and presentation time114can be hidden from a user viewing frame108on client device102. For example, either or both of frame identifier110and presentation time114can be found in a margin such as an overscan area, not rendered on the display of client device102.

Moreover, presentation time114can be omitted from frame108entirely. In such an implementation, presentation time114can be stored separately from frame108, but be associated with frame108via frame identifier110. For example, a control file related to the file of media content of which frame108is a part can include a table relating frame identifiers108to their corresponding presentation times114.

In addition to video content in a file of media content received at client device102being instrumented, audio content in the file of media content can also be instrumented. For example, portions of the audio content can be instrumented with identifiers such as frequency information, or with any other technique or technology known in the art. In this way, portions of audio content in the media content can be associated with frames108of video content in the file of media content.

Stated another way, if a frame108of video content is intended to be rendered at a same time as a portion of audio content, frame identifier110of frame108and a corresponding frame identifier of the portion of audio content can be associated or linked together. For example, frame identifier110of frame108and the frame identifier of the portion of audio content can be the same. Alternately, frame identifier110and the frame identifier of the audio content can be different, however their association can be saved in a data structure, such as a table.

As noted above, frame108can be a portion of a file of media content being rendered by client device102. The file of media content can be introduced to client device102in any way known in the art. For example, the file of media content can be transmitted to client device102from one or more of devices104A-N via network106. Alternately, the file of media content can be introduced to client device102via one or more portable storage media116, such as optical discs, floppy discs, memory sticks, etc.

In one implementation, frame identifier110can be placed on frame108before frame108is introduced to client device102. For example, frame identifier110can be placed on frame108at one of devices104A-N. Alternately, frame identifier110can be placed on frame108when the media content of which frame108is a part is captured by a recording device, such as a digital camera, a video camera, etc.

The characters in frame identifier110can be taken from a character recognition library of known characters. In one implementation, the character recognition library can be consulted after transmission and/or rendering of frame108to see if a quality of resolution of the characters in frame identifier110has suffered.

For example, a file of media content including frame108can be processed at a device104A-N (such as device104C). For instance media content can be downloaded from a digital video camera to a device104A-N. A frame identifier110can be added to frame108on device104A-N using known characters from a character recognition library stored on device104A-N. Moreover, description information112can be added to frame108as well as to other frames in the file of media content. Further, presentation time114can be added to frame108, representing a time in which frame108was recorded in accordance with a system clock on a device which originally recorded frame108.

If the file of media content of which frame108is a part includes sequential frames, the frame preceding frame108can have a presentation time earlier than presentation time114of frame108. Similarly, a frame intended to be rendered after frame108can have a presentation time later than presentation time114of frame108.

After the media content is instrumented, the media content can be compressed and transmitted electronically from device104A-N to client device102over network106. Alternately, the media content can be compressed, stored on portable storage media116, and physically be introduced to client device102.

In some cases, the processes involved in transferring the media content from device104A-N to client device102, and in rendering the media content on client device102, can result in loss of information in the media content. For instance, during transmission entire frames of media content can be dropped or corrupted, and information within surviving frames can be degraded or lost. Similarly, during rendering processes, such as decompressing processes, decoding processes, and so on, entire frames of media content can be dropped or corrupted, and information within surviving frames can be degraded or lost.

The loss and/or degradation of information in the media content can include loss and/or degradation of information in frame identifier110in frame108. Thus, frame identifier110can be degraded into frame identification information including characters which are no longer exact copies of the known characters used to initially populate frame identifier110.

At client102, the frame identification information corresponding to frame identifiers in the frames of the media content can be examined. For example, a quality sampling (QS) module118in client device102can compare the characters extant in the frame identification information against the original, known characters used to create frame identifier110. In one implementation this can involve separating out all individual characters in the frame identification information at client102. Separation of individual characters out from the frame identification information can be done using any method known in the art, and will be discussed in more detail in conjunction withFIG. 3below.

Once separation has occurred, the individual characters in the frame identification information can be compared against known characters in the character recognition library stored on device104A-N and/or client device102. In this way, a best match between the characters separated out from the frame identification information and the known characters in the character recognition library used to initially create frame identifier110can be found. Finding a best match between the characters separated out from the frame identification information and the known characters in character recognition library can be done using any method known in the art.

Once known characters from the character recognition library have been found for each character in the frame identification information in frame108at device102, the known characters can be used by QS module118to recreate frame identifier110. For example, frame identifier110included in frame of media content108before transmission of frame of media content108to client102can be identified as the known characters corresponding to the characters in the frame identification information.

Additionally, a degree to which the characters in the frame identification information are similar to their corresponding known character equivalents from the character recognition library can be used to calculate a quality of resolution of the frame identification information at client102. For example, if the characters in the frame identification information are ninety five percent similar to the known characters used to recreate frame identifier110, then QS module118can register that the frame identification information in frame of media content108at client102has a quality of resolution of ninety five percent.

The degree to which the characters in the frame identification information are similar to their corresponding known character equivalents in the character recognition library can be calculated using any method known in the art.

Once the quality of resolution of the frame identification information is calculated or otherwise determined, QS module118can use the quality of resolution of the frame identification information to evaluate a quality of resolution frame108. For example, the frame identification information can be viewed as a representative sample of frame108, and thus the quality of resolution of the frame identification information can also be seen as the quality for resolution of the remaining information in frame108.

In one implementation, calculation of the quality of resolution of the frame identification information and/or the quality of resolution of frame108can be done in real time as the media content of which frame108is a part is rendered on client device102.

In addition to being useful in calculating the qualities of resolution of the frame identification information and frame108, the known characters matched to characters in the frame identification information at device102can also be used by QS module118for a variety of other uses, which will be discussed in more detail in conjunction withFIG. 2below. For example, recreated frame identifiers110can be used to search for the occurrence of missing frames in the media content being rendered at client102. For example, missing frames can be detected by looking for missing frame identifiers110.

Moreover, QS module118can use frame identifiers110to determine if frames108are being rendered correctly, and to determine if media functions on a media content player on client device102, such as fast forward, seek, rewind, etc., are functioning properly. Further, frame identifiers110can be used by QS module118to determine if video content and audio content in the media content of which frame108is a part are being rendered in synch with one another.

Additionally QS module118can use frame identifier110to conduct a comprehensive examination of a quality of resolution of frame108rendered at client102. For example, frame identifier110for frame108at client102can be identified as described above. Frame identifier110can then be used to access an original copy of frame108, which has not undergone any transmission or rendering processes. The original copy of frame108can be saved in a control frame (CF) cache120on one or more of devices104A-N (such as device104C as illustrated inFIG. 1).

Frame108at client device102can then be compared to the original copy of frame108residing in CF cache120using any method known in the art. For example, each pixel in frame108can be compared to each corresponding pixel in copy of frame108residing in CF cache120. In one implementation, such a comparison of frame108with frame108residing in CF cache120can be done outside of the realm of real time. For instance, the comparison can be done after frame108has been rendered at client device102.

Exemplary Client Device

FIG. 2illustrates various components of client device102according to one embodiment of identifying character information in media content. Client device102can include one or more processor(s)200, a memory202, input/output (I/O) devices204(e.g., keyboard, display, and mouse), and a system bus206operatively coupling the various components of client device102.

System bus206represents any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor bus or local bus using any of a variety of bus architectures. By way of example, such architectures can include an industry standard architecture (ISA) bus, a micro channel architecture (MCA) bus, an enhanced ISA (EISA) bus, a video electronics standards association (VESA) local bus, a peripheral component interconnects (PCI) bus also known as a mezzanine bus, a PCI express bus, a universal serial bus (USB), a secure digital (SD) bus, and an IEEE 1394 (i.e., FireWire) bus.

Memory202can include computer-readable media in the form of volatile memory, such as RAM and/or non-volatile memory, such as ROM, or flash RAM. Memory202can also include data and program modules for implementing identifying character information in media content which are immediately accessible to, and presently operated on, by processor(s)200.

Memory202can include programs208and data210. Programs208can include quality sampling (QS) module118as well as other programs212, including web browsing applications, instant messaging applications, word processing applications, spreadsheet applications, media content players, and so on. Data210can include a character recognition library214and other data216, such as data associated with a general functioning of one or more programs—such as QS module118and other programs(s)212.

Character recognition library214can include all of the original known characters used to create frame identifier110in frame108. The known characters in character recognition library214can be of a same font, size and so on, as the characters in frame identifier110. Moreover, as mentioned above, even though character recognition library214is illustrated as residing on client device102, character recognition library214can also reside on other devices such as device104A-N in addition to, or instead of, on client device102.

In one implementation, QS module118can include a character recognition module218, a resolution quality module220, and a playback calibration module222. In operation, media content can be received at client device102from any source, including devices104A-N and portable storage media116. Moreover, as noted above, information from the media content can be lost as the media content is transferred to client device102and rendered at client device102.

Character recognition module218can process the media content by recognizing and identifying individual characters within frame identification information corresponding to frame identifiers110in individual frames108of the media content. Character recognition module218can recognize individual characters in frame identification information and recreate corresponding frame identifiers110using any method known in the art.

FIG. 3illustrates one possible way in which character recognition module218can recognize individual characters within frame identifier110. As shown, frame identifier110can be transferred and rendered at client device102, resulting in frame identification information300. Character resolution module218can recognize frame identification information300in frame108and separate out individual characters in frame identification information300. These individual characters can then be compared against the known characters in character recognition library214, and best matches from the known characters can be used to recreate frame identifier110.

In one implementation, character recognition module218can set width boundaries302A and302B for one or more characters in frame identification information300. For example, width boundary302A can be placed at a far left edge of a character, while width boundary302B can be set at a far right edge of the character. The space between width boundaries302A, B for the character can be defined as a width304of the character.

Similarly, character recognition module218can set height boundaries306A and306B on one or more of the characters in frame identification information300. For example, height boundary306A can be set at a top edge of a character, while height boundary306B can be set at a bottom edge of the character. The space between height boundaries306A, B for the character can be defined as a height308of the character. InFIG. 3, each of the characters is illustrated as having a same height (namely height308). It will be understood, however, that in instances where characters in frame identification information300have differing heights308, different height boundaries306A,B can be set for each such character.

Once height308and width304information exists for a character, an identity of the character can be sought. For example, character recognition module218can cause a search to be conducted in character recognition library214for known characters having heights and widths similar to height308and width304. If more than one known character from character recognition library214has a height and width similar to height308and width304, then any technique known in the art can be used to find which known character from character recognition library214is the most similar to the character in frame identification information300. For example, similarities between pixels in the character in frame identification information300can be examined for each of the known characters in character recognition library214having a height and width similar to height308and width304. The known character from character recognition library214being most similar to the character from frame identification information300can be deemed to be the identity of the character in frame identification information300.

This process can be conducted by character recognition module218for each character in frame identification information300. Once known characters have been found for each character in frame identification information300, the characters in frame identification information300can be replaced by their corresponding known characters, thus recreating frame identifier110.

It will be understood that use of the term “frame identification information300” throughout this text refers to any frame identification information derived from frame identifier110. Frame identification information300can have experienced any amount of loss—including no loss—due to transmission and rendering processes. Further, characters within frame identification information300can be recognized and identified using any methods known in the art, including those outlined above in conjunction withFIG. 3.

Returning toFIG. 2, once the characters in frame identification information300have been recognized, and known characters in character recognition library214have been identified which correspond to the characters in frame identification information300, resolution quality module220can calculate a quality of resolution of frame identification information300.

Resolution quality module220can use any method known in the art to calculate the quality of resolution of frame identification information300. For example, resolution quality module220can calculate a degree to which the characters in frame identification information300are similar to their corresponding equivalent known characters in character recognition library214.

In one implementation, the degree to which the characters in frame identification information300are similar to their corresponding equivalents in the character recognition library214can be calculated by comparing pixels. For instance, resolution quality module can compare a pixel having a color above a predetermined threshold in a character in frame identification information300to a corresponding pixel in the corresponding equivalent known character in character recognition library214. If the pixel in the character in frame identification information300matches the pixel in the best match known character in character recognition library214, then a match can be declared. Otherwise a pixel mismatch can be declared. This process can be repeated for each pixel above the predetermined threshold in the characters in frame identification information300. In such a way, resolution quality module220can calculate the quality of resolution of frame identification information300as:

Once calculated, regardless of what method is used, resolution quality module220can use the quality of resolution of frame identification information300to determine a quality of resolution of frame108. For example, frame identification information300can be viewed as a representative sample of frame108, and thus resolution quality module220can evaluate the quality of resolution of frame108as being the same as the quality of resolution of frame identification information300.

Resolution quality module220can also instigate a comprehensive examination of a quality of resolution of frame108rendered at client102. For example, an identity of frame108can be identified by recreating frame identifier110from frame identification information300at client102as described above. Resolution quality module220can then use frame identifier110to instigate a comparison of frame108at client102against an original copy of frame108(having either the same frame identifier110as frame108at client device102, or having a frame identifier associated with frame identifier110). The original copy for frame108can be devoid of any loss from transmission or rendering processes, and can be saved in control frame (CF) cache120on one or more of devices104A-N (such as device104C as illustrated inFIG. 1).

Frame108can be compared with the copy of frame108residing in CF cache120using any method known in the art. For example, each pixel in frame108can be compared to each corresponding pixel in copy of frame108residing in CF cache120. In one implementation, such a comparison of frame108with frame108residing in CF cache120can be done outside of the realm of real time. For instance, the comparison can be done after rendering of frame108has been completed at client device102.

Playback calibration module222is configured to examine how well media content including frame108is rendered on client device102. In one implementation, playback calibration module222can examine the media content for one or more missing frames.

For example, the media content of which frame108is a part can include sequentially ordered frames with sequentially ordered frame identifiers. Once frame identifier110of frame108is recreated by character recognition module218, frame identifier110frame can be compared against a frame identifier of a preceding frame. If frame identifier110of frame108immediately follows the frame identifier of the preceding frame (i.e. frame identifier110of frame108is the next sequential designation in the sequence of frame identifiers), then playback calibration module222can deduce that no frames have been dropped. However, if frame identifier110of frame108does not follow the frame identifier of the preceding frame, then playback calibration module can register that frames have been dropped.

In one implementation, playback calibration module222can calculate the number of dropped frames as the number of missing frame identifiers in the sequence between the frame identifier of the preceding frame and frame identifier110of frame108.

Playback calibration module222can also determine if frame108is being rendered correctly. For example, playback calibration module222can access an identity of frame108found by using frame identifier110. This identity can be used by playback calibration module222to also access a presentation time, such as presentation time114, associated with frame108, which in turn can be used to determine if frame108is being rendered at a correct time and/or in a correct sequence.

For instance, playback calibration module222can determine an actual amount of time elapsed between a rendering of frame108and a rendering of a previously rendered frame. Playback calibration module222can compare this actual amount of time to an amount of time that would be expected to elapse between a rendering of the previously rendered frame and frame108. Playback calibration module222can calculate this expected amount of time by subtracting a presentation time from the previously rendered frame from presentation time114of frame108. If the expected amount of time is greater than the actual amount of time between the rendering of the previously rendered frame and frame108, playback calibration module222can deduce that the media content of which frame108is a part is being rendered ahead of schedule. For instance, the rendering in frames per second can be too quick, or frames in the media content may have been dropped during transmission and/or rendering of the media content at client102.

Alternately if the expected amount time between rendering of the previously rendered frame and frame108is less than the actual amount of time elapsed between rendering of the previously rendered frame and frame108, playback calibration module222can deduce that the media content of which frame108is a part is being rendered behind schedule. For example, the rendering of frames per second of the media content at client102may be too slow.

In a similar manner, playback calibration module222can calibrate the functioning of media functions on a media content player by examining frame identifier110and/or presentation time114of frame108. Media functions such as fast forward, seek, rewind, etc., can have an associated expected advance rate. For example, the expected advance rate for the seek function can be, for example, one minute of media content every time the seek function is activated. Similarly, the fast forward and reverse functions can have associated expected advance rates of several seconds of media content for each second of activation of the fast forward and reverse functions.

Playback calibration module222can calibrate the expected advance rates of the media functions by comparing an actual advance rate to the expected advance rate using frame identifiers. For example, if the seek function is selected, the expected jump caused by activation of the seek function can be compared to an actual jump effected by the seek function. For instance, if the seek function is supposed to jump forward one minute in the media content, then a presentation time of a frame jumped from can be subtracted from a presentation time of a frame jumped to. If the calculated time difference does not equal one minute, then playback calibration module can deduce that either the seek function should be recalibrated, or frames have been lost in the media content. Playback calibration module222can also take corrective actions, such as increasing or decreasing the number of frames jumped every time the seek function is activated, such that the expected advance rate equals an actual jump experienced by activation of the seek function.

As mentioned above, in one implementation, presentation times can be included on each frame of the media content. Alternately, if no presentation times are included on the frames of the media content, the presentation times can be found by referencing frame identifiers on the frames of the media content.

In a similar fashion, when fast forward or rewind functions are selected, playback calibration module222can calculate an expected advance time in the media content by multiplying an expected jump rate, (for example in seconds of media content per second of function activation) by an amount of time the forward or rewind function is activated. For example, if the fast forward function is supposed to advance the media content at a rate of three seconds for every second of activation, and if the fast forward function is activated for three seconds, the expected amount of media content advanced should be equal three times three seconds, or nine seconds.

The expected advance time can be compared to a real advance time found by viewing both a presentation time of a frame at the beginning of activation of the function and a presentation time of a frame at the end of activation of the function. If the difference in presentation times of the two frames does not equal the expected advance time, then a problem with the function can be implied by playback calibration module222. In one implementation, playback calibration module can correct fast forward and rewind functions, by speeding up or slowing down the number of frames they advance per second of activation such that the an observed advance time equals an expected advance time.

As with above, in one implementation, presentation times can be included on each frame of the media content. Alternately, if no presentation times are included on the frames of the media content, the presentation times can be found by referencing frame identifiers on the frames of the media content.

Playback calibration module222can also check synchronization between audio and video content being rendered at client device102. For example, when frame108is rendered, a portion of audio content being simultaneously rendered can be examined and a corresponding identifier for the portion of audio content can be identified. As mentioned above, audio content rendered at client device102can be instrumented with identifiers in any way known in the art. Moreover, these identifiers can be identified using any methods known in the art.

Once the identifier for the audio portion is known, it can be compared with frame identifier110for frame108. If the identifier for the audio portion and frame identifier110are associated, then the video content is in synch with the audio content. Alternately, if frame identifier108is not associated with the identifier for the audio portion being rendered simultaneous to frame108, then playback calibration module222can deduce that the video content and audio content are out of synch.

In the event that the video content and the audio content are out of synch, playback calibration module222can use any method known in the art to synch up the audio content and the video content. For example, if frame identifier110is ahead of the identifier for the portion of audio content, playback calibration module222can speed up rendering of the audio content relative to the video content. This can be continued until frame identifiers110and identifiers for portions of the audio content indicate that the audio content and the video content are synched up.

Alternately, if frame identifier110is behind the identifier for the portion of audio content, playback calibration module222can speed up rendering of the video content relative to the audio content. This can be continued until frame identifiers110and identifiers for portions of the audio content indicate that the audio content and the video content are synched up.

Exemplary Reputation Server

FIG. 4illustrates various components of a video database server104C including a control frame (CF) cache120in accordance with one embodiment of identifying character information in media content. Even though video database server104C is shown as being device104C fromFIG. 1, it will be understood that any of devices104A-N and/or client device102, could have a similar functionality and host CF cache120.

Video database server104C can include one or more processor(s)400, a memory402, input/output (I/O) devices404(e.g., keyboard, display, and mouse), and a system bus406operatively coupling the various components of video database server104C. System bus406represents any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor bus or local bus using any of a variety of bus architectures. By way of example, such architectures can include an industry standard architecture (ISA) bus, a micro channel architecture (MCA) bus, an enhanced ISA (EISA) bus, a video electronics standards association (VESA) local bus, a peripheral component interconnects (PCI) bus also known as a mezzanine bus, a PCI express bus, a universal serial bus (USB), a secure digital (SD) bus, and an IEEE 1394 (i.e., FireWire) bus.

Memory402can include computer-readable media in the form of volatile memory, such as RAM and/or non-volatile memory, such as ROM, or flash RAM. Memory402can also include data and program modules for implementing identifying character information in media content which are immediately accessible to, and presently operated on, by processor(s)400.

Memory402can include programs408and data410. Programs408can include programs such as file sharing applications, web browsing applications, word processing applications, spreadsheet applications, etc. Data410can include CF cache120and other data412, such as data associated with a general functioning of one or more programs—such as programs(s)408.

As noted above, CF cache120can include original copies of frames of media content being rendered at client device102, and CF cache120can be used by resolution quality module220to calculate a quality of resolution of frame108. For example, once frame identifier110has been identified on device102, frame108can be identified on the basis of frame identifier110. Frame108can then be compared to an original copy of frame108, stored in CF cache120, wherein the original copy of frame108in CF cache120has not undergone any transmission or rendering processes.

Frame108can be compared with copy of frame108residing in CF cache120using any method known in the art. For example, each pixel in frame108can be compared to each corresponding pixel in copy of frame108residing in CF cache120. In one implementation, such a comparison of frame108with copy of frame108residing in CF cache120can be done outside of the realm of real time. For instance, the comparison can be done after frame108has been rendered at client device102.

Exemplary Methods

FIGS. 5-7illustrate exemplary methods for implementing aspects of identifying character information in media content. The methods are illustrated as a collection of blocks in a logical flow graph representing a sequence of operations that can be implemented in hardware, software, firmware or a combination thereof. The order in which the methods are described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the methods, or alternate methods. Additionally, individual blocks may be deleted from the methods without departing from the spirit and scope of the subject matter described therein. In the context of software, the blocks can represent computer instructions that, when executed by one or more processors, perform the recited operations. Moreover, for purposes of discussion, and not purposes of limitation, selected aspects of the methods may be described with reference to elements shown inFIGS. 1-4.

Exemplary Method I

FIG. 5illustrates an exemplary method500for recognizing and identifying character information in media content. At block502, at least one individual character in frame identification information in a frame of media content is recognized. For example, one or more characters in frame identification information300can be recognized while frame108is being rendered at client device102. The frame identification information in the frame of media content can include characters in a frame identifier which have suffered loss from various processes during transmission and rendering of the frame of media content. Recognition of characters in the frame identification information can be done using any method known in the art.

At block504, the at least one character can be compared against a set of known characters in a character recognition library. The character recognition library, such as character recognition library214, can include copies of all known characters used to populate a frame identifier corresponding to the frame identification information before the frame of media content was subjected to transmission and/or rendering processes. The copies of the known character can be of a same font size, and a same font type as the characters used to populate the frame identifier.

In one implementation, characters in the frame identification information can be viewed separately from one another, and width boundaries, such as width boundaries302A and302B, can be set on the right and left sides of each character in the frame identification information. The space between the width boundaries for each character can be defined as a width of the character.

Similarly, height boundaries, such as height boundaries306A and306B, can be set for each of the characters in the frame identification information. For example, the height boundaries can be set at a top edge and a bottom edge of each character, with the space between height boundaries being defined as a height of the character.

A search can then be conducted for known characters in the character recognition library having heights and widths similar to the heights and widths of characters in the frame identification information. Alternately, or additionally, a search can be conducted for known characters in the character recognition library having pixels in similar positions to pixels found in the characters in the frame identification information.

At block506, at least one known character from the set of known characters can be found which best matches the at least one character in the frame identification information. For example, a best match can be found between a character recognized in the frame identification information and a known character in the set of known characters in the character recognition library.

At block508, the at least one known character found in block506can be identified as the frame identifier for the frame of media content. For example, the known characters which best match the characters in the frame identification information can be inferred to be an original frame identifier placed on the frame of media content before the frame of media content was subjected to transmission and rendering processes.

Exemplary Method II

FIG. 6illustrates an exemplary method600for estimating a quality of resolution of a frame of media content. At block602, a quality of resolution at the least one character recognized in the frame of media content in method500is calculated. For example, each character recognized in the frame of media content can be compared to a corresponding best matching known character from the character recognition library. Such similarity measures can be conducted for all recognized characters in the frame of media content and their best matching known characters in the character recognition library.

Any methods known in the art can be used to find the degree of similarity between the recognized characters in the frame of media content and their corresponding best matching known characters from the character recognition library. In one implementation, the degree to which the characters in frame identification information are similar to their corresponding equivalent known characters in the character recognition library can be calculated by comparing pixels. For instance, a pixel having a color above a predetermined threshold in a character in the frame identification information can be compared to a corresponding pixel in the corresponding equivalent known character in the character recognition library. If the pixel in the character in the frame identification information matches the pixel in the best match known character in character recognition library, then a match can be declared. Otherwise a pixel mismatch can be declared. This process can be repeated for each pixel above the predetermined threshold in the characters in frame identification information. In such a manner, the quality of resolution of the characters recognized in the frame of media content can be calculated as:

At block604, a quality of resolution of the frame of media content can be inferred from the quality of resolution of the at the least one character recognized in the frame of media content. For example, the characters recognized in the frame of media content can be viewed as a representative sample of the frame of media content. As a result, the quality of resolution of the frame of media content can be inferred to be the same as the quality of resolution of the least one character recognized in the frame of media content.

Exemplary Method III

FIG. 7illustrates an exemplary process for recognition and identifying character information in media content. At block702, frame identification information is located in a frame of media content. For example, frame identification information300can be located in located in frame108. In one implementation, the frame identification information can be located in a same area of each frame in a file of media content. In another implementation, the frame identification information can be in differing locations throughout frames in a file of media content. The differing locations of the frame identification information in the frame of media content can be predictable (i.e. can follow a set pattern), or the differing locations can be random.

At block704, a frame identifier is estimated from the frame identification information. For example, characters within the frame identification information can be isolated and best matches between the characters within the frame identification information and known characters within a character recognition library, such as character recognition library214, can be found.

Best matches between the characters within the frame identification information and the known characters within the character recognition library can be found using any technique known in the art. For example, characters within the frame identification information can be classified based on their widths and heights, and the characters within the frame identification information can be compared to known characters in the character recognition library having the same or similar dimensions.

Alternately, or additionally, pixels in the characters within the frame identification information can be compared to pixels in the known characters in the character recognition library, with a best match being a known character having a maximum number of shared pixels with a character within the frame identification information.

At block706a quality of resolution of the frame of media content can be evaluated by comparing the frame of media content with a control frame of media content having a same frame identifier as the frame identifier estimated in block704. In one implementation, the frame of media content is a copy of the control frame. In another implementation, the comparison of the frame of media content with the control frame of media content can take place after the frame of media content has been rendered.

The frame of media content can be compared to a control frame of media content stored on a remote device, such as device104C, in a control frame cache, such as CF cache120. Moreover, comparison of the frame of media content and the control frame of media content can be conducted using any method known in the art. For example, each pixel in the frame of media content can be compared to each corresponding pixel in the control frame of media content. In such an implementation, the quality of resolution of the frame of media content can be evaluated based on the number of similar pixels between the frame of media content and the control frame of media content.

CONCLUSION

Although embodiments of identifying character information in media content have been described in language specific to structural features and/or methods, it is to be understood that the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as exemplary implementations of identifying character information in media content.