{'fraction_non_alphanumeric': 0.023305734437289175, 'fraction_numerical': 0.0009199632014719411, 'mean_word_length': 5.178030303030303, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Design and Implementation of Distributed Programmable Media Gateways

Multicasting multimedia streams over the Internet is problematic due to network and host heterogeneity. One of the proposed solutions is to place media gateways inside the network to adopt the media streams for different links and hosts. 
In this dissertation, we investigate several novel extensions to the existing model of media gateways. First, we make the gateways user extensible by allowing injection of Tcl code that specifies transformations on the media streams. Second, we improve efficiency in bandwidth consumption by adaptively running the transformations at strategic locations on the Internet. We further reduce bandwidth consumption and improve throughput by decomposing a transformation into multiple sub-transformations for execution on different gateways, forming a data flow pipeline. To realize these extensions, we have designed, implemented, and simulated several components of the media gateways. 
We designed and implemented Dali, a low-level software library for building high-performance, predictable, highly extensible and computationally intensive multimedia applications. We designed Dali based on a set of design principles that is different from previous media processing libraries. We sacrificed ease of use for performance. We exposed the underlying structure of the media data (such as DCT blocks and motion vectors), forced explicit resource control, and promoted sharing of memory. As a result, programs written in Dali are fast, more predictable and highly re-configurable. Dali serves as a case study in API design for high performance media processing libraries. 
We built a prototype of a programmable, application-level media gateway, called Degas. Using an event-driven, descriptive programming model, users can write simple programs, called deglets, that can be uploaded into the gateway to perform operations on input video frames. We perform per-operation optimization by mapping a high-level API to low-level Dali code. Our prototype serves as a framework where many research issues about the design of programmable media gateways can be explored. 
We designed, simulated, and implemented AGLP, which is an application-level protocol for choosing strategically located Degas gateways on a wide-area network to run deglets. AGLP minimizes bandwidth consumption, and is able to adapt to a changing network environment by migrating deglets. We use the announce/listen paradigm and multicast damping to achieve robustness and scalability. Our experimental results show that AGLP is able to scale up to a large number of gateways on the network. 
Finally, we investigated a mechanism for distributing a deglet onto multiple gateways. By modelling a deglet as a tree of operations, we use a linear time algorithm to decompose a deglet into multiple subdeglets. We also extended AGLP to locate helper gateways to run these sub-deglets. These sub-deglets form a pipeline where video streams can flow through. Our experiment results shows that we are able to improve thoughput and quality over a bottleneck gateway, without compromising the scalability of AGLP.* 
*Originally published in DAI, Vol 62, No. 7. Reprinted here with corrected adviser name.