Support the new METACUBE_FLAGS_NOT_SUITABLE_FOR_STREAM_START Metacube flag.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 14 Aug 2013 21:09:52 +0000 (23:09 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 14 Aug 2013 21:09:52 +0000 (23:09 +0200)
commit1c6b126fe95eb0465383ba225da764757eba05c0
treec259196d7ca04fd92d7dd07e8c7dad13af05c8b0
parent4553a184fb72d199ad665f469b0ac693fb089701
Support the new METACUBE_FLAGS_NOT_SUITABLE_FOR_STREAM_START Metacube flag.

This is created by new versions of the VLC Metacube patches;
it is designed for the needs of WebM, where browsers refuse to accept a
stream that does not start with a keyframe. Thus, we can have blocks that
are completely valid (and we wouldn't want to start joining blocks, as the
GOPs can become very large), but that we do not want to start a stream with.

For this, we introduce a new state called WAITING_FOR_KEYFRAME that all
new clients (except those fetching from the start of the backlog) go through;
they stay there until the next keyframe-marked block (anything that's not
marked METACUBE_FLAGS_NOT_SUITABLE_FOR_STREAM_START, so old Metacube streams
are still valid) comes along, at which point they go into the regular
SENDING_DATA.

The new version of the VLC Metacube patch is not included yet.
client.h
httpinput.cpp
metacube.h
server.cpp
server.h
serverpool.cpp
serverpool.h
state.proto
stream.cpp
stream.h
udpinput.cpp