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. > 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 and entirely, so it's a good way to get hurt. > 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. > 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? > - 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.) Nice to see a potential gsoc student showing such initiative. I hope we can find a suitable project. Sorry if I may sound too dismissive here. > thank you, > Gerion > > [1] > https://gitorious.org/ffmpeg/sastes-ffmpeg/commit/716c1f7b2ad02a906ad1e47182492554b668f3dc?p=ffmpeg:sastes-ffmpeg.git;a=blob;f=libavformat/dvdproto.c;h=72ed431c6a47c87e30e4876587c6bb97215517cf;hb=4ed59d83a6e9fb45c3134bb67267e9b05927125c > [2] https://blog.flameeyes.eu/2013/02/it-s-that-time-of-the-year-again > > example tags from matroska: > ... > <Simple> > <Name>ACTOR</Name> > <String>Matthew McConaughey</String> > <TagLanguage>und</TagLanguage> > <DefaultLanguage>1</DefaultLanguage> > <Simple> > <Name>CHARACTER</Name> > <String>Jake Tyler Brigance</String> > <TagLanguage>und</TagLanguage> > <DefaultLanguage>1</DefaultLanguage> > </Simple> > </Simple> > <Simple> > <Name>ACTOR</Name> > <String>Sandra Bullock</String> > <TagLanguage>und</TagLanguage> > <DefaultLanguage>1</DefaultLanguage> > <Simple> > <Name>CHARACTER</Name> > <String>Ellen Roark</String> > <TagLanguage>und</TagLanguage> > <DefaultLanguage>1</DefaultLanguage> > </Simple> > </Simple> > ... > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel