mirror of
https://github.com/mapmapteam/mapmap.git
synced 2026-04-10 09:40:41 +02:00
Support shmsrc (live source)
If the imported file is a socket path, we mark the media as "live". We continuously poll for the socket path (in case e.g. it disappears / reappears). As soon as the source socket patch exists, we connect a shmsrc ! gdpdepay pipeline (instead of a normal uridecodebin element for file-based media) and we set the pipeline state to PLAYING (playAction button is not needed at the moment for live sources, but we can change behaviour to only start the pipeline if play is selected, like with normal file-based media) In case of a GST_MESSAGE_ERROR, the polling function keeps looking for the socket path until it exists again. The existing shmsrc pipeline is re-used once the live source is transmitting again. Tested with live source gst-launch-1.0: gst-launch-1.0 uridecodebin uri=file:////opt/Videos/test.avi ! queue ! videoconvert ! video/x-raw, format="RGBA" ! gdppay ! shmsink socket-path=/tmp/sock shm-size=100000000 The live source was interrupted and restarted again, and the shmsrc in mapmap is able to pick up the reappearing media stream. Signed-off-by: Vasilis Liaskovitis <vliaskov@gmail.com>
This commit is contained in:
@@ -97,7 +97,7 @@ void ProjectReader::parsePaint(const QDomElement& paint)
|
||||
QString y = paint.firstChildElement("y").text();
|
||||
|
||||
uid id = _window->createMediaPaint(paintAttrId.toInt(), uri, x.toFloat(), y.toFloat(),
|
||||
std::tr1::shared_ptr<Paint>(static_cast<Paint*>(0)), paintAttrType == "image");
|
||||
std::tr1::shared_ptr<Paint>(static_cast<Paint*>(0)), paintAttrType == "image", false);
|
||||
if (id == NULL_UID)
|
||||
_xml.raiseError(QObject::tr("Cannot create media with uri %1.").arg(uri));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user