170 likes | 300 Views
SE-3910 Real-time Systems. Week 7, Class 1 GStreamer QT. Gstreamer a pipeline-based multimedia framework written in the C programming langauge with a type based on the Gobject ( ? ) concept Build audio-visual apps easily from existing algorithms. What are your dream A/V apps ?
E N D
SE-3910Real-time Systems • Week 7, Class 1 • GStreamer • QT SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling, Some from Dr. Hornick, etc.
Gstreamer • a pipeline-based multimedia framework written in the C programming langaugewith a type based on the Gobject(?) concept • Build audio-visual apps easily from existing algorithms SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
What are your dream A/V apps? • How would you structure your app? • What are the key classes? How do they relate? What are the processes? How do you get data from one to another? SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
gstreamer SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
gstreamer pipeline Pad Element SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
GUI Toolkits • Java • AWT • Swing • C/C++ • Qt • FLTK • GTK • Motif • MFC SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
What makes a good toolkit? SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Qt Features • Fully object-oriented • Consistent interfaces • Rich set of widgets (controls) • Have native look and feel • Drag and drop • Customizable appearance • Utility classes • OpenGL support • Network support • Database support • Plugin support • Unicode/Internationalization support • GUI builder SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Qt Widgets • Java Swing vs. Qt Timer JButton http://ocw.mit.edu/courses/civil-and-environmental-engineering/1-124j-foundations-of-software-engineering-fall-2000/recitations/recitation_9/ SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Example QT Widgets SE3910 Real Time Systems
QT Built in Dialog Boxes • File dialog • Font dialog • Color dialog • Printer dialog SE3910 Real Time Systems
Layouts • Java • FlowLayout • GridLayout • GridLayout • GridLayout • BorderLayout • Qt • Flow Layout • Grid Layout • Horizontal • Vertical • Border Layout SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Events/Signals • Java • Event • E.g. ActionEvent • Event Listener • E.g. ActionListener • How do you initiate an event in Java? • Qt • Signal • Slot • emit • Pre-processor directive • Auto writes the signal-generating code for you SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Signals/Slots in QT These code examples… • signals: • void clicked(); • connect(button, SIGNAL(clicked()), qApp, SLOT(quit())); • emit progressNotification(1000 * seconds); Are translated bymoc to the “magic” code to make these event occur SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Qt command-line tools… • moc – Program to convert .moc files to .cpp files • qmake - Program that automatically creates a makefile to run moc and gcc at the correct time SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Demo – Connecting to Beaglebone • [TODO] – Perhaps another time! • I may eventually put instructions for setting up a DHCP server on your laptop using “connection sharing” on website under “Objectives” • Ask me if you don’t find it when you need it • You know my number. SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling
Demo – Watchdog One prompt for i in `seq 0 1000`; do echo $(($i*10)); sleep 10; done; Another cat > /dev/watchdog SE-3910 - Dr. Josiah Yoder Slide style: Dr. Hornick Much Material: Dr. Schilling