def get_stream(stream)
@pipeline.play
while @format == nil && @pipeline.iterate do end
@pipeline.pause
return nil if @format == nil
track_format = Gst::Format.find 'logical_stream'
@decoder_pad.formats.each do |format|
value = @decoder_pad.query(Gst::QueryType::TOTAL, format.type_id)
case format.type_id
when Gst::Format::TIME
stream.length_time = value ? value : 1
else
stream.length_tracks = value if format == track_format && value != nil
end
end
stream.length_tracks = 1 if stream.length_tracks == 0
value = @source_pad.query(Gst::QueryType::TOTAL, Gst::Format::BYTES)
if value
seconds = stream.length_time.to_f / Gst::SECOND
bits = value * 8
stream.bitrate = bits / seconds
end
return stream
end