Virtual Channels

Summary

Mentor(s): Prof. Megan Hickman Fulp
Dr. Mike Murphy
Project Type: Software development; networking
Technologies: Python, Qt (PySide6 and Qt Designer), Git
Undergraduate Credit: CSCI 399, CSCI 490
Graduate Credit: IST 659
Locality: Main campus and/or remote

Purpose

TealPlay was initially designed to play locally saved media files from a library. Basic live media support has since been added, since Qt Multimedia can load a limited selection of files from the Internet. Also, on Linux systems, support for TV tuners is also present. Each of these playback sources has a slightly different code path within the current application, which makes adding new sources more challenging.

There are a number of other ways that TealPlay could be used to play content. For example, Streamlink could be added to allow access to a wider variety of Internet-based streams. Another approach is to support virtual sources that combine different kinds of content. For example, weather information could be displayed as a rotating series of images, with music playing in the background. News headlines could be displayed from RSS feeds. Even local artificial intelligence (AI) might advance to the point of being able to provide generated, on-demand entertainment.

In order to support these new sources of media, some type of virtual channel support will need to be developed. The first step will be to abstract away the underlying details of how media get to the player, making it easier to develop and add new sources as opportunities arise. Once this architectural change is made, it will be possible to create some virtual channels for testing and demonstration purposes.

Scope of Work

Refactor the media handling in TealPlay to create an abstraction for a playback source. Migrate the existing sources to use the new abstraction. Develop additional virtual sources of media to test and demonstrate the new abstraction. Add documentation for the new capabilities.

There will necessarily be some overlap between this project and the Media Backend, since the abstraction will need to be adapted to each supported backend.