7900140

Media Processing Methods, Systems and Application Program Interfaces

PublishedMarch 1, 2011
Assigneenot available in USPTO data we have
Technical Abstract

Patent Claims
82 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A system comprising: first and second computing devices; and a media engine distributed among and implemented in the first and second computing devices and configured to communicatively interact with an application of the second computing device to present a presentation on the second computing device, the first and second computing devices being remote from each other, the media engine implemented in the first computing device being configured to: use one or more media sources individual ones of which serving as a source of media content; and first partially resolve a topology that is to be utilized to present the presentation, and then cause a full topology to be resolved and activated, distribute the full topology to the second computing device, and the media engine implemented in the second computing device being configured to use: one or more transforms linked to the full topology, communicatively linked with one or more media sources, and configured to operate on data received from the one or more media sources; and one or more media sinks configured to sink a media stream.

2

2. The system of claim 1 , wherein the media engine exposes an application program interface that is used by the application to interact directly with the media engine, and indirectly with components used by the media engine.

3

3. The system of claim 1 , wherein the media engine is configured to provide support for both linear and non-linear media sources.

4

4. The system of claim 1 , wherein the media engine is configured to provide transport control for the media content.

5

5. The system of claim 1 , wherein the media engine is configured to provide for asynchronous building and management of a media pipeline given a source of media content.

6

6. The system of claim 1 , wherein the media engine is configured to provide source resolution for the media content.

7

7. The system of claim 1 , wherein the media engine is configured to enable adjustment of a media processing pipeline configuration.

8

8. The system of claim 1 , wherein the media engine is configured to support multiple different modes of stream selection.

9

9. The system of claim 8 , wherein one mode comprises a mode in which the media engine selects which media streams are used.

10

10. The system of claim 8 , wherein one mode comprises a mode in which the application selects which media streams are used.

11

11. The system of claim 8 , wherein one mode comprises a mode in which the media engine selects which media streams are used, and another mode comprises a mode in which the application selects which media streams are used.

12

12. The system of claim 1 , wherein the media engine is configured to set up a media session which uses said one or more media sources, said one or more transforms, and said one or more media sinks, said media session being configured to fully resolve a partial topology that has been resolved by said media engine.

13

13. The system of claim 12 , wherein the media session is configured to fully resolve said partial topology by at least ascertaining transforms that are to be placed between the media sources and the media sinks.

14

14. The system of claim 12 , wherein the media engine is configured to receive calls from the application and forward the calls to the media session, said calls comprising calls to start, stop and pause the presentation.

15

15. The system of claim 12 , wherein the media session is configured to create a media processor that uses one or more media sources and one or more transforms.

16

16. The system of claim 12 , wherein the media session is configured to create a media processor that uses one or more media sources and one or more transforms, wherein the media session is configured to set a topology on the media processor.

17

17. The system of claim 12 , wherein the media session is configured to make determinations as to which time sources are to be used to drive the presentation.

18

18. The system of claim 12 , wherein the media session is configured to prevent drift between a rate of media sources and a rate of a time source being used in live scenarios.

19

19. The system of claim 12 , wherein the media session is configured to receive calls from the media processor to at least start, stop and pause the presentation.

20

20. The system of claim 12 , wherein the media session is configured to receive calls from the media processor to at least start, stop and pause the presentation, wherein the media session is configured to send events to the media engine associated with calls that the media session receives from the media engine.

21

21. The system of claim 12 , wherein the media session is configured to reduce glitches associated with a presentation by prerolling media data samples to one or more media sinks.

22

22. The system of claim 12 , wherein the media session is configured to validate one or more component that handle data of the presentation.

23

23. The system of claim 1 , wherein the media engine partially resolves said topology by at least determining one or more media sources and one or more media sinks for the presentation.

24

24. A system comprising: first and second computing devices; and a media engine distributed among and implemented in the first and second computing devices and configured to communicatively interact with an application of the second computing device to present a presentation on the second computing device, the first and second computing devices being remote from each other, the media engine being configured to a provide plurality of open methods that can be called by the application to specify data sources in different manners, the media engine implemented in the first computing device being configured to: use one or more media sources individual ones of which serving as a source of media content; and first partially resolve a topology that is to be utilized to present the presentation, and then cause a full topology to be resolved and activated, distribute the full topology to the second computing device, and the media engine implemented in the second computing device being configured to use: one or more transforms linked to the full topology, communicatively linked with one or more media sources, and configured to operate on data received from the one or more media sources; and one or more media sinks configured to sink a media stream.

25

25. The system of claim 24 , wherein the media engine is configured to send events associated with a media presentation to the application.

26

26. The system of claim 24 , wherein one of the open methods specifies a URL as a data source.

27

27. The system of claim 24 , wherein one of the open methods specifies a media source created by the application.

28

28. The system of claim 24 , wherein one of the open methods specifies an object that has an interface from which a media source object can be obtained.

29

