[FFmpeg-devel] [PATCH] ffmpeg/web/index: add news describing GSoC 2015 program outcome

James Darnley james.darnley at gmail.com
Sun Sep 27 15:28:50 CEST 2015


On 2015-09-27 14:37, Stefano Sabatini wrote:
> ---
>  src/index | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 234 insertions(+)
> 
> diff --git a/src/index b/src/index
> index 9d12a7b..8937172 100644
> --- a/src/index
> +++ b/src/index
> @@ -37,6 +37,240 @@
>      News
>    </h1>
>  
> +  <a id="gsoc2015_result"></a><h3>September 27th, 2015, GSoC 2015 results</h3>
> +
> +  <p>
> +    FFmpeg participated to the latest edition of
> +    the <a href="http://www.google-melange.com/gsoc/homepage/google/gsoc2015">Google
> +    Summer of Code</a> Project. FFmpeg got a total of 8 assigned
> +    projects, and 7 of them were successfull.
                                    ^^^^^^^^^^^
successful

> +  </p>
> +
> +  <p>We want to thank <a href="https://www.google.com">Google</a>, the
> +    participating students, and especially the mentors who joined this
> +    effort. We're looking forward participating to the next GSoC
> +    edition!
> +  </p>
> +
> +  <p>
> +    Below you can find a brief description of the final outcome of
> +    each single project.
> +  </p>
> +
> +  <h4>Basic servers for network protocols, mentee: klaxa, mentor: Nicolas George</h4>
> +
> +  <p>
> +    Stephan Holljes's project for this session of Google Summer of Code was to

Are you deliberately using an IRC nick and a name separately here?

> +    implement basic HTTP server features for libavformat, to complement the
> +    already present HTTP client and RTMP and RTSP server code.
> +  </p>
> +
> +  <p>
> +    The first part of the project was to make the HTTP code capable of accepting
> +    a single client; it was completed partly during the qualification period and
> +    partly during the first week of the summer. Thanks to this work, it is now
> +    possible to make a simple HTTP stream using the following commands:
> +    <pre>
> +      ffmpeg -i /dev/video0 -listen 1 -f matroska \
> +      -c:v libx264 -preset fast -tune zerolatency http://:8080
> +      ffplay http://localhost:8080/
> +    </pre>
> +  </p>
> +
> +  <p>
> +    The next part of the project was to extend the code to be able to accept
> +    several clients, simultaneously or consecutively. Since libavformat did not
> +    have an API for that kind of task, it was necessary to design on. This part

"it was necessary to design on" does not read very well.  Perhaps it
should be "it was necessary to design _it_"

> +    was mostly completed before the midterm and applied shortly afterwards.
> +    Since the ffmpeg command-line tool is not ready to serve several clients,
> +    the test ground for that new API is an example program serving hard-coded
> +    content.
> +  </p>
> +
> +  <p>
> +    The last and most ambitious part of the project was to update ffserver to
> +    make use of the new API. It would prove that the API is usable to implement
> +    real HTTP servers, and expose the points where more control was needed. By
> +    the end of the summer, a first working patch series was undergoing code
> +    review.
> +  </p>
> +
> +  <h4>Browsing content on the server, mentee: Mariusz SzczepaƄczyk, mentor: Lukasz Marek</h4>
> +
> +  <p>
> +    Mariusz finished an API prepared by FFmpeg community and implemented
> +    Samba directory listing as qualification task.
> +  </p>
> +
> +  <p>
> +    During the program he extended the API with possibility to remove and
> +    rename files on remote servers. He implemented/finished the
> +    implementation of these features for file, Samba, SFTP, and FTP
> +    protocols.
> +  </p>
> +
> +  <p>
> +    At the end of the program, Mariusz provided a sketch of implementation
> +    for HTTP directory listening.
> +  </p>
> +
> +  <h4>Directshow digital video capture, mentee: Mate Sebok, mentor: Roger Pack</h4>
> +
> +  <p>
> +    Mate was working on directshow input from digital video sources. He
> +    got working input from ATSC input sources, with specifiable tuner.
> +  </p>
> +
> +  <p>
> +    The code has not been committed, but a patch of it was sent to the
> +    ffmpeg-devel mailing list for future use.
> +  </p>
> +
> +  <p>
> +    The mentor plans on cleaning it up and committing up, at least for the
> +    ATSC side of things. Mate and the mentor are still working trying to
> +    finally figure out how to get DVB working.
> +  </p>
> +
> +  <h4>Implementing full support for 3GPP Timed Text Subtitles, mentee: Niklesh Lalwani, mentors: Philip Langdale</h4>
> +
> +  <p>
> +    Niklesh's project was to expand our support for 3GPP Timed Text
> +    subtitles. This is the native subtitle format for mp4 containers, and
> +    is interesting because it's usually the only subtitle format supported
> +    by the stock playback applications on iOS and Android devices.
> +  </p>
> +
> +  <p>
> +    ffmpeg already had basic support for these subtitles which ignored all
> +    formatting information - it just provided basic plain-text support.
> +  </p>
> +
> +  <p>
> +    Niklesh did work to add support on both the encode and decode side for
> +    text formatting capabilities, such as font size/colour and effects like
> +    bold/italics, highlighting, etc.
> +  </p>
> +
> +  <p>
> +    The main challenge here is that Timed Text handles formatting in a very
> +    different way from most common subtitle formats. It uses a binary
> +    encoding (based on mp4 boxes, naturally) and stores information
> +    separately from the text itself. This requires additional work to track
> +    which parts of the text formatting applies to, and explicitly dealing
> +    with overlapping formatting (which other formats support) but Timed
> +    Text does not - so it requires breaking the overlapping sections into
> +    separate non-overlapping ones with different formatting.
> +  </p>
> +
> +  <p>
> +    Finally, Niklesh had to be careful about not trusting any size
> +    information in the subtitles - and that's no joke: the now infamous
> +    Android stagefright bug was in code for parsing Timed Text subtitles.
> +  </p>
> +
> +  <p>
> +    All of Niklesh's work is committed and was released in ffmpeg 2.8.
> +  </p>
> +
> +<h4>libswscale refactoring, mentee: Pedro Arthur, mentors: Michael Niedermayer, Ramiro Polla</h4>
> +
> +  <p>
> +    Pedro Arthur has modlularized the vertical and horizontal scalers.
> +    To do this he designed and implemented a generic filter framework
> +    and moved the existing scaler code into it. These changes now allow
> +    easily adding removing, splitting or merging processing steps.
> +    The implementation was benchmarked and several alternatives where
                                                                   ^^^^^
were

> +    tried to avoid speedloss.
> +  </p>
> +
> +  <p>
> +    He also added gamma correct scaling support.
> +    An example to use gamma corrected scaling would be:
> +    <pre>
> +      ffmpeg -i input -vf scale=512:384:gamma=1 output
> +    </pre>
> +  </p>
> +
> +  <p>
> +    Pedro has done impressive work considering the short time available,
> +    and he is a FFmpeg comitter now. He continues to contribute to
                          ^^^^^^^^
If "committer" is an acceptable new word then it should have two 'M's

> +    FFmpeg, and has fixed some bugs in libswscale after GSoC has
> +    ended.
> +  </p>
> +
> +  <h4>AAC Encoder Improvements, mentee: Rostislav Pehlivanov, mentor: Claudio Freire</h4>
> +
> +  <p>
> +    Rostislav Pehlivanov has implemented PNS, TNS, I/S coding and main
> +    prediction on the native AAC encoder. Of all those extensions, only
> +    TNS was left in a less-than-usable state, but the implementation has
> +    been pushed (disabled) anyway since it's a good basis for further
> +    improvements.
> +  </p>
> +
> +  <p>
> +    PNS replaces noisy bands with a single scalefactor representing the
> +    energy of that band, gaining in coding efficiency considerably, and
> +    the quality improvements on low bitrates are impressive for such a
> +    simple feature.
> +  </p>
> +
> +  <p>
> +    TNS still needs some polishing, but has the potential to reduce coding
> +    artifacts by applying noise shaping in the temporal domain (something
       ^^^^^^^^^
artefacts

> +    that is a source of annoying, notable distortion on low-entropy
> +    bands).
> +  </p>
> +
> +  <p>
> +    Intensity Stereo coding (I/S) can double coding efficiency by
> +    exploiting strong correlation between stereo channels, most effective
> +    on pop-style tracks that employ panned mixing. The technique is not as
> +    effective on classic X-Y recordings though.
> +  </p>
> +
> +  <p>
> +    Finally, main prediction improves coding efficiency by exploiting
> +    correlation among successive frames. While the gains have not been
> +    huge at this point, Rostislav has remained active even after the GSoC,
> +    and is polishing both TNS and main prediction, as well as looking for
> +    furhter improvements to make.
       ^^^^^^^
further

> +  </p>
> +
> +  <p>
> +    In the process, the MIPS port of the encoder was broken a few times,
> +    something he's also working to fix.
> +  </p>
> +
> +  <h4>Animated Portable Network Graphics (APNG), mentee: Donny Yang, mentor: Paul B Mahol</h4>
> +
> +  <p>
> +    Donny Yang implemented basic keyframe only APNG encoder as qualification
> +    task, later he wrote kind of interframe compression via various blend
> +    modes. Current implementation tries all blend modes and picks one which
> +    takes the smallest amount of memory.
> +  </p>
> +
> +  <p>
> +    Special care was taken to make sure that the decoder plays correctly
> +    all files found in wild and that the encoder produces files that can
> +    be played in browsers that support APNG.
> +  </p>
> +
> +  <p>
> +    During his work he was tasked to fix any encountered bug in the
> +    decoder due to the fact that it doesn't match APNG
> +    specifications. Thanks to this work, the also long standing bug in the
> +    PNG decoder has been fixed.
> +  </p>
> +
> +  <p>
> +    For latter work he plans to continue working on the encoder, making
> +    possible to select which blend modes will be used in the encoding
> +    process, which could speed up encoding of APNG files.
> +  </p>
> +
>    <a id="pr2.8"></a><h3>September 9th, 2015, FFmpeg 2.8</h3>
>    <p>
>      We published release <b><a href="download.html#release_2.8">2.8</a></b> as new major version.
> 

There are many more technical terms that my spell checker insists should
be hyphenated--inter-frame, intra-frame, key-frame--but I always see
them written as one word.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 603 bytes
Desc: OpenPGP digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150927/b1d3a03f/attachment.sig>


More information about the ffmpeg-devel mailing list