[FFmpeg-devel] GSoC 2016 own ideas
Gerion Entrup
gerion.entrup.ffdev at flump.de
Thu Feb 18 20:15:28 CET 2016
On Donnerstag, 18. Februar 2016 18:53:45 CET Paul B Mahol wrote:
> Dana 18. 2. 2016. 18:27 osoba "Gerion Entrup" <gerion.entrup.ffdev at flump.de>
> napisala je:
> >
> > 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].
> >
> > 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).
> >
> > 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.
> >
>
> This is out of scope for project. And who will use it when everyone have
> own solution.
I have the impression, that DVD support is not trivial. Kodi e.g. fails on
DVDs, that VLC can play. As an application programmer with already existent
FFmpeg support I would be happy to see a simple solution.
Also some new programs could arise, that do not have an own solution.
Also some devs seem to want DVD support [1].
>
> >
> > 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.
>
> Trivial and out of scope.
>
> >
> >
> > 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.
> >
> > 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.
>
> Out of scope.
>
> >
> >
> > 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.
> >
> > 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.
>
> Already available via metadata.
Is this in a standardized way? E.g. volumedetect has:
static av_cold void uninit(AVFilterContext *ctx)
{
print_stats(ctx);
}
And print_stats does a lot of av_log. I see no way to get the (integer and
float) values out of the filter without av_log output parsing (and reconverting
to int and float).
>
> >
> >
> >
> > Other ideas, but imho not suitable for GSoC:
> > - Jack output support (too simple for GSoC)
> > - Python bindings
> > - merge of ffmpeg and ffplay (call ffmpeg without output reacts like
> ffplay). Maybe this idea is fairly naive.
> >
> > 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 at ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
I have activated wordwrap btw, seems to be better.
[1] https://trac.ffmpeg.org/wiki/FFmeeting/2014-10
More information about the ffmpeg-devel
mailing list