Objects vs File Formats (Messages)
[email protected] Mon, 28 Apr 2003 23:23:46 -0600
| Newsgroups | gmane.comp.video.mcf.general |
|---|---|
| Message-ID | <[email protected]> |
I'm really happy to see someone is working on this,
as I think media container formats are used to leverage
the Apple and Windows platform on people who have on need to
work with media, not inadequacy in their software.
My name is Kiernan Holland, been around on the net for years..
More recent interests include Blender, the now open source 3D
package which is the first open sourced 3D app to be complete enough
to be used commercially for animation work. I've also been working
in some degree on OpenEMed a implementation of the OMG's PIDS
standard which is a abstraction of patient identifiers used in
healthcare (it identifies patients not with numbers but with unique
indentifiers such as eye color, weight, telephone number, address,
and diassociates this from medical information {which is a
requirement for HIPPA compliance, but is also common sense}.
OpenEMed is not complete, its based on associate arrays with typ
any's for the storage of patient information and will fail
ultimately because it seeks not to detail what a patient identifier
contains and what are unique identifiers.. ITs dependent somewhat on
the HL7 format which is heavily backed by Microsoft.. I'm seeing
similar mistakes made elsewhere, anywhere XML is.
What is XML really than a creative use of a lexical analyzer and a
tag-based language like HTML. Its not an object meta-format, it does
not maintain data internally with methods, it relies on a agreement
between developers or handling libraries.. If the objects are open
sourced but detailed precisely, what is the need for developer
agreements (sense ones such as Microsoft could break it as needed)..
Really the format should be an object based format, and the
designers should agree at the time of creation of the format on how
this format should scale, and the format should be abstracted enough
that its not seen as a data format, but a object format.. The data
format need only be XCF with some internal representation that is
determined when implementing the object libraries, which will be
completely open sourced.. If they are not, this media format will
not fly.. If the source code contributing to the data format is not
commented and outlined clearly, if all the developers haven't
thought it through, this media format will not fly...
Here are some ideas about how to arrange things:
Movie -> Sequence of Frames, Objects that describe or add higher
level functionality (such as compression methods, audio tracks, etc)
Frame -> Layers of Images (each representing some kind of data, be
it rgb, z-buffer, alpha, float, arbitrary extra data).
Image -> arbitrary picture-sample format, not an array of pixels
with uniform spacing that doesn't allow for sparse random sampling,
vector based images, etc.. (read Alvy Ray Smith's paper on a "Pixel
is not a little Square").
Audio Track is like a movie in a way, it contains an array of audio
samples, movie is an array of frames..
Streaming requires data to be in clumps of time sync'd pieces,
right, this is just a form of the way objects pass messages,
its not a data format stored in a particular way to be made
streamable its not a library that specializes in streaming of
audio/video.. If objects are involved, when you ask for a
movie over the Internet, a media object should be smart enough to
hand itself over in the form of time-sync'd clumps of picture and
audio data, it need only to say its of a particular format, this
obliterates the need for MIME types, the client and server need only
to stream an object, the object itself should only have to negotiate
with itself (on the other end) about which codecs are needed and how
to stream the data.. Its a mistake to load this functionality into a
library, but saying that such object functionality does not exist
and we use libraries takes us back to C and the days of message
format dependency.. And the older a message format becomes, the less
people know about it.. The more people have to know about it, and
the more complex working with media becomes.. The data should
contain the methods with it that know best how to handle it..
How methods are executed though may present a problem as there
is no consensus on this..
The way things are isn't the best way things can be, its just the
way they were first implemented.. There is always a better way of
doing things..
We need to be thinking like this, not about what the message format
looks like, because message formats don't maintain themselves..
Objects do.. Therefore the revolutionary media formats should
be all encompassing object relationships, with an underlying storage
format.. So that the applications need not implement X number of
libraries and know every compression method under the sun. In no way
should a movie program have to know explicitly if a movie file
format is MPEG or MJPEG. Whatif things change, do we change
everbodies software or do we change how these objects store and
retrieve the data? And if files were saved out under a old format,
should our programs know how to load that format in addition to the
new one?
I would also be careful who you deal with when coming up with these
formats, there are industry evangelists, working for Microsoft and
such, whose job it is to sabotage standards and formats anyway they
can.. XML is their favorite data format because its integrity cannot
be enforced because it contains no methods.. Its a prime candidate
for future sabotage.. Microsoft uses language sabotage in many
forms, in the language we use to communicate about the programs we
use, in the languages we program in, in the formats we use, who we
talk to, etc.. They can make lots of money alone just by changing
the semantics of the language. And XML is changeable, a object based
language that is well abstracted and designed for
extensibility/scalability by identifying relationships between
information, not on what it looks like or how its interpretted but
what it is like how it can be reused and puting all of that
knowledge about how best to implement the information management
needs to be close to the information, this is an object.
Objects are data maintained with methods in a way that programs
need not be completely concerned, at least, with the preciseness of
how data is stored, the programs should only have to understand
the basics of what an object is.. If its a movie, we should only
assume the movie can have sound, and that it has a sequence of
frames. We can assume it lasts some amount of time, it may know
internally how many actual frames there are..
When we think like this, its called design, we need to detail out
how much the programmer should actually have to know about movies,
audio, and other media formats, to totally abstract the formats.
Nobody should have to know about MPEG in any way unless one needs to
maintain the concept of MPEG. About the only things that
should be abstracted of MPEG are the concepts that prove useful..
Object interfacing also allows one to extract more information from
an object as their needs require.
So a novice may want just to deal with movies with sequences of
images, but an expert may need to access motion vectors of the movie
if it is a MPEG movie. To allow movie editors and
audio editors, and movie utilities, there needs to be several
well abstracted layers to the media formats, all of these layers
need to be objects. There is some question as to what language the
objects need to be implemented in. I don't know how to answer that
one. Certainly though should be possible to abstract the interface
of the language from the objects that the media represents for
each language, but at some level internally to the media libraries
it needs to be object oriented and have a level of polymorphism
so as to not care what format data is stored or retrieved in..
At the very least if something is not readable, some description
of why it isn't should be given, but the movie editor designer
should not have to deal with the error in relation to their
editor by knowing something about MPEG.
I think for programmers it seems that complexity is acceptable, but
which would you rather be doing, making movies or knowing the
compexities of movie compression. The less there is abstraction,
the less there are professionals and everyone becomes system
administrators at some level (making assumptions about things they
don't know how to manage, as a result of bugs in their code or
others). By abstracting things ina meaningful way to people in
general, we are making life easier for ourselves because its the
less time we have to waste expressing concepts to people that they
are not interested in, and they are not experts in.. This is the
purpose for using objects and interface abstractions..
The more we bring people into unneeded complexity the more the world
will become hard to deal with, what goes around comes around..
Legacy systems design depends on static message formats,
if you remove that and make the message formats clear and
maintainable by methods, and open sourced, you lock out legacy
systems and companies who make money off of changing the syntax and
semantics (e.g. Microsoft tactics)..
Now I would be happy to help out in determining the abstractions
for these media formats, I don't know much about movie compression
or audio compression, just basics.. But I know artists and
programmers, and I know what a pain it is to deal with uneeded
complexities. I think in abstractions and my ideas are limited by
the lack of abstraction in computer software design, its why
I feel it could be better.. And though I would not be as good as you
at complex math, I am good at design logical associations and ideas
about interfacing. I am very good at seeing patterns in usage.
Sign up today for your Free E-mail at: http://www.canoe.ca/CanoeMail
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf