On Thu, 18 Feb 2016 20:41:29 +0100
Gerion Entrup <gerion.entrup.ff...@flump.de> wrote:

> On Donnerstag, 18. Februar 2016 20:10:47 CET wm4 wrote:
> > On Thu, 18 Feb 2016 18:27:45 +0100
> > Gerion Entrup <gerion.entrup.ff...@flump.de> wrote:
> >   
> > > Good day,
> > > 
> > > I'm a master student and long term FFmpeg-user. I want to participate in  
> > >  
> the GSoC 2016 for FFmpeg. The reason, I write this, is that I want to suggest 
> some own ideas. It could be, that some of the mentioned things are wrong 
> (because FFmpeg could do this already or it it much more difficult than I 
> think). Please correct me if so.
> > > I'm excited to hear, what do you think about this ideas, if you think,   
> they are suitable for GSoC and if you maybe are willing to mentor some of 
> this.
> > > 
> > > 1. *disc support
> > > 
> > > What current FFmpeg could do:
> > > - Bluray support through protocol support with prefix "bluray:" and   
> libbluray. The implemention is some kind of limited. There is missing chapter 
> support. The "main movie" selection is simply the longest one. Menus are not 
> supported. Afaik no metadata are transfered.
> > > - CD support through libavdevice and libcdio. Last time I tried it, it   
> only works under some strange circumstances (I have to set the parameter "-ss 
> 0"). I don't know if it is fixed right now. It recognizes a CD as one track 
> with multiple chapters. Afaik CD-Text is not supported.
> > > - No DVD support at all. I saw, that Stefano ones write a patch [1]   
> (protocol and libdvdnav based), which seems to work in principal, but was 
> probably not ready to merge.
> > > 
> > > Goal:
> > > - Implement an uniform solution for *disc support, that also support   
> metadata.
> > > - Maybe (?): Add some kind of Menu Support, FFmpeg is not made for this   
> atm, I think. Not sure how difficult it is.
> > > - Maybe (?): Try to change something on libdvdnav/libdvdread to make it   
> more consistent (to libbluray ?). Similar idea from Flameeyes [2].
> > 
> > Hm, I'm not sure if that's even possible in a reasonable way. Full
> > DVD/Bluray support requires menus, which are hard to get right, and
> > which would require non-trivial interactions between applications and
> > libavformat.
> > 
> > Improving support for merely transcoding a DVD to a file might be not
> > so hard and potentially a good idea, though.
> >   
> > > Qualification task:
> > > - Maybe (?): Add chapter support for the current Bluray implementation   
> (get the chapters out of libbluray is fairly simple, I'm not sure how 
> difficult 
> it is to get them into the stream).
> > 
> > This sounds like a hard design issue: currently bluray is implemented
> > as avio protocol, which can not pass things like chapters to the higher
> > level (demuxer). This would require coming up with a mechanism for
> > transferring this metadata, which sounds hard. Just reading the bluray
> > chapters should indeed be simple.  
> Just reading the chapters and print them is too simple to be a qualification 
> task.

Indeed.

By the way, your mail client is making it very hard to distinguish
quoted text from your replies. It doesn't add a ">" on the next line
when line-breaking the quoted text.

> 
> >   
> > > Comments:
> > > - I would try to orientate on VLC, mplayer and mpv implementation.
> > > - libdvdread/nav seem to do much less than libbluray, so the main work   
> would be the dvd support, I guess.
> > > - All kinds of discs normally contains more than one track. My idea for a 
> > >   
> solution would be, that ffmpeg recognize the disc as multiinput and choose 
> the 
> mainmovie as default.
> > > 
> > > 
> > > 2. treelike metadata
> > > 
> > > What current FFmpeg could do:
> > > - Metadata is always an AVDictionary (string based afaik).
> > > - Some metadata systems like the one of Matroska use a treelike structure 
> > >   
> (xml in mkv), so you can specify the charatername given an actor or define 
> more 
> than on actor, see example at the end of the mail.
> > > 
> > > Goal:
> > > Rewrite the FFmpeg metadata system, to support extended tags. In Detail:
> > > - Support for more than one value per key.
> > > - Support for more key/value pairs as value.
> > > 
> > > Qualification task:
> > > No idea.
> > > 
> > > Comments:
> > > Not sure, if this task is GSoC suitable.
> > >   
> > 
> > Includes API design, which is better avoided for a gsoc. I'm also not
> > sure if we really need such metadata, but I guess this is debatable.
> >   
> > > 
> > > 3. Vector graphic support
> > > 
> > > What current FFmpeg could do:
> > > - No support at all, afaik.
> > > 
> > > Goal:
> > > - Extend FFmpeg to support vector graphics (without converting to pixel   
> graphics).
> > > - Write an SVG decoder for this.
> > > - Write an vector to pixel image converter/filter.
> > >   
> > 
> > That sounds not only very hard, but also very out of scope for ffmpeg.
> > The problem with SVG is that nothing seems to support it correctly  
> :)

