[FFmpeg-devel] Google Summer of Code participation
Vitor Sessak
vitor1001
Sat Mar 28 18:46:46 CET 2009
Thilo Borgmann wrote:
>
>
> Kostya schrieb:
>> On Sat, Mar 28, 2009 at 12:20:32PM +0100, Thilo Borgmann wrote:
>> [...]
>>
>>> no. 12: "16-bit Interplay Video Decoder"
>>> Sounds interesting and as there is a working 8-bit decoder, wich
>>> throws some errors if operating on the 16-bit demo file, there seems
>>> to be a good starting point. Unfortunately, the section about 16-bit
>>> opcodes is far from useful, if opcodes would have to be changed, this
>>> task becomes very difficult...
>>> http://wiki.multimedia.cx/index.php?title=Interplay_Video
>>>
>>> -> The suggestion in the wiki is to ask the development community
>>> (you!) about a good start-off with that problem. So I do: Anyone who
>>> can help on this? Anyone with more information about the 16-bit mode?
>>> (Already inspected the code here... sounds like altering the
>>> #define'd functions but how to know if it is 8-bit palette mode or
>>> 16-bit whatsoever mode?)
>>>
>>
>> I suppose, it's only Google who knows more about this format.
>> Maybe some container parameters should give demuxer a hint on whether
>> this
>> is 16-bit mode or not.
>>
>>
>>> no. 23: "CorePNG Decoder"
>>> Well, the descriptions sound quite easy, BUT the current svn version
>>> of ffmpeg (as well as my very old one) say that it "could not find
>>> codec parameters". Thus, I suppose there is no existing PNG1 decoder
>>> wich decodes RGB I-Frame video? Is there a PNG1 coded RGB I-Frame
>>> demo video? So this task seems to me like implementing a whole
>>> decoder on top of the png image decoder?
>>> http://samples.mplayerhq.hu/V-codecs/PNG1/
>>>
>>> -> Seems to be a not that difficult task but to have a complex
>>> start-off.
>>>
>>>
>>> Anyone has an idea about these?
>>>
>>
>> I've looked at it once. If you use PNG decoder for that frames you'll see
>> good picture for the first frame and many colourful dots on the
>> latter. That's
>> because its developer(s) decided to store latter frames as a
>> difference to
>> the key frame and you have to use demuxer keyframe flag to distinguish
>> between
>> both.
>>
>> Download http://samples.mplayerhq.hu/V-codecs/PNG1/corepng.avi
>> run
>> ffmpeg -i corepng.avi -f image2 -vcodec copy %04d.png
>> and see that for yourself.
>>
>> P.S. We of FFmpeg welcome creativity since it's not that rare when the
>> only
>> information about codec is located in libavcodec/*.c
>>
>
> Ok next problem arises. I'm currently trying to distinguish the I and P
> frames to be decoded.
> As you mentioned, I tried to check the keyframe flag, that comes from
> 'outside'.
> For that, I "av_log"ed the "key_frame" and "pict_type" attributes:
>
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> static int decode_frame(AVCodecContext *avctx,
> void *data, int *data_size,
> const uint8_t *buf, int buf_size)
> {
> PNGDecContext * const s = avctx->priv_data;
> AVFrame *picture = data;
> AVFrame * const p= &s->picture;
> #ifdef DEBUG
> av_log(avctx, AV_LOG_DEBUG, "data->key_frame: %i, data->pict_type: %d\n",
> picture->key_frame, picture->pict_type);
> av_log(avctx, AV_LOG_DEBUG, "s->picture->key_frame: %i,
> s->picture->pict_type: %d\n",
> p->key_frame, p->pict_type);
> #endif
> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> (source listing is highly mailing list dependent - tell me how you like
> it if this is a pain in your eyes)
>
> As these debug outputs are telling that every frame is a key frame,
> which most of them are not, the question is if I'm looking at the wrong
> attributes or if this information is not parsed at all?
There are three possibilities:
1- This information is coded somewhere in the AVI format (and thus it is
the work of the AVI demuxer to read it and set the parameters).
2- This information is in some reserved bits of the PNG stream (and so
it is in pngdec.c that it should be read).
3- This information is nowhere and the codec follow some stupid
convention like one frame every X are key-frames.
I suggest you to look in the available documentation/source code to know
where this information is supposed to be. I find (1) unlikely since
ffmpeg AVI demuxer is not so buggy, and it would set picture->key_frame
correctly...
-Vitor
More information about the ffmpeg-devel
mailing list