29. The system of claim 24 , wherein one of the open methods specifies an object from which a byte stream can be obtained.

30

30. The system of claim 24 , wherein one of the open methods specifies a topology to be used.

31

31. The system of claim 24 , wherein the open methods are selected from a group of open methods that: specify a URL as a data source, specify a media source created by the application, specify an object that has an interface from which a media source object can be obtained, specify an object from which a byte stream can be obtained, and specify a topology to be used.

32

32. The system of claim 24 , wherein the media engine is configured to provide methods to start a presentation, stop a presentation, and pause a presentation.

33

33. The system of claim 32 , wherein the media engine is configured to generate and send an event to an application associated with each of said start, stop and pause methods.

34

34. The system of claim 24 , wherein the media engine further comprises a plurality of information methods that can be used by the application to obtain information that pertains to the presentation.

35

35. The system of claim 34 , wherein one of the information methods enables the application to be exposed to multiple capabilities of the media engine.

36

36. The system of claim 34 , wherein one of the information methods enables the application to ascertain when the system's capabilities change.

37

37. The system of claim 34 , wherein one of the information methods enables the application to obtain metadata associated with the presentation.

38

38. The system of claim 34 , wherein one of the information methods enables the application to obtain metadata associated with the presentation, the metadata being obtained in the form of a property store that can be queried for the metadata.

39

39. The system of claim 34 , wherein one of the information methods enables the application to ascertain a current destination.

40

40. The system of claim 34 , wherein one of the information methods enables the application to ascertain statistics associated with the media engine.

41

41. The system of claim 34 , wherein one of the information methods enables the application to ascertain a current state of the media engine.

42

42. The system of claim 34 , wherein one of the information methods enables the application to retrieve a clock according to which the media engine is presenting.

43

43. The system of claim 34 , wherein the information methods are selected from a group of information methods comprising methods that enable the application to: (1) be exposed to multiple capabilities of the media engine; (2) obtain metadata associated with the presentation; (3) ascertain a current destination; (4) ascertain statistics associated with the media engine; (5) ascertain a current state of the media engine; and (6) retrieve a clock according to which the media engine is presenting.

44

44. The system of claim 24 , wherein the media engine is configured to generate a plurality of events associated with the presentation, the media engine being configured to send the events to the application.

45

45. The system of claim 44 , wherein one event is associated with a new presentation that is to be presented.

46

46. The system of claim 44 , wherein one event is associated with a completion of an open method.

47

47. The system of claim 44 , wherein one event is associated with completion of an operation begun by calling a start method on the media engine.

48

48. The system of claim 44 , wherein one event is associated with completion of an operation begun by calling a stop method on the media engine.

49

49. The system of claim 44 , wherein one event is associated with completion of an operation begun by calling a pause method on the media engine.

50

50. The system of claim 44 , wherein one event is associated with rendering of a last data sample from an active media source.

51

51. The system of claim 44 , wherein one event is associated with completion of an operation begun by calling a close method on the media engine.

52

52. The system of claim 44 , wherein one event is associated with a switch between presentations.

53

53. The system of claim 44 , wherein one event is associated with a presentation destination change.

54

54. The system of claim 44 , wherein one event is associated with a state change on the media engine.

55

55. The system of claim 44 , wherein one event is associated with a change in a set of allowed operations on the media engine.

56

56. The system of claim 44 , wherein one event is associated with a media rate change.

57

57. A system comprising: first and second computing devices; and a media engine distributed among and implemented in the first and second computing devices and configured to communicatively interact with an application of the second computing device to present a presentation, the media engine being configured to use a media session, the media engine and the media session configured to present the presentation on the second computing device, the first and second computing devices being remote from each other, the media engine implemented in the first computing device being configured to: use one or more media sources individual ones of which serving as a source of media content; and first partially resolve a topology that is to be utilized to present the presentation, and then cause a full topology to be resolved and activated, distribute the full topology to the second computing device, and the media engine implemented in the second computing device being configured to use: one or more transforms linked to the full topology, communicatively linked with one or more media sources, and configured to operate on data received from the one or more media sources; and one or more media sinks configured to sink a media stream.

58

58. The system of claim 57 , wherein the media engine exposes application program interfaces that are used by the application to interact directly with the media engine, and indirectly with components used by the media engine.

59

59. The system of claim 57 further comprising a destination associated with the media engine and configured to provide one or more media sinks.

60

60. The system of claim 57 , wherein at least some components used by the media session are not visible to the application or media engine.

61

61. The system of claim 57 , wherein the media session is configured to: receive information from the media engine, said information being associated with (a) media content that is to be the subject of a presentation, and (b) a destination that is configured to provide one or more media sinks, and cause the media content to be presented.

62

62. The system of claim 57 , wherein the media session is configured to manage data flow from said one or more media sources to said one or more media sinks.

63

63. The system of claim 57 , wherein the media session exposes one or more methods that enable the media engine to configure the media session for a presentation.

