[XviD-devel] API changes request from MPEG4IP
Edouard Gomez
ed.gomez at free.fr
Sun Oct 12 00:03:57 CEST 2003
Edouard Gomez (ed.gomez at free.fr) wrote:
> 1) - need to be able to disable all VOL headers in the stream. This is
> fairly simple to do - probably add a flag.
Yes a flag would be enough. But just for curiosity, why don't you want
VOL headers ? I know we repeat them each IFrame, so first i though you
wanted just a VOL for a complete stream, but then i've read you request
again, and realized you wanted _no_ VOL_ header. This surprises me a
bit as it makes XviD non standard compliant.
> 2) - need to get the reconstructed YUV image back after encoding a
> frame. I'd like to know what you think the best way to return
> this.
I don't know what branch you use for MPEG4IP, but perhaps a small
reminder might be necessary for you.
0.9.x series are simple profile encoders/decoders. They've been
developed on HEAD for 0.9.0 and 0.9.1. During this time, an Advanced
Simple Profile version of XviD was developed in the dev-api-3 branch.
At 0.9.1 release we decided to use another development scheme where HEAD
would be unstable and branches stable or "higly unstable" (aka feature
branches). So we merged dev-api-3 back to HEAD, and 0.9.x tree on
release-0.9.1-fixes.
Following this new scheme, we created dev-api-4 branch to prepare a new
API for xvid 1.0.x series. As the work on dev-api-4 is near completion,
we now have this CVS situation:
- release-0.9.[012] tags marking each SP release.
- dev-api-3: abandoned branch
- HEAD: continuation of devapi3 (contains fixes, improvements until
eary august). Since early august, HEAD is inactive and
waiting for a merging from dev-api-4 to prepare xvid 1.0.
- dev-api-4: active, future base of xvid 1.0
This picture of the xvid CVS was necessary to make possible you choose
the right version for MPEG4IP. It was also needed because the answer
differs depending on what branch you base MPEG4IP.
Let's paste again your question:
> 2) - need to get the reconstructed YUV image back after encoding a
> frame. I'd like to know what you think the best way to return
> this.
For HEAD:
There is nice API to make this possible. However, i think all the
needed code parts are in place to retrieve the reconstructed image
after the MC+fDCT+iDCT+MC. Look at the sOriginal field IMAGEs of the
Encoder structure.
For dev-api-4:
You can use the plugin API and request the core to give you access to
internal buffers with REQORIG etc etc. There is no documentation yet
about plugins but you can have a look at them reading the sources of
our rate controllers, lumimasking plugins.
> I'm current using XVID_CSP_USER to pass in the data - perhaps
> just overwriting the data there ?
That could be a solution for HEAD, but it makes your XviD usage fairly
"nont the usual way". This was not a problem when you had your own fork
of XviD but now you try to use client libs as they are on the
system... it would be difficult to modify HEAD behavior after being used
by other project in a complete different way that you propose. It may
impact others.
So as a conclusion for this exact problem:
Knowing that HEAD is dead, that xvid 1.0 will be based on dev-api-4, i
think the best solution is to use dev-api-4 as a base version for
MPEG4IP.
But, at the moment we can't garuantee you an external stable API. There
are still some changes required. Perhaps they'll be part of XviD 1.0, or
pending for future releases.
> I'm also contemplating adding small option menus to mp4live that will
> allow differing options - I'd like to know what opinions as to what
> different options make sense.
That's a recurrent problem, the more the MPEG4 encoders are mature, the
more options they offer.
But from the MPEG4IP POV, it would make sense to first give access at
profile options to allow easy interoperability, easy feedback from
users trying to create content for embedded devices.
Then, in a second step you could give access to parameters impacting
on the chosen profile:
- 4mv
- Qpel
- GMC
- Usage of bframes and how many...
And in a last step, all options impacting the content creator usage of
MPEG4IP from a speed/quality of content POV:
- Motion estimation Level 0..6 (no ME to Very High Quality)
- RD based ME 0..4 (called VHQ)
These two options could even be put together in order to cimplify
users' life.
You can have a look at the transcode frontend for the xvid4 export
module. This frontend does not follow the advices i gave you, but at
least it presents you the options XviD presents to users on Win32 and
transcode/mencoder:
http://ed.gomez.free.fr/vrac/xvidconf/
Sorry i don't have the url of the upstream project, you can browse the
transcode ML archives on gmane to find it.
--
Edouard Gomez
More information about the XviD-devel
mailing list