It's the truth. Support for standard SVG features is very inconsistent.

> > and
> > entirely, so it's a good way to get hurt.  
> Ok, thank you for the evaluation.
> 
> >   
> > > Qualification task:
> > > No idea.
> > > 
> > > Comments:
> > > I think, this could be a very hard task. Could you comment, whether you   
> find this suitable? I have no experience with SVG. Maybe it could be based on 
> cairo.
> > > 
> > > 
> > > 4. Usable analyse filter output for programs
> > > Not sure, if this is a real problem at all. Not sure if this is suitable  
> > >  
> for GSoC at all.
> > > 
> > > What current FFmpeg could do:
> > > - Receive (multiple) streams in filter and write back other streams.
> > > - The problem I see here, is that the output of analyse filters is hard 
> > > to   
> process (needs some kind of subprocess and extended usage of grep/sed).
> > >     Examples: All filters that analyse some thing and then "print" it to  
> > >  
> stdout, like cropdetect, volumedetect, blackframe, .... Some (not implemented 
> filter) like tonality, bpm detection, waveform analysis, ...
> > > 
> > > Goal:
> > > - Rewrite the filtersystem, so that some function "receive_output" 
> > > exists,   
> that could be called from the external API or another filter to get non 
> multimedia data as the filter output, like an String for tonality, or an 
> index 
> array for the wavform, etc.
> > >   
> > 
> > I'm not sure if I'm following. Currently, filters like cropdetect
> > pass the metadata via AVFrame (as separate field besides audio/video
> > data), and other filters (or the API user) can read it.  
> Hmm, ok I see it. If you look at my example from my other mail with 
> volumedetect, is it correct to say it it possible but depends on the filter, 
> whether it print "just" something out or include it in some tags?
> If so, this whole idea is not necessary.

Yes, it depends on the filter. But maybe there's indeed a need to pass
certain non-audio/video information between filters.

> 
> >   
> > > Comments:
> > > - Has the side effect, that a following filter in the chain could use the 
> > >   
> output to do some other stuff.
> > > - Not sure, how hard (and wanted) this is.
> > > 
> > > 
> > > 
> > > Other ideas, but imho not suitable for GSoC:
> > > - Jack output support (too simple for GSoC)
> > > - Python bindings  
> > 
> > Bindings for what?  
> For the libraries. Some python code, so that one can use the libraries 
> directly with python. It is questionable whether this belongs here or is a 
> seperate project.
> Moreover such a project exists, but it is outdated and I have no idea about 
> the quality:
> https://mhaller.github.io/pyffmpeg/

Hm, not sure if this is enough or appropriate. The ffmpeg API is also
moving quickly. It also requires deep knowledge of the API to get it
right. Not a beginner task maybe.

> 
> >   
> > > - merge of ffmpeg and ffplay (call ffmpeg without output reacts like   
> ffplay). Maybe this idea is fairly naive.
> > >   
> > 
> > That sounds hard, and maybe not really what we'd want anyway. (Updating
> > ffplay with SDL2 or something sounds more realistic.)  
> A question for that. If I get it right, ffplay use SDL directly. It is wanted 
> to "swap it out" to some kind of libavdevice and then use this device out of 
> ffplay?

In my personal opinion, audio/video output in libavdevice is an
abomination. It tries to force a muxer API to be used as API for
audio/video output, which is ridiculous and obviously has a bunch of
disadvantages. A real approach would realize such things as a separate
library with a proper API.

Coming up with good ideas is hard, sorry for not being able to provide
any.

What kind of topics would you be interested in? Just broadly speaking.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to