64

64. The system of claim 57 , wherein the media session exposes one or more methods that enable the media engine to configure the media session for a presentation, wherein one method comprises a method through which a topology on the media session is initialized.

65

65. The system of claim 57 , wherein the media session exposes one or more methods that enable the media engine to configure the media session for a presentation, wherein one method comprises a method through which one or more components can subscribe to receive notifications from a clock that is used to control the presentation.

66

66. The system of claim 57 , wherein the media session provides methods for starting, stopping and pausing a presentation.

67

67. The system of claim 57 , wherein the media session provides a preroll method that is used by the media engine to notify the media session to prepare for the start of a presentation.

68

68. The system of claim 57 , wherein the media session further comprises a plurality of information methods that can be used by the media engine to obtain information from the media session.

69

69. The system of claim 57 , wherein the media session further comprises a plurality of information methods that can be used by the media engine to obtain information from the media session, wherein one information method enables the media engine to ascertain a globally unique identifier that is associated with a particular implementation of a media session.

70

70. The system of claim 57 , wherein the media session further comprises a plurality of information methods that can be used by the media engine to obtain information from the media session, wherein one information method enables the media engine to ascertain capabilities associated with the media session.

71

71. The system of claim 57 , wherein the media session is further configured to generate a plurality of events associated with the presentation, the media session being configured to send the events to the media engine.

72

72. The system of claim 57 , wherein the media session is further configured to generate a plurality of events associated with the presentation, the media session being configured to send the events to the media engine, wherein the media engine is configured to forward at least some of the events generated by the media session to the application.

73

73. The system of claim 57 , wherein the media session is further configured to generate a plurality of events associated with the presentation, the media session being configured to send the events to the media engine, wherein one event comprises a session started event that is generated when a session is started.

74

74. The system of claim 57 , wherein the media session is further configured to generate a plurality of events associated with the presentation, the media session being configured to send the events to the media engine, wherein one event comprises a session stopped event that is generated when a session is stopped.

75

75. The system of claim 57 , wherein the media session is further configured to generate a plurality of events associated with the presentation, the media session being configured to send the events to the media engine, wherein one event comprises a session ended event that is generated with a session is ended.

76

76. The system of claim 57 , wherein the media session is further configured to generate a plurality of events associated with the presentation, the media session being configured to send the events to the media engine, wherein one event comprises a session paused event that is generated when a session is paused.

77

77. The system of claim 57 , wherein the media session is further configured to generate a plurality of events associated with the presentation, the media session being configured to send the events to the media engine, wherein one event comprises a rate change event that is generated when a media rate is changed.

78

78. The system of claim 57 , wherein the media session is further configured to generate a plurality of events associated with the presentation, wherein the events are selected from a group of events comprising: (1) a session started event that is generated when a session is started; (2) a session stopped event that is generated when a session is stopped; (3) a session ended event that is generated with a session is ended; (4) a session paused event that is generated when a session is paused; (5) a rate change event that is generated when a media rate is changed.

79

79. The system of claim 57 further comprising a media processor used by the media session and using at least one of said media sources and at least one transform.

80

80. A system comprising: first and second computing devices; and a media engine distributed among and implemented in the first and second computing devices and configured to communicatively interact with an application of the second computing device to present a presentation, the media engine being configured to use a media session, the media engine and the media session configured to present the presentation on the second computing device, the first and second computing devices being remote from each other, the media session being configured to use at least one media processor, one or more bit pumps communicatively linked with the media processor, and one or more media sinks communicatively linked with respective bit pumps, the media processor being configured to use one or more media sources and one or more transforms communicatively linked with one or more media sources and configured to operate on data received from the one or more media sources, the media engine implemented in the first computing device being configured to: use the one or more media sources, individual ones of which serving as a source of media content; and first partially resolve a topology that is to be utilized to present the presentation, and then cause a full topology to be resolved and activated, distribute the full topology to the second computing device, and the media engine implemented in the second computing device being configured to use: the one or more transforms, which are linked to the full topology, communicatively linked with one or more media sources, and configured to operate on data received from the one or more media sources; and the one or more media sinks, which are configured to sink a media stream.

81

81. The system of claim 80 , wherein the one or more bit pumps are configured to pull data from the media processor.

82

82. The system of claim 80 , wherein the one or more bit pumps are configured to pull data from the media processor and to push pulled data to one or more media sinks.

Patent Metadata

Filing Date

Unknown

Publication Date

March 1, 2011

Inventors

Sohail Baig Mohammed
Kirt A. Debique
Geoffrey T. Dunbar
Patrick N. Nelson
Rebecca C. Weiss
Sumedh N. Barde
Adil Sherwani
Robin C.B. Speed
Alexandre V. Grigorovitch

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “MEDIA PROCESSING METHODS, SYSTEMS AND APPLICATION PROGRAM INTERFACES” (7900140). https://patentable.app/patents/7900140

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.