From insomnia@core.binghamton.edu Tue, 7 Dec 1999 20:32:51 -0500 (EST)
Date: Tue, 7 Dec 1999 20:32:51 -0500 (EST)
From: Stea Greene insomnia@core.binghamton.edu
Subject: [Livid-dev] LiVid status and future.

	About a year ago, I got involved in the loosely organized
development of ATI drivers, and found that despite my interest in the
low-level aspects of the project, what was really needed was someone to
basically coordinate the project full-time.  Once I decided to do that, I
believe GATOS turned out quite well (I made some mistakes, but that's what
we call a learning experience).
	I'm thinking that might be the exact situation I'm encountering
here.  We seem to have a lot of things going on at once, and no firm idea
of where we want to go.  Personally I see GATOS, LSDVD and LiVid merging -
at which point I'd like to keep doing what I am doing for the whole
project as opposed to GATOS alone.  There seems to be more than enough
knowledge and ability in this group.

	This is in no way meant as any offense to anyone here who is
trying to do this already.  Generally the biggest problem with
coordinating a project this large is the fact that the coordinator really
can't get into the details, and if he/she does, less time is spent on
coordination and things fall apart.

	Note: I'm not suggesting that I RUN the project, just coordinate
it.  I'd keep track of who is doing what, forward questions and bug
reports to whoever needs them (or maintain the bug tracker...), handle
documentation, tell people who want to help what they can do, etc....  I
wouldn't decide where the project is going, I'd just help everyone figure
it out and put things down in writing as we come to decisions.

	Is this what is needed?  Anyone have any comments/flames?

						--Insomnia (Stea Greene)

From pvolcko@concentric.net Tue, 7 Dec 1999 20:56:41 -0500 (EST)
Date: Tue, 7 Dec 1999 20:56:41 -0500 (EST)
From: pvolcko@concentric.net pvolcko@concentric.net
Subject: [Livid-dev] LiVid status and future.

> 	About a year ago, I got involved in the loosely organized
> development of ATI drivers, and found that despite my interest in the
> low-level aspects of the project, what was really needed was someone to
> basically coordinate the project full-time.  Once I decided to do that, I
> believe GATOS turned out quite well (I made some mistakes, but that's what
> we call a learning experience).
> 	I'm thinking that might be the exact situation I'm encountering
> here.  We seem to have a lot of things going on at once, and no firm idea
> of where we want to go.  Personally I see GATOS, LSDVD and LiVid merging -
> at which point I'd like to keep doing what I am doing for the whole
> project as opposed to GATOS alone.  There seems to be more than enough
> knowledge and ability in this group.
> 
> 	This is in no way meant as any offense to anyone here who is
> trying to do this already.  Generally the biggest problem with
> coordinating a project this large is the fact that the coordinator really
> can't get into the details, and if he/she does, less time is spent on
> coordination and things fall apart.
> 
> 	Note: I'm not suggesting that I RUN the project, just coordinate
> it.  I'd keep track of who is doing what, forward questions and bug
> reports to whoever needs them (or maintain the bug tracker...), handle
> documentation, tell people who want to help what they can do, etc....  I
> wouldn't decide where the project is going, I'd just help everyone figure
> it out and put things down in writing as we come to decisions.
> 
> 	Is this what is needed?  Anyone have any comments/flames?
> 
> 						--Insomnia (Stea Greene)

I'm not so sure I see the projects merging so much as I see them providing
different parts to the larger puzzle.  

Livid will probably end up providing CSS, Matrox drivers, and a open sourced
navigation implementation, as well as mpeg-2 and ac-3 decoding in
software.  That is a lot of stuff and I'm not so sure it can all really be
considered part of livid, but we'll look at it as such for now.

I'm not familiar with GATOS, have to read up, any links to important
information would be appreciated. (or even an email detailing the goals)

LSDVD started out wanting to release everything open source, but quickly found
out we couldn't without legal hassles (mainly because most to the members have
seen the specs and thus have tarnished our ability to help in the livid
pursuits to any great degree).  Then we looked into incorporating and trying
to release something under a business situation.  No dice so far on that.  So
now we are going to concentrate more on the framework stuff and integrating
all the parts together.  We're also going to be working on a Nav
implementation that will probably never be seen except in demos or
something.  We've also been planning on doing a mpeg-2 decoder for a while,
but depending on the quality of the next crop to come out from Nathan laredo
(sorry if I misspelled that) and Aaron, we may forgo that.

So I don't really see things merging so much as just working together (as
seperate entities) to meet a common goal (hopefully that of the framework).  
There will be need for some top level guidance as this is a largish
undertaking.

I'll leave it there and see what gets said from here.  :)

Flame on!
Paul Volcko
LSDVD

From aholtzma@ess4.engr.UVic.CA Tue, 7 Dec 1999 18:09:12 -0800
Date: Tue, 7 Dec 1999 18:09:12 -0800
From: Aaron Holtzman aholtzma@ess4.engr.UVic.CA
Subject: [Livid-dev] LiVid status and future.

It would seem that Stea Greene (insomnia@core.binghamton.edu) said:
*snip*
> 	Note: I'm not suggesting that I RUN the project, just coordinate
> it.  I'd keep track of who is doing what, forward questions and bug
> reports to whoever needs them (or maintain the bug tracker...), handle
> documentation, tell people who want to help what they can do, etc....  I
> wouldn't decide where the project is going, I'd just help everyone figure
> it out and put things down in writing as we come to decisions.
> 
> 	Is this what is needed?  Anyone have any comments/flames?

No one is going to complain if you volunteer to do a bunch of tedious
work :)  The question is what is the "goal" of the livid-dev mailing
list?  I think the goal for most is a functional DVD player, whether
it be hardware or software. The road there is a long one though, and
we just pulled onto the on ramp.

I think it's dangerous to wander down the path of the uber-media
player. Quite a few people have tried, and quite a few have been
bogged down in "stuff". We don't need anymore distractions. If
there are people interested in doing such a thing, the ethereal
dvd_player app should be modular enough to pick out the parts you
want and run with them.

The lack of perceived goal or organization is also due to the
fact that a lot of the architectural discussions tend to happen
off list. There are also a lot of things still left up in the air,
because I think we lack the skills to make the right decision
until we've played around with working code a bit. What's the
point of defining an API until you fully understand the issues?

Anyways, here are the deliverables needed to integrate a fully 
functional dvd player application:

1. software MPEG-2 video codec
2. software AC3 audio codec
3. subpicture decoding module
4. ifo parsing module
5. css module
6. demux/buffer module
6. navigation module

Now whether these boxes are best hooked up via threads, callbacks,
sockets, or duct tape is irrelevant right now because we
don't even have the parts yet. Most of the parts are only about
%20-%30 done with the exception of #2.

Alright, it's action item time :)  What we need is a list of
TODOs for each module on the webpage. That way interested hackers
can find out what needs doing without having to read three months
of list archives.

Alright, I'll shut up now.

cheers,
aaron

From insomnia@core.binghamton.edu Tue, 7 Dec 1999 22:08:09 -0500 (EST)
Date: Tue, 7 Dec 1999 22:08:09 -0500 (EST)
From: Stea Greene insomnia@core.binghamton.edu
Subject: [Livid-dev] LiVid status and future.

On Tue, 7 Dec 1999 pvolcko@concentric.net wrote:

> I'm not so sure I see the projects merging so much as I see them providing
> different parts to the larger puzzle.  
> 
	Exactly, this is what I meant by merging.

> Livid will probably end up providing CSS, Matrox drivers, and a open sourced
> navigation implementation, as well as mpeg-2 and ac-3 decoding in
> software.  That is a lot of stuff and I'm not so sure it can all really be
> considered part of livid, but we'll look at it as such for now.
> 
	I think we should first decide how to modularize it, than split up
the work to whoever wants it and go from there.

> I'm not familiar with GATOS, have to read up, any links to important
> information would be appreciated. (or even an email detailing the goals)
> 
	http://www.core.binghamton.edu/~insomnia/gatos

	It's GPL'ed ATI-TV for unix.

> LSDVD started out wanting to release everything open source, but
> quickly found out we couldn't without legal hassles (mainly because
> most to the members have seen the specs and thus have tarnished our
> ability to help in the livid pursuits to any great degree).  Then we
> looked into incorporating and trying to release something under a
> business situation.  No dice so far on that.  So now we are going to
> concentrate more on the framework stuff and integrating all the parts
> together.  We're also going to be working on a Nav implementation that
> will probably never be seen except in demos or something.  We've also
> been planning on doing a mpeg-2 decoder for a while, but depending on
> the quality of the next crop to come out from Nathan laredo (sorry if
> I misspelled that) and Aaron, we may forgo that.
> 
	Well, I think with the tools LiVid has on CVS now (do any of them
have such legal issues?) we can still pull off a free solution, except for
a few proprietary codecs.  It'd be really cool if we could utilize xanim
modules....

> So I don't really see things merging so much as just working together (as
> seperate entities) to meet a common goal (hopefully that of the framework).  
> There will be need for some top level guidance as this is a largish
> undertaking.
> 
	Exactly.  I think the main thing I'd be doing is keeping track of
the design of the framework.

> I'll leave it there and see what gets said from here.  :)
> 
	I'm interested as well, let's hear it!
						--Insomnia (Stea Greene)

From insomnia@core.binghamton.edu Tue, 7 Dec 1999 22:14:13 -0500 (EST)
Date: Tue, 7 Dec 1999 22:14:13 -0500 (EST)
From: Stea Greene insomnia@core.binghamton.edu
Subject: [Livid-dev] LiVid status and future.

On Tue, 7 Dec 1999, Aaron Holtzman wrote:

> No one is going to complain if you volunteer to do a bunch of tedious
> work :)
> 
	That's what I figured.

> The question is what is the "goal" of the livid-dev mailing list?
> 
	Yes, it is.

> I think the goal for most is a functional DVD player, whether it be
> hardware or software. The road there is a long one though, and we just
> pulled onto the on ramp.
> 
	True.  I think that this goal will be only slightly hampered by a
certain standard modularization, while other groups with other goals can
use what we end up with to help with their goals.

> I think it's dangerous to wander down the path of the uber-media
> player. Quite a few people have tried, and quite a few have been
> bogged down in "stuff". We don't need anymore distractions.
> 
	These distractions would all be my job to take care of.  Those
interested in DVD need only concern themselves with the relevant parts,
except when working on interfacing issues.

> If there are people interested in doing such a thing, the ethereal
> dvd_player app should be modular enough to pick out the parts you want
> and run with them.
> 
	I agree.

> The lack of perceived goal or organization is also due to the fact
> that a lot of the architectural discussions tend to happen off list.
> There are also a lot of things still left up in the air, because I
> think we lack the skills to make the right decision until we've played
> around with working code a bit. What's the point of defining an API
> until you fully understand the issues?
> 
	True.  One thing I learned from GATOS is that we have to be
willing to screw with the API until we really know all about what we are
doing, THEN you work on standardizing it.  BUT!  It is important to keep
things modular and simple on the way in, even if it slightly hampers
performance of the temporary products.

> Anyways, here are the deliverables needed to integrate a fully 
> functional dvd player application:
> 
> 1. software MPEG-2 video codec
> 2. software AC3 audio codec
> 3. subpicture decoding module
> 4. ifo parsing module
> 5. css module
> 6. demux/buffer module
> 6. navigation module
> 
> Now whether these boxes are best hooked up via threads, callbacks,
> sockets, or duct tape is irrelevant right now because we
> don't even have the parts yet. Most of the parts are only about
> %20-%30 done with the exception of #2.
> 
	Cool.  What I am saying is we should define how we want them to
work together, THEN we can individually work on each part and we won't
have to worry about the other pieces.

> Alright, it's action item time :)  What we need is a list of
> TODOs for each module on the webpage. That way interested hackers
> can find out what needs doing without having to read three months
> of list archives.
> 
	That's (one of the things) I want to collect and keep track of.

						--Insomnia (Stea Greene)

From aholtzma@ess4.engr.UVic.CA Tue, 7 Dec 1999 19:26:38 -0800
Date: Tue, 7 Dec 1999 19:26:38 -0800
From: Aaron Holtzman aholtzma@ess4.engr.UVic.CA
Subject: [Livid-dev] LiVid status and future.

It would seem that Stea Greene (insomnia@core.binghamton.edu) said:
> 	These distractions would all be my job to take care of.  Those
> interested in DVD need only concern themselves with the relevant parts,
> except when working on interfacing issues.

I think you underestimate how much effort it is to design the
uber media player, and how orthogonal it is to producing a dvd player.
 
> 	Cool.  What I am saying is we should define how we want them to
> work together, THEN we can individually work on each part and we won't
> have to worry about the other pieces.

But my point is we don't know how we want the pieces to work together
precisely. We know in general terms, but until we can put them
in a bag and shake them, we're guessing.
 
> 	That's (one of the things) I want to collect and keep track of.

Cool. You can start with the TODO list in the mpeg2dec README :)

cheers,
aaron

From scarabaeus@convergence.de Wed, 08 Dec 1999 12:52:04 +0100
Date: Wed, 08 Dec 1999 12:52:04 +0100
From: Christian Wolff scarabaeus@convergence.de
Subject: [Livid-dev] LiVid status and future.

Aaron Holtzman wrote:
> I think it's dangerous to wander down the path of the uber-media
> player. Quite a few people have tried, and quite a few have been
> bogged down in "stuff". We don't need anymore distractions. If
> there are people interested in doing such a thing, the ethereal
> dvd_player app should be modular enough to pick out the parts you
> want and run with them.

Agree. We should build an architecture, that allows the playback of
DVD's and other MPEG streams, but not much more.

> Anyways, here are the deliverables needed to integrate a fully
> functional dvd player application:
> =

> 1. software MPEG-2 video codec
> 2. software AC3 audio codec
> 3. subpicture decoding module
> 4. ifo parsing module
> 5. css module
> 6. demux/buffer module
> 6. navigation module

OK, here's my attempt:

+--------------------------------+
| Media access to Disc or Files  | (translates files to
+--------------------------------+ blocks, if neccessary)
               |
+--------------------------------+     +--------------+
| Navigator and IFO parser       |<----| User action  |
| (and demux for BB,BF: PCI/DSI) |     | and GUI      |
+--------------------------------+     +--------------+
        |               |       |
+---------------+ +-----------+ |
| Stream demux  | | CSS auth. | |
+---------------+ +-----------+ |
  |   |   |   |         |       | Decoder control
+---------------+       |       |
| CSS decode    |<------+       |
+---------------+               V
  |   |   |   |E0 +--------------------+   +---------+
  |   |   |   +-->| MPEG video decoder |-->| Display |
  |   |   |       +--------------------+ | +---------+
  |   |   | BD    +--------------------+ |
  |   |   +-------| SPU decoder        |-+
  |   |  C0-C7    +--------------------+
  |   |  D0-D7    +--------------------+   +-------+
  |   +-----------| MPEG audio decoder |-->| Sound |
  |               +--------------------+ | +-------+
  | BD            +--------------------+ |
  +---------------| AC3/LPCM decoder   |-+
                  +--------------------+

Voil=E1! The 2 digit hex numbers are the startcodes of the resp. streams.=


> Now whether these boxes are best hooked up via threads, callbacks,
> sockets, or duct tape is irrelevant right now because we
> don't even have the parts yet. Most of the parts are only about
> %20-%30 done with the exception of #2.

Yep! We have a bunch of definitions (API's and Standards), but we need
to agree to an overall framework. Only then we can keep the parts
interchangable, like using a software instead of hardware MPEG decoder.
I already did a great deal on some parts of this framework (usual URL, ht=
tp://linuxtv.org/dvd/).

> Alright, it's action item time :)  What we need is a list of
> TODOs for each module on the webpage. That way interested hackers
> can find out what needs doing without having to read three months
> of list archives.

Not to forget the interfaces between the modules.
So, can we all agree on one concept here?

-- =

Christian Wolff     *196807101035    53=B08'2" N    8=B013'20" E
http://www.scarabaeus.org/  mailto:scarabaeus@scarabaeus.org
check out http://betalounge.com/   http://www.convergence.de
+49-30-4473 6926,  Norwegerstr. 5.1, D-10439 Berlin, Germany
PGP Fingerprint:B871 358C 3F10 A5ED C41C B1DB B9F9 3C44/2048

From adq@tardis.ed.ac.uk Wed, 8 Dec 1999 13:40:25 GMT
Date: Wed, 8 Dec 1999 13:40:25 GMT
From: Andrew De Quincey adq@tardis.ed.ac.uk
Subject: Re[2]: [Livid-dev] LiVid status and future.

[snip]


CW> +--------------------------------+
CW> | Media access to Disc or Files  | (translates files to
CW> +--------------------------------+ blocks, if neccessary)
CW>                |
CW> +--------------------------------+     +--------------+
CW> | Navigator and IFO parser       |<----| User action  |
CW> | (and demux for BB,BF: PCI/DSI) |     | and GUI      |
CW> +--------------------------------+     +--------------+
CW>         |               |       |
CW> +---------------+ +-----------+ |
CW> | Stream demux  | | CSS auth. | |
CW> +---------------+ +-----------+ |
CW>   |   |   |   |         |       | Decoder control
CW> +---------------+       |       |
CW> | CSS decode    |<------+       |
CW> +---------------+               V
CW>   |   |   |   |E0 +--------------------+   +---------+
CW>   |   |   |   +-->| MPEG video decoder |-->| Display |
CW>   |   |   |       +--------------------+ | +---------+
CW>   |   |   | BD    +--------------------+ |
CW>   |   |   +-------| SPU decoder        |-+
CW>   |   |  C0-C7    +--------------------+
CW>   |   |  D0-D7    +--------------------+   +-------+
CW>   |   +-----------| MPEG audio decoder |-->| Sound |
CW>   |               +--------------------+ | +-------+
CW>   | BD            +--------------------+ |
CW>   +---------------| AC3/LPCM decoder   |-+
CW>                   +--------------------+

Just to make sure, I take it the Navigator and IFO parser's interface
would be flexible enough to allow it to be plugged on to different
MPEG decoding systems (e.g. hardware cards which do all the VOB
demux/CSS for you)

Remember that different cards/software players would need some
card-specific initalisation, and also need some small GUI interfaces
for configuring specific parameters... You could have an architecture
which allowed these device specific modules to be loaded dynamically
quite easily, so people don't have to hack about with the core sources
to everything just to support a new card.

Another thing is that a card might not do AC-3 decoding onboard, but
could output AC-3 through an SP-DIF, or even have an analogue output
for AC-3 which has been decoded and downmixed to 2-channel stereo
by the CPU. All the lower level modules would have to be very flexible
to allow this sort of thing.

Again, with CSS, you might get some cards which only decode certain
streams, but which can do CSS onboard for those streams as well.. It
would be a waste to do the CSS in software for these, when they can do
it themselves.



--
adq

From scarabaeus@convergence.de Wed, 08 Dec 1999 18:16:34 +0100
Date: Wed, 08 Dec 1999 18:16:34 +0100
From: Christian Wolff scarabaeus@convergence.de
Subject: [Livid-dev] Overall Framework

This is a multi-part message in MIME format.
--------------715FF1EC58CB743EC4751F5B
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

So, here i start with a little outline of the current work from
convergence's side.

Andrew De Quincey wrote:
> Just to make sure, I take it the Navigator and IFO parser's interface
> would be flexible enough to allow it to be plugged on to different
> MPEG decoding systems (e.g. hardware cards which do all the VOB
> demux/CSS for you)
sure.

> Remember that different cards/software players would need some
> card-specific initalisation, and also need some small GUI interfaces
> for configuring specific parameters... You could have an architecture
> which allowed these device specific modules to be loaded dynamically
> quite easily, so people don't have to hack about with the core sources
> to everything just to support a new card.

Tricky. That's stuff, that doesn't belong in the DVDNavigator API. It
should rather be 2 separate API's from the GUI to the decoders and the
display/audio, right? Even though i doubt we need extra control to the
decoders, so only the GUI-to-display-control is relevant. I included it
in the diagram now.

The GUI-to-audio-control will basically be level control, right?

The GUI-to-display-control depends on the kind of display, either window
position and size for X-Windows, or brightness, contrast etc. for a
CVBS-output. Anything else?

> Another thing is that a card might not do AC-3 decoding onboard, but
> could output AC-3 through an SP-DIF, or even have an analogue output
> for AC-3 which has been decoded and downmixed to 2-channel stereo
> by the CPU. All the lower level modules would have to be very flexible
> to allow this sort of thing.

Yes, my DecoderAPI lacks capability query support, still. I'll include
that as soon as possible.

> Again, with CSS, you might get some cards which only decode certain
> streams, but which can do CSS onboard for those streams as well.. It
> would be a waste to do the CSS in software for these, when they can do
> it themselves.

Yes, i took that into account here. For hardware CSS, everything below
the Navigator/GUI would be in the card and not separately available.
That's how it works with the LSI 64021 chip i'm developing on. I have no
information on the new sigma chipset, yet. It should be on a similar leve=
l.


+--------------------------------+
| Media access to Disc or Files  | (translates files to
+--------------------------------+ blocks, if necessary)
              |
+--------------------------------+     +--------------+
| DVD Navigator and IFO parser   |<----| User action  |
| (and demux for BB,BF: PCI/DSI) |     | and GUI      |
+--------------------------------+     +--------------+
        |               |       |         |    |
+---------------+ +-----------+ |         |    |
| Stream demux  | | CSS auth. | +---------+    | display
+---------------+ +-----------+ |              | and sound
  |   |   |   |         |       | Decoder      | control
+---------------+       |       | control      |
| CSS decode    |<------+       |              |
+---------------+               V              V
  |   |   |   |E0 +--------------------+   +---------+
  |   |   |   +-->| MPEG video decoder |-->| Display |
  |   |   |       +--------------------+ | +---------+
  |   |   | BD    +--------------------+ |
  |   |   +-------| SPU decoder        |-+
  |   |  C0-C7    +--------------------+
  |   |  D0-D7    +--------------------+   +-------+
  |   +-----------| MPEG audio decoder |-->| Sound |
  |               +--------------------+ | +-------+
  | BD            +--------------------+ |
  +---------------| AC3/LPCM decoder   |-+
                  +--------------------+

OK, status on the modules from my side so far:

The media access module i've already published. =

http://linuxtv.org/dvd/#software
It allows the access to a DVD without mounting it into the file system
(this allows CSS, too), or access to a UDF-mounted DVD, or to a full
VIDEO_TS directory copied onto another file system.

The DVD-Navigator is basically finished, but i can't say anything about
a release date, yet. Company internals... Anyhow, we will NOT be able to
release source code due to the NDA of the DVD Forum. We will have to
release it as a linkable object file. Sigh.

The GUI is something where a lot of work can be done by excited
programmers. ;-) It is basically a "skin" for the DVD Navigator. My
version i use for debugging is a rather dull text console interface,
since i'm editing my files in bb-edit and do everything on the unix box
in a shell from mac-os. I'm too embarrassed to publish that piece of
"work" of mine. The API used is the "LinuxDVDPlayerNavigatorAPI" (or
somethin' like that) as published here:
http://linuxtv.org/dvd/api/DVDPlayerAPI.h

Decoder/DeMux/CSS: All this is done in hardware by our convergence card.
I made a little wrapper, that basically calls the relevant ioctls of the
decoder card's device driver. (see
http://linuxtv.org/dvd/api/cvdvtypes.h) This is, i think, a good
interface for accessing the rest of the decoding process from the
DVD-Navigator. I have some minor clean-ups to do, and then i will relase
the source. Instead of the decoder card you can hook up software CSS and
other MPEG/AC3-decoders into that header file.

Attached is the preliminary header file of my decoder wrapper.

I don't have an overview of the current software decoder development,
maybe someone can enlighten us?

  Christian.

-- =

Christian Wolff     *196807101035    53=B08'2" N    8=B013'20" E
http://www.scarabaeus.org/  mailto:scarabaeus@scarabaeus.org
check out http://betalounge.com/   http://www.convergence.de
+49-30-4473 6926,  Norwegerstr. 5.1, D-10439 Berlin, Germany
PGP Fingerprint:B871 358C 3F10 A5ED C41C B1DB B9F9 3C44/2048

dvd_decoder.h


From aholtzma@ess4.engr.UVic.CA Wed, 8 Dec 1999 11:04:15 -0800
Date: Wed, 8 Dec 1999 11:04:15 -0800
From: Aaron Holtzman aholtzma@ess4.engr.UVic.CA
Subject: [Livid-dev] Overall Framework

It would seem that Christian Wolff (scarabaeus@convergence.de) said:
> I don't have an overview of the current software decoder development,
> maybe someone can enlighten us?
> 

ac3dec status
- pretty much feature complete.
- undergoing work to librarify it and conseqently add
  codec interface.

mpeg2dec status
- I-frame pictures work alright-ish.
- needs motion compensation and field picture work.
- needs assembly optimization for idct and motion compensation
  (could probably be brought over from nist after de-nasming)
- also undergoing work to librarify

The only codec interface that we have defined so far, is that
the application registers a callaback that sets pointers to
new data for the codec to process.

eg. callback for a application simply reading a file from disk.

uint_32 buf[2048/4];
void fill_buffer(uint_32 **start,uint_32 **end)
{
	uint_32 words_read;

	words_read = fread(buf,4,2048/4,in_file);

	*start = buf;
	*end= buf + words_read;
}

Obviously we'll need some kind of synchronization if we
have concurrent demux/decode threads.

I can see integrating both codecs into the dvd_play framework
in the next week or so. We can then play around with the
synchronzation interface.

cheers,
aaron

From pvolcko@concentric.net Wed, 8 Dec 1999 17:42:29 -0500 (EST)
Date: Wed, 8 Dec 1999 17:42:29 -0500 (EST)
From: pvolcko@concentric.net pvolcko@concentric.net
Subject: [Livid-dev] Overall Framework

> The only codec interface that we have defined so far, is that
> the application registers a callaback that sets pointers to
> new data for the codec to process.
> 
> eg. callback for a application simply reading a file from disk.
> 
> uint_32 buf[2048/4];
> void fill_buffer(uint_32 **start,uint_32 **end)
> {
> 	uint_32 words_read;
> 
> 	words_read = fread(buf,4,2048/4,in_file);
> 
> 	*start = buf;
> 	*end= buf + words_read;
> }
> 
> Obviously we'll need some kind of synchronization if we
> have concurrent demux/decode threads.
> 
> I can see integrating both codecs into the dvd_play framework
> in the next week or so. We can then play around with the
> synchronzation interface.

I agree 100% that the buffers should be their own entities so to speak, that
monitor themselves and ask for filling data.  But the other side of the buffer
is also important to define.  For instance, how is the data going to be
reported as used by the consumer?  

Needed functions:
- Register Supplier Feed Function
- Register Consumer Eat Function
- Initialize Buffer
- Resize Buffer
- Report Buffer Level
- Flush Buffer
- Kill Buffer


As far as syncing goes am I correct in thinking that that is handled at the
decoder level and not at the buffer level (or perhaps at the decoder
buffer, which is different than the buffers described above)?  If so, what is
the way that syncing is handled generally?  The way I see it there are two
real solutions:

1) Stop the decoder that is getting ahead of the other until both are at the
same frame, within a tolerance of X frames.  No one decoder has priority over
the others.
2) Define the decoders to have priority levels, the top level decoder defines
the "frame" to be decoded by all others, thus forcing them to either stop and
wait (if they are ahead) or request a buffer flush until the next cell (if
they are behind).  Again, within a definable frame threshhold.

How is syncing being done now?  In NIST?  Is it any good (I haven't had a
chance to test it yet).

Paul Volcko
LSDVD

From aholtzma@ess4.engr.UVic.CA Wed, 8 Dec 1999 15:01:07 -0800
Date: Wed, 8 Dec 1999 15:01:07 -0800
From: Aaron Holtzman aholtzma@ess4.engr.UVic.CA
Subject: [Livid-dev] Overall Framework

It would seem that pvolcko@concentric.net (pvolcko@concentric.net) said:
> I agree 100% that the buffers should be their own entities so to speak, that
> monitor themselves and ask for filling data.  But the other side of the buffer
> is also important to define.  For instance, how is the data going to be
> reported as used by the consumer?  

Whoa there. We don't care what the codec does with the data. Maybe
I chose a confusing function name. It should have been 
point_the_codec_at_some_new_data(...). Once the codec asks for more
data, it's done with the current data.
 
> Needed functions:
> - Register Supplier Feed Function
> - Register Consumer Eat Function
> - Initialize Buffer
> - Resize Buffer
> - Report Buffer Level
> - Flush Buffer
> - Kill Buffer
 
This is all part of the buffer implementation and how it's used
by the "core". This also looks slightly more complicated than our
needs.
 
> As far as syncing goes am I correct in thinking that that is handled at the
> decoder level and not at the buffer level (or perhaps at the decoder
> buffer, which is different than the buffers described above)?  If so, what is
> the way that syncing is handled generally?  The way I see it there are two
> real solutions:

Sync is handled by the "core" (being the demux/buffer module). Codecs
know nothing about sync, other than decoding the frame nearest the
one requested.
 
cheers,
aaron

From andreas@andreas.org 08 Dec 1999 17:13:29 -0500
Date: 08 Dec 1999 17:13:29 -0500
From: Andreas Bogk andreas@andreas.org
Subject: [Livid-dev] LiVid status and future.

Stea Greene < insomnia@core.binghamton.edu> writes:

> 	Well, I think with the tools LiVid has on CVS now (do any of them
> have such legal issues?) we can still pull off a free solution, except for

The whole project is riddled with legal issues, unfortunately. We can
only hope for the industry being interested in people buying more
DVDs, rather than throwing stones into our direction.

MPEG and AC3 decoder licensing fees are only one issue. 

Andreas

-- 
"We should be willing to look at the source code we produce not as the
end product of a more interesting process, but as an artifact in its
own right. It should look good stuck up on the wall."
 -- http://www.ftech.net/~honeyg/progstone/progstone.html