[gst-devel] qtdemux

Artem Baguinski artm at nerve.v2.nl
Wed May 1 03:03:05 CEST 2002


couple of weeks i tried to cure quicktime demux and did a quck fix for
one and only format - jpeg (or what is called Photo JPEG in quicktime

i didn't like the way openquicktime based plugin works and decided to
rewrite the thing from scratch, using different approach.

first thing i didn't like was demuxer's dependancy on seek operation.
it's ok if you're playing a file, but with say network streams you don't
want to run here and there, you want just to interprete data as it comes
and skip what's irrelevant. then other aspect - to connect openquicktime
to gstreamer you have to reload read operation of the file, substituting
it with the read operation that returns a chunk of data of given length
- you cannot use GstBuffer, you have to memcpy for every read, whether
it is just checking some value in metadata or getting the frame.

i had two alternatives - wether to fix all the issues with openquicktime
or to write a plugin for parsing quicktime streams from scratch. i've
chosen the second way, cause it was easier and i could make the result
more "integrated" with the gstreamer.

so, at the moment my qtdemux can do the same as the one i fixed two
weeks ago - it can play photo-jpeg encoded movies. it skips any data
which encoding it doesn't know, including any audio. audio in qt is a
bit confusing for me still, i have to parse some examples to understand
it completely :) 

it was my first gstreamer programming, so probably i missed something,
but the following pipeline works:

filesrc location=b35.mov ! qtdemux video_%02d! { queue ! jpegdec !
sdlvideosink }

it has some problem though (as well as an old one): jpegdec complains
about corrupt jpeg data now and then and it's always the same "10
extraneous bytes before marker 0xdb". i don't know enough about jpeg to
understand what that means, you see. may be somebody has an idea what's
wrong wit that?

Artem Baguinski (http://www.artm.org/)
V2_Lab - International Lab For the Unstable Media (http://www.v2.nl/V2_Lab/)
Eendrachtsstraat 10 - 3012 XL Rotterdam 

More information about the gstreamer-devel mailing list