# translation of gst-plugins-bad-0.10.6.3 to Lithuanian
# This file is put in the public domain.
#
# Gintautas Miliauskas <gintas@akl.lt>, 2008.
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.6.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2015-06-24 22:59+0200\n"
"PO-Revision-Date: 2008-05-14 02:13+0300\n"
"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2);\n"

msgid "format wasn't negotiated before get function"
msgstr ""

msgid "default GStreamer sound events audiosink"
msgstr ""

msgid ""
"GStreamer can play audio using any number of output elements. Some possible "
"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
"pipeline instead of just one element."
msgstr ""

msgid "description for default GStreamer sound events audiosink"
msgstr ""

msgid "Describes the selected audiosink element."
msgstr ""

msgid "default GStreamer audiosink for Audio/Video Conferencing"
msgstr ""

msgid ""
"description for default GStreamer audiosink for Audio/Video Conferencing"
msgstr ""

msgid "default GStreamer audiosink for Music and Movies"
msgstr ""

msgid "description for default GStreamer audiosink for Music and Movies"
msgstr ""

msgid "default GStreamer videosink"
msgstr ""

msgid ""
"GStreamer can play video using any number of output elements. Some possible "
"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
"can be a partial pipeline instead of just one element."
msgstr ""

msgid "description for default GStreamer videosink"
msgstr ""

msgid "Describes the selected videosink element."
msgstr ""

msgid "default GStreamer audiosrc"
msgstr ""

msgid ""
"GStreamer can record audio using any number of input elements. Some possible "
"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
"pipeline instead of just one element."
msgstr ""

msgid "description for default GStreamer audiosrc"
msgstr ""

msgid "Describes the selected audiosrc element."
msgstr ""

msgid "default GStreamer videosrc"
msgstr ""

msgid ""
"GStreamer can record video from any number of input elements. Some possible "
"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
"partial pipeline instead of just one element."
msgstr ""

msgid "description for default GStreamer videosrc"
msgstr ""

msgid "Describes the selected videosrc element."
msgstr ""

msgid "default GStreamer visualization"
msgstr ""

msgid ""
"GStreamer can put visualization plugins in a pipeline to transform audio "
"streams in video frames. Some possible choices are goom, goom2k1 and "
"synaesthesia. The visualization plugin can be a partial pipeline instead of "
"just one element."
msgstr ""

msgid "description for default GStreamer visualization"
msgstr ""

msgid "Describes the selected visualization element."
msgstr ""

msgid "OpenCV failed to load template image"
msgstr ""

#, fuzzy
msgid "Could not read title information for DVD."
msgstr "Nepavyko rašyti į failą „%s“."

#, fuzzy, c-format
msgid "Failed to open DVD device '%s'."
msgstr "Nepavyko atverti išorinės pusės įrenginio „%s“."

msgid "Failed to set PGC based seeking."
msgstr ""

msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""

#, fuzzy
msgid "Could not read DVD."
msgstr "Nepavyko rašyti į failą „%s“."

msgid "This file contains no playable streams."
msgstr ""

#, fuzzy
msgid "Could not open sndfile stream for reading."
msgstr "Nepavyko atverti failo „%s“ skaitymui."

msgid "Could not establish connection to sndio"
msgstr ""

msgid "Failed to query sndio capabilities"
msgstr ""

#, fuzzy
msgid "Could not configure sndio"
msgstr "Nepavyko atverti failo „%s“ skaitymui."

#, fuzzy
msgid "Could not start sndio"
msgstr "Nepavyko rašyti į failą „%s“."

#, fuzzy
msgid "Internal data flow error."
msgstr "Vidinė duomenų srauto klaida."

msgid "Generated file has a larger preroll time than its streams duration"
msgstr ""

#, c-format
msgid "Missing element '%s' - check your GStreamer installation."
msgstr ""

msgid "File location is set to NULL, please set it to a valid filename"
msgstr ""

msgid "Digitalzoom element cound't be created"
msgstr ""

msgid "Subpicture format was not configured before data flow"
msgstr ""

msgid "Failed to get fragment URL."
msgstr ""

msgid "Internal data stream error."
msgstr "Vidinė duomenų srauto klaida."

msgid "Couldn't download fragments"
msgstr ""

msgid "No file name specified for writing."
msgstr "Nenurodytas failo rašymui pavadinimas."

#, c-format
msgid "Given file name \"%s\" can't be converted to local file name encoding."
msgstr ""

#, c-format
msgid "Could not open file \"%s\" for writing."
msgstr "Nepavyko atverti failo „%s“ rašymui."

#, c-format
msgid "Device \"%s\" does not exist."
msgstr "Įrenginys „%s“ neegzistuoja."

#, c-format
msgid "Could not open frontend device \"%s\"."
msgstr "Nepavyko atverti išorinės pusės įrenginio „%s“."

#, c-format
msgid "Could not get settings from frontend device \"%s\"."
msgstr "Nepavyko gauti nustatymų iš išorinės pusės įrenginio „%s“."

#, fuzzy, c-format
msgid "Cannot enumerate delivery systems from frontend device \"%s\"."
msgstr "Nepavyko gauti nustatymų iš išorinės pusės įrenginio „%s“."

#, c-format
msgid "Could not open file \"%s\" for reading."
msgstr "Nepavyko atverti failo „%s“ skaitymui."

msgid "Couldn't find DVB channel configuration file"
msgstr ""

#, c-format
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""

msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""

#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr ""

#~ msgid "Could not write to file \"%s\"."
#~ msgstr "Nepavyko rašyti į failą „%s“."

#, fuzzy
#~ msgid "Internal clock error."
#~ msgstr "Vidinė duomenų srauto klaida."
