MPEG video streaming and displaying are handled
by agents. A streaming agent sends video data over best-effort network,
and at the other end, a display agent receives the video and decodes it
for display. Since real-time multimedia data quality is subject to system
resource availability, and in the case of no native system reservation
support, adaptiveness of applications are key to successful multimedia
Performance of MPEG video streaming over best-effort based network is
heavily dependent on system resource state (e.g. network bandwith, CPU
With a set of streaming modes each of which is tuned for different
resource states and a set of rules to control the mode selection,
streaming can be adapted according to current system resource state. Bond
agent framework provides good foundation to build agents which can
be easily re-configured.
Adaptive MPEG agent
Display agents (client) connect to a video server, which spawns streaming
agents for each connection. The display agent is responsible for displaying
video stream and the streaming agent is to deliver the stream as well as
to control streaming modes. Two communication channels exist between the
agents: a control channel for streaming commands and performance feedback
from client, and a data channel for the streaming video contents.
Compressed stream mode.
The server transmits a stored MPEG video stream as is to a client. The
client is responsible for decoding the stream before display. The decoding
task can be CPU intensive.
B/P frame dropping mode.
The server partially decodes a video stream to identify frame types and
drops frames of certain types (e.g. some or all B frames, all B and P frames).
This mode places reduced demand on both the network and client CPU.
Server decoding mode.
The server decodes a video stream and transmits raw pixels. This mode can
reduce demand on a client CPU. However it requires significantly higher
network bandwidth because decoded frames can be more than ten times larger
than their compressed ones.
and dropping mode. This mode is simultaneous application of the B/P frame
dropping mode and the server decoding mode. It can reduce client CPU load
while not placing much increased demand on network bandwidth.
rule. This rule states that if measured packet loss rate at client side
is above some threshold, then the rule triggers a bandwidth reservation
request to the bandwidth scheduler.
CPU reservation rule.
This rule applies to both server and client; if measured transmit rate
on the server side is low, then this rule requests increased allocation
of server CPU cycle; on the client side, if inter-frame display time is
high and the packet loss rate is not high, then this rule triggers a request
for client CPU cycles.
When the packet loss rate is high and bandwidth reservation is not supported,
this rule selects the B/P frame dropping mode.
Decoding rule. This
rule triggers the server decoding mode when the following conditions are
met: long inter-frame display time, no support for CPU reservation, high
transmit rate on a server side, and low packet loss rate.
rule. It starts the server decoding and dropping mode in the case of long
inter-frame display time, no support for CPU reservation, high transmit
rate, and medium packet loss rate.
Structure of agents
Screen capture video